2010-04-21 26 views
2

當我調用py-execute-region(綁定到C-c |)時,出現flymake-get-file-name-mode-and-mask「Invalid file name」錯誤。同時出現名稱類似於/tmp/python-3434.py的無效緩衝區。flymake和python-execute-region

我flymake設置:

(when (load "flymake" t) 
(defun flymake-pylint-init() 
(let* ((temp-file (flymake-init-create-temp-buffer-copy 
        'flymake-create-temp-inplace)) 
     (local-file (file-relative-name 
        temp-file 
        (file-name-directory buffer-file-name)))) 
    (list "epylint" (list local-file)))) 

(添加到列表「flymake允許的文件名口罩 '(「\的.py \'」flymake-pylint的-INIT))) (加鉤'python-mode-hook'flymake-mode)

回答

4

我有同樣的問題,並通過使emacs不加載傳遞給解釋器的臨時緩衝區的flymake來解決它。我

我flymake設置的用於Python的相關位:

(when (load "flymake" t) 
    (defun flymake-python-init() 
    (let* ((temp-file (flymake-init-create-temp-buffer-copy 
        'flymake-create-temp-inplace)) 
     (local-file (file-relative-name 
         temp-file 
         (file-name-directory buffer-file-name)))) 
    (list "pyflymake" (list local-file)))) ; substitute epylint for this 
    (push '(".+\\.py$" flymake-python-init) flymake-allowed-file-name-masks)) 

(add-hook 'python-mode-hook 
      (lambda() 
      ; Activate flymake unless buffer is a tmp buffer for the interpreter 
      (unless (eq buffer-file-name nil) (flymake-mode t)) ; this should fix your problem 
      ;; Bind a few keys for navigating errors 
      (local-set-key (kbd "C-c w") 'show-fly-err-at-point) ; remove these if you want 
      (local-set-key (kbd "M-n") 'flymake-goto-next-error) 
      (local-set-key (kbd "M-p") 'flymake-goto-prev-error))) 
相關問題