EISLの組み込みエディタ

  • 2
    いいね
  • 0
    コメント

2017-02-11_13-45-38.png

はじめに

自作ISLisp処理系であるEasy-ISLisp(EISL)にCUIエディタを組み込みました。主な目的はRaspberryPiでLispコードを編集することです。ラズパイにはnanoエディタがあるのですが、Lisp用ではありません。かといって、Emacsをラズパイで動作させるのは重荷です。ラズパイでも軽快に動作するLisp用エディタを目標にしてEISLに組み込みました。以下はその仕様の覚書です。

起動

(edit filename) で起動します。

例 (edit "fact.lsp")

既に読み込み済みのファイルがある場合において、引数をnilで呼び出した場合には、その直前状態から編集を再開します。

例 (edit nil)

画面構成

起動すると最上位行に編集中のファイル名とコマンドが表示されます。
2行目から21行目までが編集用の行です。20*80が表示されます。

編集可能文字数

1000*80 文字までの編集が可能です。大きなファイルの編集は予定していません。

編集可能な文字

アスキーコードのみです。漢字、日本語は扱えません。

コマンド

コントロールキーと特定のアルファベットの入力により行います。

CTR+O ファイルを保存します。起動時に指定したファイル名に上書き保存されます。

CTRL+X 終了します。保存はしません。EISLはload関数によりファイルを読み込みます。

CTRL+K 編集画面で選択した行をクリップボードに保存したうえで、編集画面から削除します。

CTRL+U クリップボードに保存されているプログラムを編集画面に貼り付けます。

CTRL+G ヘルプを表示します。

CTRL+_ 指定した行にジャンプします。

ESC TAB 関数名などを補完します。例えばdefuと入れたところでESCをを押してからAを押すとdefunに置換します。置換する選択肢が2以上の場合には最下行に選択肢を表示します。番号で選択したもので置換します。取りやめる場合にはESCキーです。選択肢がない場合にはなにもしません。

設定

組込み関数から設定を変更します。(set-edtor x y) です。

(set-editor 'indent 'auto) 自動インデントモードにします。改行キーを押したときに、自動的にタブを挿入します。

(set-editor 'indent 'manual) 手動インデントモードにします。改行キーを押しても自動的にはタブは挿入されません。手動でタブキーを押します。

(set-editor 'tab 'lisp) Lisp用のインデントにします。
(set-editor 'tab 2) タブを2とします。
(set-editor 'tab 4) タブを4とします。
(set-editor 'tab 8) タブを8とします。

キーワードの色を設定します。nは0~7です。
0=黒、1=赤、2=緑、3=黄、4=青、5=マジェンタ、6=シアン、7=白
(set-editor 'syntax-color n)
(set-editor 'builtin-color n)
(set-editor 'extended-color n)
(set-editor 'string-color n)
(set-editor 'comment-color n)

編集キー

矢印キー 上下左右にカーソルを移動します。

ESC A 現在の行位置をマークします。以後上下カーソル移動によりマークした部分とカーソル行との間が選択され、反転表示されます。

Enterキー 改行するとともに、自動インデントになっていればタブを挿入します。

Tabキー 設定されたスペースを挿入します。初期設定はLisp用のインデントです。

Insertキー 文字挿入と上書きを切り替えます。初期状態は挿入です。

BackSpaceキー 1文字後方削除します。

Deleteキー 1文字前方削除します。

Homeキー 最初の行に編集行を移動します。
ESC |

Endキー 最後の行に編集行を移動します。
ESC /

PageUp 編集画面を1ページ繰り上げます。
Ctrl+Y

PageDown 編集画面を1ページ繰り下げます。
Ctrl+V

カッコ対応

編集モードでは、対応するカッコを色分けをしてわかりやすく表示をしています。

SSH

SSHによりWindows上のTeraTermからEISLを操作してみました。CUIエディタも動作します。Backspaceキーの代わりにDeleteキーを使ってください。HomeキーShiftキーは使えないようです。SSHではコントロールキーを代わりに使ってください。

仕様変更

まだまだこなれてないので、ちょくちょく仕様変更をすることがあるかもしれません。ご容赦ください。

ソースコード

EISL ver0.48よりエディタを組み込んでいます。ソースコードは電子書籍の付録として販売されています。
https://www.amazon.co.jp/dp/B01IMUKOHS