A + и Emacs (но * не * XEmacs) - PullRequest
       11

A + и Emacs (но * не * XEmacs)

1 голос
/ 20 августа 2009

Я установил A + и настроил XEmacs в Debian, используя пакеты aplus-fsf-dev и aplus-fsf-el; XEmacs был установлен как зависимость.

Я проверил сайт A + (http://www.aplusdev.org/),, и, похоже, ничего не работает в запуске A + на простых Emacs (а не на XEmacs).

Кто-нибудь знает, есть ли где-нибудь файлы elisp для настройки A + на обычном (FSF) Emacs?

Спасибо!

PS: Итак, файлы elisp для XEmacs не работают на Emacs. Я попытался преобразовать их, но мне пришлось идти все дальше и дальше в код, поэтому я сдался.

PS2: В Emacs, когда я делаю (требую aplus), я получаю следующее:

Debugger entered--Lisp error: (wrong-type-argument arrayp (super 97))
  define-key((keymap) (super 97) a-self-insert)
  (let ((key ...) (apl ...)) (define-key a-minor-map (append a-modifier-list ...) (quote a-self-insert)) (define-key a-minor-map (vector ... key) (quote a-self-insert)) (aset a-key-string (char-to-int key) apl))
  a-insert-map((97 . 193))
  mapcar(a-insert-map ((97 . 193) (98 . 194) (99 . 195) (100 . 196) (101 . 197) (102 . 95) (103 . 199) (104 . 200) (105 . 201) (106 . 202) (107 . 39) (108 . 204) (109 . 124) (110 . 206) (111 . 207) (112 . 42) (113 . 63) (114 . 210) (115 . 211) (116 . 126) (117 . 213) (118 . 214) (119 . 215) (120 . 216) (121 . 217) (122 . 218) (49 . 161) (50 . 162) (51 . 60) (52 . 164) (53 . 61) (54 . 166) (55 . 62) (56 . 168) (57 . 169) (48 . 94) (45 . 171) (61 . 223) (92 . 220) (96 . 254) (44 . 172) (91 . 251) (93 . 253) (59 . 219) (39 . 221) (46 . 220) (47 . 175) (33 . 224) (64 . 230) (35 . 231) ...))
  eval-buffer(#<buffer  *load*<3>> nil "/usr/share/emacs/site-lisp/aplus-fsf-el/keyb.el" nil t)  ; Reading at buffer position 3754
  load-with-code-conversion("/usr/share/emacs/site-lisp/aplus-fsf-el/keyb.el" "/usr/share/emacs/site-lisp/aplus-fsf-el/keyb.el" nil t)
  require(keyb)
  eval-buffer(#<buffer  *load*<2>> nil "/usr/share/emacs/site-lisp/aplus-fsf-el/xa.el" nil t)  ; Reading at buffer position 16
  load-with-code-conversion("/usr/share/emacs/site-lisp/aplus-fsf-el/xa.el" "/usr/share/emacs/site-lisp/aplus-fsf-el/xa.el" nil t)
  load("xa" nil t)
  (if aplus-setup-global-bindings (load "xa" nil t))
  eval-buffer(#<buffer  *load*> nil "/usr/share/emacs/site-lisp/aplus-fsf-el/aplus.el" nil t)  ; Reading at buffer position 1373
  load-with-code-conversion("/usr/share/emacs/site-lisp/aplus-fsf-el/aplus.el" "/usr/share/emacs/site-lisp/aplus-fsf-el/aplus.el" nil t)
  require(aplus)
  eval((require (quote aplus)))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp nil nil)

Это потому, что в keyb.el есть эта функция:

(defun a-insert-map (akeydef)
  (let ((key (car akeydef))
        (apl (cdr akeydef)))
    (define-key a-minor-map (append a-modifier-list (list key)) 'a-self-insert)
    (define-key a-minor-map (vector '(control c) key) 'a-self-insert)
    (aset a-key-string (char-to-int key) apl)))

Я изменил append на vconcat, а затем получил ошибку в последней строке этой функции, потому что Emacs не имеет функции char-to-int. Я удалил вызов функции и заменил сам аргумент («ключ»), так как я понимаю, что Emacs уже будет обрабатывать этот символ как число.

Тогда были другие не очень очевидные ошибки в других функциях; большинство из них имеют дело с define-key и keymaps.

Полагаю, Emacs и XEmacs по-разному работают с клавишами?

1 Ответ

2 голосов
/ 20 августа 2009

Пусть ответы начнутся. SO на самом деле не был предназначен для выполнения сеанса отладки, но здесь идет.

В зависимости от того, хотите ли вы сделать одинаковые файлы .el загружаемыми как в Emacs, так и в XEmacs, вам придется выяснить, как вы хотите изолировать различия.

Самый (?) Переносимый способ определения ключей в Emacs - это использование макроса 'kbd. Итак, вызов 'define-key должен выглядеть примерно так:

(define-key a-minor-map (kbd (format "C-c %c" key)) 'a-self-insert)

Я не знаю, для чего предназначен список a-modifier-list, но он, вероятно, может быть преобразован в строку для передачи 'kbd. Хорошее введение в 'kbd или 'read-kbd-macro можно найти здесь . Документ long о сочетаниях клавиш Emacs можно найти здесь . Он охватывает все виды обозначений для сочетаний клавиш, и, возможно, он будет полезен для декодирования некоторых вещей XEmacs.

...