Mercurial > emacs
changeset 111786:1441c8ae52a0
Small flymake changes.
* lisp/progmodes/flymake.el (flymake-check-file-limit):
Allow nil to mean "no limit".
(flymake-check-patch-master-file-buffer): Update for above change.
Allow a .tex file-name extension to be optional.
(flymake-master-tex-init): Also match \include statements.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 02 Dec 2010 09:34:35 -0800 |
parents | 722e83b4c563 |
children | 4ba82556d7dd |
files | lisp/ChangeLog lisp/progmodes/flymake.el |
diffstat | 2 files changed, 34 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Thu Dec 02 10:33:57 2010 +0100 +++ b/lisp/ChangeLog Thu Dec 02 09:34:35 2010 -0800 @@ -1,3 +1,11 @@ +2010-12-02 Glenn Morris <rgm@gnu.org> + + * progmodes/flymake.el (flymake-check-file-limit): + Allow nil to mean "no limit". + (flymake-check-patch-master-file-buffer): Update for above change. + Allow a .tex file-name extension to be optional. + (flymake-master-tex-init): Also match \include statements. + 2010-11-30 Sam Steingold <sds@gnu.org> * nxml/nxml-mode.el (nxml-parent-document): Add a variable.
--- a/lisp/progmodes/flymake.el Thu Dec 02 10:33:57 2010 +0100 +++ b/lisp/progmodes/flymake.el Thu Dec 02 09:34:35 2010 -0800 @@ -413,9 +413,11 @@ (not (equal file-one file-two)))) (defcustom flymake-check-file-limit 8192 - "Max number of chars to look at when checking possible master file." + "Maximum number of chars to look at when checking possible master file. +Nil means search the entire file." :group 'flymake - :type 'integer) + :type '(choice (const :tag "No limit" nil) + (integer :tag "Characters"))) (defun flymake-check-patch-master-file-buffer (master-file-temp-buffer @@ -431,16 +433,26 @@ Whether a buffer for MATER-FILE-NAME exists, use it as a source instead of reading master file from disk." (let* ((source-file-nondir (file-name-nondirectory source-file-name)) + (source-file-extension (file-name-extension source-file-nondir)) + (source-file-nonext (file-name-sans-extension source-file-nondir)) (found nil) (inc-name nil) (search-limit flymake-check-file-limit)) (setq regexp (format regexp ; "[ \t]*#[ \t]*include[ \t]*\"\\(.*%s\\)\"" - (regexp-quote source-file-nondir))) + ;; Hack for tex files, where \include often excludes .tex. + ;; Maybe this is safe generally. + (if (and (> (length source-file-extension) 1) + (string-equal source-file-extension "tex")) + (format "%s\\(?:\\.%s\\)?" + (regexp-quote source-file-nonext) + (regexp-quote source-file-extension)) + (regexp-quote source-file-nondir)))) (unwind-protect (with-current-buffer master-file-temp-buffer - (when (> search-limit (point-max)) - (setq search-limit (point-max))) + (if (or (not search-limit) + (> search-limit (point-max))) + (setq search-limit (point-max))) (flymake-log 3 "checking %s against regexp %s" master-file-name regexp) (goto-char (point-min)) @@ -451,6 +463,11 @@ (flymake-log 3 "found possible match for %s" source-file-nondir) (setq inc-name (match-string 1)) + (and (> (length source-file-extension) 1) + (string-equal source-file-extension "tex") + (not (string-match (format "\\.%s\\'" source-file-extension) + inc-name)) + (setq inc-name (concat inc-name "." source-file-extension))) (when (eq t (compare-strings source-file-nondir nil nil inc-name (- (length inc-name) @@ -1737,11 +1754,14 @@ (defun flymake-simple-tex-init () (flymake-get-tex-args (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace))) +;; Perhaps there should be a buffer-local variable flymake-master-file +;; that people can set to override this stuff. Could inherit from +;; the similar AUCTeX variable. (defun flymake-master-tex-init () (let* ((temp-master-file-name (flymake-init-create-temp-source-and-master-buffer-copy 'flymake-get-include-dirs-dot 'flymake-create-temp-inplace '("\\.tex\\'") - "[ \t]*\\input[ \t]*{\\(.*%s\\)}"))) + "[ \t]*\\in\\(?:put\\|clude\\)[ \t]*{\\(.*%s\\)}"))) (when temp-master-file-name (flymake-get-tex-args temp-master-file-name))))