Пример "привет мир" для основного режима в Emacs?
Может ли кто-нибудь предоставить мне пример приветствия для основного режима в emacs?
Я предполагаю, что это новичок, но мне очень нравится писать основной режим, как для изучения emacs, так и для elisp, чтобы иметь возможность использовать настройку в полной мере.
То, что я сделал до сих пор (и работает):
- написал файл sample-mode.el и поместил его в директорию lisp
- вызван в .emacs
(require 'sample-mode)
- написал некоторые defuns в нем и предоставил его в конце
(provide 'sample-mode)
Но все же он, похоже, не активирован, я не могу назвать его с M-образцовым режимом.
Итак, как это сделать? И может ли кто-нибудь предоставить мне очень простой Hello World, как рабочий образец?
Ответы
Ответ 1
Хорошо, после еще нескольких поисковых запросов я по крайней мере на один шаг:
(define-derived-mode sample-mode ...)
поскольку предоставление не определяет режим, как я думал сначала.
Это я нашел на:
http://xahlee.org/emacs/elisp_syntax_coloring.html
Очень приятный сайт для любителей emacs.
С помощью этого: теперь я сделал пример HelloWorld: это (как можно меньше) режим Csharp. Я использовал Euler1 как пример, а не HelloWorld. Файлы, о которых вам нужно знать, следующие:
- файл, режим будет применен на
Euler1.cs
- .emacs
- и, конечно, сам режим
Поскольку pic стоит, по крайней мере, куча слов: все файлы на 1 экране:
![alt text]()
Но так как эта симпатичная картинка, кажется, исчезает в половине случаев (кто-нибудь подскажет? Открыть в новой вкладке всегда приносит ее, а URL-адрес в порядке) некоторые слова тоже:-):
;; cs
(require 'cs-mode)
(add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode))
И это все: сам cs-code
бесполезен ей, потому что он не покажет эффект окраски ключевых слов. Чтобы увидеть это, см. Рис., Или откройте рис. В другой вкладке/окне.
Приветствия, ph
Ответ 2
есть несколько примеров в Интернете как это.
Я также могу порекомендовать вам несколько книг Emacs:
- Изучение GNU Emacs (лучший имхо)
- Написание расширений GNU Emacs
- официальный справочник GNU Emacs lisp справочник
Ответ 3
Хорошо, давайте начнем с этого ответа, в котором используется 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."))
Ответ 4
В руководстве Elisp очень хорошо представлены основные режимы и включает node, который представляет "привет-мир" examples. По крайней мере, это намерение, я думаю.
Эти примеры могут не охватывать все, что вы ищете. В этом случае рассмотрите вопрос о том, что вы считаете отсутствующим, что поможет пользователям больше. Для этого используйте M-x report-emacs-bug
(также для запросов на повышение).