MX Linux 18にSublimeText3によるCommonLisp開発環境構築
普段、自分はCommonLispのコードを書いたり試したりするとき、鉄板のSLIMEを利用しています。
普段からEmacsを使っているので、SLIMEで事足りているんですが、CommonLispを布教する時、残念ながらEmacsは初心者の障壁になってしまいます。
一部の人からは、変態扱いまでされてしまうしまつ・・・。
そこで、SublimeText3で環境を整えてみます。
- MX Linux 18にSublimeText3によるCommonLisp開発環境構築
ClozureCLのインストール
なにはともあれ、CommonLispの実行環境をインストールしなければなりません。
以前は、エイリアン本の影響でCLISPを使っていたんですが、QuickLispがまともに動作しない症状に悩まされ、ClozureCLを選択しました。
理由は、たまたま布教相手がMacユーザーだったから。
ダウンロード
本家のサイトからダウンロードします。
https://ccl.clozure.com/download.html
画面中央少し上の右あたりにあるリンクがダウンロードのリンク。
Linuxの横にある「.tar.gz」をクリックしてファイルをダウンロードし、解凍するとcclフォルダができます。
cclフォルダを、~/opt など、好きなところに配置。
インストール
cclフォルダの中にある「lx86cl64」のソフトリンク(ショートカット)を作成し、名前をcclに変更。
※32bit版の場合はlx86clをソフトリンクに
作成したcclを /usr/local/bin/ へコピー。
これで、次回ターミナル実行時から、プロンプトに ccl とタイプしてEnterキーを叩けば、ClozureCLのREPLが起動されます。
※環境によっては、chmod コマンドで「lx86cl64」と「lx86cl」に実行権限を与えてやる必要があるかもしれません。
SublimeText3をインストール
SublimeText3の本家から実行ファイルをダウンロードします。
https://www.sublimetext.com/3
Webページ上部にある下記の文字列に注目です。
Linux repos - also available as a 64 bit or 32 bit tarball
「64bit」か「32bit tarball」のリンクをクリックしてダウンロードします。
ダウンロードしたファイルを解凍すると、「sublime_text_3」フォルダが作成されます。
作成されたフォルダを ~/opt の中に配置。
sublime_text_3フォルダの中にある「sublime_text」が、実行するアプリケーション本体です。
※環境によっては chmod コマンドで実行権限を与えてやる必要があるかもしれません。
SublimeText3にプラグインシステムを導入
SublimeText3とくれば必須のプラグインシステムです。
英語のサイトですが、プラグインシステムの導入方法がきちんと記載されています。
英語ですが、恐れずに眺めましょう!
https://packagecontrol.io/installation#st3
SublimeText3 で Ctrl + `を押すとコンソールが出てきます。
Ctrl + ` の「`」は日本語キーボードなら「SHIFT + @」で入力できます。
難しければ、メニューから
Preferences > Browse Packages…
でコンソールが出現します。
プラグインシステムのWebページ左下にあるPythonコードをコピペし、コンソールに貼り付け、Enterキーを押して実行してください。
※必ずWebページ中央左付近にある「SublimeText3」側のタブをクリックしておいてください!
一応、2019年4月2日現在のSublimeText3用Pythonコードを貼っておきます。
import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
深町さんのリポジトリを追加
プラグインシステムの導入が完了したら、必要なリポジトリの追加です。
有名なCommonLisperの深町さんが、ブログでSublimeText用REPLのリポジトリを公開してくださっています。
ありがたく使わせて頂きます。感謝!
メニューから
Preferences > Package Control
をクリックし、
Package Control: Add repository
とタイプします。
Add まで入力すると、ドロップダウンリストの中にAdd repositoryがあるはずですので、マウスクリックしてもOKです。
すると、画面下部にURLの入力欄が出現しますので、
https://github.com/fukamachi/SublimeREPL
を入力します。
入力を完了したらEnterキーを叩いて完了です。
CommonLisp開発に便利なプラグインを導入
無事にプラグインシステムの導入が完了しましたら、いよいよ便利プラグインの導入です。
Preferences > Package Control
としてプラグインシステムを起動し、
Package Control: install package
としてEnterキーを叩き、パッケージのインストール画面に進みます。
表示される入力欄に、インストールしたいパッケージ名をタイプすると、ドロップダウンリストに表示されるはずです。
今回オススメするのは
- ispindent
- SublimeREPL
- paredit
です。
3つそれぞれ入力し導入します。
※一度にひとつずつ、順にパッケージをインストールします。
SublimeText3からREPLを実行できるように
REPLもパッケージインストールから導入します。
Preferences > Package Control
としてプラグインシステムを起動し、
Package Control: install package
としてEnterキーを叩き、パッケージのインストール画面に進みます。
SublimeREPL
とタイプすると、ドロップダウンリストに絞り込まれて表示されるはずです。
SublimeText3のメニューを日本語化
最初にやるべきかとは思いましたが、今回は後回しにしてしまいました。
メニューの日本語化です。
日本語化もプラグインで行います。
日本語化プラグインの導入
もうおなじみになったであろうパッケージインストール画面を表示させます。
Preferences > Package Control
としてプラグインシステムを起動し、
Package Control: install package
としてEnterキーを叩き、パッケージのインストール画面に進みます。
目的の日本語化パッケージは
Japanize
です。
無事に導入されると、SublimeText3の画面上に、インストール方法が記載されます。
※残念ながら、インストール方法の文章は、Windows向けの内容になっており、Linuxでは表示のとおりには操作できません。
日本語化メニューファイルを配置
無事にJapanizeが導入できると、
~/.config/sublime-text-3/Packages/Japanize
フォルダができているはずです。
その中に入っているファイルの中から、ファイル名の末尾が「.jp」になっているファイルたちだけを、
~/.config/sublime-text-3/Packages/Default
にコピーします。
※Defaultフォルダが無い場合は作成してください。
Defaultフォルダ内のファイルをリネーム
コピーしただけでは日本語メニューにはなりません。
コピーしたファイルのファイル名を変更しなければ有効にならないのです。
具体的には、Defaultフォルダにコピーしたファイル名「〜〜.jp」の、「.jp」を消します。
コピーしたファイル全てが対象です。
全てのファイルのファイル名から「.jp」を取り除いたら、SublimeText3を再起動してみると・・・メニューが日本語になっているはずです。
タグシステム「ctags」を導入
ソースリーディングに必須のctags。
特に、人の書いたソースを読む時間が劇的に短縮されます。
ctagsのインストール
インストールは「MX パッケージンストーラー」からできるので、非常に簡単です。
MXパッケージインストーラー → StableRepoタブ → exuberant-ctags
インストール完了後、ターミナルを開き、ctagsコマンドを叩くとヘルプの見方を促されるはずです。
$ ctags ctags: No files specified. Try "ctags --help".
SublimeText3 に ctagsをセットアップ
システムにctagsをセットアップしたあとは、SublimeText3から使えるように設定します。
SublimeText3 を起動し、
基本設定(n) → Package Control → ctags(入力して出現させる)
と進み、ctagsパッケージをインストールします。
パッケージのインストールを完了したら、利用するための設定を書き込んで完了です。
SublimeText3 のメニューバー操作にて、下記のとおりにマウスクリック。
基本設定(n) → Package Settings → CTags → Settings - User
表示される画面に下記の内容を書き込みます。
{ "command" : "/usr/local/bin/ctags" }
以上で、SublimeText3 へのctags設定は完了です。
Ctagsの詳しい使い方は・・・また別の機会に、、(汗
さぁ!開発してみよう!
セットアップした環境を早速試してみましょう。
REPLの起動
REPLとは、Read Eval Print Loop の略。
簡単に説明すると、Lispの実行環境であり編集環境です。
RubyやPythonの経験がある人はおなじみですね。
その技術はLispのREPLから模倣されています。
※Rubyの作者、まつもとゆきひろさんは、自他ともに認める優秀なLispプログラマーです。
ツール(T) → SublimeREPL → Common Lisp → Clozure CLすると、新たなタブとしてClozureCLのREPLがSublimeText3上に出現します。
ソースファイルの作成
REPLを起動したら、新規ファルの作成でLispソースファイルを作成します。
フィアル名は適当に「sample.lisp」とでもしておきます。ソースファイルが完成したら忘れずに保存です。
作成したソースファイルの評価(実行テスト)
ツール(T) → SublimeREPL → Eval In REPL → File
を指定すると、先ほど作成したREPLタブにソースファイルに作成した関数が評価された状態になります。
REPLタブを選択表示すると、作成した関数「say-hello」が自動的にLoadされているはずです。
REPLでsay-hello関数を実行!
さっそく関数を動かして(評価して)みましょ。
REPLの入力プロンプトで (say-hello) と入力すればOKです。
(say-hello) 関数の戻り値として、hello world が表示されていることが確認できます。