common-lisp
lem

lemの設定についてメモ書き

はじめに

CommonLispで作られたエディタのlemの設定について、調べたことをメモ書きしていきます。
lemは以下から取得できます。

.lemrcファイル

ホームディレクトリに「.lemrc」というファイルを作成し、先頭に以下のコードを記載します。

.lemrc
(in-package :lem-user)

キーバインド

キーバインドを登録する場合は以下のように記載。

.lemrc
(define-key *global-keymap* "押下するキー" '実行される機能)

例) Undo機能のキーバインド

.lemrc
(define-key *global-keymap* "C-x u" 'undo)

シンタックスハイライト

既にあるテーマを使う場合は以下のように記載。

.lemrc
(load-theme "テーマ名")

例) 「emacs-dark」を使うには以下のコードを追記。

.lemrc
(load-theme "emacs-dark")

自分でテーマを作成する場合は以下のように記載。

.lemrc
(define-color-theme "テーマ名" ("親テーマ名")
  (foreground "色値")                                           ; 前景色
  (background "色値")                                           ; 背景色
  (cursor :foreground "色値" :background "色値")                 ; カーソル色
  (minibuffer-prompt-attribute :foreground "色値" :bold-p t)    ; ミニバッファ色(太字)
  (syntax-string-attribute     :foreground "色値" :bold-p t)    ; 文字列色(太字)
  (syntax-comment-attribute    :foreground "色値")              ; コメント色
  (syntax-keyword-attribute    :foreground "色値" :bold-p t)    ; キーワード色(太字)
  (syntax-constant-attribute   :foreground "色値")              ; 定数色
  (syntax-function-name-attribute :foreground "色値" :bold-p t) ; 関数色(太字)
  (syntax-variable-attribute   :foreground "色値"))             ; 変数色

;; テーマをロード
(load-theme "テーマ名")

例) かなり適当に作成。

.lemrc
(define-color-theme "my-theme" ("emacs-dark")
  (foreground "#FFFFFF")                                        ; 前景色
  (background "#000000")                                        ; 背景色
  (cursor :foreground "#222222" :background "#dddddd")          ; カーソル色
  (minibuffer-prompt-attribute :foreground "red" :bold-p t)     ; ミニバッファ色(太字)
  (syntax-string-attribute     :foreground "green" :bold-p t)   ; 文字列色(太字)
  (syntax-comment-attribute    :foreground "blue")              ; コメント色
  (syntax-keyword-attribute    :foreground "orange" :bold-p t)  ; キーワード色
  (syntax-constant-attribute   :foreground "cyan")              ; 定数色
  (syntax-function-name-attribute :foreground "blue" :bold-p t) ; 関数色
  (syntax-variable-attribute   :foreground "red"))              ; 変数色

;; テーマをロード
(load-theme "my-theme")

こんな感じになりました。

Screenshot from 2018-01-27 22-21-17.png

この他にも設定が多々あります。
色々探して試してみるのも面白いかもしれません。

行番号表示

行番号を表示する場合は以下のコードを追記します。

.lemrc
(setf (variable-value 'lem.line-numbers:line-numbers :global) t)

最後に

とりあえず、自分がわかっている範囲で適当に記載していきました。
間違ってたり、他にもこんなことできるよ、とかあったら教えてくれると嬉しいです。