13 votes

Un exemple de 'hello world' pour un mode majeur d'Emacs ?

Quelqu'un peut-il me donner un exemple de mode majeur dans emacs ? Je pense que c'est une question de débutant, mais j'aimerais vraiment écrire un mode majeur, à la fois pour apprendre emacs et elisp, et pour être capable d'utiliser la personnalisation au maximum.

Ce que j'ai fait jusqu'à présent (et qui fonctionne) :

  • a écrit un fichier sample-mode.el et l'a placé dans un répertoire lisp
  • appelé dans .emacs (require 'sample-mode)
  • j'y ai écrit quelques defuns, et je l'ai fourni à la fin (provide 'sample-mode)

Mais cela ne semble toujours pas être le cas activés Je ne peux pas l'appeler avec le mode M-sample.

Comment faire ? Et quelqu'un peut-il me fournir un exemple de travail très très simple du type Hello World ?

11voto

Peter Points 14647

Ok, après quelques recherches supplémentaires, j'ai au moins fait un pas en avant :

(define-derived-mode sample-mode ...) 

puisque la fourniture ne définit pas le mode comme je le pensais en premier lieu J'ai trouvé ceci sur :

http://xahlee.org/emacs/elisp_syntax_coloring.html

Un très très beau site pour les amoureux d'emacs.

Avec l'aide de cela : j'ai fait un exemple de HelloWorld moi-même maintenant : C'est un (aussi petit que possible) mode Csharp. J'ai utilisé Euler1 comme exemple plutôt que HelloWorld. Les fichiers que vous devez connaître sont :

  • le fichier sur lequel le mode sera appliqué Euler1.cs
  • le .emacs
  • et bien sûr le mode lui-même

Puisqu'une image vaut, au moins, un paquet de mots : tous les fichiers sur un seul écran :

alt text

Mais comme cette belle image semble disparaître la moitié du temps (quelqu'un a une idée ? Ouvrir dans un nouvel onglet le fait toujours apparaître, et l'url est ok) quelques mots aussi :-) :

  1. Le mode : cs-mode.el

    (setq myKeywords 
     '(("WriteLine" . font-lock-function-name-face)
       ("public\\|static\\|void\\|int\\|for\\|if\\|class"
    . font-lock-constant-face)))
    
    (define-derived-mode cs-mode fundamental-mode
      (setq font-lock-defaults '(myKeywords)))
    
    (provide 'cs-mode)
  2. Le .emacs, qui permet d'ouvrir les fichiers .cs dans le bon mode :

;; cs
(require 'cs-mode)
(add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode))

Et c'est tout : les cs-code lui-même est inutile ici, car il ne montrera pas l'effet de la coloration des mots-clés. Pour voir cela, voir l'image, ou ouvrir l'image dans un autre onglet/fenêtre.

Santé, ph

6voto

dfa Points 54490

Il existe plusieurs exemples sur le Web comme ceci . Je peux également vous recommander plusieurs livres sur Emacs :

  • Apprendre GNU Emacs (le meilleur selon moi)
  • Écrire des extensions GNU Emacs
  • le manuel de référence officiel de GNU Emacs lisp

6voto

Trey Jackson Points 49816

Commençons par cette réponse qui utilise define-generic-mode .

Enrichissez-le avec des caractères de commentaire, par exemple : /* */ , quelques mots-clés : hello hi etc., réutilisent le visage de la réponse originale, une extension de fichier .hello et un appel de fonction pour une personnalisation plus poussée.

Il y a une ligne supplémentaire pour faire fonctionner l'autoloading, mais vous devez générer le fichier loaddefs.el fichier. C'est plus avancé que hello world.

C'est ainsi que l'on obtient ce résultat :

(make-face 'my-date-face)
(set-face-attribute 'my-date-face nil :underline t)
(set-face-attribute 'my-date-face nil :family "times")
(set-face-attribute 'my-date-face nil :slant 'normal)
(set-face-attribute 'my-date-face nil :height '340)

;;;###autoload
(define-generic-mode hello-world
  '(("/*" . "*/"))                           ; comment characters
  '("hello" "hi" "howdy" "greetings" "hola") ; keywords
  '(("\\([0-9]+/[0-9]+/[0-9]+\\)"
     (1 'my-date-face)))                ; font lock
  '("\\.hello$")                        ; auto-mode-alist  
  '(hello-world-special-setup)          ; function-list
  "An example major mode.
We have comments, keywords, a special face for dates, and recognize .hello files.")

(defun hello-world-special-setup ()
  "Some custom setup stuff done here by mode writer."
  (message "You've just enabled the most amazing mode ever."))

2voto

Drew Points 12071

Le manuel Elisp présente assez bien les principaux modes, et il inclut un nœud qui présente "hello-world" exemples . C'est du moins l'intention, je pense.

Ces exemples ne couvrent peut-être pas tout ce que vous recherchez. Dans ce cas, envisagez de demander ce qui vous semble manquer et qui aiderait davantage les utilisateurs. Pour ce faire, utilisez M-x report-emacs-bug (cela vaut également pour les demandes d'amélioration).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X