見出し画像

Retro-gaming and so on

GNU EmacsとANSI Common Lisp環境

う~ん、今どきならSpacemacsがイイ、とか言ってたんだけど、Windowsじゃマトモに動かない事が発覚。
しょーがねぇんで、基本的なEmacsによるANSI Common Lisp開発環境の作り方を書いておく。
なお、Cドライブ直下にhomeフォルダがあって、環境変数HOMEでパスが通ってる前提で話をする。
ちなみに、長い間、GNU EmacsはWindowsでは日本語環境に難がある、って話になってたんだけど、最新版のEmacs 27.2だと問題が無くなってるので驚いてた。

まず最初に、7zipをインストールしておこう。これがないとLinuxで良く使われてるtar圧縮ファイルが解凍出来ない。
自分で解凍するこたぁねぇが、Emacsのライブラリをネット上のアーカイブから取ってくる際に自動で使われるのがこのアプリとなる。

7zipのインストールが終わったら、いよいよGNU Emacsをダウンロードする。
このページの下の方にあるemacs-27.2-x86_64-installer.exe(2021年11月21日現在)が最新版である。 一応64bit前提で、って話だ。
ダウンロードが終わったら、ファイルをダブルクリックするとインストールが始まる。インストールフォルダはC直下でC:\Emacsにしておこう。

Emacsのインストールが終わったら、homeフォルダに.emacs.dと言うフォルダが作成されてる事を確認しよう。

また、デフォルトの状態だとデスクトップにEmacsのアイコンができてるハズだ。それをダブルクリックするとEmacsが立ち上がると思う。



Fileメニューから【Visit New File】を選ぶか、あるいはC-x C-f(Ctrlキーを押しながらxキー、fキーを叩く)する。
下のバッファにC:/Emacs/と出るだろうが、そこをC:/home/.emacsとしてReturnキーを叩く。
.emacsと言うのはGNU Emacsの初期化ファイルである。
そこ、つまり(custom-set-variables~の前にに次のコードをコピペしておく。
なお、Emacsで改行 + 自動インデントはC-mとなっている。

(setq default-directory "C:\\home\\")
(setq command-line-default-directory "C:\\home\\")


(require 'package) 
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) 
;; Comment/uncomment this line to enable MELPA Stable if desired.  See `package-archive-priorities` 
;; and `package-pinned-packages`. Most users will not need or want to do this. 

;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t) 
(package-initialize)

それが終わったらFileメニューからSaveを選ぶか、あるいはC-x C-sする。
なお、この時点で、Emacsのキーバインドに耐えられない、とかなった場合、OptionsからUse CUA-keysを選んでおくこと。
また、何か間違った場合、C-gでキャンセルが可能である。

一旦Emacsを閉じて再起動する。

次に、SLIMEをインストールする。
最初にM-x(Mはメタキーと言う意味だが、WindowsではAltキーを指す)と押すと下のバッファが入力モードになるはずだ。M-xと言うのはEmacs Lispで書かれた関数を起動するコマンドとなる。
そこに一旦、package-refresh-contents と打ってReturnする。そうすればアーカイブのデータが更新される。
次はM-x package-install [Return] slime [Return]と打つ。そうすればSlimeがインストールされる。

 また、.emacsを開いて、次のコードをコピペする。

(setq inferior-lisp-program "C:\\clisp-2.49\\clisp.exe")

一応前提としてCLISPがC直下に入ってる事としている。別にインストールされてれば、そのパスを記述すること。

また、.emacsをSaveしてEmacsを閉じて再起動する。

今度はM-x slimeしてみよう。そうすると、ANSI Common Lispのリスナーが開くはずだ。



Slime用のプルダウンメニューも出来てて、何か困った場合はそこからコマンドを選べば良い。

基本的にはこれでO.K.なんだけど、まだちとメンド臭いんで、helmと言うライブラリを導入する。

またM-x package-install [RET] helm [RET] する。そうするとhelmがダウンロード/インストールされるハズだ。
そしてまた.emacsを開いて次のコードを付け足す。

(global-set-key (kbd "M-x") 'helm-M-x)
(helm-mode 1)
(setq completion-styles '(flex))

そしてEmacsを再起動する。
今度はM-xすると今使えるEmacsのコマンドがズラーッと出てきて、カーソルキーで選択可能になるはずだ。


これでだいぶ楽になる。何か困った時はM-xしてリストを出し、それを見て選択して使えばいい。

あとはM-x package-install [RET] auto-complete [RET] でもしておけば良い。
これは補完機能である。
.emacsには

(setq load-prefer-newer t)
(require 'auto-compile)
(auto-compile-on-load-mode)
(auto-compile-on-save-mode)

(ac-config-default)

と書いておく。

あとは、M-x package-installで、ac-slime、helm-slime、ac-helm、clhsの4つをインストールする。
追加の.emacs用コードは

(require 'ac-slime)
(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'slime-repl-mode))

(slime-setup '(helm-slime))

(global-set-key (kbd "C-:") 'ac-complete-with-helm)
(define-key ac-complete-mode-map (kbd "C-:") 'ac-complete-with-helm)

(show-paren-mode)

これでslime用に自動補完が可能となる。



また、clhsの導入で、ANSI Common Lispの仕様書であるCommon Lisp HyperSpecが呼び出せる。M-x hyperspec-lookup や M-x common-lisp-hyperspecで見る事が出来る。



これでオシマイ。
ネット検索すると色々と.emacsの設定をして便利にする、と言うノウハウがある。
が、最低限の環境としてはこれでいい筈。

C-x C-fで*.lispファイルを作って、プログラムを書く。C-c C-kすれば、書いたファイルがコンパイルされてリスナーに自動的にロードされる。それで書いたプログラムがきちんと動くかどうか確認すれば良い。

なお、キーバインドに関して言うとすべて覚える必要はない。アンチョコがあるので、プリントアウトしておいて、手元に置いておけば良いだろう。それを見ながらやっていけばいつの間にか覚える事が出来る。

ちなみに、Tools => Gamesと辿れば五目並べやテトリスなんかも遊べる。


また、Emacsにはブラウザも付属していて、M-x eww [RET] アドレス [RET]でWebサイトを見る事が可能だ。



ただし、Emacsのブラウザewwだと、正直言って、goo blogだと固まる可能性がやたら高い(笑)。
多分Emacsの方側の問題じゃなくって、goo blogの方が何かhtml違反をやってんじゃないか、と思われる。

他にも、パッケージを漁ると、Twitterクライアントのソフトなんかもあり、好きな人は一日中Emacsを開きながら遊んでいる。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事