2011-12-22 8 views
9

Windows 7でemacs 24を使用していて、technomancy's clojure-modeとparedit 23 betaをインストールしました。私は自分のleiningenプロジェクトからソースファイルを読み込み、clojure-jack-inを使ってreplを取得します。問題は、pareditがClojureモードとreplの両方で有効になっている間、中括弧はソースファイル内のreplでのみ一致していることです。swank-clojure replで一致した中括弧

どのようにしてreplの中カッコにも一致させることができますか?

答えて

6

私は私のためのトリックを行います私の.emacsファイルに以下を追加しました(私はこれを自分で発明しなかった、それは私がどこかにオンラインで見つけるスニペットだ - しかし、私はどこ覚えていないこと):

(defun setup-slime-repl-paredit() 
    (define-key slime-repl-mode-map 
    (kbd "DEL") 'paredit-backward-delete) 
    (define-key slime-repl-mode-map 
    (kbd "{") 'paredit-open-curly) 
    (define-key slime-repl-mode-map 
    (kbd "}") 'paredit-close-curly) 
    (modify-syntax-entry ?\{ "(}") 
    (modify-syntax-entry ?\} "){") 
    (modify-syntax-entry ?\[ "(]") 
    (modify-syntax-entry ?\] ")[") 
    (modify-syntax-entry ?~ "' ") 
    (modify-syntax-entry ?, " ") 
    (modify-syntax-entry ?^ "'") 
    (modify-syntax-entry ?= "'")) 

(add-hook 'slime-repl-mode-hook 'setup-slime-repl-paredit) 

(add-hook 'slime-repl-mode-hook  'enable-paredit-mode) 
+0

ありがとうございました! – pventura

1

グラブフィルHagelbergのdurendal package、 はこのスニペットを試し、その後、スライムにいくつかのClojureの固有の拡張を提供する:

(require 'durendal) 
(durendal-enable t) 

(defun slime-clojure-repl-setup() 
    (when (string-equal (slime-lisp-implementation-name) "clojure") 
    (set-syntax-table clojure-mode-syntax-table) 
    (setq lisp-indent-function 'clojure-indent-function))) 

(add-hook 'slime-repl-mode-hook 'slime-clojure-repl-setup) 

将来的には、フィルは、追加のlispのペイロードとしてスワンク、Clojureはそれ自体はデュランダルの機能を含むことができます、その時点で上記は不要になります。

+0

私はdurendalをインストールしようとしましたが、その後slimeとslime-replをインストールする必要がありました。それらのすべてをインストールして上のコードを追加した後でも、中括弧の一致はまだありませんでした。 – pventura

+0

Odd。 Emacsを再起動したと思いますか? Durendalは、上記の@ gertalotとまったく同じフック関数を提供します。しかし、とにかくその解決策が働いているので、あなたはすべて設定されています。レコードに関しては、私のemacs configのClojure固有のチャンクはここにあります:https://github.com/purcell/emacs.d/blob/master/init-clojure.el – sanityinc

+0

@sanityinc - 実際に私のスニペットです*デュレンダル?私はどこでそれを見つけたのかわかりませんが、それがあれば私は編集し、クレジットを追加します。 – Gert

関連する問題