2

Я постоянно забываю терминологию emacs для Select All, поэтому я хотел бы добавить новую команду emacs, чтобы я мог набрать Mx select-all RET и запустить ее mark-whole-buffer.

Я попытался добавить это в мой файл .emacs:

(defun select-all () (mark-whole-buffer))

или это:

(defun select-all () (интерактивный) (mark-whole-buffer))

Но они, кажется, не помещают имена в правильное "пространство имен" для доступа через Mx, как мне получить их в правильном пространстве имен?

Спасибо -шон

3 ответа3

10

(interactive) сообщает Emacs, что функция - это команда, то есть функция может быть связана с клавишей и выполняться с помощью M-x . Поэтому (defun select-all () (interactive) (mark-whole-buffer)) должен работать (но (defun select-all () (mark-whole-buffer)) не будет). Вы перезапустили Emacs или оценили определение с помощью C-M-x (eval-defun)? Что показывает C-h f select-all RET ? (Справочный буфер должен начинаться с «select-all является интерактивным».)

Здесь более простая альтернатива

(defalias 'select-all 'mark-whole-buffer)
6

Ну, это уже встроено:

M-x mark-whole-buffer

связан с

C-x h

Но, чтобы получить то, что вы хотите, написав что-то, ваша вторая реализация прекрасно работает для меня, и я могу добраться до нее, набрав Mx.

2

Тот, что с интерактивом, выглядит так, как будто он правильный, и он работает для меня .... вы не забыли перезагрузить ваш .emacs после его определения?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .