個人的なemacsのmajor-modeの作成方法についてのまとめ(リンク集)

なんか忘れてしまったので個人用のまとめ。おそらく他の人に役に立つことは無い。

emacswikiから

major-modeを定義する方法については概ねemacswikiに説明がある。

define-generic-modeは新しいmajor-modeを一から作るためのhelper。define-derived-modeは既存のmodeを拡張したmajor-modeを作るためのhelper。

詳細

from scratch

https://www.emacswiki.org/emacs/SampleMode

other examples

http://www.cs.ise.shibaura-it.ac.jp/wiki/wiki.cgi?page=Emacs%A5%E2%A1%BC%A5%C9%BA%EE%C0%AE%BC%EA%BD%E7

これはスクラッチから定義する別例。

generic-mode

define-generic-mode

(define-generic-mode MODE COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST
AUTO-MODE-LIST FUNCTION-LIST &optional DOCSTRING)

other examples

https://qiita.com/tm_tn/items/3b40b5ab5e72750ffd7f

これは以下の機能を追加した別例

  • eldocとの連携

derived-mode

define-derived-mode

(define-derived-mode CHILD PARENT NAME &optional DOCSTRING &rest BODY)

other examples

http://www.wilfred.me.uk/blog/2015/03/19/adding-a-new-language-to-emacs/

これは以下のような機能を追加した別例

  • syntax highlight
  • indentation
  • flycheck (lint)
  • completion

refs

goでfunctional optionsを使う場合には、こういう感じで書かれていると嬉しいという話。

今日は素朴な話。functional optionsの利用者がこういう感じでコードを書いてくれると嬉しいよという話。

functional options ?

goでわりと有名なデザインパターン(?)。

初出はこの辺り。ただ最近利用されているのはここに書かれている内容を簡略化した亜種のようなものだと思う。

解説はこの辺りが丁寧。

日本語だとこの辺り(?)。正直な所テキトーにググってみて幾つか覗いてみるのが一番手軽だと思う1

まぁ今回の記事はfunctional optionsが分かっていること前提の話で。

こう書いてくれると嬉しい

いつもはライブラリの提供者側のことが多いのだけれど。今回はライブラリの利用者側の立場からの話(生産者と消費者の消費者側)。

functional optionsというのは一言で言うと「コードを調整可能」にするパターンだと思っている。そういうわけで、調整のしやすさが担保されていると便利ということになる。

いつもはコードのスタイルについて口うるさく言いたい方ではないのだけれど2。functional optionsに関してはこうして欲しいと言うような要望が出てきた。

それはこういう形にして欲しいということ。下のようなコードだと嬉しい。

UseOptions(
    config,
    WithFoo(),
    WithBar(xxx),
    WithBoo(yyy),
)

逆に言うとこういう形だと嬉しくない。一行で全部書かれているようなもの

UseOptions(config, WithFoo(), WithBar(xxx), WithBoo(yyy))

理由は単純でオプション部分を手軽に増減させたいから。調整可能ということはいじりやすくなっているべきという話だし。emacsなら Ctrl + kvim なら dd でなど1行まるっと消す操作というのは一般に標準装備3。その1行まるっと消す操作で不要なオプションなどが消せると便利だよね嬉しいという話でした。


  1. オススメの記事見つけたら教えてください :pray:

  2. gofmt使ってねくらい

  3. もう少しモダン(?)なエディタの例も載せたいですね。。