From: lee <lee@yun.yagibdah.de>
To: help-gnu-emacs@gnu.org
Subject: Re: replacing a function with another one
Date: Tue, 11 Mar 2014 15:25:28 +0100 [thread overview]
Message-ID: <87txb4izhj.fsf@yun.yagibdah.de> (raw)
In-Reply-To: <87ob1djpkq.fsf@web.de> (Michael Heerdegen's message of "Tue, 11 Mar 2014 06:01:57 +0100")
Michael Heerdegen <michael_heerdegen@web.de> writes:
> lee <lee@yun.yagibdah.de> writes:
>
>> Sigh ... Any idea why the following does not work:
>
> Your code does something you definitely shouldn't do: your advices make
> `hi-lock-set-file-patterns' and `hi-lock-find-patterns' switch to a
> different buffer (persistently!). When you need the context of another
> buffer, use `with-current-buffer' to switch to it temporarily.
The idea is very simple: When patterns are to be read from another
buffer, switch to that buffer before they are being read. Before
applying them, switch back to the original buffer.
I can´t do that with `with-current-buffer´ because two different functions
need to be advised to do it, and I can´t get add-advice to work with
:around.
Why shouldn´t I switch buffers? They are switched back anyway.
In any case, why doesn´t it work? Is there a way to see what´s going
on, like some debugger that allows me to run it line by line? I really
want to know why it doesn´t work.
> Maybe the following illustration may help:
>
> (defvar-local foo)
>
> Suppose we have two buffers buffer-a and buffer-b. buffer-a is current,
> and we want to set `foo's binding in buffer-a to `foo's value in
> buffer-b (I think this is what you try to do, more or less). This is
> how you can do it
>
> (let (helper) ; temporary variable (not buffer local)
>
> (with-current-buffer buffer-b
> ;; set it to `foo's binding in buffer-b
> (setq helper foo))
>
> ;;back in buffer-a
> (setq foo helper))
That´s why it might be better to make a fork of hi-lock.el. I could
modify the functions directly and add other ones I´d need. Or maybe I
should just re-define some of the functions.
In any case, when hi-lock.el changes, what I´m doing may not work
anymore. So what difference does it make?
> BTW, did you have a look at my example? I think it's quite close to
> what you want to achieve.
Yes, it looks very interesting :)
One thing I haven´t been able to figure out is how hi-lock.el decides
what the lines it writes to the buffer are prepended with. In one
buffer, it puts "// Hi-lock ...", in another one, it´s "# Hi-lock ...".
Then it searches patterns with '"\\<" hi-lock-file-patterns-prefix ":"',
and apparently it will not find patterns prepended with "//" when it
figures that they should be prepended with "#".
The regexp for a comment starter is "\s<"[1], and it is not used in the
search. So why aren´t patterns found when an unexpected comment starter
is used with the patterns written to a buffer?
[1]: http://www.emacswiki.org/emacs/RegularExpression
--
Knowledge is volatile and fluid. Software is power.
next prev parent reply other threads:[~2014-03-11 14:25 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-08 19:43 replacing a function with another one lee
2014-03-08 19:54 ` Eli Zaretskii
2014-03-09 1:17 ` lee
2014-03-08 22:30 ` Michael Heerdegen
2014-03-09 17:58 ` lee
2014-03-09 19:10 ` Michael Heerdegen
2014-03-09 20:57 ` lee
2014-03-09 22:02 ` Michael Heerdegen
2014-03-10 0:53 ` lee
2014-03-10 2:18 ` Michael Heerdegen
2014-03-10 15:29 ` lee
2014-03-11 0:03 ` Michael Heerdegen
2014-03-11 13:34 ` lee
2014-03-11 23:40 ` Michael Heerdegen
2014-03-12 6:11 ` Michael Heerdegen
2014-03-12 7:07 ` Michael Heerdegen
2014-03-12 14:48 ` lee
2014-03-13 7:19 ` Michael Heerdegen
2014-03-15 19:51 ` lee
2014-03-17 12:00 ` Michael Heerdegen
2014-03-12 14:04 ` lee
2014-03-12 18:26 ` Stefan Monnier
2014-03-12 4:10 ` Michael Heerdegen
2014-03-10 12:44 ` Stefan Monnier
2014-03-10 23:35 ` lee
2014-03-11 0:41 ` Michael Heerdegen
2014-03-11 1:45 ` Michael Heerdegen
2014-03-11 19:05 ` lee
2014-03-11 22:58 ` Michael Heerdegen
2014-03-12 15:11 ` lee
2014-03-12 18:15 ` Stefan Monnier
2014-03-12 21:43 ` lee
2014-03-13 7:22 ` Michael Heerdegen
2014-03-15 20:02 ` lee
2014-03-11 4:11 ` lee
2014-03-11 5:01 ` Michael Heerdegen
2014-03-11 14:25 ` lee [this message]
2014-03-11 23:51 ` Michael Heerdegen
2014-03-12 15:22 ` lee
2014-03-13 7:33 ` Michael Heerdegen
2014-03-13 12:29 ` Stefan Monnier
2014-03-15 20:05 ` lee
2014-03-16 17:20 ` Stefan
2014-03-11 6:51 ` Michael Heerdegen
2014-03-11 15:41 ` lee
2014-03-11 23:21 ` Michael Heerdegen
2014-03-12 17:33 ` lee
2014-03-12 19:34 ` Florian Beck
2014-03-12 19:51 ` Florian Beck
2014-03-13 7:54 ` Michael Heerdegen
2014-03-15 20:14 ` lee
2014-03-12 12:45 ` Stefan Monnier
2014-03-12 17:42 ` lee
2014-03-13 2:43 ` Jambunathan K
2014-03-15 20:17 ` How to propose an emacs patch (Re: replacing a function with another one) lee
2014-03-16 3:21 ` Jambunathan K
2014-03-17 4:35 ` lee
2014-03-10 13:45 ` replacing a function with another one lee
2014-03-10 23:31 ` Michael Heerdegen
2014-03-12 13:16 ` Jambunathan K
2014-03-12 13:18 ` Jambunathan K
2014-03-15 20:22 ` lee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87txb4izhj.fsf@yun.yagibdah.de \
--to=lee@yun.yagibdah.de \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.