понедельник, 14 декабря 2015 г.
суббота, 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:
2. Функция (lang-switch) для самого Emacs:
xkb-switch
1. Скрипт, который переключает системную раскладку в Xfce ИЛИ метод ввода ("язык") в Emacs:
#!/bin/sh
if xdotool getwindowfocus getwindowname | grep -q emacs
then
emacsclient -e '(lang-switch)'
else
xkb-switch -n
fi
NB
- "Или" тут ключевой момент - очевидно, что после переключения языка средствами Xkb в самом Emacs уже ничего работать не будет.
- В настройках xkb-plugin должно стоять "Управление раскладками: для каждого приложения [отдельно]", по тем же причинам. Ну и просто потому, что так удобнее))
2. Функция (lang-switch) для самого Emacs:
(defun lang-switch ()
""
(interactive)
(with-current-buffer (window-buffer (selected-window)) ;; emacsclient!!
(toggle-input-method)))
xkb-switch
Следующие Предыдущие Главная страница
Подписаться на:
Комментарии
(
Atom
)
