|
From: | ishikawa |
Subject: | Re: Strange error caused by post-command-hook. |
Date: | Wed, 11 Jul 2007 20:53:40 +0900 |
User-agent: | Thunderbird 1.5.0.12 (X11/20070509) |
Using the suggestion, I tried to print the value of post-command-hook. Unfortunately, when the discussed error message is seen, by the time 'find-file' is invoked, the value of post-command-hook seems to have been cleared to nil, and I don't get the print out of post-command-hook. (I *DO* get the print ouf of post-command-hook occasionally when I invoked find-file and so the code is correct as far as the coding goes.) I am now looking at keyboard.c and pondering to modify it to print out of the value of post-command-hook using Fmessage() when run_hook_safely() is called (and the argument is post-command-hook). If someone has a better idea of tracking down the value in a general manner, short of modifying the keyboard.c source file, please let me know. I am going to insert Fmessage() anyway since it won't hurt so much... Chiaki Ishikawa PS: Yes, the problem happened again in about 10 minutes time of real-world editing. I checked my local e-lisp code files and there was only one instance of post-hook-command mentioned in my code files, and that file is not used. So the culprit is somewhere else... Oh, wait, I have a few more code repositories one for Japanese input and the other for reading a popular BBS. In any case, by printing out the value, I should be able to get closer to the cause of the bug. TIA. ishikawa wrote:
Dear Martin Rudalics, Thank you for the suggestion. I have inserted the re-defined find-file in my .emacs file. Once the problem returns, I will report the value of post-command-hook. (Aha, I see that the problem may happen before find-file gets executed. How complicated...) Chiaki Ishikawa martin rudalics wrote:> [...] once the following message begins to appear in the > minibuffer whenever a minibuffer interaction is attemped, > > Error in post-command-hook: (error Selecting deleted buffer) > > this message seems to re-appear (almost) always in the mini-buffer. > > This message obscures the prompt message which should have been shown > in the first place. For example, if I type C-c C-f, the default > directory usually shown is obscured with overlapping message (above). > (Funny if I type C-c C-v, the error message doesn't show up.) Do you intend the commands `find-file' and `find-alternate-file' here? You could try to add ... (defun find-file (filename &optional wildcards) "..." (interactive (progn (when post-command-hook (message "... %s" post-command-hook) (sit-for 1))(find-file-read-args "Find file: " nil))) (let ((value (find-file-noselect filename nil nil wildcards)))(if (listp value) (mapcar 'switch-to-buffer (nreverse value)) (switch-to-buffer value)))) ... to your .emacs. As soon as `find-file' triggers the message _and_ the error please tell us the value for `post-command-hook' printed by the message (although your observations indicate that the error is triggered _before_ the command gets executed). > Now, from reading the "C-H v" help message for 'post-command-hook', if > an error occurs when the hook is run from post-command-hook, > the hook is set to nil. But if this is set to "nil" permanently, I > should not see this repetition of the same error message over and over > again. (Correct?) >> Does this mean that whatever is causing the incorrect hook to be installed> is trying to install this invalid hook again and again? Yes. > <<< Press Return to bury the buffer list >>> This seems to come from `electric-buffer-list' which I don't know. AFAICT it doesn't install a `post-command-hook' though.
[Prev in Thread] | Current Thread | [Next in Thread] |