define-key: определение функции символа является недействительным: lisp-взаимодействия-mode-map - PullRequest
0 голосов
/ 31 марта 2012

У меня есть фрагмент, который я хочу связать с ключом:

(define-key (lisp-interaction-mode-map) (kdb "C-c e")
  (let ((result (eval (read (buffer-substring
                             (point-at-bol) (point-at-eol))))))
    (goto-char (point-at-eol))
    (insert (format " ; %s" result))))

однако, когда C-c v, что в *scratch*, я получаю

define-key: Symbol's function definition is void: lisp-interaction-mode-map

Ответы [ 2 ]

3 голосов
/ 31 марта 2012

У вас есть круглые скобки вокруг lisp-interaction-mode-map, что в Lisp означает, что вы хотите вызвать функцию с именем lisp-interaction-mode-map. Вместо этого вы хотите использовать его как переменную.

Я также сделал несколько других правок, которые вам понадобятся, чтобы получить то, что вам нужно. Я предположил, что вы написали read, чтобы запросить вводимую пользователем строку:

(define-key lisp-interaction-mode-map (kbd "C-c C-e")
  (lambda (result)
    (interactive (list (read-from-minibuffer (buffer-substring (point-at-bol) (point-at-eol)))))
    (goto-char (point-at-eol))
    (insert (format " ; %s" result))))
0 голосов
/ 17 августа 2017

Что не так с нормальной формой?

(define-key lisp-interaction-mode-map [(control e)] 'eval-defun)
...