Итак, это две очень простые функции, прокручивающие текущий буфер на одну строку (вверх или вниз, соответственно), без изменение позиции курсора. Это иногда бывает очень полезно.
;;; These simple functions allows scrolling with keeping
;;; position of cursor
(defun scroll-down-keeping-cursor (&optional arg)
"Scrolling down one line while keep cursor position."
(interactive "p")
(if (interactive-p)
(progn
(scroll-down arg)
(scroll-down 1))))
(defun scroll-up-keeping-cursor (&optional arg)
"Scrolling up one line while keep cursor position."
(interactive "p")
(if (interactive-p)
(progn
(scroll-up arg)
(scroll-up 1))))
Теперь неплохо бы привязать эти функции к клавишам:
(global-set-key (kbd "M-p") 'scroll-down-keeping-cursor)
(global-set-key (kbd "M-n") 'scroll-up-keeping-cursor)
Как и при использовании обычных комбинаций C-n и C-p, эти функции можно вызывать в интерактивном режиме, передавая количество строк, на которое следует прокрутить буфер:
C-u 10 M-n
Конечно, если прописать все функции, настройки и keybinding'и в custom.el, они загрузятся. Но IMHO пользовательские файлы для Emacs выглядят гораздо опрятнее, если их разложить по отдельным файлам/каталогам.
Например, пусть это дополнение будет в отдельном файле scroller.el и положим мы его в ~/.emacs.d/. Тогда в ~/.emacs.d/custom.el останется только загрузить этот файл:
(load-file "~/.emacs.d/scroller.el")
Или так:
(setq emacs-dotdir
(expand-file-name ".emacs.d" "~"))
(load-file (expand-file-name "scroller.el" emacs-dotdir))
Комментариев нет:
Отправить комментарий