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

StackOverflow https://stackoverflow.com/questions/1063115

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

alt text

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

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

Твое здоровье, рн

Другие советы

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

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

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

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

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

И в итоге вы получаете вот это:

(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."))

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top