From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Koppelman Newsgroups: gmane.emacs.devel Subject: Changes to hi-lock before release. Date: Fri, 20 Apr 2007 14:06:14 -0500 Message-ID: <7wejmekgrd.fsf@ece.lsu.edu> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1177096058 16294 80.91.229.12 (20 Apr 2007 19:07:38 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 20 Apr 2007 19:07:38 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Apr 20 21:07:32 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1HeySB-0000TN-DU for ged-emacs-devel@m.gmane.org; Fri, 20 Apr 2007 21:07:31 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HeyXG-00034W-7O for ged-emacs-devel@m.gmane.org; Fri, 20 Apr 2007 15:12:46 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HeyWD-0002dt-6c for emacs-devel@gnu.org; Fri, 20 Apr 2007 15:11:41 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HeyWC-0002dX-I9 for emacs-devel@gnu.org; Fri, 20 Apr 2007 15:11:40 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HeyWC-0002dR-A1 for emacs-devel@gnu.org; Fri, 20 Apr 2007 15:11:40 -0400 Original-Received: from ecelsrv1.ece.lsu.edu ([130.39.223.98]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HeyR5-0004bz-TE for emacs-devel@gnu.org; Fri, 20 Apr 2007 15:06:24 -0400 Original-Received: from localhost (unknown [127.0.0.1]) by ecelsrv1.ece.lsu.edu (Postfix) with ESMTP id A8FD0281BB for ; Fri, 20 Apr 2007 19:06:22 +0000 (UTC) X-Virus-Scanned: amavisd-new at ece.lsu.edu Original-Received: from ecelsrv1.ece.lsu.edu ([127.0.0.1]) by localhost (ecelsrv1.ece.lsu.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XCjKr8JyDhF3 for ; Fri, 20 Apr 2007 14:06:21 -0500 (CDT) Original-Received: from nested.ece.lsu.edu (nested.ece.lsu.edu [130.39.222.143]) by ecelsrv1.ece.lsu.edu (Postfix) with ESMTP id 9402F28127 for ; Fri, 20 Apr 2007 14:06:21 -0500 (CDT) Original-Received: from nested.ece.lsu.edu (localhost.localdomain [127.0.0.1]) by nested.ece.lsu.edu (8.13.1/8.13.1) with ESMTP id l3KJ6E7C002384 for ; Fri, 20 Apr 2007 14:06:14 -0500 Original-Received: (from koppel@localhost) by nested.ece.lsu.edu (8.13.1/8.13.1/Submit) id l3KJ6E8P002383; Fri, 20 Apr 2007 14:06:14 -0500 User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.97 (gnu/linux) X-detected-kernel: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:69713 Archived-At: I believe the following changes should be made to hi-lock before release. The problem is that hi-lock can automatically add font-lock keywords when a buffer is loaded, allowing for some mischief. The patch sets the loading of patterns from files off by default, but by setting a variable the user can be prompted or can provide a function to determine safety. The user can still add the patterns by using a key sequence. If font-lock-pattern safety-checking code becomes available later I'll use that instead of these changes. Index: hi-lock.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/hi-lock.el,v retrieving revision 1.41 diff -u -p -r1.41 hi-lock.el --- hi-lock.el 3 Feb 2007 17:26:01 -0000 1.41 +++ hi-lock.el 20 Apr 2007 19:00:30 -0000 @@ -3,7 +3,7 @@ ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007 Free Software Foundation, Inc. -;; Author: David M. Koppelman, koppel@ee.lsu.edu +;; Author: David M. Koppelman, koppel@ece.lsu.edu ;; Keywords: faces, minor-mode, matching, display ;; This file is part of GNU Emacs. @@ -33,7 +33,8 @@ ;; will remove the highlighting. Any existing face can be used for ;; highlighting and a set of appropriate faces is provided. The ;; regexps can be written into the current buffer in a form that will -;; be recognized the next time the corresponding file is read. +;; be recognized the next time the corresponding file is read (when +;; file patterns is turned on). ;; ;; Applications: ;; @@ -60,6 +61,14 @@ ;; ;; (global-hi-lock-mode 1) ;; +;; To enable the use of patterns found in files (presumably placed +;; there by hi-lock) include the following in your .emacs file: +;; +;; (setq hi-lock-file-patterns-policy 'ask) +;; +;; If you get tired of being asked each time a file is loaded replace +;; 'ask with a function that returns t if patterns should be read. +;; ;; You might also want to bind the hi-lock commands to more ;; finger-friendly sequences: @@ -115,6 +124,12 @@ calls." :type '(repeat symbol) :group 'hi-lock) +(defvar hi-lock-file-patterns-policy 'never + "Specify when hi-lock should use patterns found in file. +If 'ask, prompt when patterns found in buffer; if bound to a function, +use patterns when function returns t (function is called with patterns +as first argument); if nil or 'never or anything else, don't use file +patterns.") (defgroup hi-lock-faces nil "Faces for hi-lock." @@ -196,7 +211,7 @@ calls." "History of regexps used for interactive fontification.") (defvar hi-lock-file-patterns-prefix "Hi-lock" - "Regexp for finding hi-lock patterns at top of file.") + "Search target for finding hi-lock patterns at top of file.") (defvar hi-lock-archaic-interface-message-used nil "True if user alerted that `global-hi-lock-mode' is now the global switch. @@ -283,17 +298,22 @@ called interactively, are: Remove highlighting on matches of REGEXP in current buffer. \\[hi-lock-write-interactive-patterns] - Write active REGEXPs into buffer as comments (if possible). They will + Write active REGEXPs into buffer as comments (if possible). They may be read the next time file is loaded or when the \\[hi-lock-find-patterns] command is issued. The inserted regexps are in the form of font lock keywords. - (See `font-lock-keywords'.) They may be edited and re-loaded with \\[hi-lock-find-patterns], - any valid `font-lock-keywords' form is acceptable. + (See `font-lock-keywords'.) They may be edited and re-loaded with \\[hi-lock-find-patterns], + any valid `font-lock-keywords' form is acceptable. When a file is + loaded the patterns are read if `hi-lock-file-patterns-policy is + 'ask and the user responds y to the prompt, or if + `hi-lock-file-patterns-policy' is bound to a function and that + function returns t. \\[hi-lock-find-patterns] Re-read patterns stored in buffer (in the format produced by \\[hi-lock-write-interactive-patterns]). -When hi-lock is started and if the mode is not excluded, the -beginning of the buffer is searched for lines of the form: +When hi-lock is started and if the mode is not excluded or patterns +rejected, the beginning of the buffer is searched for lines of the +form: Hi-lock: FOO where FOO is a list of patterns. These are added to the font lock keywords already present. The patterns must start before position @@ -590,9 +610,18 @@ not suitable." (setq all-patterns (append (read (current-buffer)) all-patterns)) (error (message "Invalid pattern list expression at %d" (line-number-at-pos))))))) - (when hi-lock-mode (hi-lock-set-file-patterns all-patterns)) - (if (interactive-p) - (message "Hi-lock added %d patterns." (length all-patterns)))))) + (when (and all-patterns + hi-lock-mode + (cond + ((eq this-command 'hi-lock-find-patterns) t) + ((functionp hi-lock-file-patterns-policy) + (funcall hi-lock-file-patterns-policy all-patterns)) + ((eq hi-lock-file-patterns-policy 'ask) + (y-or-n-p "Add patterns from this buffer to hi-lock ")) + (t nil))) + (hi-lock-set-file-patterns all-patterns) + (if (interactive-p) + (message "Hi-lock added %d patterns." (length all-patterns))))))) (defun hi-lock-font-lock-hook () "Add hi-lock patterns to font-lock's." --- display.texi 12 Apr 2007 08:35:15 -0500 1.125 +++ display.texi 19 Apr 2007 21:36:51 -0500 @@ -706,9 +706,16 @@ at point, with comment delimiters to pre program. (This key binding runs the @code{hi-lock-write-interactive-patterns} command.) -These patterns will be read the next time you visit the file while +These patterns may be read the next time you visit the file while Hi Lock mode is enabled, or whenever you use the @kbd{M-x -hi-lock-find-patterns} command. +hi-lock-find-patterns} command. + +Patterns are not read if the buffer's mode is listed in +@code{hi-lock-exclude-modes}. Patterns are only used if +@code{hi-lock-file-patterns-policy} is 'ask and the user responds yes +to a prompt, or if @code{hi-lock-file-patterns-policy} is bound to a +function and that function returns t. The function is called with the +patterns as an argument. @item C-x w i @kindex C-x w i