Skip to content

Instantly share code, notes, and snippets.

@sambatriste
Last active June 7, 2017 08:47
Show Gist options
  • Save sambatriste/1dfbcb591b34a7555447b70d28c9671f to your computer and use it in GitHub Desktop.
Save sambatriste/1dfbcb591b34a7555447b70d28c9671f to your computer and use it in GitHub Desktop.

弊社の社内環境でClojure完全マスター with Emacs/Cider-modeします。

前提

ソフトウェア

以下のソフトウェアをインストール済みとします。

種類名称
OSWindows7 Professional (64bit)
Emacschuntaro/NTEmacs64 (emacs-24.5-IME-patched)
JDKOracle JDK 1.8.0_91
Git2.5.0.windows.1 (git svnを使う都合上古め)

環境変数

以下の環境変数が設定されているとします。

変数名説明
HOME%USERPROFILE%NTEmacsデフォルトは%USERPROFILE%\AppData\Roamingをホームと見なすので
PATH%PATH%;%USERPROFILE%.leinleiningenのパスを設定

環境構築

leiningen

lein.batをダウンロード

https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat

lein.batの配置

ダウンロードしたファイルlein.batを

%HOME%\.lein\lein.bat

に移動します。

弊社プロキシ環境の設定

profiles.cljの設定

%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"]}}

(代替)batファイルで環境変数を設定

%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用設定

WindowsではJVMのファイルエンコーディングがWindows-31JなのでUTF-8にする

環境変数設定値
LEIN_JVM_OPTS-Dfile.encoding=UTF-8

Emacsのinit.el

git clone

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")))

微調整

cider-eval-sexp-fuをコメントアウト

一部パッケージでエラーがでるようなのでコメントアウトします。

;;(use-package cider-eval-sexp-fu)

デモ用設定

themeをコメントアウト

zenburnテーマは暗くて、デモ用には見難いのでコメントアウトします。

;; (use-package zenburn-theme
;;   :config
;;   (load-theme 'zenburn t))

hl-line設定を変更

デモ用に明るい色にします。

(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")

Clojure完全マスター

完全マスター用プロジェクト作成

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-ecider-eval-last-sexpカーソル直前のS式を評価する
C-c C-d dcider-docカーソルの下にあるシンボルのドキュメントをひく
M-.cider-find-varカーソルの下にあるシンボルの定義へとジャンプする
C-c M-ncider-repl-set-nsREPLの名前空間を変える
C-c C-t ncider-test-run-ns-tests現在のネームスペースに対応したテストを実行
N/Acider-enlighten-modeLight Tableのように変数の値を表示
C-U C-M-x?ブレークポイント設定
C-M-xcider-eval-defun-at-pointブレークポイント解除
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment