* searching file from emacs
@ 2008-02-14 23:41 marcmj
2008-02-15 5:25 ` Jonathan Rockway
0 siblings, 1 reply; 4+ messages in thread
From: marcmj @ 2008-02-14 23:41 UTC (permalink / raw)
To: Emacs-devel
Hello,
I am new to lisp and I want to make the following:
- in a emacs window, editing a routine, I locate the cursor in front or in
the middle of a routine name
- the macro will look for the entire name, then find the file in a given
list of directory
- once found, the macro will open the routine in the same emacs window
So if I have the source example.f where I have the following line:
call other_routine(a, b)
I would like to place the cursor on "other_routine" (anywhere in this
routine name) then hit a key and the code will search for other_routine.f in
a set of pre-defined directories, then open other_routine.f in the emacs
window.
So if anyone has some starting LISP code for this or may be able to help,
I'll appreciate !
Thanks
Marc
--
View this message in context: http://www.nabble.com/searching-file-from-emacs-tp15491987p15491987.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: searching file from emacs
2008-02-14 23:41 searching file from emacs marcmj
@ 2008-02-15 5:25 ` Jonathan Rockway
2008-02-15 15:53 ` marcmj
0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Rockway @ 2008-02-15 5:25 UTC (permalink / raw)
To: marcmj; +Cc: Emacs-devel
* On Thu, Feb 14 2008, marcmj wrote:
> So if I have the source example.f where I have the following line:
> call other_routine(a, b)
>
> I would like to place the cursor on "other_routine" (anywhere in this
> routine name) then hit a key and the code will search for other_routine.f in
> a set of pre-defined directories, then open other_routine.f in the emacs
> window.
This sounds a lot like `find-tag' in `etags.el'. You might want to read
that first. In fact, I'm pretty sure find-tag can do what you want to
do, as long as you run some code before find-tag that sets up the tags
table correctly and then visits it.
Someone on #emacs provided me with the following code the other day:
;;; Järneström Jonas <Jonas.Jarnestrom AT ki.ericsson.se>
;;; A smarter find-tag that automagically reruns etags when it cant
;;; find a requested item and then makes a new try to locate it.
(defadvice find-tag (around refresh-etags activate)
"Rerun etags and reload tags if tag not found and redo find-tag.
If buffer is modified, ask about save before running etags."
(let* ((extension (file-name-extension (buffer-file-name))))
(condition-case err
ad-do-it
(error (and (buffer-modified-p)
(not (ding))
(y-or-n-p "Buffer is modified, save it? ")
(save-buffer))
(er-refresh-etags extension)
ad-do-it))))
(defun er-refresh-etags (extension)
"Run etags on all peer files in current dir and reload them silently."
(interactive)
(when (not found-perl-tags)
(shell-command (format "etags *.%s" extension))
(let ((tags-revert-without-query t)) ; don't query, revert silently
(visit-tags-table default-directory nil))))
This tries to find a tag normally, then if that fails, it builds a tags
table and tries again. Basically, you'll probably want to modify this
to run a different command based on the major mode that you want this to
work in. I do this for cperl-mode buffers:
(shell-command (format "find %s | grep pm$ | etags - -o %s" root
tags))
`root' is the root of my project, `tags' is root/TAGS basically. I can
provide more detail if you need it.
Regards,
Jonathan Rockway
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-02-15 18:12 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-14 23:41 searching file from emacs marcmj
2008-02-15 5:25 ` Jonathan Rockway
2008-02-15 15:53 ` marcmj
2008-02-15 18:12 ` Drew Adams
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).