LINUX.ORG.RU

mode-map for generic-mode

 ,


0

1

Не получается:

(define-generic-mode 'xmodmap-mode
  '(?!)
  '("add" "clear" "keycode" "keysym" "pointer" "remove")
  nil
  '("[xX]modmap\\(rc\\)?\\'")
  nil
  "Simple mode for xmodmap files.")

(defvar xmodmap-mode-map
  (let ((map (make-sparse-keymap)))
    map))

(defun my-xmodmap-mode-hook ()
  (define-key xmodmap-mode-map (kbd "M-]") 'my-xmodmap-load))

(add-hook 'xmodmap-mode-hook 'my-xmodmap-mode-hook)

При активации режима в *Messages*:

run-hooks: Symbol's function definition is void: keymap.

M-] не работает.

★★★★★

Ответ на: комментарий от iVS

С этим всё нормально.

(defun my-xmodmap-load ()
  (interactive)
  (message "Hello world!"))
ados ★★★★★
() автор топика
Ответ на: комментарий от Zubok

Да я уже сделал:

(define-generic-mode 'xmodmap-mode
  '(?!)
  '("add" "clear" "keycode" "keysym" "pointer" "remove")
  nil
  '("[xX]modmap\\(rc\\)?\\'")
  (list
   (lambda () (use-local-map xmodmap-mode-map)))
  "Simple mode for xmodmap files.")

Но сообщение Symbol's function definition is void: keymap. всё ещё выводится.

ados ★★★★★
() автор топика
Последнее исправление: ados (всего исправлений: 1)
Ответ на: комментарий от ados

Но сообщение Symbol's function definition is void: keymap. всё ещё выводится.

(defvar xmodmap-mode-map
  (let ((map (make-sparse-keymap)))
    map))

Это потому, что вот это выше неправильно. Когда он пытается evaluation для map сделать - вот у тебя и выскакивает, потому что map - это спипок вида (keymap ...), то есть пытается его выполнить как функцию.

Лучше сделай так, например:

(defvar xmodmap-mode-map nil)

...

; в инициализации режима 
(setq xmodmap-mode-map (make-sparse-keymap))

UPD. Хотя покажи, что у тебя еще помимо этого кода есть? В общем, полагаю, что где-то есть попытка выполнить keymap.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от ados

Только сейчас проверил твой код, просто запустив в Emacs 23. У меня на keymap не ругается! Что-то еще у тебя.

Zubok ★★★★★
()

run-hooks: Symbol's function definition is void: keymap.

Короче, значешь еще что может быть? У тебя в списке хуков могли старые хуки остаться, которые ошибочно были написаны. Ты перегружал Emacs?

Zubok ★★★★★
()
Ответ на: комментарий от ados

Всё, перезагрузил Windows^W emacs и всё нормально.

Блин, буквально только что написал как раз про это. Дело, значит, было именно в этом. У тебя какие-то старые функции и хуки остались в списках, который ты не удалил.

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.