From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.help Subject: Re: replacing a function with another one Date: Tue, 11 Mar 2014 01:41:10 +0100 Message-ID: <87vbvlbm8p.fsf@web.de> References: <87vbvofsi6.fsf@yun.yagibdah.de> <87bnxgs4r9.fsf@web.de> <87lhwj1cfz.fsf@yun.yagibdah.de> <87zjkz6vd5.fsf@web.de> <8738ir161u.fsf@yun.yagibdah.de> <87eh2b6nfm.fsf@web.de> <87r46anab5.fsf@yun.yagibdah.de> <87vbvleiey.fsf@yun.yagibdah.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1394499322 19573 80.91.229.3 (11 Mar 2014 00:55:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 11 Mar 2014 00:55:22 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Mar 11 01:55:31 2014 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WNAyg-0004e6-T2 for geh-help-gnu-emacs@m.gmane.org; Tue, 11 Mar 2014 01:55:31 +0100 Original-Received: from localhost ([::1]:51850 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNAyg-0005GE-HB for geh-help-gnu-emacs@m.gmane.org; Mon, 10 Mar 2014 20:55:30 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNAyM-00054x-PY for help-gnu-emacs@gnu.org; Mon, 10 Mar 2014 20:55:16 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNAyG-0002UD-KC for help-gnu-emacs@gnu.org; Mon, 10 Mar 2014 20:55:10 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:51497) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNAyG-0002Sp-E7 for help-gnu-emacs@gnu.org; Mon, 10 Mar 2014 20:55:04 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1WNAl3-00072B-3E for help-gnu-emacs@gnu.org; Tue, 11 Mar 2014 01:41:25 +0100 Original-Received: from ip-90-186-176-150.web.vodafone.de ([90.186.176.150]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 11 Mar 2014 01:41:25 +0100 Original-Received: from michael_heerdegen by ip-90-186-176-150.web.vodafone.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 11 Mar 2014 01:41:25 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 53 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: ip-90-186-176-150.web.vodafone.de User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) Cancel-Lock: sha1:4biYh9Q9Qi6IC1uE6yjZ7FRa+sA= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:96419 Archived-At: lee writes: > > Instead, use an auxiliary variable, e.g. > > Hm, I have experimented with variables and found that things don´t work > when the variables are local. But then, I can´t get add-advice to work, > not even with global variables. It´s too complicated, and the > documentation is not understandable at all. > > It also seems that it is not possible at all to make a mode on top of > hi-lock-mode which does what I want. Variables have to be local per > buffer, and with that, it´s not possible to read patterns from different > buffers because the variables change because buffers must be switched to > read the patterns. Please don't get confused. Use global auxiliary variables for things that reflect buffer independent states. And you can always get the buffer local binding of a variable foo in any buffer b with (with-current-buffer b foo) There is no limitation from the Emacs' side. Mmh, ok, let's start from the beginning and simple. Let's add some mechanism that allows to specify additional, directory local hi-lock patterns. That should be simple as this: (defvar hi-lock-dir-patterns nil) ;; use as dir local variable (advice-add 'hi-lock-find-patterns :after (lambda (&rest _) (hi-lock-set-file-patterns (append hi-lock-file-patterns hi-lock-dir-patterns)))) The advice just merges in the additional patterns. Note that using directory local variables has the advantage that me must not explicitly look up the patterns, because the directory local variable is automatically bound when the file is opened. This should be all to do as long as you don't want to automatically save additional patterns - you have to add them yourself in the .dir-locals file. If you want such automatic saving, we would just have to substitute the dir local variable with a mechanism that loads and saves explicitly. Is this what you want? Regards, Michael.