понедельник, 14 декабря 2015 г.

Быстрый переход в заданные каталоги в Double Commander

cm_ChangeDir


Кол-во каталогов ограничено только свободными клавишами, например Ctrl+Shift+буква, с которой начинается имя нужного каталога.

суббота, 12 декабря 2015 г.

Улучшаем навигацию (по коду)

1. "Умные" Home и End

(global-set-key (kbd "<home>") (lambda ()
     "Smart Home"
     (interactive)
     (if (equal (point) (line-beginning-position))
         (progn
           (previous-line)
           (skip-chars-forward "[:space:]"))
       (beginning-of-line))))
(global-set-key (kbd "<end>") (lambda ()
     "Smart End"
     (interactive)
     (if (equal (point) (line-end-position))
         (progn
           (next-line)
           (end-of-line))
       (end-of-line))))

2. Расширить выделение до семантической единицы и скопировать выделенное

(defun expand-selection ()
  "Expand selection of semantic unit. v.0.2"
  (interactive)
  (unhighlight-regexp t) ;; убираем всю предыдущую посветку
  (let ((chrs "a-zA-Z0-9а-яА-Я-_%:~\.\/\*\?\&")
 (endc (string (char-after (region-end)))) p1 p2)
    (if (region-active-p)
 (setq chrs (concat chrs "\s\"")))
    (skip-chars-backward chrs)
    (setq p1 (point))
    (skip-chars-forward chrs)
    (setq p2 (point))
    (kill-ring-save p1 p2)
    (highlight-regexp (buffer-substring-no-properties p1 p2))))
Алгоритм следующий:
  • если выделения нет, то выделить "токен", содержащий символы из chrs
  • если часть токена уже выделена, то выделить все, что попадает в chrs c пробелами ("выделить фразу")



четверг, 3 декабря 2015 г.

Переключеие раскладки в Emacs системной (!) комбинацией клавиш

Сложно это или просто? Судите сами, я на это убил целый вечер.

1. Скрипт, который переключает системную раскладку в Xfce ИЛИ метод ввода ("язык") в Emacs:

#!/bin/sh
if xdotool getwindowfocus getwindowname | grep -q emacs
then
    emacsclient -e '(lang-switch)'
else
    xkb-switch -n
fi

NB

  1. "Или" тут ключевой момент - очевидно, что после переключения языка средствами Xkb в самом Emacs уже ничего работать не будет. 
  2.  В настройках xkb-plugin должно стоять "Управление раскладками: для каждого приложения [отдельно]", по тем же причинам. Ну и просто потому, что так удобнее))

2. Функция (lang-switch) для самого Emacs:
(defun lang-switch ()            
  ""              
  (interactive)              
  (with-current-buffer (window-buffer (selected-window))   ;; emacsclient!! 
    (toggle-input-method)))

xkb-switch

Следующие Предыдущие Главная страница

Blogger Template by Blogcrowds