Un ejemplo 'hola mundo' de un modo importante en Emacs?
-
21-08-2019 - |
Pregunta
Puede alguien proporcionarme un ejemplo del mundo hola para un modo importante en emacs? Creo que es una pregunta principiante, todavía me gusta mucho escribir un modo mayor, tanto para aprender emacs y elisp, como para ser capaz de utilizar la personalización al máximo.
Lo que he hecho hasta el momento (y trabaja):
- escribió un archivo de ejemplo-mode.el y la puso en un directorio Lisp
- llamada en .emacs
(require 'sample-mode)
- escribió algunas defuns en ella, y siempre que al final
(provide 'sample-mode)
Sin embargo, todavía no parece ser activada , no puedo llamarlo con M-muestra-mode.
Entonces, ¿cómo hacer eso? Y alguien me puede proporcionar con una muy muy simple hola el mundo como muestra de trabajo?
Solución
Ok, después de algo más de googlear Tengo por lo menos un paso furhter:
(define-derived-mode sample-mode ...)
ya que el proveedor no es definir el modo como pensaba primera .. Esto he encontrado en:
http://xahlee.org/emacs/elisp_syntax_coloring.html
Un sitio muy muy agradable para los amantes de emacs.
Con la ayuda de que: He hecho un ejemplo HelloWorld mí mismo: Es un modo de Csharp (lo más pequeño posible). He utilizado Euler1 como ejemplo en lugar de HelloWorld. Los archivos que necesita conocer son las siguientes:
- el archivo de la modalidad se aplicará sobre
Euler1.cs
- los .emacs
- y por supuesto el modo en sí
Desde una foto vale la pena, al menos, un montón de palabras: todos los archivos en 1 pantalla:
Pero como esto nice pic parece desaparecer la mitad del tiempo (¿alguien una pista Abrir en una nueva pestaña siempre trae encendido, y la url está bien?) Algunas palabras demasiado :-):
-
El modo: 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)
-
Los .emacs que hace que los archivos abiertos en el modo correcto los Cs:
;; cs (require 'cs-mode) (add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode))
Y eso es todo: la cs-code
sí mismo es inútil ella, porque no va a mostrar el efecto de la coloración de las palabras-clave. Para ver que ver la foto, o abrir la foto en otra pestaña / ventana.
Saludos, pH
Otros consejos
hay varios ejemplos en todo el como esto . También puedo recomendar varios libros Emacs:
- Aprendizaje de GNU Emacs (el mejor en mi humilde opinión)
- Escritura GNU Emacs extensiones
- la referencia oficial GNU Emacs Lisp / Manual
Bueno, vamos a empezar con esta respuesta , que utiliza define-generic-mode
.
carne hacia fuera con algunos caracteres de comentario como: /* */
, algunas palabras clave: hello
hi
etc., volver a utilizar la cara de la respuesta original, una extensión de archivo .hello
, y una llamada a la función hacer una mayor personalización.
No está la línea adicional para obtener autoloading de trabajo, pero hay que generar el archivo loaddefs.el . Eso es más avanzado que el hola mundo.
Y, usted termina con esto:
(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."))
El manual Elisp introduce modos principales bastante bien, y que incluye un nodo que presenta "hola mundo" ejemplos . Al menos esa es la intención, creo.
Estos ejemplos podrían no cubrir todo lo que busca. En ese caso, considere pedir lo que creas que no se encuentra que ayudaría a los usuarios más. Para hacer eso, usar M-x report-emacs-bug
(es decir, para las solicitudes de mejora también).