;(require 'python-mode)
;(provide 'python)
;(provide 'python21)
+(require 'python)
;; pymacs
(autoload 'pymacs-apply "pymacs")
(define-key ropemacs-local-keymap "\M-/" 'hippie-expand)
+(global-unset-key "\C-xpn")
+
(defun write-file-py-cleanup-imports ()
(save-excursion
(condition-case nil
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)))))
(error (error "no flymake error at point"))))
(flymake-goto-next-error)
(my-flymake-show-error))
+(defun my-flymake-goto-prev-error ()
+ (interactive)
+ (my-flymake-check-and-wait)
+ (flymake-goto-prev-error)
+ (my-flymake-show-error))
+
(defun py-find-file (errormark filename defaultdir)
(let ((fullname (expand-file-name filename defaultdir)))
(or (and (not (file-exists-p fullname))
(progn
(set (make-local-variable 'py-eshell-last-error) (point))
(set (make-local-variable 'py-eshell-prefix) (or (match-string 1) ""))
+ (if (string-match "Original $" py-eshell-prefix)
+ (setq py-eshell-prefix (substring py-eshell-prefix 0 (match-beginning 0))))
(if example
(forward-line 2)
(while (and (< (forward-line 1) 1) (looking-at (concat py-eshell-prefix " ")))))
(define-key python-mode-map "\C-ci" 'my-pyflymake-add-import-from-error)
(define-key python-mode-map "\C-ce" 'my-flymake-show-error)
(define-key python-mode-map "\C-cn" 'my-flymake-goto-next-error)
+ (define-key python-mode-map "\C-cp" 'my-flymake-goto-prev-error)
(define-key python-mode-map "\C-cI" 'py-cleanup-imports)
)
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
+ (message "flymake init pyflakes %s" local-file)
(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
(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-+\\)")