diff options
author | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2009-08-06 10:24:42 +0200 |
---|---|---|
committer | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2009-08-06 10:24:42 +0200 |
commit | 9d616e90ae06214f7d6168fc49b4769a7f6611f3 (patch) | |
tree | 81e2158f5a4eb8849d0de82af3f2dadd8a6caec8 /doc | |
parent | ff31c88e9f12355ed779c79455e7a8b0f2720ae5 (diff) | |
download | pylint-9d616e90ae06214f7d6168fc49b4769a7f6611f3.tar.gz |
improved flymake code and doc provided by Derek Harland
Diffstat (limited to 'doc')
-rw-r--r-- | doc/flymake.txt | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/doc/flymake.txt b/doc/flymake.txt new file mode 100644 index 0000000..1756833 --- /dev/null +++ b/doc/flymake.txt @@ -0,0 +1,59 @@ +To enable flymake for python, insert the following into your .emacs :: + + ;; Configure flymake for python + (setq pylint "epylint") + (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 (expand-file-name pylint "") (list local-file)))) + (add-to-list 'flymake-allowed-file-name-masks + '("\\.py\\'" flymake-pylint-init))) + + ;; Set as a minor mode for python + (add-hook 'python-mode-hook '(lambda () (flymake-mode))) + +Above stuff is in pylint/elisp/pylint-flymake.el, which should be automatically +installed on debian systems, in which cases you don't have to put it in your .emacs file. + +Other things you may find useful to set :: + + ;; Configure to wait a bit longer after edits before starting + (setq-default flymake-no-changes-timeout '3) + + ;; Keymaps to navigate to the errors + (add-hook 'python-mode-hook '(lambda () (define-key python-mode-map "\C-cn" 'flymake-goto-next-error))) + (add-hook 'python-mode-hook '(lambda () (define-key python-mode-map "\C-cp" 'flymake-goto-prev-error))) + + +Finally, by default flymake only displays the extra information about the error when you +hover the mouse over the highlighted line. The following will use the minibuffer to display +messages when you the cursor is on the line. + + ;; To avoid having to mouse hover for the error message, these functions make flymake error messages + ;; appear in the minibuffer + (defun show-fly-err-at-point () + "If the cursor is sitting on a flymake error, display the message in the minibuffer" + (interactive) + (let ((line-no (line-number-at-pos))) + (dolist (elem flymake-err-info) + (if (eq (car elem) line-no) + (let ((err (car (second elem)))) + (message "%s" (flymake-ler-text err))))))) + + (add-hook 'post-command-hook 'show-fly-err-at-point) + + +Alternative, if you only wish to pollute the minibuffer after an explicit flymake-goto-* then use +the following instead of a post-command-hook + + (defadvice flymake-goto-next-error (after display-message activate compile) + "Display the error in the mini-buffer rather than having to mouse over it" + (show-fly-err-at-point)) + + (defadvice flymake-goto-prev-error (after display-message activate compile) + "Display the error in the mini-buffer rather than having to mouse over it" + (show-fly-err-at-point)) |