Skip to content

Instantly share code, notes, and snippets.

@Hamayama
Last active December 30, 2020 07:46
Show Gist options
  • Save Hamayama/03eb1c2984abc2ddb7a1c04d15e1bd32 to your computer and use it in GitHub Desktop.
Save Hamayama/03eb1c2984abc2ddb7a1c04d15e1bd32 to your computer and use it in GitHub Desktop.
Lem エディタの scheme-mode

Lem エディタの scheme-mode

  • Lem エディタで、Scheme 言語のプログラムの作成を行うためのモードです。

  • (キーバインドの記号 (C- 等) の意味については、Emacs 関連の文書を参照してください)

  • Scheme の処理系は、事前にインストールされている必要があります。
    (デフォルトでは、Scheme の処理系は、Gauche を想定しています)

scheme-mode

  • 拡張子が .scm, .sld, .rkt のファイルを開くか、または、
    M-x scheme-mode で、scheme-mode に入ります。

  • 主なキーバインド

    キー
    内容(コマンド名)
    Tab インデント または シンボル補完 (indent-line-and-complete-symbol)
    C-M-\ リージョンのインデント (indent-region-command)
    C-c C-e 直前の式を評価 (scheme-eval-last-expression)
    C-x C-e 同上
    C-c C-r リージョンを評価 (scheme-eval-region)
    C-c C-l ファイルを Scheme プロセスにロード (scheme-load-file)
    C-c C-z REPL バッファに移動 (scheme-switch-to-repl-buffer)
    C-c z 同上

    (備考) リージョンとは、C-Space (または C-@) でマークした場所から
    カーソル直前までの範囲のことです。
    (選択状態の表示は C-g で解除できます)

  • 処理系の設定
    ~/.lem/init.lisp 内に以下のように記述すると、
    起動する Scheme の処理系を指定できます。
    (以下はデフォルトの設定です (省略可))

    (setf lem-scheme-mode:*scheme-run-command* '("gosh" "-i"))
    (setf lem-scheme-mode:*scheme-load-command* "load")
    

    (備考) ロードコマンドは、scheme-load-file で使われるコマンドです。
    (処理系によっては "include" 等、別のコマンドにする必要があります)

  • キーワードの追加
    ~/.lem/init.lisp 内に以下のように記述すると、
    補完/ハイライト/インデント を行う キーワード を追加できます。
    (デフォルト設定は こちら を参照)

    (setf (lem-scheme-mode:scheme-keyword-data)
          (append
           (lem-scheme-mode:scheme-keyword-data)
           ;; name  completion  highlight  indentation
           '(("reset"    t          t          nil)
             ("shift"    t          t          1)
             ("call/pc"  t          t          nil))))
    

    (備考) 各項目は、nil を指定すると対象外になります。
    indentation には、body (または expr) の前の引数の数を指定してください。

scheme-repl-mode

  • scheme-mode で評価を行うか、または、
    M-x start-scheme-repl で、Scheme の REPL バッファが開きます。
    REPL バッファのモードは scheme-repl-mode になります。

  • 主なキーバインド

    キー
    内容(コマンド名)
    Return 評価または改行 (scheme-eval-or-newline)
    M-p 1個前の入力を表示 (listener-prev-input)
    M-n 1個後の入力を表示 (listener-next-input)
    M-r 過去の入力を検索 (listener-previous-matching-input)
    C-c C-u 現在の入力をクリア (listener-clear-input)
    C-c M-o REPL バッファ全体をクリア (listener-clear-buffer)
    なし Scheme プロセスを強制終了 (scheme-kill-process)

その他 情報等

(2019-6-20)(2019-6-23)(2019-6-24)(2019-7-18)(2019-7-20)
(2019-12-21)(2020-1-23)(2020-1-27)(2020-12-30)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment