1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Emacs風のCUIエディタを作った話(2)

Last updated at Posted at 2024-08-24

千秋楽

自作のLisp処理系のEasy-ISLisp本体はやり尽くしました。ISLisp規格にないモデュール、並列機能、TCP/IP通信などの拡張。コンパイラの改良、型推論・・・ 満足です。
最後の仕上げはLisp専用エディタです。時代に逆行したようなCUIエディタですが、これもまたレトロな雰囲気でオツなものです。バグをとり、改良をしほぼ満足のいく状態になりました。これが最後のLisp奉公。ご紹介いたします。

外観

bandicam 2024-08-24 15-29-09-304.jpg

tmuxを使っています。左側がエディタのEdlisです。右側がEasy-ISLispです。tmuxの設定ファイルでマウスで分割画面をいったりきたりできるようにしてあります。Emacsになれた人ならEmacsの画面移動ショートカットキーと同じにしておいてもいいかもしれません。

キーバインド

Edwinと互換、Emacsのほぼサブセットです。Emacs使いの人にも使えると思います。私はその昔、テキサスインスツルメント社のPC-Schemeを使っていた頃を思い出して、懐かしい気分です。キーバインディングはヘルプキーで説明が表示されます。ヘルプは CTRL+H です。

bandicam 2024-08-25 08-50-44-502.jpg

補完

ISLispと拡張関数について補完ができます。ESC Tab で補完します。

bandicam 2024-08-25 08-22-48-580.jpg

info

ISLispの組み込み関数について引数、戻り値、説明を表示することができます。説明が必要な関数名の後ろにカーソルを合わせておいてESC i で下段に説明が表示されます。

bandicam 2024-08-25 08-26-26-701.jpg

カッコ対応、オートインデント

Lispの場合にはカッコ対応、カッコ位置による適切なインデントが重要です。設定なしで適当にインデントし、対応カッコを強調表示します。

bandicam 2024-08-25 08-30-07-655.jpg

S式単位の移動、ワード単位の移動

Emacs,Edwinと同様です。

bandicam 2024-08-25 08-31-56-764.jpg

改造

OSSで、C言語で3000行程度です。簡単にカスタマイズできます。ドキュメントのEDLIS.mdに改造のヒントを書いておきました。ご自由に改造してください。C言語でカスタマイズできるのでLisp初心者でも改造は簡単です。

Lispのココロは自由

好きなように大改造してお楽しみください。何をどうしようとお好みのまま。自由にやれるのがLispの最大の魅力です。それはEmacsのやり方と違うなんて野暮なことは言いっこなしですよ。不条理なのが現実世界、せめてLispくらいは楽しくやろうじゃありませんか。

世の中はGUIが主流、VSCodeのようなバリバリに強力で素敵なエディタがあります。何を使おうと自由です。それがLispです。ISLispもこれが絶対に正しいなんて書法はありません。文法違反は動作しませんが、そうでなければ精一杯、試行錯誤しつつ楽しんでください。質問は難しいことでなければ私でもお答えできます。難しい質問は識者である五味先生がお答えくださるでしょう。五味先生も自由を愛するジョーク大好きな方とお見受けいたします。どうぞLisp、ISLispをエンジョイしてください。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?