2009-06-30 1 views
11

Может ли кто-нибудь предоставить мне пример приветствия для основного режима в emacs? Я думаю, это вопрос начинающих, но мне очень нравится писать основной режим, как для изучения emacs, так и для elisp, чтобы иметь возможность использовать настройку в полной мере.Пример «привет мир» для основного режима в Emacs?

То, что я сделал до сих пор (и работает):

  • написал образец файла-mode.el и поместить его в LISP реж
  • называется в .emacs (require 'sample-mode)
  • написал некоторые Определения функций в нем, и при условии, что в конце (provide 'sample-mode)

Но все это не кажется, активированный, я не могу назвать его М-образец режим.

Итак, как это сделать? И может ли кто-нибудь предоставить мне очень простой Hello World, как рабочий образец?

ответ

10

Ok, после того, как некоторые более прибегая к помощи я по крайней мере один шаг furhter:

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

поскольку обеспечение не является определяющим режим, как я думал, что первый .. Это я нашел:

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

Очень приятный сайт для любителей emacs.

С помощью этого: сейчас я сделал пример HelloWorld: это (как можно меньше) режим Csharp. Я использовал Euler1 как пример, а не HelloWorld. Файлы, которые вы должны знать о являются:

  • файл режим будет применяться на Euler1.cs
  • в .emacs
  • и, конечно, сам

режим Так как рис стоит , по крайней мере, куча слов: все файлы на 1 экране:

alt text

Но так как этот красивый рис, кажется, исчезает в половине случаев (кто-нибудь подскажет? Открыть в новой вкладке всегда приносит его, и URL в порядке) некоторые слова тоже :-):

  1. Режим: 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, что делает.CS-файлы открываются в нужном режиме:

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

И то все: сам cs-code бесполезен ее, потому что она не будет показывать эффект окрашивания ключевых слов. Чтобы увидеть это, см. Рис., Или откройте рис. В другой вкладке/окне.

Приветствие, тела

+0

+1 для очень приятного сайта – dfa

+1

@jrockway: не соглашаясь здесь, я многому научился у него, в том числе написания основных режимов. Хотя у него не было свободного времени, включая его собственные идеи, у вас есть точка там – Peter

+1

@jrockaway: это второй раз, когда я вижу, как вы критикуете Ха ... почему вы так его ненавидите? – Vivi

5

есть несколько примеров вокруг Web like this. я также могу порекомендовать вам несколько Emacs книги:

  • Learning GNU Emacs (лучший IMHO)
  • Writing GNU Emacs Extensions
  • официальной GNU Emacs Lisp ссылка/ручной
+1

+1 и спасибо за ссылку, но во всей сцене emacs, иногда недостаток простых примеров немного меня беспокоит. Одним из примечательных исключений является ссылка, предоставленная ранее: xahlee.org – Peter

+1

проверить также emacswiki – dfa

5

Ну, начнем с this answer, который использует define-generic-mode.

Плоть его с некоторыми комментариями героев как: /* */, некоторые ключевые слова: hellohi и т.д., повторно использовать лицо от первоначального ответа, расширение файла .hello, и вызов функции, чтобы сделать дополнительные настройки.

Есть дополнительная строка, позволяющая работать с автозагрузкой, но у вас есть файл generate the loaddefs.el. Это более продвинутый, чем привет мир.

И, вы в конечном итоге с этим:

(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

Руководство Elisp вводит основные режимы довольно хорошо, и включает в себя узел, который представляет «привет-мир» examples. По крайней мере, это намерение, я думаю.

Эти примеры могут не охватывать все, что вы ищете. В этом случае рассмотрите вопрос о том, что вы считаете отсутствующим, что поможет пользователям больше. Для этого используйте M-x report-emacs-bug (то есть также для запросов на повышение).