Pergunta

Alguém pode me fornecer um exemplo Olá mundo para um modo importante no emacs? Eu acho que é uma questão novato, ainda que eu realmente gosto de escrever um modo importante, tanto para aprender emacs e elisp, a ponto de ser capaz de usar a personalização ao máximo.

O que tenho feito até agora (e está trabalhando):

  • escreveu um arquivo de amostra-mode.el e colocá-lo em um lisp dir
  • chamado .emacs (require 'sample-mode)
  • escreveu algumas defuns nele, e desde que no (provide 'sample-mode) final

Mas ainda não parece ser ativados , não posso chamá-lo com amostra do modo-M.

Então, como fazer isso? E alguém pode me fornecer uma muito, muito simples Olá mundo como exemplo de trabalho?

Foi útil?

Solução

Ok, depois de mais alguns googling eu sou pelo menos um passo furhter:

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

desde o fornecimento não está definindo o modo como eu pensava .. O que eu achei em:

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

Um muito bom local para o Emacs-amantes.

Com a ajuda de que: I fez um exemplo HelloWorld-me agora: É um (tão pequeno quanto possível) Modo Csharp. Eu tenho usado Euler1 como exemplo, em vez de HelloWorld. Os arquivos que você precisa saber sobre são:

  • o arquivo do modo será aplicado sobre Euler1.cs
  • as .emacs
  • e, claro, o modo em si

Uma vez que um pic vale a pena, pelo menos, um monte de palavras: todos os arquivos em 1 tela:

text alt

Mas desde que este nice pic parece desaparecer metade do tempo (? Qualquer uma pista Abrir em uma nova aba sempre traz-lo, eo url é ok): algumas palavras também :-):

  1. O 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. Os .emacs, que faz com que os .cs arquivos abertos no modo certo:

;; cs
(require 'cs-mode)
(add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode))

E isso é tudo: o próprio cs-code é inútil ela, porque ele não vai mostrar o efeito da coloração as palavras-chave. Para ver que vêem o pic, ou abrir o pic em outra aba / janela.

Cheers, ph

Outras dicas

há vários exemplos em todo o Web como este . Também posso recomendar-lhe várias livro Emacs:

  • Aprendizagem GNU Emacs (o melhor IMHO)
  • Writing GNU Emacs Extensions
  • referência oficial GNU Emacs lisp / manual

Bem, vamos começar com esta resposta , que usa define-generic-mode .

Flesh-lo com alguns personagens comentário como: /* */, algumas palavras-chave:. hello hi etc., re-utilizar a face da resposta original, um .hello extensão de arquivo, e uma função chamada para fazer uma maior personalização

Há a linha adicional para obter auotocarregáveis ??de trabalho, mas você tem que gerar o arquivo loaddefs.el . Isso é mais avançado do que Olá mundo.

E, você acabar com esta:

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

Os elisp manual apresenta os principais modos muito bem, e inclui um nó que apresenta "Olá mundo" exemplos . Pelo menos essa é a intenção, eu acho.

Esses exemplos não pode cobrir tudo o que você está procurando. Nesse caso, considerar a solicitação de tudo o que você acha que está faltando que iria ajudar os usuários mais. Para fazer isso, use M-x report-emacs-bug (que é para solicitações de melhoria também).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top