Использование current-buffer в emacs? - PullRequest
1 голос
/ 05 апреля 2010

Я использую emacs, и я написал скрипт, который использует "current-buffer". Однако система emacs не распознает «текущий буфер». Когда я пытаюсь "M - x current-buffer", я получаю ответ:

нет совпадений

: Есть идеи, что я делаю не так?

Ответы [ 3 ]

6 голосов
/ 05 апреля 2010

current-buffer не является интерактивной функцией. То есть не может быть вызван в интерактивном режиме через M-x, как вы пытались это сделать. Вы можете выполнить неинтерактивный lisp-код напрямую, используя eval-expression следующим образом:

M-: (current-buffer) RET

Обратите внимание, что вы должны ввести правильное выражение для lisp. Если вы хотите захватить значение в переменной, что-то вроде этого

M-: (setq xyzzy (current-buffer)) RET

сохранит текущий буфер в переменную xyzzy.

2 голосов
/ 05 апреля 2010

Правильно ли я вас понимаю, что вы создали функцию с именем current-buffer, для которой вы хотите быть доступной с M-x current-buffer?

Чтобы разрешить вызов функций с помощью M-x function-name, функция должна быть помечена как интерактивная.

Образец из руководства по emacs :

(defun multiply-by-seven (number)       ; Interactive version.
       "Multiply NUMBER by seven."
       (interactive "p")
       (message "The result is %d" (* 7 number)))

Часть (interactive "p") делает функцию вызываемой из минибуфера (через M-x).

0 голосов
/ 21 августа 2011

Похоже, вы (также) хотели бы узнать, как получить имя текущего буфера в интерактивном режиме. Используйте M-: (buffer-name).

...