Emacs のメジャー モードの 'hello world' の例ですか?
-
21-08-2019 - |
質問
誰かが emacs のメジャーモードの hello world の例を提供してもらえますか?初心者の質問だと思いますが、カスタマイズを最大限に活用できるように、emacs と elisp の両方を学ぶために、メジャー モードを作成するのが本当に好きです。
私がこれまでにやったこと(そして働いていること):
- ファイルsample-mode.elを作成し、それをLISPディレクトリに置きました
- .emacs で呼び出される
(require 'sample-mode)
- その中にいくつかの defun を記述し、最後に提供しました
(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
- .emacs
- そしてもちろんモード自体も
写真には価値があるので、少なくともたくさんの言葉が必要です。すべてのファイルを 1 つの画面に表示:
しかし、この素敵な写真は半分の確率で消えてしまうようです(誰か手がかりはありますか?)新しいタブで開くと常にオンになり、URL は問題ありません) いくつかの単語も :-) :
モード: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)
.emacs、.cs ファイルを適切なモードで開くようにします。
;; cs (require 'cs-mode) (add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode))
以上です:の cs-code
それ自体は役に立たない、なぜならキーワードに色を付ける効果が現れないからである。それを確認するには、写真を参照するか、別のタブ/ウィンドウで写真を開きます。
乾杯、先生
他のヒント
Web 上にはいくつかの例があります このような。Emacs の本もいくつかお勧めします。
- GNU Emacs を学ぶ (私見では最高)
- GNU Emacs 拡張機能の作成
- 公式の GNU Emacs Lisp リファレンス/マニュアル
さて、この答えから始めましょう define-generic-mode
に使用に、。
のようないくつかのコメント文字とそれを肉付け:/* */
、いくつかのキーワード:。hello
hi
など、再使用、オリジナルの答え、ファイル拡張子.hello
、さらにカスタマイズを行うための関数呼び出しから顔を
がありオートロード作業を取得するための追加のラインですが、あなたはに持っていますloaddefs.el のファイルを生成します。それは、世界ハローより高度なのです。
そして、あなたはこれで終わります
(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マニュアルはかなりメジャーモードを紹介し、それが「こんにちは世界」を提示したノード<のhref = "http://www.gnu.org/software/emacs/manual/html_node/elisp/Exampleを含み-Major-Modes.html」REL = "nofollowを">の例のの。少なくとも、それが意図され、私は考えてます。
これらの例は、あなたが探しているすべてをカバーしない場合があります。その場合は、あなたがより多くのユーザーを助けることが欠けていると思うものは何でも要求することを検討してください。これを行うには、(それはまた、改善要求のためである)のM-x report-emacs-bug
を使用します。