2017-02-11_13-44-42.png

はじめに

自作Prolog処理系であるO-Prolog(OPL)にCUIエディタを組み込みました。主な目的はRaspberryPiでPrologコードを編集することです。ラズパイでも軽快に動作するProlog用エディタを目標にしてOPLに組み込みました。以下はその仕様の覚書です。

起動

edit(filename) で起動します。

例 edit('fact.pl').

既に読み込み済みのファイルがある場合において、引数を[](空リスト)とした場合には、その直前状態から編集を再開します。

例 edit([]).

画面構成

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

編集可能文字数

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

編集可能な文字

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

コマンド

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

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

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

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

CTRL+U 編集画面で選択した行をクリップボードにコピーします。

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

設定

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

set_editor(repl,on). REPL編集モードをオンにします。

set_editor(repl,off). REPL編集モードをオフにします。

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

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

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(operator_color, n)
set_editor(builtin_color, n)
set_editor(extended_color, n)
set_editor(quote_color, n)
set_editor(comment_color, n)

編集キー

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

シフトキーを押しながら上下キーを押しますとその部分が選択されて、反転表示されます。
SSHのときには代わりに以下のキーを使ってください。
Ctrl+Y ↑ Ctrl+U ↓ (SSH)

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

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

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

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

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

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

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

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

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

ESC TAB コンプリーション

カッコ対応

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

SSH

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

仕様変更

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

ソースコード

O-Prolog ver0.51よりエディタを組み込んでいます。ソースコードは電子書籍の付録として販売されています。Windows版にはCUIエディタは組み込まれていません。Windowsではエスケープシーケンスが使えないからです。

https://www.amazon.co.jp/dp/B01M3TVQ5M

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.