Emacs - Использование "Выбрать все" в функции (как найти функцию, связанную с ключом)
Я пытаюсь выяснить Elisp, и я попал в блокпост.
Мне нужна функция, которая будет отделять весь файл. Прямо сейчас я выбираю весь файл (C-x h), а затем выполняю M-x indent-region (у которого есть комбинация клавиш).
Я хотел бы объединить это с одним нажатием клавиши, но не могу понять, как сделать C-x h в функции.
Спасибо
Ответы
Ответ 1
Чтобы найти то, что Emacs будет делать при вызове определенной комбинации клавиш, префикс, который: C-h k. В вашем случае вы должны ввести:
C-h k C-x h
что дает
C-x h запускает команду mark-whole-buffer, который является интерактивная скомпилированная функция Lisp в `Simple.el".
Он связан с C-x h, , (Марка-весь-буфер)
Поместите точку в начало и отметьте в конце буфера. Вы, вероятно, не должны использовать эта функция в программах Lisp; это обычно ошибка для функции Lispдля использования любой подпрограммы, которая использует или устанавливает отметку.
Примечание. Вы также можете использовать C-h k (обратите внимание, что заглавная буква K), которая переведет вас в документацию для этой команды.
Ответ 2
Стоит отметить, что вы не хотите использовать знак и указывать неинтерактивный код; вы хотите (indent-region (point-min) (point-max))
, а не (save-excursion (mark-whole-buffer) (call-interactively indent-region))
, хотя эффекты похожи.
(Не для того, чтобы разрушить ваше удовольствие, но вся последовательность будет выглядеть примерно как (global-set-key (kbd "C-M-r") (lambda () (interactive) (indent-region (point-min) (point-max)))
.)