привязка ключа emacs

#emacs #clojure #key

#emacs #clojure #Клавиша

Вопрос:

Я новичок в emacs, поэтому мне нужен простой совет. Я хотел бы использовать Command-RET для оценки последнего выражения — для этого:

clojure-mode.el:

 (define-key map "C-xC-e" 'lisp-eval-last-sexp)
  

И я не хочу изменять исходный файл clojure-mode.el. Как я могу определить привязку ключа, которая будет выполнять C-x C-e и которая будет вызывать ‘lisp-eval-last-sexp? Для меня это было бы отличным решением, потому что я не могу напрямую связать Command-RET с:

 local-set-key
  

для ‘lisp-eval-last-sexp emacs не может найти эту функцию.

заранее спасибо, Бартек

Обновить:

наконец оказалось, что мне нужно написать:

 M-x
describe-key
^X ^E
  

и это вернуло меня:

 ^X ^E runs the command slime-eval-last-expression, which is an
interactive Lisp function in `slime.el'.

It is bound to ^X ^E, <menu-bar> <SLIME> <Evaluation> <Eval Last
Expression>, <A-return>.

(slime-eval-last-expression)

Evaluate the expression preceding point.

[back]
  

а затем я привязал свои ключи к функции

 'slime-eval-last-expression
  

спасибо за вашу помощь 🙂

Комментарии:

1. Ir eval-last-sexp не должно быть lisp-eval-last-sexp ?

2. нет, это работает по-другому

3. Смотрите Ответ ниже. Попробуйте eval-print-last-sexp, это то, к чему привязан C-j в моем emacs.

Ответ №1:

Вы можете повторно привязать ключи в своем файле .emacs, вам не нужно изменять clojure-mode.el,

 (add-hook 'clojure-mode-hook
                '(lambda ()
                   (define-key clojure-mode-map 
                     "eC-x" 'lisp-eval-defun)))
  

Комментарии:

1. Вам не хватает C- в вашем define-key ?

2. Странно, но полезно знать. Возможно, вы захотите исправить это в любом случае, чтобы это было понятнее. Не знаю, что здесь происходит.

Ответ №2:

Я полагаю, что вместо этого вы хотите установить для него значение eval-print-last-sexp. Это то, к чему привязан Си-джей.