From: David Kastrup <dak@gnu.org>
To: "Herbert Euler" <herberteuler@hotmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: A suggestion...
Date: Thu, 17 May 2007 09:14:14 +0200 [thread overview]
Message-ID: <85zm43zzuh.fsf@lola.goethe.zz> (raw)
In-Reply-To: <BAY143-F194CDB2E5C45D8A9132E7FDA330@phx.gbl> (Herbert Euler's message of "Thu\, 17 May 2007 12\:31\:45 +0800")
"Herbert Euler" <herberteuler@hotmail.com> writes:
>>When doing something like C-h f for a function, one gets displayed a
>>hyperlink to the corresponding source file.
>>
>>Now there is not rarely the situation that one actually wants not to
>>go to the Elisp file in load-path, but rather the actual source file.
>>
>>It happens that .elc files have a header similar to the following:
>>
>>;ELC.
>>;;; Compiled by dak@lola.quinscape.zz on Mon May 14 12:09:35 2007
>>;;; from file /rep/emacs/lisp/gnus/mml2015.el
>>;;; in Emacs version 23.0.51
>>;;; with all optimizations.
>>
>>The information is sufficient for determining whether the compilation
>>happened on the current machine by the current user, and if so, what
>>the actual source file has been.
>>
>>So in this particular case, I'd prefer if, without further
>>configuration and ado, I'd be landed in the corresponding source file
>>if it is still present on the given machine.
>>
>>Since I have several packages I build and install from the respective
>>CVS source archives, having this work automatically would be quite
>>nice.
>
> I agree. M-. now always creates buffers like "subr.el<2>", which
> is not good.
I have in my own personal .emacs file the following which mitigates
the problem but requires manual configuration for every package you
work with. And at my Emacs at the workplace, I have not yet adapted
.emacs, so I was annoyed again. All the info for an automatic
solution is actually in-place in the compiled Lisp files. Even when
some installation procedure copies _only_ the compiled files.
(defcustom find-function-transform-list
`((,(expand-file-name ".." data-directory)
"/home/tmp/emacs")
("/usr/local/emacs-21/share/emacs/site-lisp/preview"
"/home/tmp/auctex/preview")
("/usr/local/emacs-21/share/emacs/site-lisp/auctex"
"/home/tmp/auctex/preview"
"/home/tmp/auctex"))
"File prefixes to transform `find-function-source-path'."
:group 'find-file
:type '(repeat (list string (repeat string))))
(defadvice find-library-name (around find-function-transform activate)
(let ((find-function-source-path (or find-function-source-path load-path)))
(let (lst case-fold-search lst2 len elt2)
(setq find-function-source-path
(dolist (elt find-function-source-path (nreverse lst))
(setq lst2 find-function-transform-list)
(catch 'found
(while lst2
(setq elt2 (pop lst2)
len (length (car elt2)))
(when (or (string= elt (car elt2))
(and (< len (length elt))
(string= (substring elt 0 (1+ len))
(concat (car elt2) "/"))))
(while (setq elt2 (cdr elt2))
(push (concat (car elt2) (substring elt len)) lst))
(throw 'found t)))
(push elt lst)))))
ad-do-it))
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
next prev parent reply other threads:[~2007-05-17 7:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-14 10:16 A suggestion David Kastrup
2007-05-17 4:31 ` Herbert Euler
2007-05-17 7:14 ` David Kastrup [this message]
2007-05-17 14:28 ` Jan Djärv
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=85zm43zzuh.fsf@lola.goethe.zz \
--to=dak@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=herberteuler@hotmail.com \
/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.