Skip to content

Commit

Permalink
Merge pull request #2666 from techee/ctags_sync5
Browse files Browse the repository at this point in the history
Synchronize with upstream universal-ctags
  • Loading branch information
b4n committed Feb 7, 2021
2 parents d9f8cdb + c5303c9 commit 0160468
Show file tree
Hide file tree
Showing 196 changed files with 31,645 additions and 7,201 deletions.
14 changes: 2 additions & 12 deletions HACKING
Expand Up @@ -654,22 +654,12 @@ http://sf.net/projects/ctags - see the tracker.

(You can also try the Anjuta project's anjuta-tags codebase.)

.. note::
From Geany 1.22 GLib's GRegex engine is used instead of POSIX
regex, unlike CTags. It should be close enough to POSIX to work
OK.
We no longer support regex parsers with the "b" regex flag
option set and Geany will print debug warnings if it's used.
CTags supports it but doesn't currently (2011) include any
parsers that use it. It should be easy to convert to extended
regex syntax anyway.

Method
``````
* Add foo.c to SRCS in Makefile.am.
* Add Foo to parsers.h
* Add Foo to src/tagmanager/tm_parsers.h
* Add TM_PARSER_FOO to src/tagmanager/tm_parser.h. The list here must follow
exactly the order in parsers.h.
exactly the order in src/tagmanager/tm_parsers.h.

In src/tagmanager/tm_parser.c:
Add a map_FOO TMParserMapEntry mapping each kind's letter from foo.c's
Expand Down
17 changes: 14 additions & 3 deletions configure.ac
Expand Up @@ -43,18 +43,29 @@ AC_CHECK_HEADERS([fcntl.h glob.h stdlib.h sys/time.h errno.h limits.h])

# Checks for dependencies needed by ctags
AC_CHECK_HEADERS([fnmatch.h direct.h io.h sys/dir.h])
AC_DEFINE([USE_STDBOOL_H], [1], [whether or not to use <stdbool.h>.])
AC_DEFINE([CTAGS_LIB], [1], [compile ctags as a library.])
AC_DEFINE([HAVE_STDBOOL_H], [1], [whether or not to use <stdbool.h>.])
AC_CHECK_FUNC([regcomp],
[have_regcomp=yes],
[have_regcomp=no
dnl various stuff for ctags/gnu_regex/
AC_CHECK_HEADERS([langinfo.h locale.h libintl.h wctype.h wchar.h])
AC_CHECK_FUNCS([memcpy isblank wcrtomb mbrtowc wcscoll])
AC_FUNC_ALLOCA])
AM_CONDITIONAL([USE_BUNDLED_REGEX], [test "xno" = "x$have_regcomp"])
AC_CHECK_FUNC([fnmatch], [have_fnmatch=yes], [have_fnmatch=no])
AM_CONDITIONAL([USE_BUNDLED_FNMATCH], [test "xno" = "x$have_fnmatch"])

# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_STRUCT_TM

# Checks for library functions.
AC_CHECK_FUNCS([fgetpos fnmatch mkstemp strerror strstr realpath])
AC_CHECK_FUNCS([realpath])

# Function checks for u-ctags
AC_CHECK_FUNCS([strerror strstr asprintf])
AC_CHECK_FUNCS([mkstemp tempnam], [break])
AC_CHECK_FUNCS([strcasecmp stricmp], [break])
AC_CHECK_FUNCS([strncasecmp strnicmp], [break])
AC_CHECK_FUNCS([truncate ftruncate chsize], [break])
Expand Down
202 changes: 139 additions & 63 deletions ctags/Makefile.am
@@ -1,6 +1,7 @@
AM_CPPFLAGS = \
-I$(srcdir)/main \
-I$(srcdir)/parsers \
-DEXTERNAL_PARSER_LIST_FILE=\"$(top_srcdir)/src/tagmanager/tm_parsers.h\" \
-DG_LOG_DOMAIN=\"CTags\"
AM_CFLAGS = \
$(GTK_CFLAGS) \
Expand All @@ -9,88 +10,102 @@ AM_CFLAGS = \
noinst_LTLIBRARIES = libctags.la

parsers = \
parsers/abaqus.c \
parsers/abc.c \
parsers/asciidoc.c \
parsers/asm.c \
parsers/basic.c \
parsers/bibtex.c \
parsers/c.c \
parsers/cobol.c \
parsers/iniconf.c \
parsers/css.c \
parsers/diff.c \
parsers/docbook.c \
parsers/erlang.c \
parsers/flex.c \
parsers/fortran.c \
parsers/go.c \
parsers/haskell.c \
parsers/haxe.c \
parsers/html.c \
parsers/jscript.c \
parsers/json.c \
parsers/lua.c \
parsers/make.c \
parsers/markdown.c \
parsers/matlab.c \
parsers/nsis.c \
parsers/objc.c \
parsers/pascal.c \
parsers/perl.c \
parsers/php.c \
parsers/powershell.c \
parsers/python.c \
parsers/r.c \
parsers/rst.c \
parsers/ruby.c \
parsers/rust.c \
parsers/sh.c \
parsers/sql.c \
parsers/tcl.c \
parsers/tex.c \
parsers/txt2tags.c \
parsers/verilog.c \
parsers/vhdl.c
parsers/geany_abaqus.c \
parsers/geany_abc.c \
parsers/geany_asciidoc.c \
parsers/geany_asm.c \
parsers/geany_basic.c \
parsers/geany_bibtex.c \
parsers/geany_c.c \
parsers/geany_cobol.c \
parsers/geany_iniconf.c \
parsers/geany_css.c \
parsers/geany_diff.c \
parsers/geany_docbook.c \
parsers/geany_erlang.c \
parsers/geany_flex.c \
parsers/geany_fortran.c \
parsers/geany_go.c \
parsers/geany_haskell.c \
parsers/geany_haxe.c \
parsers/geany_html.c \
parsers/geany_jscript.c \
parsers/geany_json.c \
parsers/geany_lcpp.c \
parsers/geany_lcpp.h \
parsers/geany_lua.c \
parsers/geany_make.c \
parsers/geany_markdown.c \
parsers/geany_matlab.c \
parsers/geany_nsis.c \
parsers/geany_objc.c \
parsers/geany_pascal.c \
parsers/geany_perl.c \
parsers/geany_php.c \
parsers/geany_powershell.c \
parsers/geany_python.c \
parsers/geany_r.c \
parsers/geany_rst.c \
parsers/geany_ruby.c \
parsers/geany_rust.c \
parsers/geany_sh.c \
parsers/geany_sql.c \
parsers/geany_tcl.c \
parsers/geany_tex.c \
parsers/geany_txt2tags.c \
parsers/geany_verilog.c \
parsers/geany_vhdl.c

# skip cmd.c and mini-geany.c which define main()
libctags_la_SOURCES = \
main/args.c \
main/args.h \
main/args_p.h \
main/colprint.c \
main/colprint_p.h \
main/ctags.h \
main/ctags-api.c \
main/ctags-api.h \
main/debug.h \
main/debug.c \
main/dependency.h \
main/debug.h \
main/dependency.c \
main/dependency.h \
main/dependency_p.h \
main/e_msoft.h \
main/entry.c \
main/entry.h \
main/entry_p.h \
main/entry_private.c \
main/error.c \
main/error.h \
main/error_p.h \
main/field.c \
main/field.h \
main/field_p.h \
main/flags.c \
main/flags.h \
main/flags_p.h \
main/fmt.c \
main/fmt.h \
main/fmt_p.h \
main/gcc-attr.h \
main/general.h \
main/gvars.h \
main/htable.c \
main/htable.h \
main/inline.h \
main/interactive_p.h \
main/keyword.c \
main/keyword.h \
main/keyword_p.h \
main/kind.c \
main/kind.h \
main/lcpp.c \
main/lcpp.h \
main/kind_p.h \
main/lregex.c \
main/lxcmd.c \
main/lregex.h \
main/lregex_p.h \
main/lxpath.c \
main/lxpath.h \
main/lxpath_p.h \
main/main.c \
main/main.h \
main/main_p.h \
main/mbcs.c \
main/mbcs.h \
main/mbcs_p.h \
main/mio.c \
main/mio.h \
main/nestlevel.c \
Expand All @@ -101,37 +116,98 @@ libctags_la_SOURCES = \
main/objpool.h \
main/options.c \
main/options.h \
main/output-ctags.c \
main/output.h \
main/options_p.h \
main/param.c \
main/param.h \
main/param_p.h \
main/parse.c \
main/parse.h \
main/parsers.h \
main/pcoproc.c \
main/pcoproc.h \
main/parse_p.h \
main/parsers_p.h \
main/portable-dirent_p.h \
main/portable-scandir.c \
main/promise.c \
main/promise.h \
main/promise_p.h \
main/ptag.c \
main/ptag.h \
main/ptag_p.h \
main/ptrarray.c \
main/ptrarray.h \
main/rbtree.c \
main/rbtree.h \
main/read.c \
main/read.h \
main/read_p.h \
main/repoinfo.c \
main/repoinfo.h \
main/routines.c \
main/routines.h \
main/routines_p.h \
main/seccomp.c \
main/selectors.c \
main/selectors.h \
main/sort.c \
main/sort.h \
main/sort_p.h \
main/stats.c \
main/stats_p.h \
main/strlist.c \
main/strlist.h \
main/subparser.h \
main/subparser_p.h \
main/tokeninfo.c \
main/tokeninfo.h \
main/trace.c \
main/trace.h \
main/trashbox.c \
main/trashbox.h \
main/trashbox_p.h \
main/types.h \
main/unwindi.c \
main/unwindi.h \
main/vstring.c \
main/vstring.h \
main/xtag.h \
main/writer-ctags.c \
main/writer-etags.c \
main/writer-json.c \
main/writer-xref.c \
main/writer.c \
main/writer_p.h \
main/xtag.c \
main/xtag.h \
main/xtag_p.h \
$(parsers)

libctags_la_LIBADD =

# build bundled GNU regex if needed
if USE_BUNDLED_REGEX
noinst_LTLIBRARIES += libgnu_regex.la
libgnu_regex_la_SOURCES = \
gnu_regex/regex.c \
gnu_regex/regex.h
# regex.c includes other sources we have to distribute
EXTRA_libgnu_regex_la_SOURCES = \
gnu_regex/regcomp.c \
gnu_regex/regex.c \
gnu_regex/regex.h \
gnu_regex/regex_internal.c \
gnu_regex/regex_internal.h \
gnu_regex/regexec.c
libgnu_regex_la_CPPFLAGS = -D__USE_GNU
EXTRA_DIST = \
gnu_regex/README.txt

libctags_la_LIBADD += libgnu_regex.la
AM_CPPFLAGS += -I$(srcdir)/gnu_regex
endif

# build bundled fnmatch if needed
if USE_BUNDLED_FNMATCH
noinst_LTLIBRARIES += libfnmatch.la
libfnmatch_la_SOURCES = \
fnmatch/fnmatch.c \
fnmatch/fnmatch.h

libctags_la_LIBADD += libfnmatch.la
AM_CPPFLAGS += -I$(srcdir)/fnmatch
endif
24 changes: 24 additions & 0 deletions ctags/ctags_changes.patch
@@ -0,0 +1,24 @@
A patch to ctags containing our changes to ctags
(changing anon tag names from anon<hash> to anon<number>).
diff --git a/ctags/main/parse.c b/ctags/main/parse.c
index 8fbb7148..c12f8662 100644
--- ctags/main/parse.c
+++ ctags/main/parse.c
@@ -4111,12 +4111,18 @@ extern void anonGenerate (vString *buffer, const char *prefix, int kind)
parser -> anonymousIdentiferId ++;

char szNum[32];
+#if 0
char buf [9];

vStringCopyS(buffer, prefix);

anonHashString (getInputFileName(), buf);
sprintf(szNum,"%s%02x%02x",buf,parser -> anonymousIdentiferId, kind);
+#else
+ /* we want to see numbers for anon functions in the tree view instead of the hash */
+ vStringCopyS(buffer, prefix);
+ sprintf(szNum,"%u", parser -> anonymousIdentiferId);
+#endif
vStringCatS(buffer,szNum);
}

0 comments on commit 0160468

Please sign in to comment.