From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Eric Twietmeyer" Newsgroups: gmane.emacs.help Subject: Re: enable-local-variables Date: 1 Jan 2007 16:21:56 -0800 Organization: http://groups.google.com Message-ID: <1167697316.065889.189060@i12g2000cwa.googlegroups.com> References: <1167681848.399172.255500@h40g2000cwb.googlegroups.com> <45998113$0$5712$9b4e6d93@newsspool3.arcor-online.net> <1167690432.813314.179450@i12g2000cwa.googlegroups.com> <45999042$0$30319$9b4e6d93@newsspool1.arcor-online.net> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-Trace: sea.gmane.org 1167698438 11796 80.91.229.12 (2 Jan 2007 00:40:38 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 2 Jan 2007 00:40:38 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Jan 02 01:40:34 2007 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1H1Xhh-0006UN-5g for geh-help-gnu-emacs@m.gmane.org; Tue, 02 Jan 2007 01:40:33 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1H1Xhg-0006Qq-MR for geh-help-gnu-emacs@m.gmane.org; Mon, 01 Jan 2007 19:40:32 -0500 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!postnews.google.com!i12g2000cwa.googlegroups.com!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 118 Original-NNTP-Posting-Host: 69.254.192.192 Original-X-Trace: posting.google.com 1167697321 15117 127.0.0.1 (2 Jan 2007 00:22:01 GMT) Original-X-Complaints-To: groups-abuse@google.com Original-NNTP-Posting-Date: Tue, 2 Jan 2007 00:22:01 +0000 (UTC) User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: i12g2000cwa.googlegroups.com; posting-host=69.254.192.192; posting-account=X4mNGgwAAABKvPB38ntAu46e-VHbLqgS Original-Xref: shelby.stanford.edu gnu.emacs.help:144487 Original-To: help-gnu-emacs@gnu.org X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:40091 Archived-At: Ralf Angeli wrote: > * Eric Twietmeyer (2007-01-01) writes: > > > Ralf Angeli wrote: > >> > >> I'd also be interested in knowing which package or code uses the > >> variable before giving you a means to shoot yourself in the foot. > > > > Here is what the text looks like at the bottom of a typical C++ file I > > edit: > > > > /* > > Local Variables: > > typedefs:("boost" "noncopyable" "shared_ptr" "size_t" "std" "string" > > "tCursorIPtr" "tDestroyI" "tEndian" "tStreamI" "tStreamIPtr" "wchar_t" > > "wstring") > > End: > > */ > > > > So the value of "typedefs" is just a list of quoted symbols. > > Then > (put 'typedefs 'safe-local-variable 'listp) > should work. > > > This list > > changes from file to file. It is used by the syntax highlighting code > > in C/C++ mode. > > I couldn't find anything regarding "typedefs" in Emacs' sources. > Which mode is this and who is maintaining it? Could you inform those > people that they should mark the variable as safe (in case it really > is) in their mode? > > > The question therefore remains, what can I do so that all such values > > of typedefs are always considered "safe". I'm not certain why this is > > being flagged in the first place, as the documentation I saw about > > ricky variables indicates that their name should end in some special > > characters, and my typedefs do not end in such characters. So I have > > been confused from the start why this is marked as risky in the first > > place and therefore why I am being queried about it each time I open > > the file. > > All unknown variables are considered risky in CVS Emacs. > > -- > Ralf Ok, now I understand the confusion. I didn't realize that my extended .emacs had code I took long ago from someone that added this "feature", I thought it was part of the standard font-lock stuff. Here is the relevant code: ------------------------------------------------------------------------------------------------------- ;; Need to have a new variable to hold the typedefs for this buffer. (defvar typedefs nil "Typedefs in this buffer.") (make-variable-buffer-local 'typedefs) ;; Add the word at the current point to the list of typedefs. Insert stuff ;; at bottom of file to save the information. (defun make-word-into-typedef () "Take the word at the current point and make font-lock realize it's a type. The word will be added to the local variable list at the end of the file." (interactive) (let ((this-type (current-word))) (if (member this-type typedefs) (message "%s is already a type" this-type) ;; Sort for niceness (setq typedefs (sort (cons this-type typedefs) 'string<)) ;; Find the typedefs line if we have one, and replace it (save-excursion (goto-char (point-min)) (if (re-search-forward "^typedefs:" nil 1) (progn (beginning-of-line) (push-mark nil t t) (end-of-line) (delete-region (mark) (point))) (progn ;; Break up the string so Emacs doesn't get confused when ;; reading this file (insert "/*\nLocal ") (insert "Variables:\n\nEnd:\n*/\n") (forward-line -3))) (insert "typedefs:") (insert (prin1-to-string typedefs))) (hack-local-variables) (add-extra-type (make-regexp typedefs)) ;; Reset font-lock (font-lock-mode 0) (font-lock-mode 1)))) ;; Called to add the types when the hook executes. (defun add-extra-type (new_type) (setq c-font-lock-extra-types (cons new_type c++-font-lock-extra-types)) (setq c++-font-lock-extra-types c-font-lock-extra-types) ) Part of my c-mode-hook: (if typedefs (add-extra-type (make-regexp typedefs))) ---------------------------------------------------------------------------------- So what do I need to do to make this typedef variable always safe? Or where do I look in the docs to learn how to do this? Thanks again for your help! -Eric Twietmeyer