AI開発 / Tech
Emacsでリアルタイム編集反映と差分表示
Xでシェア
ON AIR
0:00
--:--
RADIO
☰
目次
最近はWSL + OpenCodeでソフトウェア実装するときの環境について試行錯誤してます。
要件としては
- CUIでエージェントに指令
- 分割した別エリアでエディタを表示(できたら差分が分かる形で)
みたいにしたい。
現状の構成
まあVSCodeで良さそうなもんだけど、個人的な好みでCUIでやりたい。
で、とりあえず今は以下の構成
- WezTerm(マルチプラットフォーム向けのRust製ターミナルソフト。画面分割表示ができる)
- Emacs(WSLにインストール。CUI版をWezTerm内で使っている)
Emacsは私が使い慣れてるから使ってるだけです。久しぶりに使ったけど以外に指が覚えていた。
で、Emacsに diff-hl-modeを入れて差分表示され、ファイルの変更がリアルタイムに反映されるようにしている。
これによって、AIエージェントがファイルを変更するとリアルタイムに追加した行/削除した行がわかるというわけです。
WezTermの各窓での実行内容
- 左:
sbx run opencode - 右上:
watch -n 1 --color 'git -c color.status=always status' - 右下:
emacs -new <ファイル名>
Emacsの設定
;; Git差分を表示
(global-diff-hl-mode 1)
(unless (display-graphic-p)
(diff-hl-margin-mode 1))
;; ファイルが書き換えられたらバッファを自動更新
(global-auto-revert-mode 1)
(setq auto-revert-use-notify t)
(diff-hl-flydiff-mode 1)
;; 新規ファイルも差分表示をさせる
(defun my-diff-hl-intent-to-add-untracked ()
"Make an untracked visited file visible to Git diff."
(when-let* ((file buffer-file-name)
(root (locate-dominating-file file ".git")))
(let ((default-directory root))
(unless (= 0 (call-process
"git" nil nil nil
"ls-files" "--error-unmatch" "--" file))
(call-process "git" nil nil nil
"add" "-N" "--" file)
(when (bound-and-true-p diff-hl-mode)
(diff-hl-update))))))
(add-hook 'find-file-hook #'my-diff-hl-intent-to-add-untracked)
(add-hook 'after-revert-hook #'my-diff-hl-intent-to-add-untracked)
WezTermの使い方
といっても私もあんまりわかってない。
とりあえず
- 画面横分割は
Ctrl-Alt-Shift-%同時押し - コピー:
Ctrl-Shift-C - ペースト:
Ctrl-Shift-V
コメント
まだコメントはありません。