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 18:21:12 -0800 Organization: http://groups.google.com Message-ID: <1167704472.683295.83360@v33g2000cwv.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> <1167697316.065889.189060@i12g2000cwa.googlegroups.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-Trace: sea.gmane.org 1167705631 28667 80.91.229.12 (2 Jan 2007 02:40:31 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 2 Jan 2007 02:40:31 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Jan 02 03:40:31 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 1H1ZZf-0004hw-8W for geh-help-gnu-emacs@m.gmane.org; Tue, 02 Jan 2007 03:40:23 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1H1ZZe-0005j5-1C for geh-help-gnu-emacs@m.gmane.org; Mon, 01 Jan 2007 21:40:22 -0500 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!postnews.google.com!v33g2000cwv.googlegroups.com!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 133 Original-NNTP-Posting-Host: 69.254.192.192 Original-X-Trace: posting.google.com 1167704478 31849 127.0.0.1 (2 Jan 2007 02:21:18 GMT) Original-X-Complaints-To: groups-abuse@google.com Original-NNTP-Posting-Date: Tue, 2 Jan 2007 02:21:18 +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: v33g2000cwv.googlegroups.com; posting-host=69.254.192.192; posting-account=X4mNGgwAAABKvPB38ntAu46e-VHbLqgS Original-Xref: shelby.stanford.edu gnu.emacs.help:144490 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:40093 Archived-At: Eric Twietmeyer wrote: > 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 Well, looking through files.el where all of this stuff is used, it looks like perhaps this is what I needed to do: (defvar typedefs nil "Typedefs in this buffer.") (make-variable-buffer-local 'typedefs) (put 'typedefs 'safe-local-variable '(lambda (x) t)) It looked like the safe-local-variable property is what controls things. Please let me know if this is the correct way, thanks! -Eric Twietmeyer