2014-06-09 1 views
0

많은 사람들이이 질문 유형을 알고 있지만 많은 유사한 게시물을 읽었으며 아직까지는 아무런 아이디어가 없습니다. 할 일이 있습니다.이맥스에서 사용자 정의 함수를 사용하는 잘못된 형식 인수 commandp

나는 또한 함수에 (interactive)를 추가하려고
;; send line to python console 
(require 'python-mode) 
(defun py-execute-line-down() 
    "execute python line and move cursor down" 
    (progn 
    (py-execute-line) 
    (evil-next-line))) 
(add-hook 'python-mode-hook 
    (lambda() (define-key python-mode-map (kbd "C-c C-j") 'py-execute-line-down))) 

, 그것은 작동하지 않았다 : 그래서 여기 이맥스에서 elisp 코드입니다.

+0

:

;; send line to python console (require 'python-mode) (defun py-execute-line-down() "execute python line and move cursor down" (interactive) (py-execute-line) (evil-next-line 1)) (defun kaiyin-pykeys() "python mode custome keys" (local-set-key (kbd "C-c j") 'py-execute-line-down) ) (add-hook 'python-mode-hook 'kaiyin-pykeys) 

댄의 조언을 촬영, 나는 위로 변경 'python-mode'의 소스 코드를 살펴보고 싶다면, 원래의 포스터에서 사용하고있는 라이브러리에 대한 링크가 있습니다 : https://launchpad.net/python-mode 최신 버전은 녹색 다운로드 링크가 있습니다. – lawlist

+5

qed :'(interactive)'* is * 필요한 모든 것. 그 라인을 추가 한 후에 함수를 재평가하지 않은 것 같습니까? 아니면 잘못된 장소에 넣었습니까? (문서화 문자열 바로 뒤에 있어야 함). 또한 함수 본문 주위에'(progn ...) '을 감쌀 필요도 없다는 것에주의하십시오. – phils

+1

또한'define-key'에 대한 호출은 파이썬 버퍼를 열 때마다 평가 될 훅으로 갈 필요가 없습니다. – Dan

답변

0

그냥 그래도 최적의 경우이 확실하지, 트릭을 할 것 같았다, 여기에 기록을 유지하기 위해 : 사람들을 위해

;; send line to python console 
(require 'python-mode) 
(defun py-execute-line-down() 
    "execute python line and move cursor down" 
    (interactive) 
    (py-execute-line) 
    (forward-line 1)) 
(define-key python-mode-map (kbd "C-c j") 'py-execute-line-down) 
+2

악의적 인 의존성을 피하기 위해'(악의적 인 - 다음 줄 1)'을'(forward-line 1)'로 바꾸는 것이 좋습니다. 모든 파이썬 버퍼에'C-cj'를 묶고 싶다면, 두번째'defun'과'add-hook' 콤비네이션을 사용하지 말고 다음을 .emacs 파일에 넣으십시오 :'(define-key python-mode-map (kbd "Cc j") '파이 실행 라인 다운)'. – Dan

관련 문제