Як визначити нові команди в emacs


2

Я забуваю термінологію emacs для Select All, тому я хотів би додати нову команду emacs, щоб я міг набрати Mx select-all RET і змусити її виконувати маркер-цілий буфер.

Я спробував додати це до файлу .emacs:

(defun select-all () (позначка-цілий-буфер))

або це:

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

Але вони, схоже, не ставлять імена в потрібний "простір імен" для доступу через Mx, як я можу їх отримати в потрібному просторі імен?

Спасибі, -Шон


На жаль, це було моєю провиною, (інтерактивна) версія працює як написано.
sligocki

"Вибрати все" також можна знайти в меню "Правка", принаймні в EmacsW32.
RamyenHead

Відповіді:


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 is interactive".)

Тут простіша альтернатива

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

Чудові дефалії звучать як саме те, за що я йду. Насправді defun працює для мене знову, хтось в офісі змінив файл, який я завантажував, і зламав увесь файл .emacs (тому спочатку defun не працював). Дякую усім!
sligocki

6

Ну, це вже вбудовано:

M-x mark-whole-buffer

пов'язаний з

C-x h

Але, щоб отримати те, що ви хочете, написавши щось, ваша друга реалізація працює для мене просто чудово, і я можу дійти до цього, набравши текст M-x.


Як я вже говорив, я завжди забуваю те, що emacs називає цю команду, тому намагаюся зробити псевдонім. Я спробую ще раз, можливо я не зміг її правильно завантажити.
sligocki

2

Один із інтерактивним виглядає так, як це правильно, і він працює для мене .... Ви пам’ятали повторно завантажити свої .emacs після його визначення?


Так, я намагався перезавантажити, але хтось в офісі зламав файл, який я завантажував, і тому весь .emacs не завантажувався. Дякуємо за перевірку!
sligocki
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.