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?

¿Fue útil?

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:

text alt

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 :-):

  1. 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)
    
  2. 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).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top