aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2012-05-08 11:19:18 -0400
committerStefan Monnier2012-05-08 11:19:18 -0400
commit49ed9c8e75a0b869f06606fc05fc38f5f207083e (patch)
treebfa7063513271256a696286ba3594ad6ef999627
parent07d00b56112b5c9772ba6b73fd5b88474a5e1b22 (diff)
downloademacs-49ed9c8e75a0b869f06606fc05fc38f5f207083e.tar.gz
emacs-49ed9c8e75a0b869f06606fc05fc38f5f207083e.zip
* lisp/vc/log-edit.el: Add GNU coding standards highlighting.
(log-edit-font-lock-gnu-style) (log-edit-font-lock-gnu-keywords): New vars. (log-edit-font-lock-keywords): New fun. (log-edit-mode): Don't fold case in font-lock. (log-edit-font-lock-keywords): Do not assume case-folding. * .dir-locals.el (log-edit-mode): Enable gnu-style checks.
-rw-r--r--.dir-locals.el3
-rw-r--r--ChangeLog4
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/vc/log-edit.el46
4 files changed, 57 insertions, 3 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index 4da890f92ab..471f74da12a 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -5,7 +5,8 @@
5 ;; You must set bugtracker_debbugs_url in your bazaar.conf for this to work. 5 ;; You must set bugtracker_debbugs_url in your bazaar.conf for this to work.
6 ;; See admin/notes/bugtracker. 6 ;; See admin/notes/bugtracker.
7 (log-edit-mode . ((log-edit-rewrite-fixes 7 (log-edit-mode . ((log-edit-rewrite-fixes
8 "[ \n](bug#\\([0-9]+\\))" . "debbugs:\\1"))) 8 "[ \n](bug#\\([0-9]+\\))" . "debbugs:\\1")
9 (log-edit-font-lock-gnu-style . t)))
9 (change-log-mode . ((add-log-time-zone-rule . t) 10 (change-log-mode . ((add-log-time-zone-rule . t)
10 (fill-column . 74) 11 (fill-column . 74)
11 (bug-reference-url-format . "http://debbugs.gnu.org/%s") 12 (bug-reference-url-format . "http://debbugs.gnu.org/%s")
diff --git a/ChangeLog b/ChangeLog
index c456f8d1736..96ad5c2d189 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12012-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * .dir-locals.el (log-edit-mode): Enable gnu-style checks.
4
12012-05-08 Glenn Morris <rgm@gnu.org> 52012-05-08 Glenn Morris <rgm@gnu.org>
2 6
3 * make-dist: No more doc/lispref/*.el. 7 * make-dist: No more doc/lispref/*.el.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fae2f08b804..3d275acd46c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,12 @@
12012-05-08 Stefan Monnier <monnier@iro.umontreal.ca> 12012-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * vc/log-edit.el: Add GNU coding standards highlighting.
4 (log-edit-font-lock-gnu-style)
5 (log-edit-font-lock-gnu-keywords): New vars.
6 (log-edit-font-lock-keywords): New fun.
7 (log-edit-mode): Don't fold case in font-lock.
8 (log-edit-font-lock-keywords): Do not assume case-folding.
9
3 * imenu.el: Misc cleanup. Make docstrings out of comments. 10 * imenu.el: Misc cleanup. Make docstrings out of comments.
4 Use lexical-binding. 11 Use lexical-binding.
5 (imenu--index-alist, imenu--last-menubar-index-alist) 12 (imenu--index-alist, imenu--last-menubar-index-alist)
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index db70f417393..2abb1ec9c0a 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -349,7 +349,7 @@ automatically."
349(defvar log-edit-font-lock-keywords 349(defvar log-edit-font-lock-keywords
350 ;; Copied/inspired by message-font-lock-keywords. 350 ;; Copied/inspired by message-font-lock-keywords.
351 `((log-edit-match-to-eoh 351 `((log-edit-match-to-eoh
352 (,(concat "^\\(\\([a-z]+\\):\\)" log-edit-header-contents-regexp) 352 (,(concat "^\\(\\([[:alpha:]]+\\):\\)" log-edit-header-contents-regexp)
353 (progn (goto-char (match-beginning 0)) (match-end 0)) nil 353 (progn (goto-char (match-beginning 0)) (match-end 0)) nil
354 (1 (if (assoc (match-string 2) log-edit-headers-alist) 354 (1 (if (assoc (match-string 2) log-edit-headers-alist)
355 'log-edit-header 355 'log-edit-header
@@ -360,6 +360,48 @@ automatically."
360 'log-edit-header) 360 'log-edit-header)
361 nil lax))))) 361 nil lax)))))
362 362
363(defvar log-edit-font-lock-gnu-style nil
364 "If non-nil, highlight common failures to follow the GNU coding standards.")
365(put 'log-edit-font-lock-gnu-style 'safe-local-variable 'booleanp)
366
367(defconst log-edit-font-lock-gnu-keywords
368 ;; Use
369 ;; * foo.el (bla, bli)
370 ;; (blo, blu): Toto.
371 ;; Rather than
372 ;; * foo.el (bla, bli,
373 ;; blo, blu): Toto.
374 '(("^[ \t]*\\(?:\\* .*\\)?\\(([^\n)]*,\\s-*\\)$"
375 (1 '(face font-lock-warning-face
376 help-echo "Continue function lists with \")\\n(\".") t))
377 ;; Don't leave a lone word on a single line.
378 ;;("^\\s-*\\(\\S-*[^\n:)]\\)\\s-*$" (1 font-lock-warning-face t))
379 ;; Don't cut a sentence right after the first word (better to move
380 ;; the sentence on the next line, then).
381 ;;("[.:]\\s-+\\(\\sw+\\)\\s-*$" (1 font-lock-warning-face t))
382 ;; Change Log entries should use present tense.
383 ("):[ \t\n]*[[:alpha:]]+\\(ed\\)\\>"
384 (1 '(face font-lock-warning-face help-echo "Use present tense.") t))
385 ;; Change log entries start with a capital letter.
386 ("): [a-z]" (0 '(face font-lock-warning-face help-echo "Capitalize.") t))
387 ("[^[:upper:]]\\(\\. [[:upper:]]\\)"
388 (1 '(face font-lock-warning-face
389 help-echo "Use two spaces to end a sentence") t))
390 ("^("
391 (0 (let ((beg (max (point-min) (- (match-beginning 0) 2))))
392 (put-text-property beg (match-end 0) 'font-lock-multiline t)
393 (if (eq (char-syntax (char-after beg)) ?w)
394 '(face font-lock-warning-face
395 help-echo "Punctuate previous line.")))
396 t))
397 ))
398
399(defun log-edit-font-lock-keywords ()
400 (if log-edit-font-lock-gnu-style
401 (append log-edit-font-lock-keywords
402 log-edit-font-lock-gnu-keywords)
403 log-edit-font-lock-keywords))
404
363;;;###autoload 405;;;###autoload
364(defun log-edit (callback &optional setup params buffer mode &rest _ignore) 406(defun log-edit (callback &optional setup params buffer mode &rest _ignore)
365 "Setup a buffer to enter a log message. 407 "Setup a buffer to enter a log message.
@@ -416,7 +458,7 @@ commands (under C-x v for VC, for example).
416 458
417\\{log-edit-mode-map}" 459\\{log-edit-mode-map}"
418 (set (make-local-variable 'font-lock-defaults) 460 (set (make-local-variable 'font-lock-defaults)
419 '(log-edit-font-lock-keywords t t)) 461 '(log-edit-font-lock-keywords t))
420 (make-local-variable 'log-edit-comment-ring-index) 462 (make-local-variable 'log-edit-comment-ring-index)
421 (hack-dir-local-variables-non-file-buffer)) 463 (hack-dir-local-variables-non-file-buffer))
422 464