Пример "Привет, мир" для основного режима в Emacs?

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

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

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

Но, похоже, он не активирован, я не могу вызвать его в режиме M-sample-mode.

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

4 ответа

Решение

Хорошо, после некоторого поиска в Google я, по крайней мере, на шаг впереди:

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

так как предоставление не определяет режим, как я думал сначала.. Это я нашел на:

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

Очень очень хороший сайт для любителей Emacs.

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

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

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

альтернативный текст

Но так как эта милая картинка, кажется, исчезает наполовину (кто-нибудь подсказка? Открыть в новой вкладке всегда вызывает его, и 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 сама по себе она бесполезна, потому что она не показывает эффекта окрашивания ключевых слов. Чтобы увидеть это, посмотрите изображение или откройте изображение в другой вкладке / окне.

Ура, тел

Хорошо, давайте начнем с этого ответа, который использует define-generic-mode,

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

Есть дополнительная строка для работы автозагрузки, но вы должны сгенерировать файл 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."))

Есть несколько примеров в Интернете, как это. Я также могу порекомендовать вам несколько книг по Emacs:

  • Изучение GNU Emacs (лучшее imho)
  • Написание расширений GNU Emacs
  • официальный справочник / руководство по GNU Emacs lisp

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

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

Другие вопросы по тегам