X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=python%2Finit_python.el;h=9067c16f37ff2c48ebf4d82ae5602ab03897a513;hb=507e4598394fe2eafb176302ba3dc3f72b88f566;hp=1ba4818261ca72e18e4c63cb89602d38d711722e;hpb=18f23521dd83f1c70245d66aa1e6eb48c90c1291;p=emacs-init.git diff --git a/python/init_python.el b/python/init_python.el index 1ba4818..9067c16 100644 --- a/python/init_python.el +++ b/python/init_python.el @@ -35,12 +35,12 @@ nil) (defun python-init-auto-cleanup-imports-on-save () - (add-hook 'write-file-functions 'write-file-py-cleanup-imports nil t)) + (add-hook 'write-contents-functions 'write-file-py-cleanup-imports nil t)) (defun my-flymake-error-at-point () - (condition-case nil + (condition-case nil (flymake-ler-text (car (nth 0 (flymake-find-err-info flymake-err-info - (flymake-current-line-no))))) + (locate-current-line-number))))) (error (error "no flymake error at point")))) (defun my-flymake-show-error () @@ -307,7 +307,26 @@ (list "pyflakes" (list local-file)))) (add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pyflakes-init))) -(add-hook 'find-file-hook 'flymake-find-file-hook) + +(defun safer-flymake-find-file-hook () + "Don't barf if we can't open this flymake file" + (let ((flymake-filename + (flymake-create-temp-inplace (buffer-file-name) "flymake"))) + (if (file-writable-p flymake-filename) + (flymake-find-file-hook) + (message + (format + "Couldn't enable flymake; permission denied on %s" flymake-filename))))) +(add-hook 'find-file-hook 'safer-flymake-find-file-hook) + +(defun py-skip-few-lines (&optional count) + (if (null count) (setq count 3)) + (let ((blanks 0)) + (while + (and (or (when (eolp) (setq count 0) (incf blanks) t) + (when (> count 0) (decf count) t)) + (< (forward-line 1) 1))) + (> blanks 0))) (defun py-imports-region () (save-excursion @@ -316,6 +335,9 @@ (looking-at "__future__"))) (beginning-of-line) (setq beg (point)) + (while (and (py-skip-few-lines) + (looking-at "import\\s-+\\|from\\s-+")) + (setq beg (point))) (if (not (looking-at "\\(import\\s-+\\|from\\s-+\\)")) (cons beg beg) (while (looking-at "\\(import\\s-+\\|from\\s-+\\)")