Emacs as an IDEまとめ
Emacsでプログラミングをするためのノウハウまとめ.
- テキスト編集は📝Emacs テキスト編集にまとめる.
- 過去にはいろんな戦いがあったが📝Language Server Protocol(LSP)の登場で終戦を迎えたかもしれない.
参照/検索
🔧Emacs Projectile
プロジェクト管理のパッケージ. これの便利なところは, 📝gitの情報を解析するところ. たいていのソフトウェアはgitリポジトリ単位でプロジェクトを分割することが多いので, このスコープに限定しつつ検索できるのはよい.
🔧xref
Find Identifier References.
Emacsではidentifiersをある名前を指し示すものと定義して, それらをプログラマブルに参照するための機構をxrefとして提供している.
we use the term “identifiers” to collectively refer to the names of any kind of subunits, in program source and in other kinds of text alike.
これの便利なところは, いろんな言語でそれぞれのキーバインドを覚える必要がなく, xrefを通じて新しい言語でも検索が便利にできるという, IDEらしい汎用検索インターフェイス.
✅xref-find-definitionsの結果を別のウィンドウに表示するには?
xref-find-definitions-other-windowをつかう.
補完
auto-completeとcompany-modeが二大巨塔.
🔧company-mode
- emacsにモダンなエディタに負けない補完機能を…(1) - Qiita
- Emacsの補完と検索を超強化する - Qiita
- auto-complete から company に移行した - Qiita
corfu.el
ニューフェイス.
https://github.com/minad/corfu
置換
複数ファイルの一括置換と置換(grep-mode)
grep(ag/ripgrep)やそれの類似ツールと絞り込みIF(ivy, vertico)をつかった方法. ツールは流行りによっていろいろ変わるものの, だいたい編集の流れは変わらない.
- 絞り込み検索したら, C-c C-eで一時的なミニバッファに書き出し.
- ミニバッファを修正
- 置換には query-string/iedit/🔧magnars/multiple-cursorsなど.
- C-x C-sで保存(or C-c C-kで破棄).
Insights
優れた IDE が備えるべき機能
まあLSPの登場でもうあまり関係ないかもしれない.
- シンタックスハイライト/ インデント prog-mode
- 検索・置換 iedit, multiple-cursors, helm-ag, helm-swoop….etc
- タグジャンプ ctags
- コード補間auto-complete, yasnippet
- エラーチェックflycheck
- リファクタリング emacs-refactor
- インタープリタ・デバッカ inf-ruby, pry
- プロジェクト管理 projectile
Emacs開発環境でSEOトップを取りたい人生だった
個人的な思い出としては各言語でEmacsの開発環境でSEOトップを目指してブログを書いていた過去があり, なかなか熱いトピックなものの, 技術の移り変わりがはやく数年で使えないノウハウになるのが欠点.