2013-08-24 1 views
1

그래서 Emacs Prelude로 바꾸고 싶습니다. 그것은 내가 굽고 싶은 물건의 95 %를 가져옵니다. 그리고 그것은 사랑 스럽습니다. 내가 바꾸고 싶은 단 한가지 : 괄호 사이의 모드 별 들여 쓰기, la autopair.el. 내가 스칼라 입력 쓰고 있어요 예를 들어, 만약 : 내가 쓰고 있다면,Emacs에서 모드 별 Paren 들여 쓰기 활성화하기 Prelude

Object foo { 

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

} 

을하지만 :

Object foo { 

    bar() {} 

} 

을 ... 그리고 bar의 중괄호 사이에 줄 바꿈을 입력, 내가 가야 PHP에서 다소 차이는 있지만 두 공간 탭 대신 tab 문자를 사용해야합니다.

그래서 : custom.el을 통해 이것을 조정할 수있는 "올바른"방법이 있습니까? 서곡은 autopair.el 대신 prelude-editor.el으로 구성된 smartparens을 사용합니다.하지만 "core"Prelude를 해킹하지 않아도 쉽게 구성 할 수 있으므로 쉽게 업데이트 할 수 있습니다.

생각하십니까? 다른 사람이 smartparens으로 이것을 수행하는 방법을 알아 냈습니까? 특히 Prelude?

답변

1

당신은 이미 올바른 길을 가고 있습니다. 나는 너의 각자 배치 한 응답에 다만 조금을 추가 할 것이다.

smartparens의 일반적인 아이디어는 다양한 메이저 모드에 대한 특수한 구성을 개발하는 것이므로, 각각의 모드에 대해 최상의 경험을 할 수 있습니다. 역사는 일반 솔루션이 일반적으로 차선책이라고 가르쳐 왔습니다.

smartparens 사용자는 다양한 주요 모드에 대해 업스트림 구성을 제출하는 것이 좋습니다. Ruby, Latex, Lisp 및 Lua에 대한 구성이 이미 있습니다. 모든 smartparens 사용자를 위해 Scala와 PHP의 업스트림 구성을 제출하는 것이 좋습니다. Prelude는 상자가있는 즉시 사용할 수 있습니다.

모든 것을 미세하게 조정할 수있는 능력으로 필자는 Prelude의 스마트 펜을 선택하게되었습니다. 필자는 smartparen이 미래에 Emacs 사용자들에게 더욱 중요하게 될 것이라고 생각한다. (이미 Lisp 프로그래밍을위한 paredit와 같은 거물들을 대체 할 수있다.)

+0

아, 알았어요! 필자는 필자가 익숙한 것 ('autopair.el')에 관해서이 점을 너무 많이 생각해 왔습니다. 그리고 sp 소스에서'smartparens-ruby.el'를 발견했지만, 나는 생각하지 않았습니다. 거기에있을 수있는 이유에 대해 충분히 길어 ... – Gastove

+0

어쨌든 : 선명도, 그리고 Prelude (예쁜 보스입니다) 주셔서 감사합니다. – Gastove

1

평소대로, 내가 이것을 게시하자마자 ... 나는 대부분의 대답을 생각해 냈습니다. 그것은 효과가 있기 때문에 효과적이며 custom.el을 통해 작동합니다. 그것은 많은 반복을 포함하는을 포함하기 때문에 그것은 진절머리 나다. 나는 말라 버리는 방법을 알아낼 수 없다.

(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")))) 
관련 문제