mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-10 15:56:18 +00:00
More improvements for Ruby support in 'etags'
* lib-src/etags.c (Ruby_functions): Tag Ruby accessors and alias_method. Identify constants even if the assignment is not followed by whitespace. (Bug#22241) * test/etags/ruby-src/test1.ruby: Add tests for constants, accessors, and alias_method. * test/etags/ETAGS.good_1: * test/etags/ETAGS.good_2: * test/etags/ETAGS.good_3: * test/etags/ETAGS.good_4: * test/etags/ETAGS.good_5: * test/etags/ETAGS.good_6: * test/etags/CTAGS.good: Adapt to changes in Ruby tests.
This commit is contained in:
parent
c04e91134f
commit
58bfb6a4f5
@ -4642,7 +4642,7 @@ Ruby_functions (FILE *inf)
|
|||||||
if (cp > name + 1)
|
if (cp > name + 1)
|
||||||
{
|
{
|
||||||
bp = skip_spaces (cp);
|
bp = skip_spaces (cp);
|
||||||
if (*bp == '=' && c_isspace (bp[1]))
|
if (*bp == '=' && !(bp[1] == '=' || bp[1] == '>'))
|
||||||
{
|
{
|
||||||
if (colon && !c_isspace (colon[1]))
|
if (colon && !c_isspace (colon[1]))
|
||||||
name = colon + 1;
|
name = colon + 1;
|
||||||
@ -4656,7 +4656,7 @@ Ruby_functions (FILE *inf)
|
|||||||
|| LOOKING_AT (cp, "module"))
|
|| LOOKING_AT (cp, "module"))
|
||||||
{
|
{
|
||||||
const char self_name[] = "self.";
|
const char self_name[] = "self.";
|
||||||
const size_t self_size1 = sizeof ("self.") - 1;
|
const size_t self_size1 = sizeof (self_name) - 1;
|
||||||
|
|
||||||
name = cp;
|
name = cp;
|
||||||
|
|
||||||
@ -4688,6 +4688,60 @@ Ruby_functions (FILE *inf)
|
|||||||
make_tag (name, cp - name, true,
|
make_tag (name, cp - name, true,
|
||||||
lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
|
lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Tag accessors and aliases. */
|
||||||
|
while (*cp && *cp != '#')
|
||||||
|
{
|
||||||
|
bool reader = false, writer = false, alias = false;
|
||||||
|
|
||||||
|
if (LOOKING_AT (cp, "attr_reader"))
|
||||||
|
reader = true;
|
||||||
|
else if (LOOKING_AT (cp, "attr_writer"))
|
||||||
|
writer = true;
|
||||||
|
else if (LOOKING_AT (cp, "attr_accessor"))
|
||||||
|
{
|
||||||
|
reader = true;
|
||||||
|
writer = true;
|
||||||
|
}
|
||||||
|
else if (LOOKING_AT (cp, "alias_method"))
|
||||||
|
alias = true;
|
||||||
|
if (reader || writer || alias)
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
char *np = cp;
|
||||||
|
|
||||||
|
cp = skip_name (cp);
|
||||||
|
if (reader)
|
||||||
|
make_tag (np, cp - np, true,
|
||||||
|
lb.buffer, cp - lb.buffer + 1,
|
||||||
|
lineno, linecharno);
|
||||||
|
if (writer)
|
||||||
|
{
|
||||||
|
size_t name_len = cp - np + 1;
|
||||||
|
char *wr_name = xnew (name_len + 1, char);
|
||||||
|
|
||||||
|
memcpy (wr_name, np, name_len - 1);
|
||||||
|
memcpy (wr_name + name_len - 1, "=", 2);
|
||||||
|
pfnote (wr_name, true, lb.buffer, cp - lb.buffer + 1,
|
||||||
|
lineno, linecharno);
|
||||||
|
}
|
||||||
|
if (alias)
|
||||||
|
{
|
||||||
|
make_tag (np, cp - np, true,
|
||||||
|
lb.buffer, cp - lb.buffer + 1,
|
||||||
|
lineno, linecharno);
|
||||||
|
while (*cp && *cp != '#' && *cp != ';')
|
||||||
|
cp++;
|
||||||
|
}
|
||||||
|
} while (*cp == ','
|
||||||
|
&& (cp = skip_spaces (cp + 1), *cp && *cp != '#'));
|
||||||
|
}
|
||||||
|
cp = skip_name (cp);
|
||||||
|
while (*cp && *cp != '#' && notinname (*cp))
|
||||||
|
cp++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,6 +177,15 @@ $user_comment_lc php-src/lce_functions.php 115
|
|||||||
/wh ps-src/rfc1245.ps /^\/wh { $/
|
/wh ps-src/rfc1245.ps /^\/wh { $/
|
||||||
/yen ps-src/rfc1245.ps /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef \/.notdef /
|
/yen ps-src/rfc1245.ps /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef \/.notdef /
|
||||||
:a-forth-dictionary-entry forth-src/test-forth.fth /^create :a-forth-dictionary-entry$/
|
:a-forth-dictionary-entry forth-src/test-forth.fth /^create :a-forth-dictionary-entry$/
|
||||||
|
:bar= ruby-src/test1.ruby /^ attr_writer :bar$/
|
||||||
|
:foo ruby-src/test1.ruby /^ attr_reader :foo$/
|
||||||
|
:qux ruby-src/test1.ruby /^ alias_method :qux, :tee$/
|
||||||
|
:read1 ruby-src/test1.ruby /^ attr_reader :read1, :read2; attr_writer :wri/
|
||||||
|
:read2 ruby-src/test1.ruby /^ attr_reader :read1, :read2; attr_writer :wri/
|
||||||
|
:tee ruby-src/test1.ruby /^ attr_accessor :tee$/
|
||||||
|
:tee= ruby-src/test1.ruby /^ attr_accessor :tee$/
|
||||||
|
:write1= ruby-src/test1.ruby /^ attr_reader :read1, :read2; attr_writer :wri/
|
||||||
|
:write2= ruby-src/test1.ruby /^ attr_reader :read1, :read2; attr_writer :wri/
|
||||||
< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/
|
< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/
|
||||||
<< ruby-src/test.rb /^ def <<(y)$/
|
<< ruby-src/test.rb /^ def <<(y)$/
|
||||||
<= ruby-src/test.rb /^ def <=(y)$/
|
<= ruby-src/test.rb /^ def <=(y)$/
|
||||||
@ -460,7 +469,7 @@ Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is privat
|
|||||||
Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is$/
|
Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is$/
|
||||||
Configure pyt-src/server.py /^class Configure(Frame, ControlEdit):$/
|
Configure pyt-src/server.py /^class Configure(Frame, ControlEdit):$/
|
||||||
ConfirmQuit pyt-src/server.py /^def ConfirmQuit(frame, context):$/
|
ConfirmQuit pyt-src/server.py /^def ConfirmQuit(frame, context):$/
|
||||||
Constant ruby-src/test1.ruby 26
|
Constant ruby-src/test1.ruby 35
|
||||||
ControlEdit pyt-src/server.py /^class ControlEdit(Frame):$/
|
ControlEdit pyt-src/server.py /^class ControlEdit(Frame):$/
|
||||||
Controls pyt-src/server.py /^class Controls:$/
|
Controls pyt-src/server.py /^class Controls:$/
|
||||||
CopyTextString pas-src/common.pas /^function CopyTextString;(*($/
|
CopyTextString pas-src/common.pas /^function CopyTextString;(*($/
|
||||||
@ -522,6 +531,7 @@ DOS_NT c-src/etags.c 117
|
|||||||
DOS_NT c-src/etags.c 118
|
DOS_NT c-src/etags.c 118
|
||||||
DUMPED c-src/emacs/src/gmalloc.c 80
|
DUMPED c-src/emacs/src/gmalloc.c 80
|
||||||
Debug cp-src/functions.cpp /^void Debug ( int lineno, int level, char* func , c/
|
Debug cp-src/functions.cpp /^void Debug ( int lineno, int level, char* func , c/
|
||||||
|
Def_ ruby-src/test1.ruby 12
|
||||||
DisposeANameList pas-src/common.pas /^procedure DisposeANameList( $/
|
DisposeANameList pas-src/common.pas /^procedure DisposeANameList( $/
|
||||||
DisposeNameList pas-src/common.pas /^procedure DisposeNameList;$/
|
DisposeNameList pas-src/common.pas /^procedure DisposeNameList;$/
|
||||||
ELEM_I c-src/h.h 3
|
ELEM_I c-src/h.h 3
|
||||||
@ -1457,6 +1467,7 @@ WorkingDays cp-src/functions.cpp /^int WorkingDays(Date a, Date b){$/
|
|||||||
Write_Lock/p ada-src/2ataspri.adb /^ procedure Write_Lock (L : in out Lock; Ceiling_/
|
Write_Lock/p ada-src/2ataspri.adb /^ procedure Write_Lock (L : in out Lock; Ceiling_/
|
||||||
Write_Lock/p ada-src/2ataspri.ads /^ procedure Write_Lock (L : in out Lock; Ceiling_/
|
Write_Lock/p ada-src/2ataspri.ads /^ procedure Write_Lock (L : in out Lock; Ceiling_/
|
||||||
X c-src/h.h 100
|
X c-src/h.h 100
|
||||||
|
X ruby-src/test1.ruby /^ def X$/
|
||||||
XBOOL_VECTOR c-src/emacs/src/lisp.h /^XBOOL_VECTOR (Lisp_Object a)$/
|
XBOOL_VECTOR c-src/emacs/src/lisp.h /^XBOOL_VECTOR (Lisp_Object a)$/
|
||||||
XBUFFER c-src/emacs/src/lisp.h /^XBUFFER (Lisp_Object a)$/
|
XBUFFER c-src/emacs/src/lisp.h /^XBUFFER (Lisp_Object a)$/
|
||||||
XBUFFER_OBJFWD c-src/emacs/src/lisp.h /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/
|
XBUFFER_OBJFWD c-src/emacs/src/lisp.h /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/
|
||||||
@ -1534,6 +1545,7 @@ XUNTAG c-src/emacs/src/lisp.h /^# define XUNTAG(a, type) lisp_h_XUNTAG (a, type
|
|||||||
XUNTAG c-src/emacs/src/lisp.h /^XUNTAG (Lisp_Object a, int type)$/
|
XUNTAG c-src/emacs/src/lisp.h /^XUNTAG (Lisp_Object a, int type)$/
|
||||||
XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/
|
XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/
|
||||||
XX cp-src/x.cc 1
|
XX cp-src/x.cc 1
|
||||||
|
Xyzzy ruby-src/test1.ruby 13
|
||||||
Y c-src/h.h 100
|
Y c-src/h.h 100
|
||||||
YACC c-src/etags.c 2199
|
YACC c-src/etags.c 2199
|
||||||
YELLOW cp-src/screen.hpp 26
|
YELLOW cp-src/screen.hpp 26
|
||||||
|
@ -3009,17 +3009,29 @@ module ModuleExample1,0
|
|||||||
def module_instance_method46,1051
|
def module_instance_method46,1051
|
||||||
def ModuleExample.module_class_methodmodule_class_method49,1131
|
def ModuleExample.module_class_methodmodule_class_method49,1131
|
||||||
|
|
||||||
ruby-src/test1.ruby,191
|
ruby-src/test1.ruby,635
|
||||||
class A1,0
|
class A1,0
|
||||||
def a(2,8
|
def a(2,8
|
||||||
def b(5,38
|
def b(5,38
|
||||||
module A9,57
|
module A9,57
|
||||||
class B10,66
|
class B10,66
|
||||||
ABC 11,76
|
ABC 11,76
|
||||||
def foo!13,89
|
Def_ 12,88
|
||||||
def self._bar?(_bar?16,111
|
Xyzzy 13,106
|
||||||
def qux=(qux=20,162
|
def foo!15,121
|
||||||
A::Constant Constant26,211
|
def self._bar?(_bar?18,143
|
||||||
|
def qux=(qux=22,194
|
||||||
|
def X25,232
|
||||||
|
attr_reader :foo26,242
|
||||||
|
attr_reader :read1,27,265
|
||||||
|
attr_reader :read1, :read2;27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1,:write1=27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1, :write2:write2=27,265
|
||||||
|
attr_writer :bar:bar=28,328
|
||||||
|
attr_accessor :tee29,351
|
||||||
|
attr_accessor :tee:tee=29,351
|
||||||
|
alias_method :qux,30,376
|
||||||
|
A::Constant Constant35,425
|
||||||
|
|
||||||
tex-src/testenv.tex,52
|
tex-src/testenv.tex,52
|
||||||
\newcommand{\nm}\nm4,77
|
\newcommand{\nm}\nm4,77
|
||||||
|
@ -3580,17 +3580,29 @@ module ModuleExample1,0
|
|||||||
def module_instance_method46,1051
|
def module_instance_method46,1051
|
||||||
def ModuleExample.module_class_methodmodule_class_method49,1131
|
def ModuleExample.module_class_methodmodule_class_method49,1131
|
||||||
|
|
||||||
ruby-src/test1.ruby,191
|
ruby-src/test1.ruby,635
|
||||||
class A1,0
|
class A1,0
|
||||||
def a(2,8
|
def a(2,8
|
||||||
def b(5,38
|
def b(5,38
|
||||||
module A9,57
|
module A9,57
|
||||||
class B10,66
|
class B10,66
|
||||||
ABC 11,76
|
ABC 11,76
|
||||||
def foo!13,89
|
Def_ 12,88
|
||||||
def self._bar?(_bar?16,111
|
Xyzzy 13,106
|
||||||
def qux=(qux=20,162
|
def foo!15,121
|
||||||
A::Constant Constant26,211
|
def self._bar?(_bar?18,143
|
||||||
|
def qux=(qux=22,194
|
||||||
|
def X25,232
|
||||||
|
attr_reader :foo26,242
|
||||||
|
attr_reader :read1,27,265
|
||||||
|
attr_reader :read1, :read2;27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1,:write1=27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1, :write2:write2=27,265
|
||||||
|
attr_writer :bar:bar=28,328
|
||||||
|
attr_accessor :tee29,351
|
||||||
|
attr_accessor :tee:tee=29,351
|
||||||
|
alias_method :qux,30,376
|
||||||
|
A::Constant Constant35,425
|
||||||
|
|
||||||
tex-src/testenv.tex,52
|
tex-src/testenv.tex,52
|
||||||
\newcommand{\nm}\nm4,77
|
\newcommand{\nm}\nm4,77
|
||||||
|
@ -3356,17 +3356,29 @@ module ModuleExample1,0
|
|||||||
def module_instance_method46,1051
|
def module_instance_method46,1051
|
||||||
def ModuleExample.module_class_methodmodule_class_method49,1131
|
def ModuleExample.module_class_methodmodule_class_method49,1131
|
||||||
|
|
||||||
ruby-src/test1.ruby,191
|
ruby-src/test1.ruby,635
|
||||||
class A1,0
|
class A1,0
|
||||||
def a(2,8
|
def a(2,8
|
||||||
def b(5,38
|
def b(5,38
|
||||||
module A9,57
|
module A9,57
|
||||||
class B10,66
|
class B10,66
|
||||||
ABC 11,76
|
ABC 11,76
|
||||||
def foo!13,89
|
Def_ 12,88
|
||||||
def self._bar?(_bar?16,111
|
Xyzzy 13,106
|
||||||
def qux=(qux=20,162
|
def foo!15,121
|
||||||
A::Constant Constant26,211
|
def self._bar?(_bar?18,143
|
||||||
|
def qux=(qux=22,194
|
||||||
|
def X25,232
|
||||||
|
attr_reader :foo26,242
|
||||||
|
attr_reader :read1,27,265
|
||||||
|
attr_reader :read1, :read2;27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1,:write1=27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1, :write2:write2=27,265
|
||||||
|
attr_writer :bar:bar=28,328
|
||||||
|
attr_accessor :tee29,351
|
||||||
|
attr_accessor :tee:tee=29,351
|
||||||
|
alias_method :qux,30,376
|
||||||
|
A::Constant Constant35,425
|
||||||
|
|
||||||
tex-src/testenv.tex,52
|
tex-src/testenv.tex,52
|
||||||
\newcommand{\nm}\nm4,77
|
\newcommand{\nm}\nm4,77
|
||||||
|
@ -3173,17 +3173,29 @@ module ModuleExample1,0
|
|||||||
def module_instance_method46,1051
|
def module_instance_method46,1051
|
||||||
def ModuleExample.module_class_methodmodule_class_method49,1131
|
def ModuleExample.module_class_methodmodule_class_method49,1131
|
||||||
|
|
||||||
ruby-src/test1.ruby,191
|
ruby-src/test1.ruby,635
|
||||||
class A1,0
|
class A1,0
|
||||||
def a(2,8
|
def a(2,8
|
||||||
def b(5,38
|
def b(5,38
|
||||||
module A9,57
|
module A9,57
|
||||||
class B10,66
|
class B10,66
|
||||||
ABC 11,76
|
ABC 11,76
|
||||||
def foo!13,89
|
Def_ 12,88
|
||||||
def self._bar?(_bar?16,111
|
Xyzzy 13,106
|
||||||
def qux=(qux=20,162
|
def foo!15,121
|
||||||
A::Constant Constant26,211
|
def self._bar?(_bar?18,143
|
||||||
|
def qux=(qux=22,194
|
||||||
|
def X25,232
|
||||||
|
attr_reader :foo26,242
|
||||||
|
attr_reader :read1,27,265
|
||||||
|
attr_reader :read1, :read2;27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1,:write1=27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1, :write2:write2=27,265
|
||||||
|
attr_writer :bar:bar=28,328
|
||||||
|
attr_accessor :tee29,351
|
||||||
|
attr_accessor :tee:tee=29,351
|
||||||
|
alias_method :qux,30,376
|
||||||
|
A::Constant Constant35,425
|
||||||
|
|
||||||
tex-src/testenv.tex,52
|
tex-src/testenv.tex,52
|
||||||
\newcommand{\nm}\nm4,77
|
\newcommand{\nm}\nm4,77
|
||||||
|
@ -4091,17 +4091,29 @@ module ModuleExample1,0
|
|||||||
def module_instance_method46,1051
|
def module_instance_method46,1051
|
||||||
def ModuleExample.module_class_methodmodule_class_method49,1131
|
def ModuleExample.module_class_methodmodule_class_method49,1131
|
||||||
|
|
||||||
ruby-src/test1.ruby,191
|
ruby-src/test1.ruby,635
|
||||||
class A1,0
|
class A1,0
|
||||||
def a(2,8
|
def a(2,8
|
||||||
def b(5,38
|
def b(5,38
|
||||||
module A9,57
|
module A9,57
|
||||||
class B10,66
|
class B10,66
|
||||||
ABC 11,76
|
ABC 11,76
|
||||||
def foo!13,89
|
Def_ 12,88
|
||||||
def self._bar?(_bar?16,111
|
Xyzzy 13,106
|
||||||
def qux=(qux=20,162
|
def foo!15,121
|
||||||
A::Constant Constant26,211
|
def self._bar?(_bar?18,143
|
||||||
|
def qux=(qux=22,194
|
||||||
|
def X25,232
|
||||||
|
attr_reader :foo26,242
|
||||||
|
attr_reader :read1,27,265
|
||||||
|
attr_reader :read1, :read2;27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1,:write1=27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1, :write2:write2=27,265
|
||||||
|
attr_writer :bar:bar=28,328
|
||||||
|
attr_accessor :tee29,351
|
||||||
|
attr_accessor :tee:tee=29,351
|
||||||
|
alias_method :qux,30,376
|
||||||
|
A::Constant Constant35,425
|
||||||
|
|
||||||
tex-src/testenv.tex,52
|
tex-src/testenv.tex,52
|
||||||
\newcommand{\nm}\nm4,77
|
\newcommand{\nm}\nm4,77
|
||||||
|
@ -4091,17 +4091,29 @@ module ModuleExample1,0
|
|||||||
def module_instance_method46,1051
|
def module_instance_method46,1051
|
||||||
def ModuleExample.module_class_methodmodule_class_method49,1131
|
def ModuleExample.module_class_methodmodule_class_method49,1131
|
||||||
|
|
||||||
ruby-src/test1.ruby,191
|
ruby-src/test1.ruby,635
|
||||||
class A1,0
|
class A1,0
|
||||||
def a(2,8
|
def a(2,8
|
||||||
def b(5,38
|
def b(5,38
|
||||||
module A9,57
|
module A9,57
|
||||||
class B10,66
|
class B10,66
|
||||||
ABC 11,76
|
ABC 11,76
|
||||||
def foo!13,89
|
Def_ 12,88
|
||||||
def self._bar?(_bar?16,111
|
Xyzzy 13,106
|
||||||
def qux=(qux=20,162
|
def foo!15,121
|
||||||
A::Constant Constant26,211
|
def self._bar?(_bar?18,143
|
||||||
|
def qux=(qux=22,194
|
||||||
|
def X25,232
|
||||||
|
attr_reader :foo26,242
|
||||||
|
attr_reader :read1,27,265
|
||||||
|
attr_reader :read1, :read2;27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1,:write1=27,265
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1, :write2:write2=27,265
|
||||||
|
attr_writer :bar:bar=28,328
|
||||||
|
attr_accessor :tee29,351
|
||||||
|
attr_accessor :tee:tee=29,351
|
||||||
|
alias_method :qux,30,376
|
||||||
|
A::Constant Constant35,425
|
||||||
|
|
||||||
tex-src/testenv.tex,52
|
tex-src/testenv.tex,52
|
||||||
\newcommand{\nm}\nm4,77
|
\newcommand{\nm}\nm4,77
|
||||||
|
@ -9,6 +9,8 @@ end
|
|||||||
module A
|
module A
|
||||||
class B
|
class B
|
||||||
ABC = 4
|
ABC = 4
|
||||||
|
Def_ = 'blah'
|
||||||
|
Xyzzy =10
|
||||||
|
|
||||||
def foo!
|
def foo!
|
||||||
end
|
end
|
||||||
@ -20,6 +22,13 @@ module A
|
|||||||
def qux=(tee)
|
def qux=(tee)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
def X
|
||||||
|
attr_reader :foo
|
||||||
|
attr_reader :read1, :read2; attr_writer :write1, :write2
|
||||||
|
attr_writer :bar
|
||||||
|
attr_accessor :tee
|
||||||
|
alias_method :qux, :tee
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user