Article View: comp.emacs
Article #3221Re: [Q] How do I get EMACS to generate TAGS for fortran code ENTRY points?
From: Radey Shouman
Date: Wed, 16 Dec 1992 21:24
Date: Wed, 16 Dec 1992 21:24
160 lines
4003 bytes
4003 bytes
In article <1992Dec16.164332.21910@jet.uk> tp@jet.uk (Tarang K Patel) writes:
>
> I know that GNUemacs picks up functions and subroutines in fortran code as
> tags, but how does one get ENTRY point names tagged as well?
>
>
> Tarang
I've modified etags.c, from GNU emacs 18.58, to find tags for fortran
"entry" and "common" statements. A context diff giving the
necessary modifications follows.
Enjoy,
--Radey Shouman
-----------------cut-here-------------------------cut-here--------
*** etags.c Wed Sep 2 15:02:54 1992
--- dist/etags.c Wed Dec 16 14:36:44 1992
***************
*** 1,6 ****
- /* Modified 2 September, 1990 to recognize fortran "entry" statement and
- "common" statement --ars */
-
/* Tags file maker to go with GNUmacs
Copyright (C) 1984, 1987, 1988 Free Software Foundation, Inc. and Ken Arnold
--- 1,3 ----
***************
*** 93,98 ****
--- 90,97 ----
TYST tydef = none;
+ logical next_token_is_func;
+
char searchar = '/'; /* use /.../ searches */
int lineno; /* line number of current line */
***************
*** 186,202 ****
#ifdef ETAGS
eflag = 1;
#else
- #ifdef CTAGS
eflag = 0;
- #else
- {
- char *subname = rindex (progname, '/');
- if (subname++ == NULL)
- subname = progname;
- eflag = ! strcmp(subname, "ctags");
- }
#endif
- #endif
while (ac > 1 && av[1][0] == '-')
{
--- 185,192 ----
***************
*** 744,749 ****
--- 734,741 ----
number = 0;
gotone = midtoken = inquote = inchar = incomm = FALSE;
level = 0;
+ tydef = none;
+ next_token_is_func = 0;
while (!feof (inf))
{
***************
*** 893,899 ****
{
reg char *lp = *lpp;
reg char c;
- static logical next_token_is_func;
logical firsttok; /* T if have seen first token in ()'s */
int bad, win;
--- 885,890 ----
***************
*** 1077,1090 ****
continue;
switch (*dbp|' ')
{
- case 'c':
- if (tail("common"))
- getit();
- continue;
- case 'e':
- if (tail("entry"))
- getit();
- continue;
case 'f':
if (tail("function"))
getit();
--- 1068,1073 ----
***************
*** 1147,1153 ****
char c;
char nambuf[BUFSIZ];
! while (isspace(*dbp) || *dbp == '/')
dbp++;
if (*dbp == 0 || !isalpha(*dbp))
return;
--- 1130,1136 ----
char c;
char nambuf[BUFSIZ];
! while (isspace(*dbp))
dbp++;
if (*dbp == 0 || !isalpha(*dbp))
return;
***************
*** 1359,1364 ****
--- 1342,1348 ----
#define TEX_LESC '\\'
#define TEX_SESC '!'
+ #define TEX_CMT '%'
/* Figure out whether TeX's escapechar is '\\' or '!' and set grouping */
/* chars accordingly. */
***************
*** 1366,1376 ****
TEX_mode (f)
FILE *f;
{
! int c;
while ((c = getc (f)) != EOF)
! if (c == TEX_LESC || c == TEX_SESC)
! break;
if (c == TEX_LESC)
{
--- 1350,1368 ----
TEX_mode (f)
FILE *f;
{
! int c, skip_line = 0;
while ((c = getc (f)) != EOF)
! {
! /* Skip to next line if we hit the TeX comment char. */
! if (c == TEX_CMT)
! skip_line = 1;
! else if (c == '\n')
! skip_line = 0;
! else if (! skip_line)
! if (c == TEX_LESC || c == TEX_SESC)
! break;
! }
if (c == TEX_LESC)
{
--
Radey Shouman rshouman@chpc.utexas.edu
Technical Details
Message-ID:
<1992Dec16.212441.26891@chpc.utexas.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!spool.mu.edu!sdd.hp.com!swrinde!cs.utexas.edu!hermes.chpc.utexas.edu!rshoumanReferences:
<1992Dec16.164332.21910@jet.uk>Show Full Headers
Complete Article Headers
Newsgroups: comp.emacs Path: arc1-ca.pugleaf.net!sparky!uunet!spool.mu.edu!sdd.hp.com!swrinde!cs.utexas.edu!hermes.chpc.utexas.edu!rshouman From: rshouman@chpc.utexas.edu (Radey Shouman) Subject: Re: [Q] How do I get EMACS to generate TAGS for fortran code ENTRY points? Message-ID: <1992Dec16.212441.26891@chpc.utexas.edu> Keywords: TAGS, EMACS Organization: The University of Texas System - CHPC References: <1992Dec16.164332.21910@jet.uk> Date: Wed, 16 Dec 92 21:24:41 GMT Lines: 160