2009-08-19 7 views
1

J'ai installé A + et mis en place XEmacs dans Debian, en utilisant les paquets aplus-fsf-dev et aplus-fsf-el; XEmacs a été installé en tant que dépendance.A + et Emacs (mais * pas * XEmacs)

J'ai vérifié le site A + (http://www.aplusdev.org/), et il semble n'y avoir rien à propos de l'exécution de A + sur Emacs (et pas XEmacs).

Est-ce que quelqu'un sait s'il existe des fichiers Elisp quelque part pour configurer A + sur un Emacs simple (FSF)?

Merci! PS: Les fichiers elisp pour XEmacs ne fonctionnent donc pas sur Emacs. J'ai essayé de les convertir, mais je devais aller plus loin et plus loin dans le code, alors j'ai abandonné.

PS2: Dans Emacs, quand je (require « aplus), voici ce que je reçois:

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) 

En effet, dans keyb.el, il y a cette fonction:

(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))) 

J'ai modifié append à vconcat, puis j'ai une erreur sur la dernière ligne de cette fonction, car Emacs n'a pas de fonction char-to-int. J'ai supprimé l'appel de la fonction et remplacé par l'argument ("key") lui-même, puisque je comprends qu'Emacs traitera déjà ce caractère comme un nombre.

Puis Il y avait d'autres erreurs pas si évidentes dans d'autres fonctions; la plupart d'entre eux traitent avec define-key et keymaps.

Je suppose qu'Emacs et XEmacs traitent différemment les keymaps?

+0

Avez-vous essayé de l'utiliser sur Emacs? Si oui, quels étaient les échecs? Ils ne sont pas si différents. –

+0

Oui, j'ai essayé ... (Voir le P.S. Je viens d'ajouter à la question) – Jay

+1

Vous pourriez obtenir plus de kilométrage si vous signalez les problèmes que vous avez rencontrés et obtenez de l'aide pour ces choses spécifiques. On dirait que ce n'est actuellement que la 2ème question taguée [a +]. –

Répondre

2

Laissez les réponses commencer. SO n'était pas vraiment conçu pour une session de débogage en cours d'exécution, mais voilà. Selon que vous souhaitiez faire en sorte que les mêmes fichiers .el soient chargeables à la fois par Emacs et XEmacs, vous devrez déterminer comment vous souhaitez isoler les différences.

La façon la plus portable (?) De définir des clés dans Emacs est d'utiliser la macro 'kbd. Ainsi, l'invocation 'define-key devrait ressembler à:

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

Je ne sais pas ce que l'un modificateur de liste est pour, mais il peut probablement être massé dans une chaîne pour passer à 'kbd. Une bonne introduction à 'kbd ou 'read-kbd-macro peut être trouvée here. Un document long sur les raccourcis clavier Emacs peut être trouvé here. Il couvre toutes sortes de notations pour keybindings, et peut-être il serait utile de décoder certaines des choses de XEmacs.

Questions connexes