2011-03-09 2 views
1

my-python-setup.el 파일에 이맥스 사용자 정의 목록을 수집했습니다. 이맥스가 먼저 python-mode을로드 한 다음 파이썬 파일을 편집 할 때만이 라이브러리를로드하도록하려면 어떻게해야합니까?파이썬 코드 편집 중에 만 .el 파일을로드하는 방법

내 이맥스 파일에

(load-library "my-python-setup") 

퍼팅 시도했다, 그러나 그것은 모든 종류의 파일에 대한 이러한 사용자 지정을로드합니다.

이러한 사용자 지정은 파이썬 모드 위에 있으며 auto-mode-alist의 값은 현재 ("\\.py\\'" . python-mode)입니다.

답변

5

나는 이맥스 전문가는 아니지만, 단지 python-mode-hook 함수를 추가하고 거기에 라이브러리를로드 할 수 있다고 생각합니다. 뭔가 같이 : 당신은 당신의 코드를 파이썬 코드를 편집 할 때로드 할하려면

(defun python-mode-setup() 
    (setq python-indent-offset 4 
     python-indent 4 
     ;; turn off indentation guessing in various python modes 
     python-guess-indent nil 
     python-indent-guess-indent-offset nil 
     py-smart-indentation nil 
     ;; fix mark-defun in new python.el 
     python-use-beginning-of-innermost-defun t)) 
(add-hook 'python-mode-hook 'python-mode-setup) 
+0

윌,이 나를 위해 작동하지 않지만 eval-after-load를 사용하여 작동했습니다. (예 : "after-load"python-mode " '(progn ;; 여기서해야 할 일은 python-mode.el이로드 된 후에 만 ​​실행됩니다. load-library"my-python-setup "))) – Schitti

1

것은, 당신이 당신의 혀짤배기 코드를 고집하는 것이 좋습니다 :

;; define your hook function 
(defun python-mode-setup() 
    (message "Custom python hook run") 
    (load-library "my-python-setup")) 

;; install your hook so it is called when python-mode is invoked 
(add-hook 'python-mode-hook 'python-mode-setup) 

여기 예를 들어, 내 개인 python-mode-hook입니다 파이썬 모드를 확장하는 자신 만의 메이저 모드에서.

(define-derived-mode 'my-python-mode 'python-mode "MyPy" 
"A customized version of python-mode" 

... here goes your code ... 

) 

그럼 당신은 auto-mode-alist을 조정하여 'my-python-mode 대신 python-mode를로드하는 이맥스를 구성해야합니다.

+0

이것이 가장 좋은 방법이라고 생각했습니다. 나 자신의 이름을 따온 모드를 가지고 내 자아를 너무 치다 :) – Schitti

+0

그 대답을 제안했을 때 나는 무엇을 생각하고 있었는지 모른다. 'eval-after-load'는 확실히 표준 (그리고 더 나은) 방법입니다. – Thomas

관련 문제