Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

MX Linux 18 にSublimeText 3 を導入しClozureCL開発

MX Linux 18にSublimeText3によるCommonLisp開発環境構築

普段、自分はCommonLispのコードを書いたり試したりするとき、鉄板のSLIMEを利用しています。
普段からEmacsを使っているので、SLIMEで事足りているんですが、CommonLispを布教する時、残念ながらEmacsは初心者の障壁になってしまいます。
一部の人からは、変態扱いまでされてしまうしまつ・・・。
そこで、SublimeText3で環境を整えてみます。

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キーを叩き、パッケージのインストール画面に進みます。

表示される入力欄に、インストールしたいパッケージ名をタイプすると、ドロップダウンリストに表示されるはずです。
今回オススメするのは

  1. ispindent
  2. SublimeREPL
  3. 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の実行環境であり編集環境です。
RubyPythonの経験がある人はおなじみですね。
その技術はLispのREPLから模倣されています。
Rubyの作者、まつもとゆきひろさんは、自他ともに認める優秀なLispプログラマーです。

ツール(T) → SublimeREPL → Common Lisp → Clozure CL

f:id:kamuycikap:20190414124230p:plain
REPLの起動
すると、新たなタブとしてClozureCLのREPLがSublimeText3上に出現します。

f:id:kamuycikap:20190414125048p:plain
起動したREPL

ソースファイルの作成

REPLを起動したら、新規ファルの作成でLispソースファイルを作成します。
フィアル名は適当に「sample.lisp」とでもしておきます。

f:id:kamuycikap:20190414124149p:plain
Lispのソースファイルを作成
ソースファイルが完成したら忘れずに保存です。

作成したソースファイルの評価(実行テスト)

ツール(T) → SublimeREPL → Eval In REPL → File

f:id:kamuycikap:20190414124417p:plain
REPLへソースファイルを読み込み

を指定すると、先ほど作成したREPLタブにソースファイルに作成した関数が評価された状態になります。
REPLタブを選択表示すると、作成した関数「say-hello」が自動的にLoadされているはずです。

f:id:kamuycikap:20190414124530p:plain
自動的に作成した関数がREPLにloadされている

REPLでsay-hello関数を実行!

さっそく関数を動かして(評価して)みましょ。

REPLの入力プロンプトで (say-hello) と入力すればOKです。

f:id:kamuycikap:20190414124623p:plain
say-hello関数の実行画面

(say-hello) 関数の戻り値として、hello world が表示されていることが確認できます。