2015-01-17 2 views
1

R 파일을 편집 할 때 ess 모드에서 약자를 사용할 수 없습니다.Emacs - ess 모드에서 약자 추가하기

abbrev-mode를 활성화하는 데 ess-mode 후크가 있지만 전역 약어에 대한 확장이 없습니다. 내가 할 때 add-mode-abbrev 나는 약자를 추가 할 수 있지만 내 약식 파일에 기록되지 않으며 물론 (read-abbrev-file 또는 다시 시작한 후) 확장되지 않습니다.

나는 손으로 내 약칭 파일에 이런 식으로 뭔가를 추가하고 다시 경우 그 중 하나가 작동하지 않습니다

(define-abbrev-table 'ess-mode-abbrev-table 
'(
    ("-=" "<-" nil 0) 
)) 

.

에세 모드에서 내 약자를 인식하려면 어떻게해야합니까?

답변

0

약어는 내부적으로 사용되는 단어 구문 - forward-word이 있어야합니다.

약자를 쓰거나 재정의하는 것은 비용이 많이 드는 작업이며 몇 초가 걸립니다. 따라서 이것은 편집/정의 이후에 수행되지 않습니다. - C-x C-s이 명시 적으로 요구되는 경우는 예외입니다. 약어 파일은 일반적으로 세션이 닫힐 때 작성됩니다.

+0

정확하지만 문제는 아닙니다. 나는 read-abbrev-file을 호출하지만 여전히 작동하지 않습니다. 약자는 다른 모드에서 올바르게 작동합니다. ess-mode와 abbrev-mode 사이에 연결이 끊어져서 고정되어 있어야합니다. – user673592

2

나는 ess-mode-abbrev-table을 로컬로 설정하는 해결 방법을 사용하고 있습니다. 우선은 ESS 시작할 때 나중에 내 약칭 테이블을로드하고 오류를 원하지 않는 경우, 약칭 테이블을 정의 : 나는 인터프리터에서 같은 abbrevs를 사용하는 것을 선호

(define-abbrev-table 'ess-mode-abbrev-table nil) 
(add-hook 'ess-mode-hook 
      (lambda() 
      (setq local-abbrev-table ess-mode-abbrev-table))) 

때문에,이

(dolist (hook '(ess-mode-hook inferior-ess-mode-hook)) 
    (add-hook hook 
     (lambda() 
      (setq local-abbrev-table ess-mode-abbrev-table)))) 
+0

stackoverflow에 오신 것을 환영합니다. 조금 더 설명. – Daenarys

+0

감사! 'list-abbrevs'는 이제 (ess-mode-abbrev-table) "- ="0 "<-"을 표시하지만 여전히 약자를 확장하지는 않습니다. 'local-abbrev-table'은 [## 0 0 0 0 0 0 0 0 0 0 0 0 - = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] (트리거도 포함되어 있으므로 ...). 더 이상 설정 하시겠습니까? – user673592

+0

'define-abbrev-table'의 문서화가 문제를 밝힙니다 : "regexp가 nil이면 기본 동작은 backward-word와 forward-word를 사용하여 약어의 이름을 추출합니다. 워드." 예를 들어 밑줄에 대해 약어의 이름을 "u"로 변경하면 문제가 해결됩니다. – mutbuerger