вторник, 7 апреля 2015 г.

Настройка PageUp PageDown в Emacs

По умолчанию работа клавиш PageUp PageDown в Emacs отличается от других редакторов. Вот в такой ситуации, когда курсор находится в нескольких строчках от верхнего края документа: 
в большинстве редакторов PageUp поставит курсор на первую строчку, а Emacs - ничего делать не будет, если вся верхняя часть документа попадает на экран. Не то что бы поведение других редакторов правильное, а в Emacs - нет, просто подобное поведение ожидается уже на уровне рефлексов и когда курсор не двигается - это раздражает. Но к счастью в Emacs можно поменять поведение почти всего и PageUp/PageDown не исключение, напишем две маленькие функции: 

(defun cfg:page-up ()
  (interactive)
  (condition-case nil (scroll-down)
    (beginning-of-buffer (goto-char (point-min)))))

(defun cfg:page-down ()
  (interactive)
  (condition-case nil (scroll-up)
    (end-of-buffer (goto-char (point-max)))))

Они - пододвигают курсор в начало (или в конец для page down) документа, если встроенные функции отказались это делать. Теперь назначаем их на нужные нам клавиши: 

(global-set-key (kbd "<prior>") 'cfg:page-up)
(global-set-key (kbd "<next>") 'cfg:page-down) 
 
Все готово, можно пользоваться.

Комментариев нет:

Отправить комментарий