弊社の社内環境でClojure完全マスター with Emacs/Cider-modeします。
以下のソフトウェアをインストール済みとします。
種類 | 名称 |
---|---|
OS | Windows7 Professional (64bit) |
Emacs | chuntaro/NTEmacs64 (emacs-24.5-IME-patched) |
JDK | Oracle JDK 1.8.0_91 |
Git | 2.5.0.windows.1 (git svnを使う都合上古め) |
以下の環境変数が設定されているとします。
変数名 | 値 | 説明 |
---|---|---|
HOME | %USERPROFILE% | NTEmacsデフォルトは%USERPROFILE%\AppData\Roamingをホームと見なすので |
PATH | %PATH%;%USERPROFILE%.lein | leiningenのパスを設定 |
https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat
ダウンロードしたファイルlein.batを
%HOME%\.lein\lein.bat
に移動します。
%HOME%.lein\profiles.clj を作ります。
以下の設定を入れます。
{:user {:jvm-opts
["-Dfile.encoding=UTF-8"
"-Dhttp.proxyHost=oskproxy.intra.tis.co.jp"
"-Dhttp.proxyPort=8080"
"-Dhttps.proxyHost=oskproxy.intra.tis.co.jp"
"-Dhttps.proxyPort=8080"]}}
%LEIN_HOME%に以下のbatファイルをlein.batとして配置します。 元のファイルをlein-orig.batにリネームします。
@echo off
set http_proxy=oskproxy.intra.tis.co.jp:8080
set https_proxy=oskproxy.intra.tis.co.jp:8080
echo "start leiningen with proxy.[%http_proxy%]"
call %~dp0lein-orig.bat %*
HTTPプロキシを使用する場合はこちらのlein.batを使います。
環境変数HTTP_PROXYやHTTPS_PROXYをグローバルに設定すると、 社内のGitBucketにアクセスする時邪魔になったりするので やむを得ずこのような対処にしています。
lein self-install
%HOME%\.lein\self-installs\leiningen-X.X.X-standalone.jar
がダウンロードされれば成功です。
lein --version
Leiningen 2.6.1 on Java 1.8.0_91 Java HotSpot(TM) 64-Bit Server VM
WindowsではJVMのファイルエンコーディングがWindows-31JなのでUTF-8にする
環境変数 | 設定値 |
---|---|
LEIN_JVM_OPTS | -Dfile.encoding=UTF-8 |
ayato-pさんのEmacs config for newbie clojurianを使わせてもらいます。
既に~/.emacs.dが存在する場合、リネームして退避させます。
set http_proxy=oskproxy.intra.tis.co.jp:8080 & set https_proxy=oskproxy.intra.tis.co.jp:8080
cd %HOME%
git clone https://github.com/ayato-p/emacs-config-for-newbie-clojurian.git .emacs.d
init.elの先頭に以下の設定を入れます。
(setq url-proxy-services '(("no_proxy" . "localhost")
("http" . "oskproxy.intra.tis.co.jp:8080")
("https" . "oskproxy.intra.tis.co.jp:8080")))
一部パッケージでエラーがでるようなのでコメントアウトします。
;;(use-package cider-eval-sexp-fu)
zenburnテーマは暗くて、デモ用には見難いのでコメントアウトします。
;; (use-package zenburn-theme
;; :config
;; (load-theme 'zenburn t))
デモ用に明るい色にします。
(defface my-hl-line-face
'((((class color)
(background dark)) ;; 背景色が暗い色のとき
(:background "#000"))
(((class color)
(background light)) ;; 背景色が明るい色のとき
(:background "#ffff66"))
(((class color))
(:underline "#ffff66")))
"*Face used by hl-line.")
(setq hl-line-face 'my-hl-line-face)
(global-hl-line-mode)
(set-face-background 'region "lightgreen")
デモ用にフォントを変えます。 Migu1Mフォントがインストールされている必要があります。
;; フォント
(set-frame-font "Migu 1M-11")
lein new perfect-master
cd perfect-master
lein test
テストが実行されることを確認します。
lein test perfect-master.core-test lein test :only perfect-master.core-test/a-test FAIL in (a-test) (core_test.clj:7) FIXME, I fail. expected: (= 0 1) actual: (not (= 0 1)) Ran 1 tests containing 1 assertions. 1 failures, 0 errors. Tests failed.
ここから、Hello, Worldする以降の手順を行い、Clojure完全マスターします。
キーバインド | 関数 | 説明 |
---|---|---|
C-x C-e | cider-eval-last-sexp | カーソル直前のS式を評価する |
C-c C-d d | cider-doc | カーソルの下にあるシンボルのドキュメントをひく |
M-. | cider-find-var | カーソルの下にあるシンボルの定義へとジャンプする |
C-c M-n | cider-repl-set-ns | REPLの名前空間を変える |
C-c C-t n | cider-test-run-ns-tests | 現在のネームスペースに対応したテストを実行 |
N/A | cider-enlighten-mode | Light Tableのように変数の値を表示 |
C-U C-M-x | ? | ブレークポイント設定 |
C-M-x | cider-eval-defun-at-point | ブレークポイント解除 |