2009-06-30 8 views
11

Qualcuno può fornirmi un esempio di ciao mondo per una modalità principale in emacs? Immagino sia una domanda per principianti, ancora mi piace molto scrivere una modalità importante, sia per imparare emacs sia per elis, in modo da poter usare la personalizzazione al meglio.Un esempio di "ciao mondo" per una modalità principale in Emacs?

Quello che ho fatto finora (e sta lavorando):

  • ha scritto un file di esempio-mode.el e metterlo in una directory Lisp
  • chiamato .emacs (require 'sample-mode)
  • scritto alcuni Defuns in esso, e ha fornito alla fine (provide 'sample-mode)

Ma ancora non sembra essere attivato , non posso chiamarlo con M-campione-mode.

Quindi, come fare? E qualcuno può fornirmi un Hello World molto semplice come un campione di lavoro?

risposta

10

Ok, dopo un po 'di più googling io sono almeno un passo furhter:

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

dal momento che la fornitura non è definire la modalità di come ho pensato prima .. Questo ho trovato su:

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

Un sito molto bello per gli amanti di emacs.

Con l'aiuto di questo: ho creato un esempio HelloWorld ora: È una (più piccola possibile) modalità Csharp. Ho usato Euler1 come esempio piuttosto che HelloWorld. I file necessari per conoscere sono:

  • il file la modalità sarà applicato su Euler1.cs
  • le .emacs
  • e naturalmente la modalità in sé

Da un pic vale la pena , almeno un mucchio di parole: tutti i file sul 1 schermo:

alt text

Ma dal momento che questa bella foto sembra scomparire metà del tempo (qualcuno un indizio? Apri in nuova scheda porta sempre su, e l'URL è ok) alcune parole troppo :-):

  1. La modalità: 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. Il .emacs, che rende il.file cs aprono nella modalità giusta:

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

E questo è tutto: il cs-code sé è inutile lei, perche 'non mostrerà l'effetto di colorare le parole-chiave. Per vedere che vedere la foto, o aprire l'immagine in un'altra scheda/finestra.

Cheers, ph

+0

+1 per il sito molto bello – dfa

+1

@jrockway: non sono d'accordo qui, ho imparato molto da lui, compresa la scrittura delle principali modalità Anche se non avrebbe avuto tempo da dedicare alle proprie idee, hai un punto lì – Peter

+1

@jrockaway: è la seconda volta che ti vedo criticare Xah ... perché lo odi così tanto? – Vivi

5

ci sono diversi esempi in tutto il Web like this. Posso anche raccomandare diversi Emacs libro:

  • Learning GNU Emacs (il migliore imho)
  • scrittura GNU Emacs estensioni
  • le Emacs ufficiali GNU LISP di riferimento/manuale
+1

+1 e grazie per il link, ma in tutta la scena di emacs, a volte una mancanza di semplici esempi mi disturba un po '. Un'eccezione degna di nota il collegamento fornito in precedenza: xahlee.org – Peter

+1

controlla anche emacswiki – dfa

5

Beh, Iniziamo con this answer, che utilizza define-generic-mode.

carne fuori con alcuni caratteri di commento come: /* */, alcune parole chiave: hellohi ecc, ri-utilizzare la faccia dalla risposta originale, un'estensione di file .hello, e una funzione di chiamata a fare ulteriori personalizzazioni.

C'è la riga aggiuntiva per il caricamento automatico, ma è necessario il file generate the loaddefs.el. È più avanzato di Hello World.

E, si finisce con questo:

(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.")) 
0

Il manuale Elisp introduce modalità principali abbastanza bene, e include un nodo che presenta "ciao-mondo" examples. Almeno questa è l'intenzione, penso.

Questi esempi potrebbero non coprire tutto ciò che stai cercando. In tal caso, considera la possibilità di richiedere qualsiasi cosa tu pensi che manchi che possa aiutare di più gli utenti. Per fare ciò, utilizzare M-x report-emacs-bug (vale a dire anche per richieste di miglioramento).