GNU bug report logs - #22116
[PATCH] * etags.c: Add support for Ruby language.

Previous Next

Package: emacs;

Reported by: lu4nx <lx <at> shellcodes.org>

Date: Tue, 8 Dec 2015 16:35:02 UTC

Severity: normal

Tags: patch

Done: Dmitry Gutov <dgutov <at> yandex.ru>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 22116 in the body.
You can then email your comments to 22116 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#22116; Package emacs. (Tue, 08 Dec 2015 16:35:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to lu4nx <lx <at> shellcodes.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 08 Dec 2015 16:35:04 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: lu4nx <lx <at> shellcodes.org>
To: bug-gnu-emacs <at> gnu.org
Cc: lu4nx <lx <at> shellcodes.org>
Subject: [PATCH] * etags.c: Add support for Ruby language.
Date: Tue,  8 Dec 2015 18:56:04 +0800
---
 lib-src/etags.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/lib-src/etags.c b/lib-src/etags.c
index 8b980d3..7c8c503 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -364,6 +364,7 @@ static void PHP_functions (FILE *);
 static void PS_functions (FILE *);
 static void Prolog_functions (FILE *);
 static void Python_functions (FILE *);
+static void Ruby_functions (FILE *);
 static void Scheme_functions (FILE *);
 static void TeX_commands (FILE *);
 static void Texinfo_nodes (FILE *);
@@ -722,6 +723,12 @@ static const char Python_help [] =
 "In Python code, 'def' or 'class' at the beginning of a line\n\
 generate a tag.";
 
+static const char *Ruby_suffixes [] =
+  { "rb", NULL };
+static const char Ruby_help [] =
+  "In Ruby code, 'def' or 'class' at the beginning of a line\n\
+generate a tag.";
+
 /* Can't do the `SCM' or `scm' prefix with a version number. */
 static const char *Scheme_suffixes [] =
   { "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL };
@@ -800,6 +807,7 @@ static language lang_names [] =
   { "proc",      no_lang_help,   plain_C_entries,   plain_C_suffixes   },
   { "prolog",    Prolog_help,    Prolog_functions,  Prolog_suffixes    },
   { "python",    Python_help,    Python_functions,  Python_suffixes    },
+  { "ruby",      Ruby_help,      Ruby_functions,    Ruby_suffixes      },
   { "scheme",    Scheme_help,    Scheme_functions,  Scheme_suffixes    },
   { "tex",       TeX_help,       TeX_commands,      TeX_suffixes       },
   { "texinfo",   Texinfo_help,   Texinfo_nodes,     Texinfo_suffixes   },
@@ -4532,6 +4540,31 @@ Python_functions (FILE *inf)
     }
 }
 
+/*
+ * Ruby support
+ * Idea by Xi Lu <lx <at> shellcodes.org> (2015)
+ */
+static void
+Ruby_functions (FILE *inf)
+{
+  char *cp = NULL;
+
+  LOOP_ON_INPUT_LINES (inf, lb, cp)
+    {
+      cp = skip_spaces (cp);
+      if (LOOKING_AT (cp, "def") || LOOKING_AT (cp, "class"))
+	{
+	  char *name = cp;
+
+	  while (!notinname (*cp))
+	    cp++;
+
+	  make_tag(name, cp -name, true,
+		   lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+	}
+    }
+}
+
 
 /*
  * PHP support
@@ -4954,7 +4987,22 @@ Lua_functions (FILE *inf)
       (void)LOOKING_AT (bp, "local"); /* skip possible "local" */
 
       if (LOOKING_AT (bp, "function"))
-	get_tag (bp, NULL);
+	{
+	  char *tag_name, *tp_dot, *tp_colon;
+
+	  get_tag (bp, &tag_name);
+	  /* If the tag ends with ".foo" or ":foo", make an additional tag for
+	     "foo".  */
+	  tp_dot = strrchr (tag_name, '.');
+	  tp_colon = strrchr (tag_name, ':');
+	  if (tp_dot || tp_colon)
+	    {
+	      char *p = tp_dot > tp_colon ? tp_dot : tp_colon;
+	      int len_add = p - tag_name + 1;
+
+	      get_tag (bp + len_add, NULL);
+	    }
+	}
     }
 }
 
-- 
2.5.0







Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22116; Package emacs. (Tue, 08 Dec 2015 17:34:02 GMT) Full text and rfc822 format available.

Message #8 received at 22116 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: lu4nx <lx <at> shellcodes.org>
Cc: 22116 <at> debbugs.gnu.org
Subject: Re: bug#22116: [PATCH] * etags.c: Add support for Ruby language.
Date: Tue, 08 Dec 2015 19:33:14 +0200
> From: lu4nx <lx <at> shellcodes.org>
> Date: Tue,  8 Dec 2015 18:56:04 +0800
> Cc: lu4nx <lx <at> shellcodes.org>
> 
> +/*
> + * Ruby support

Thanks.

> @@ -4954,7 +4987,22 @@ Lua_functions (FILE *inf)
>        (void)LOOKING_AT (bp, "local"); /* skip possible "local" */
>  
>        if (LOOKING_AT (bp, "function"))
> -	get_tag (bp, NULL);
> +	{
> +	  char *tag_name, *tp_dot, *tp_colon;
> +
> +	  get_tag (bp, &tag_name);
> +	  /* If the tag ends with ".foo" or ":foo", make an additional tag for
> +	     "foo".  */
> +	  tp_dot = strrchr (tag_name, '.');
> +	  tp_colon = strrchr (tag_name, ':');
> +	  if (tp_dot || tp_colon)
> +	    {
> +	      char *p = tp_dot > tp_colon ? tp_dot : tp_colon;
> +	      int len_add = p - tag_name + 1;
> +
> +	      get_tag (bp + len_add, NULL);
> +	    }
> +	}
>      }
>  }

This part is certainly not yours, and it has nothing to do with Ruby,
AFAICT.  Right?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22116; Package emacs. (Tue, 08 Dec 2015 18:05:02 GMT) Full text and rfc822 format available.

Message #11 received at 22116 <at> debbugs.gnu.org (full text, mbox):

From: lu4nx <lx.exe <at> qq.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lu4nx <lx <at> shellcodes.org>, 22116 <at> debbugs.gnu.org
Subject: Re: bug#22116: [PATCH] * etags.c: Add support for Ruby language.
Date: Wed, 9 Dec 2015 01:43:01 +0800
yes,it has nothing to do with Ruby, thanks ;-)



在 2015年12月9日,上午1:33,Eli Zaretskii <eliz <at> gnu.org> 写道:

>> From: lu4nx <lx <at> shellcodes.org>
>> Date: Tue,  8 Dec 2015 18:56:04 +0800
>> Cc: lu4nx <lx <at> shellcodes.org>
>> 
>> +/*
>> + * Ruby support
> 
> Thanks.
> 
>> @@ -4954,7 +4987,22 @@ Lua_functions (FILE *inf)
>>       (void)LOOKING_AT (bp, "local"); /* skip possible "local" */
>> 
>>       if (LOOKING_AT (bp, "function"))
>> -    get_tag (bp, NULL);
>> +    {
>> +      char *tag_name, *tp_dot, *tp_colon;
>> +
>> +      get_tag (bp, &tag_name);
>> +      /* If the tag ends with ".foo" or ":foo", make an additional tag for
>> +         "foo".  */
>> +      tp_dot = strrchr (tag_name, '.');
>> +      tp_colon = strrchr (tag_name, ':');
>> +      if (tp_dot || tp_colon)
>> +        {
>> +          char *p = tp_dot > tp_colon ? tp_dot : tp_colon;
>> +          int len_add = p - tag_name + 1;
>> +
>> +          get_tag (bp + len_add, NULL);
>> +        }
>> +    }
>>     }
>> }
> 
> This part is certainly not yours, and it has nothing to do with Ruby,
> AFAICT.  Right?
> 
> 
> 






Reply sent to Dmitry Gutov <dgutov <at> yandex.ru>:
You have taken responsibility. (Sat, 26 Dec 2015 04:37:02 GMT) Full text and rfc822 format available.

Notification sent to lu4nx <lx <at> shellcodes.org>:
bug acknowledged by developer. (Sat, 26 Dec 2015 04:37:02 GMT) Full text and rfc822 format available.

Message #16 received at 22116-done <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: lu4nx <lx.exe <at> qq.com>, Eli Zaretskii <eliz <at> gnu.org>
Cc: 22116-done <at> debbugs.gnu.org
Subject: Re: bug#22116: [PATCH] * etags.c: Add support for Ruby language.
Date: Sat, 26 Dec 2015 06:36:02 +0200
On 12/08/2015 07:43 PM, lu4nx wrote:
> yes,it has nothing to do with Ruby, thanks ;-)

Since this has been applied, closing.

Thanks again.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 23 Jan 2016 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 9 years and 210 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.