Bonjour,
Je me suis lancé il y a environ une semaine dans l'apprentissage du langage de programmation Lisp.
Je souhaite créer un mode majeur qui me permettrait de lancer mes applications à l'aide d'un menu principal. J'aimerais que ce menu ressemble à celui de mu4e :
Pour écrire le code de mon mode majeur je me suis donc inspiré de celui de mu4e et de text-mode.el
Bien évidement je me documente sur le Wiki d'Emacs et le site gnu.org à l'aide de "An Introduction to Programming in Emacs Lisp".
Je rencontre actuellement deux principaux problèmes avec mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 ; (defconst rct-mode-buffer-name "*rct-main*" "*internal* Name of the rct main view buffer.") ; ; let the user have the possibility to run his hown code (defcustom rct-mode-hook nil "Normal hook run when entering Text mode and many related modes." :type 'hook :group 'data) ; ; Keymap (defvar rct-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "C-c m") (lambda() (interactive) (message "C-c m pressed"))) (define-key map (kbd "<f4>") (lambda() (interactive) (message "<f4> pressed"))) (define-key map (kbd "<f5>") (lambda() (interactive) (message "<f5> pressed"))) map ) "Keymap for `rct-mode'.") ; ; h1 first header in blue (defface h1 '((t :inherit default (:background "blue") )) "Face for a header without any special flags." :group 'rct-faces) (define-derived-mode rct-mode special-mode "rct:main" "Major mode for remote connections \\{rct-main-mode-map}." (setq debug-on-error t) (use-local-map rct-mode-map) (run-hooks 'rct-mode-hook) (main-menu)) ; ; Main Menu (defun main-menu () "This function display the main menu of the RCT mode." (with-current-buffer (get-buffer-create rct-mode-buffer-name) (erase-buffer) (insert "\n\n\n\n" (propertize "~~ Welcome ~~" 'face 'h1) "\n\n" "Main commands" "\n\n" "\t[Q] To quit the RCT-mode" "\n\n" "Section 1" "\n\n" "\t[F2] To Start XXXX\n" "\t[F3] To Start YYYYY\n" "\n" "Section 2" "\n\n" "\t[F4] To Start ZZZZZ\n" "\n\n" ); end-of insert );end-of with-current-buffer ;);end-of let (switch-to-buffer rct-mode-buffer-name) (toggle-read-only t) );end-of main-menu ; (provide 'rct-mode)
- lorsque je lance mon mode-majeur la définition des touches n'est pas prise en compte et n'est pas chargée par la fonction (use-local-map). A chaque pression de la touche fx ou même C-c m les messages " <fx>is not defined" ou bien "no kbd macro is defined" s'affichent dans le mini-buffer,
- le texte auquel j'ai attribué une "face" dite "h1" pour apparaître en bleu est affiché avec la couleur par défaut : en noir.
Je vous remercie par avance de votre aide.
Partager