2009-06-30 10 views
11

Czy ktoś może dostarczyć mi przykład Witaj świecie dla trybu głównego w emacs? Domyślam się, że jest to pytanie początkujące, nadal bardzo lubię pisać tryb główny, zarówno do nauki emacs i elisp, aby móc w pełni wykorzystać personalizację.Przykład "cześć świat" dla trybu głównego w Emacs?

co zrobiłem do tej pory (i działa):

  • napisał przykładowy plik-mode.el i umieścić go w LISP reż
  • zwanego w .emacs (require 'sample-mode)
  • napisał niektóre defuns w nim, i pod warunkiem, że na koniec (provide 'sample-mode)

Ale wciąż nie wydaje się być aktywowane, nie mogę nazwać to z Tryb-M-próbki.

Jak to zrobić? A czy ktoś może mi dostarczyć bardzo prosty Hello World jak działającą próbkę?

Odpowiedz

10

Ok, po niektóre więcej googling jestem co najmniej jeden etap furhter:

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

ponieważ dostarczanie nie jest określenie trybu, jak myślałem najpierw .. to znalazłem na stronie:

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

Bardzo fajna strona dla miłośników emacs.

Z pomocą: Wykonałem sam przykład HelloWorld: To jest (jak najmniejszy) tryb Csharp. Użyłem raczej Euler1 jako przykładu niż HelloWorld. Pliki, które trzeba wiedzieć o to:

  • plik trybu zostaną zastosowane na Euler1.cs
  • z .emacs
  • i oczywiście się

trybie Ponieważ pic warto przynajmniej grono słowami: wszystkie pliki na ekranie 1:

alt text

Ale ponieważ ten ładny obraz zdaje się zanikać w połowie czasu (czy ktoś jest wskazówką? Otwórz w nowej karcie zawsze przynosi go i adres url jest ok) niektóre słowa zbyt :-):

  1. Tryb: 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. .emacs, który sprawia, że.Pliki cs otwarte w trybie prawej:

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

I to wszystko: sama cs-code jest bezużyteczny jej, bo to nie pokaże efekt barwienia na kluczowe słowa. Aby to zobaczyć, zobacz zdjęcie lub otwórz zdjęcie w innej karcie/oknie.

Zdrówko, ph

+0

+1 za bardzo ładną stronę internetową – dfa

+1

@jrockway: nie zgadzam się tutaj, wiele się od niego nauczyłem, w tym pisanie głównych trybów Mimo, że sam nie może mieć wolnego czasu na swoje własne pomysły, masz na to rację – Peter

+1

@jrockaway: po raz drugi widzę, że krytykujesz Xah ... dlaczego tak go nienawidzisz? – Vivi

5

istnieje kilka przykładów całym Internecie like this. mogę również polecić kilka Emacs książkę:

  • Learning GNU Emacs (najlepiej imho)
  • pisania GNU Emacs Rozszerzenia
  • oficjalnych GNU Emacs Lisp Reference/instrukcja
+1

+1 i dziękuję za link, ale w całej scenie emacs czasami brakuje mi prostych przykładów. Jeden znaczący wyjątek link podany wcześniej: xahlee.org – Peter

+1

sprawdź również emacswiki – dfa

5

Cóż, zacznijmy od this answer, która używa define-generic-mode.

Flesh go z niektórych znaków komentarz typu: /* */, niektóre słowa kluczowe: hellohi itd., Ponowne wykorzystanie twarz z oryginalnego odpowiedź, rozszerzenia pliku .hello i wywołania funkcji zrobić dalsze dostosowanie.

Istnieje dodatkowa linia, która umożliwia automatyczne ładowanie, ale musisz mieć plik generate the loaddefs.el. To bardziej zaawansowane niż witaj świat.

I skończyć z tym:

(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

Instrukcja Elisp wprowadza całkiem dobrze główne tryby i zawiera węzeł, który przedstawia „Hello-świat” examples. Przynajmniej taka jest intencja, jak sądzę.

Te przykłady mogą nie obejmować wszystkiego, czego szukasz. W takim przypadku rozważ zgłoszenie prośby o brakującą informację, która pomogłaby użytkownikom. Aby to zrobić, użyj M-x report-emacs-bug (to jest również dla żądań ulepszenia).

Powiązane problemy