1

それで、私は Emacs Prelude に切り替えました。私が焼き付けたいものの95%が付属しており、それは素敵です. 変更したいのは 1 つだけです。括弧間のモード固有のインデント、a laautopair.elです。たとえば、Scala を書いて次のように入力するとします。

Object foo {

  bar() {}

}

... の中括弧の間に改行を入力すると、次のようbarになります。

Object foo {

  bar() {
    // And point should be here, a Scala-standard two-space indent in from bar.
  }

}

しかし、多かれ少なかれ同じことを PHP で書いていた場合tab、2 つのスペースのタブではなく文字を取得する必要があります。

だから:これを微調整する「正しい」方法はありcustom.elますか?Prelude はsmartparens代わりにautopair.el, configured in prelude-editor.el-- を使用しますが、更新を簡単にマージできるように、「コア」Prelude をハックせずにこれを構成したいと思います。

考え?他の誰かsmartparens、または特に Prelude でこれを行う方法を考え出した人はいますか?

4

2 に答える 2

2

いつものように、これを投稿するとすぐに...ほとんどの答えが思いつきました。それが機能し、経由で機能するので良いcustom.elです。繰り返しが多いのでくだらないです.DRYする方法がわかりません.

(sp-local-pair 'major-mode "{" nil :post-handlers '((my-create-newline-and-enter-sexp "RET")))                                                                                                                 
(sp-local-pair 'major-mode "(" nil :post-handlers '((my-create-newline-and-enter-sexp "RET")))                                                                                                                 
(sp-local-pair 'major-mode "[" nil :post-handlers '((my-create-newline-and-enter-sexp "RET")))                                                                                                                 
(sp-local-pair 'major-mode "<" nil :post-handlers '((my-create-newline-and-enter-sexp "RET")))                                                                                                                 

(defun my-create-newline-and-enter-sexp (&rest _ignored)                                                                                                                                                       
  "Open a new brace or bracket expression, with relevant newlines and indent. "                                                                                                                                
  (newline)                                                                                                                                                                                                    
  (indent-according-to-mode)                                                                                                                                                                                   
  (forward-line -1) 

これで…いいです。素晴らしいことではありませんが、OKです。アクセスできるようにしたいという変数がありsp-pair-listますが、それをうまく使用する方法がわかりません。誰もがより良いアイデアを持っていますか? このようなものを宣言して、それで完了したいと思います:

(loop for c in 'sp-pair-list                                                                                                                                                                                 
  do (                                                                                                                                                                                                       
    sp-local-pair 'major-mode c nil :post-handlers '((my-create-newline-and-enter-sexp "RET"))))  
于 2013-08-24T17:44:34.433 に答える