環境設定例集

SICPを読んでゆく上で必要なScheme実行環境についての設定例集です。
なんだか役に立ちそうな事柄を知っていたら誰でも書き込んでいってください。

Scheme処理系(R5RS準拠)とそれぞれの設定

  • Gauche
    • Gaucheは.gauchercというファイルを起動時に読み込む。なのであらかじめ読み込んでおきたいファイルなどがある場合、そのファイルに書き込んでおくと何かと便利。by iwk
  • Mit Scheme
  • TUT Scheme
  • Guile

Emacsの設定

  • viper-mode
    • SchemeはvimよりもEmacsを使うほうが何かと便利であるので普段Vimを使う人であってもEmacsを使う必要が出てくる。しかし、EmacsとVimはなにかと根本的に違うのでフラストレーションがたまりやすい。そのフラストレーションを少し解消するのがviper-mode。EmacsにViのモードのシステムを導入してくれます。レベルのお勧めは3。by iwk
設定例 参照
(setq viper-mode t)
(setq viper-inhibit-startup-message 't)
(setq viper-expert-level '3)
(require 'viper)
(define-key viper-insert-global-user-map "\C-c" 'viper-exit-insert-state)

(defun my-viper-beginning-of-buffer ()
  (interactive)        
  (beginning-of-buffer))
(define-key viper-vi-global-user-map [?g?g] 'my-viper-beginning-of-buffer)
(defun my-viper-star ()
  (interactive)
  (let ((wd (concat "\\<" (thing-at-point 'symbol) "\\>")))
    (setq viper-s-string wd)
    (setq viper-s-forward t)
    (viper-search wd t 1)))
(define-key viper-vi-global-user-map [?*] 'my-viper-star)
(defun my-viper-jump-tag ()
  (interactive)
  (setq wd (thing-at-point 'symbol))
  (find-tag wd))
(define-key viper-vi-global-user-map [?\C-\]] 'my-viper-jump-tag)
(defun my-viper-jump-tag-next ()
  (interactive)
  (setq wd (thing-at-point 'symbol))
  (find-tag wd 0))
(define-key viper-vi-global-user-map [?\C-:] 'my-viper-jump-tag-next)
(defun my-viper-pop-tag ()
  (interactive) 
  (pop-tag-mark))
(define-key viper-vi-global-user-map [?\C-t] 'my-viper-pop-tag)
(defun my-viper-pop-mark ()
  (interactive)        
  (set-mark-command -1))
(define-key viper-vi-global-user-map [?\C-o] 'my-viper-pop-mark)
(define-key viper-vi-global-user-map [?u] 'undo)
(define-key viper-insert-global-user-map [backspace] 'backward-delete-char-untabify)
(define-key viper-insert-global-user-map [delete] 'delete-char)
(define-key viper-emacs-global-user-map "\C-w\C-w" 'other-window)
(define-key viper-vi-global-user-map "\C-w\C-w" 'other-window)
(define-key viper-emacs-global-user-map "\C-w\C-o" 'delete-other-windows)
(define-key viper-vi-global-user-map "\C-w\C-o" 'delete-other-windows)  ;; dired を少しだけ vi 風に
(define-key viper-dired-modifier-map "j" 'dired-next-line)
(define-key viper-dired-modifier-map "k" 'dired-previous-line)
(define-key viper-dired-modifier-map "/" 'dired-goto-file)
(define-key viper-dired-modifier-map "l" '(lambda () (interactive) (dired-next-line 10)))
(define-key viper-dired-modifier-map "h" '(lambda () (interactive) (dired-previous-line 10)))

設定
(require 'quack)
by kacchi

  • scheme-complete.el
    • 配布サイト: http://synthcode.com/
    • release 0.8 (2008/02/08) アップデートされていないか時々チェックすると良いでしょう。
    • 特徴: context-sensitive な補完と eldoc をサポートしている。eldoc-mode はマイナーモードで、ポイント位置の関数呼び出しの引数リストをエコーエリアに表示する簡易ヘルプです。バッファのメジャーモードがサポートしていれば、M-x eldoc-mode で enable と disable をトグルします。scheme-mode ではサポートされていませんが、scheme-complete.el がそのための関数を定義しているので、設定すれば scheme-mode でも eldoc-mode を利用できます(Emacs22かMeadow3が必要です)。

補完と eldoc の設定例
(autoload 'scheme-get-current-symbol-info "scheme-complete" nil t)
(autoload 'scheme-smart-complete "scheme-complete" nil t)
とするか、または
(require 'scheme-complete)
とします。

(eval-after-load 'scheme
  ;; キーバインド
  '(progn
    ;; scheme-smart-complete: M-TAB
    (define-key scheme-mode-map "\e\t" 'scheme-smart-complete)
    ;; scheme-complete-or-indent: TAB
    (define-key scheme-mode-map "\t" 'scheme-complete-or-indent))
  )

(add-hook 'scheme-mode-hook
  (lambda ()
    ;; Gauche の場合、次の2個の変数を設定しておいたほうがよいのかも。
    (setq default-scheme-implementation 'gauche)
    (setq *current-scheme-implementation* 'gauche)
    ;; eldoc-mode
    ;; デフォルトで enable にするには下の行のコメントをはずす。
    (set (make-local-variable 'eldoc-documentation-function)
	 'scheme-get-current-symbol-info)
    ;;(eldoc-mode t)
    )
  )
by kacchi

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年02月09日 23:40
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル