初めに
これは
東京Emacs勉強会 オクトーバーフェスティバル2024
の発表用資料です。
発表時間: 15 分前後 正直荷が重い
権利表記
好きな惣菜発表ドラゴンのドラゴン - ニコニ・コモンズ
を拝借いたしました。ありがとうございます!
-
著作者「ンバヂ」様 (X: https://x.com/nbaji9)
-
原曲『好きな惣菜発表ドラゴン』 (Youtube, ニコニコ動画)
権利表記は 2024 年 6 月時点の規約に従います。
ELisp パッケージを紹介します
conaoware 3 本と evil の話をします。
1. conao3/leaf.el
leaf
を使おう! (定期)
leaf
= modernuse-package
.-
起動が速い (7.2 秒 → 2.5 秒)
leaf
を導入して PC を買い換えれば無敵
use-package
ユーザは腰を上げてください
-
Emacs JP 逆張りで
use-package
を使っていませんか? 🪃 🪃 その技は俺に効く
-
nix-community/emacs-overlay
も
leaf
に対応しており、セミ・ワールドスタンダード DSL の風格を感じました。
- 移行コストは低い (
use-package
と構文がほぼ同じ)
逆張りの参考
- leafのつくりかた
-
micで自作use-package!
-
Elpaca + setup.el でわかりやすく非同期にパッケージを管理する
emacs-straight/setup
-
Emacs の起動時間を""詰める""
zk-phi/setup
-
Emacsを世界最速級で起動する方法
DSL なんて要らねぇ!蛮族パワースタイル
- Vanilla Emacs
2.
conao3/leaf-manager.el
leaf-manager
は
init.el
の基本的な捉え方を塗り替えてくれたパッケージでした。
leaf-manager
の世界観: init.el
≒ leaf
式の DB.
init.el
の中身としては:
- bootstrapping (
leaf
,leaf-manager
) leaf
式の集まり
Demo
leaf-manager
管理下のファイルを確認adoc-mode
のleaf
式を編集してみる
パッケージの追加も leaf-manager
から実施します。
すべての設定はパッケージに対する設定である
通常の設定ではトップレベルに setopt
を書きます:
(setopt custom-file (locate-user-emacs-file "custom.el"))
leaf
ベースのアグレッシブ設定では、 builtin パッケージの設定として
:custom
を書きます:
(leaf *initialize-emacs
:config
(leaf cus-edit ;; 1
:doc "tools for customizing Emacs and Lisp packages"
:tag "builtin" "faces" "help"
:added "2020-03-24"
:custom `((custom-file \,
(locate-user-emacs-file "custom.el"))))
(leaf cus-start
:doc "define customization properties of builtins"
:tag "builtin" "internal"
:url "http://handlename.hatenablog.jp/entry/2011/12/11/214923"
:added "2020-03-24"
:preface
;; 以下略
))
-
1
Builtin パッケージ
conao3 さんの作ってくれた世界観、フレームワークに沿って
init.el
を捉えられるようになりました。作家性を感じます。良すギアッチョ
補足
(Demo) 今日の僕の設定ファイルは org
ベースです。
- 見出しの検索がパッケージの選択になります。
- 設定はトップレベルで書くことも多いです。
僕の設定が汚くても、 conao3 さんの設定は整然としています。癒し!
See also:
2025年からを生きるためのEmacs入門
3. conao3/ox-zenn.el
- ox-hugo が元ネタだとか
Zenn とは、 Zenn Book とは
- Zenn: 技術記事の投稿サイト
-
Zenn Book: 自称技術書
-
e.g.
AtCoder ガチ言語 Haskell 🔥
- e.g. わだば Lisper になる
-
e.g.
AtCoder ガチ言語 Haskell 🔥
Zenn Book のファイル構成と不満点
1 章 1 ファイル。章の並びは config.yaml
で定義する。
見出しの入れ替えが手間
.
├── 1-1-hello-world.md
├── ..
├── config.yaml
├── ..
└── toc.md
title: "AtCoder ガチ言語 Haskell 🔥"
summary: "Haskell で AtCoder に入門しましょう"
topics: ["haskell"]
published: true
price: 0
chapters:
- cover
- intro
- toc
# ~~
Demo: config.yaml
からの章の入れ替え
ox-zenn
でできること
Subtree (見出し) の markdown への変換
活用例: 1 org file = 1 zenn book
Demo: kyopro-bonsai-hs.org
からの章の入れ替え
4. emacs-evil/evil.el
Extensible VI Layer (Vim バインドのパッケージ)
Evil ユーザの割合は?
Emacs User Survey 2020 Results: 7,344 人が回答
(servey としての精度は不明)
約 30% の Emacsen が Vim バインドを利用するようです。
挙手希望: 会場の Evil ユーザは?: xx/32
挙手希望: Evil 以外の modal editing パッケージのユーザは?: xx/32
Evil の何が良いのか
Evil は生粋の Vimmer には不評
Evil は Vim っぽくないところが良いです。具体的には、履歴単位がマクロっぽくなりがちな点!
- undo/redo がやりやすい
- ドットリピート (繰り返し操作) で有用
- マルチラインインサートもより優秀に
テキスト編集において、履歴単位はユーザ (僕) にとって都合の良い単位であって欲しい物です。
お題 1
テキスト編集の簡単なお題を出します! Vim バインドで demo します。
Emacs バインドでの編集方法をぜひ教えてください!
嫉妬
強欲
憤怒
暴食
傲慢
怠惰
色欲
- [ ] 嫉妬 :yasunori:
- [ ] 強欲 :yasunori:
- [ ] 憤怒 :yasunori:
- [ ] 暴食 :yasunori:
- [ ] 傲慢 :yasunori:
- [ ] 怠惰 :yasunori:
- [ ] 色欲 :yasunori:
Demo: Neovim, Evil, evil-mc
お題 2
先ほどの例に改行が加わります:
嫉妬
強欲
憤怒
暴食
傲慢
怠惰
色欲
- [ ] 嫉妬 :yasunori:
TODO
- [ ] 強欲 :yasunori:
TODO
- [ ] 憤怒 :yasunori:
TODO
- [ ] 暴食 :yasunori:
TODO
- [ ] 傲慢 :yasunori:
TODO
- [ ] 怠惰 :yasunori:
TODO
- [ ] 色欲 :yasunori:
TODO
-
evil-insert-vcount
:(LINE COLUMN COUNT)
リスト
- 改行の入力で位置がズレる
- 直してくれば良かったのに……
- 改行の入力で位置がズレる
終わりに
- conaoware は素敵!
- org-mode 最高!
- evil はいいぞ!
メモ: 質問用
- 使用 OS
- 使用 WM (あれば)
- 使用キーボード
- 使用キーボード配列
- Emacs のバージョン
- Emacs のカラーテーマ
- Emacs は主に GUI/CLI を使う
- 主な自作 ELisp パッケージ (あれば)
- Emacs バインド使いである
- Evil や meow 使いである
- General 使いである
- Emacs Distribution の利用 (Doom, Spacemacs, Centaur 他)
- 本日の目的
- 本日お目当ての人
- 注目している ELisp パッケージ開発者
- 身の回りに Emacsen がいる
- Emacs JP に参加している
- 身の回りに Vimmer がいる
- Vim JP に参加している
- ヴィムジェイピィレディオオオォォォォッォ
- Vim Conference 2024 を知っている、参加する
- Yasunori を知っている
- 自分は yasunori である
- 全ての yasunori をスニペットに入れている
- いつでも yasunori する覚悟がある
- awesome.yasunori.dev を知っている
- 自分は senpan だ
- Emacs 内でのシェルの利用 (あれば)
- ターミナルや tmux の使い方 (あれば)
- SKK or IME
eglot
orlsp-mode
dap-mode
のユーザであるtempel
,yasnippet
, etc.- Emacs のフレームの起動数
- バッファ管理の方法 (グループ分けなど)
- バッファバーの表示・非表示
- バッファバー以外のバッファ表示方法 (
dired
など) tab-bar-mode
や関連パッケージの利用desktop-mode
や関連パッケージの利用- サイドバー相当のパッケージの利用
- ステータスバーに Nyancat がいる
- ステータスバーに tanakh がいる
all-the-icons
ornerd-icons
- 検索・補完系パッケージの利用
- Embark の利用
- Nix の利用
org-nix-shell
の利用exec-path
の設定方法- Org mode の用途 (あれば)
org-babel
の用途 (あれば)-
ブログでの使用ツール (
org-publish
,ox-hugo
,markdown-mode
など)
- Emacs はブラウザである
- Emacs は動画再生ソフトである
- Emacs はメーラーである
- Emacs は RSS リーダーである (以下略)
- Emacs で LLM と喋る
- Magit を使う
- Zenn での原稿ファイル形式 (markdown, org, etc.)
- 風になりたいやつだけが Emacs を使えばいい
- Emacs の足りないパッケージ
- 今後 Emacs でやりたいこと
- Emacs に実装されて欲しい機能