13

誰でも emacs のメジャー モードの Hello World の例を教えてもらえますか? 初心者の質問だと思いますが、カスタマイズを最大限に活用できるように、emacs と elisp の両方を学ぶためにメジャーモードを書くのが本当に好きです。

私がこれまでに行ったこと(および機能している):

  • ファイル sample-mode.el を作成し、それをlispディレクトリに配置しました
  • .emacs で呼び出される(require 'sample-mode)
  • その中にいくつかのdefunを書き、最後にそれを提供しました(provide 'sample-mode)

しかし、まだアクティベートされていないようで、M-sample-mode では呼び出すことができません。

では、どうやってそれを行うのですか?そして、誰かが作業サンプルのような非常に単純な Hello World を私に提供できますか?

4

4 に答える 4

11

わかりました、もう少しグーグルした後、私は少なくとも一歩進んでいます:

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

私が最初に考えたように提供がモードを定義していないので..これは私が見つけた:

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

emacs 愛好家にとって非常に素晴らしいサイトです。

その助けを借りて: 私は今、自分で HelloWorld の例を作成しました: これは (できるだけ小さい) Csharp モードです。HelloWorld ではなくEuler1を例として使用しました。知っておく必要があるファイルは次のとおりです。

  • モードが適用されるファイル Euler1.cs
  • .emacs
  • そしてもちろんモード自体

写真は価値があるので、少なくとも単語の束: 1 つの画面上のすべてのファイル:

代替テキスト

しかし、この素敵な写真は半分の時間で消えるように見えるので (手がかりがある人はいますか? 新しいタブで開くと常に表示され、URL は問題ありません) いくつかの単語も :-) :

  1. モード: 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. .csファイルを正しいモードで開く.emacs:

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

それだけです。cs-codeそれ自体は役に立たないので、キーワードを色付けする効果が表示されません。それを確認するには、写真を見るか、別のタブ/ウィンドウで写真を開いてください。

乾杯、ph

于 2009-06-30T11:36:19.127 に答える
6

このようなWeb の周りにはいくつかの例があります。また、いくつかの Emacs の本をお勧めします。

  • GNU Emacsの学習(最高の私見)
  • GNU Emacs 拡張機能の作成
  • 公式の GNU Emacs Lisp リファレンス/マニュアル
于 2009-06-30T11:39:00.993 に答える
6

では、 を使用するこの answerから始めましょう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."))
于 2009-07-08T18:05:59.330 に答える
2

Elisp のマニュアルでは、主要なモードがよく紹介されており、「hello-world」の例を示すノードが含まれています。少なくともそれが意図だと思います。

これらの例は、探しているものすべてをカバーしていない可能性があります。その場合は、不足していると思われるものをリクエストして、ユーザーをさらに支援することを検討してください。これを行うには、使用しますM-x report-emacs-bug(これは拡張要求にも使用されます)。

于 2015-03-07T15:35:20.650 に答える