Пример "Привет, мир" для основного режима в 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-адрес в порядке) некоторые слова тоже:-):
Режим: 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)
.Emacs, который открывает файлы.cs в правильном режиме:
;; cs (require 'cs-mode) (add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode))
И это все: cs-code
сама по себе она бесполезна, потому что она не показывает эффекта окрашивания ключевых слов. Чтобы увидеть это, посмотрите изображение или откройте изображение в другой вкладке / окне.
Ура, тел
Хорошо, давайте начнем с этого ответа, который использует define-generic-mode
,
Дополните это некоторыми комментариями:/* */
некоторые ключевые слова:hello
hi
и т. д., повторно используйте лицо из исходного ответа, расширение файла .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
(это также касается запросов на улучшение).