[Forgot attachments] On 2024-06-14 23:20, Brian Inglis via Cygwin-apps wrote: > Frank was a contributor to universal-ctags ~2015 but seemed mainly for > Windows and Notepad++ plug in development. > > I would like to adopt ctags and update it to successor universal-ctags. > > Description: > Generates an index (tag) file of language objects found in > source files. > The index makes it easy for text editors or other utilities to locate > the indexed items. > Ctags can also generate a cross reference file which lists information > about the various objects found in a set of language files in human > readable form. > Exuberant Ctags improves on ctags because it can find all types of > language tags, including macro definitions, enumerated values (values > inside enum{...}), function and method definitions, enum/struct/union > tags, external function prototypes, typedef names and variable > declarations. > Exuberant Ctags is far less likely to be fooled by code containing > preprocessor conditional constructs than ctags. > Exuberant ctags supports output of Emacs style TAGS files and can be > used to print out a list of selected objects found in source files. > Install ctags if you are going to use your system for C programming. > > License: GPL-2.0-or-later > > For more info see the project home pages: > > https://ctags.io/ > > https://github.com/universal-ctags/ctags > > Packaged by major Linux and BSD distros, MacPorts, and Msys2: > > https://repology.org/project/universal-ctags/versions > > Attached cygport and at: > > https://cygwin.com/cgit/cygwin-packages/ctags/tree/ctags.cygport?h=playground > > package build with a couple of failed tests with known causes: > > https://cygwin.com/cgi-bin2/jobs.cgi?srcpkg=ctags > > log at: > > https://github.com/cygwin/scallywag/actions/runs/9399504588 > > Packaged universal-ctags 6.1 performance was: > > Time tags package > 6s 8MB ctags source tree including multi-language test examples > 12s 22MB newlib-cygwin source tree > > For changes since the previous Cygwin release see below: > > 2024-12-28 6.1 > > New and extended options and their flags > > - ``--regex-`` option > - ``{postrun}`` and ``{intervaltab}`` flags are added. > > Incompatible changes > > - `section` kind is deleted from Asm parser. > > Parser related changes > > New parsers > > The following parsers have been added: > > - BibLaTeX *BibTeX based subparser* > - Forth *optlib* > - Quarto: new parser > + Quarto > > - V: new parser > - Terraform: new parser > + Terraform (HCL) (*.tf): new parser > > - TerraformVariables *optlib* > - PkgConfig *optlib*: new parser > - I18nRubyGem *YAML based subparser* > - XRC *libxml*: new parser > > Changes about parser specific kinds, roles, fields, and extras > > - Asm > + `section` kind is deleted. > > - AutoIt > + Drop `$` from tags for variables names. > > - Automake > + New extra `canonicalizedName` > + New kind `pseudodir` > > - C > + New role `foreigndecl` for `function` kind > + New role `foreigndecl` for `struct` kind > + New field `section` > + New field `alias` > > - C++ > + New field `section` > + New field `alias` > > - CUDA > + New field `section` > + New field `alias` > > - Fortran > + New extra `linkName`. > > - JavaScript > + New role `foreigndecl` for `function` kind > > - Kconfig > + New kind `variable` > > - LdScript > + New role `destination` for `inputSection` kind > + New role `aliased` for `symbol` kind > > - Markdown > + New kind `hashtag` > > - SystemTap > + New role `attached` for `probe` kind > > - SystemVerilog > + New kind `define` > > Readtags > > - Enhancement: add `-P, --with-psuedo-tags` option. > - Enhancement: add `-A, --absolute-input` and `-C, --canonicalize-input` options. > See :ref:`readtags(1) `. for more details. > - Enhancement: add `-d, --debug` option for debugging purpose. > - Bugfix: make `--formatter` options works. > > Merged pull requests > > - Pull in the latest subtrees > - readtags: add --with-psuedo-tags option > - I18nRubyGem: add a new kind, "locale" > - Ruby: improve the way of parsing `Class.new(SuperClass)` > - XML Based Resource System (XRC): new parser > - I18nRubyGem: new parser > - docs(man): write about guest parsers > - Revise the release process > - PkgConfig: new parser > - rpmMacros: process areas surrounded by pairs of curly bracket > - Vera: revise the dataflow of cppGetc -> vStringPut > - nestlevel: Fix user data alignment > - Cxx: extract section information from __attribute__((section("SECTION"))) > - NEWS: merge README.rst and README.md > - builds-sys/test: enhance check-genfile target > - various minor fixes > - GitHub Actions: disable BSD workflows again > - circleci: use fedora39 > - misc/news.bash: generalize the script > - docs(web): manage versions of NEWS > - main: use the interval tree for filling scope field > - V for merging > - YACC: fix a typo in the pattern for skipping C strings > - Revise: the way of accessing the optVm's appData > - dsl: extend #/../ operator to be able to extract a matched group in the pattern > - Docs: minor fixes > - misc/units.py: fix invalid escape sequences in regex patterns > - build-sys: don't use libxml-2 if its CRLF handling is broken > - SQL: extract views in "create view if not exists VIEW ..." > - JavaScript: handle spread syntax > - GitHub Actions: temporarily disable BSD workflows > - README.md: update the URL for the badge of CircleCI Build Status > - Yaml: revise Ypath API > - docs(web): add .readthedocs.yaml file > - Update kotlin parser > - Various warnings fixes > - main,tlib: fix wording > - ReStructuredText: run guest parsers on code blocks > - README.md: adjust wording of the configure command > - Revert "main,tlib: fix wording" > - M4,Autoconf: allow to run a subparser inside quoted area > - main,tlib: fix wording > - Automake: various updates > - Doc: update docs/windows.rst > - AppVeyor: use Visual Studio 2019 image > - BibTeX: accept "." and "/" as parts of a bib entry > - BibLaTeX: new subparser based on BibTeX > - using %zu for printing size_t values > - Forth: new parser > - build(deps): bump actions/checkout from 3 to 4 > - GitHub Actions: Create dependabot.yml > - c-based: fix to handle edge case > - C-based: put markers to signature > - Appveyor: run nmake with defining DEBUG > - main,debug: don't use __func__ directly > - input-validate: add CATEGORIES make variable > - Verilog validator > - update Mac installation instructions > - CircleCI: run validate-input target on Fedora 38 instead of Fedora 30 > - ReStructuredText: skip prefixed whitespaces when parsing markup lines > - main: report the guessed reason if system("sort") is failed > - Verilog,unit: lint-check unit tests > - Verilog: fix for continuous assignment delays > - RpmSpec: added references > - Protobuf: reduce calling cppGetLastCharOrStringContents > - LdScript: reject " and ' as a part of an identifier > - Cxx: ignore alignas > - main: reserve errno in external sorting > - Tmain: add a case for testing the Perl/Perl6 selector > - MatLab: return appropriate tags for set get methods + unit > - build-sys: release note for 6.1 > - Ruby: don't make a scope for "Class.new..." with no block > - Fix typo in asm.c > - Javascript: multiple prototype assignments > - dsl: use strtol instead of es_read_from_string > - JavaScript: additional fix for get & set, when specified in prototype > - Fix compiler warnings > - JavaScript: treat "get" and "set" as function names… > - JavaScript: allow array index after 'this' keyword > - JavaScript: report object fields specified via shortcut syntax > - JavaScript: move unit test from review-needed to parser-javascript > - main: make --version and --help options work even if a broken .ctags is given > - docs(web),cosmetic: update optlib.rst typo removed > - Markdown: set the parser-version 1.1 > - Misc fix > - Markdown: add hashtags functionality > - Markdown: accept sections in the line started from spaces > - Various minor fixes > - LdScript: support SORT keyword > - libreadtags: pull the latest version > - Fix many calls to ctype functions > - vstring: Avoid int -> char truncation warnings > - lregex: optimize substitute() > - Misc fix > - erlang: Fix crash parsing directives longer than 31 characters > - Misc fix > - verilog: treat a text-macro as an identifier > - readtags: fix a bug compiling a formatter wrongly if giving > --formatter long option > - Verilog: support virtual interface variables > - units.py: don't use color if NO_COLOR is specified > - Suppress warning > - GDScript : mark xtag bit for implicitClass xtags > - Fortran: fix wrongly specified xtag type > - docs(web): sphinx minor fixes > - D: parse template instance types > - D: fix parsing parameter with pointer > - Misc fix > - D: set template members parent name > - D: remove `overload`, not a keyword > - D: parse contract expressions > - D: parse const(T), immutable, inout and shared type qualifiers > - readtags: canonicalize the input file name based on CWD ptag > - C-based parsers,style: adjust placements of "{" after if > - D: parse user-defined attributes > - Circleci: add fedora 38 > - main: add missing const modifiers > - autoit: Drop $ from variable names > - C++: accept prototypes starting from :: operator > - main: revise bit fields in tagEntryInfo > - Misc fix > - AutoIt: Slightly optimize parsing #region > - main,refactor: delete 'inCorkQueue' parameter from attachParserField() > - Optscript: add _foreignreftag operator > - Misc fix > - Terraform: new parser > - main: Don't strdup the inputFileName when storing a tag to the corkQueue > - Misc fix > - Quarto: new parser > - Misc fix > - Ruby: skip if __DATA__ is found > - SQL: handle "DATABASE" and "SCHEMA" keywords specially only when they > come after "CREATE" > - docs(web): add ctags-lang-kconfig.7.rst > - SQL: Skip PL/SQL selection directives and add sanity check for inquiry > directive size > - misc/review: add "accept" command to the Tmain inspector > - Fortran: add "linkName" extra > - Cxx: scan the cork queue instead of the symtab to fill nth fields > - main: add quick path for looking up too long strings in the keyword table > - main,cosmetic: fix misspelling > - Powershell: fix string escape issue > - Verilog: all text macro map to new kindDefinition:define > - Fix typo in conditional in C++ parser > - Tcl: don't include '"' char as a part of identifiers > - GitHubActions: fix testing-openbsd.yml automake version broken issue > - Ruby: handle curly bracket > - Kconfig: support the macro language > - Ldscript: improve tagging versions in VERSION commands > - CPreProcessor: don't include the newline after a backslash in string > or char literals > - C,Asm,LdScript: minor fixes > - Markdown: fix the condition to detect code blocks > - C++,ObjectiveC,C,main: fix the broken selector for .h > - Cxx: support typeof and __typeof__ keywords of the gcc extension > - Various preparations > - readtags: unescape input field (a.k.a {tagfile}) only if > TAG_OUTPUT_MODE is u-ctags and TAG_OUTPUT_FILESEP is slash > - main: introduce --_paramdef-=, option > - Perl: skip string literals when collecting heredoc markers > - Org: optimize > - GitHub Actions: fix testing-mac.yml Homebrew upgrade python@3.10 and > python@3.11 failed problem > - Systemtap: add new role "attached" for "probe" kind , and run > CPreProcessor as a guest parser > - C++,C: record consteval, constinit, thread_local, and __thread to > properties: field > - HTML: introduce a specialized tokenizer for script areas > > Issues close or partially closed via above pull requests > > - YAML: extract keys (with scope) for I18n Ruby Gem > - docs(man): write about using multiple parsers for single input file > - Write about kind collisions to ctags-faq(7) > - create annotation tags instead of lightweight tag > - CPreProcessor: Assertion `c >= 0 && c <= 0xff' failed > - Convert NEWS.md to NEWS.rst > - [Question] Defining new regex-based tags with scope defined by > built-in `ctags` kinds > - Warning reported when running make units > - Wording > - BibTeX: "." in label > - Bibtex - include types defined on biblatex package > - AIX compiling from source is failing > - LdScript: using cppGetc() in wrong ways > - Cxx: the way of handling alignas > - main: ctags option processing fails if "Language already defined", > including ctags --help > - Markdown: tagging a chapter unexpectedly > - units.py: support NO_COLOR (https://no-color.org/) > - Request: filename related functions in readtags expressions > - C++: fully qualified return type breaks parsing prototypes > - SQL: Warning: ignoring null tag in ... > /src/test/regress/sql/collate.icu.utf8.sql(line: 412) > - Fortran: Improve handling of case insensitivity > - C/C++: Endless parse large file > - Tcl parser - Ctags can not generating tags for some proc > - Markdown: comments within shell code of markdown files are recognized > as chapters > - C: support typeof gcc extension > - main: use escape sequences when printing pseudo tags as explained in tags(5) > - readtags: improper handling of escape sequences in input field > - Perl: Incorrectly sees << inside a string as start of a heredoc > - C++: Output information on `constexpr` and `consteval` functions > - html: apostrophe in JavaScript comment breaks guest parser > - HTML: HTML comment starter in JavaScript area > - html: apostrophe in JavaScript comment breaks guest parser > - HTML: HTML comment starter in JavaScript area > > > 2022-12-15 6.0 > > New and extended options > > - ``--exclude-exception``, an option complementing ``--exclude`` > - ``--maxdepth`` option > - ``--input-encoding=ENCODING`` and ``--output-encoding=ENCODING`` > - ``--map-`` is newly introduced to control the file name > to language mappings (langmap) with finer granularity than > ``--langmap`` allows. > - Guessing parser from file contents (``-G`` option) > - Including line number to pattern field > - Long names in kinds, fields, and extra options > - Wildcard in options > - Extra tag entries (``--extras``) > - Kinds synchronization > - Enabling/disabling pseudo-tags (``--pseudo-tags`` option) > - ``--put-field-prefix`` options > - "always" and "never" as an argument for ``--tag-relative`` > - ``--tag-relative`` option is extend. > - Defining a parser specific extra > - Defining a CPreProcessor macro from command line > - Options for inspecting ctags internals > - Notice messages and ``--quiet`` > - Skipping utf-8 BOM > - Interactive mode > - PCRE2 regular expression > > Incompatible changes in command line > > - ``-D`` option > > Changes imported from Exuberant Ctags > > Some changes have also been imported from Fedora and Debian. > > Parser related changes > > New parsers > > - Abaqus > - Abc > - Ada > - AnsiblePlaybook *libyaml* > - Asciidoc > - Autoconf > - Automake > - AutoIt > - BibTeX > - Clojure > - CMake *optlib* > - CSS > - Ctags option library *optlib* > - CUDA > - D > - DBusIntrospect *libxml* > - Diff > - Dots *Sh based subparser* > - DTD > - DTS > - Elixir *optlib* > - Elm *peg/packcc* > - Falcon > - FrontMatter *only YAML syntax, running as a guest on R?Markdown* > - FunctionParameters *Perl based subparser* > - Gdbinit script *optlib* > - GemSpec *Ruby based subparser* > - GDScript > - Glade *libxml* > - Go > - GPerf *optlib* > - Haskell > - Haxe > - iPythonCell *optlib*, *Python based subparser* > - Inko *optlib* > - JavaProperties > - JSON > - Julia > - Kconfig *optlib* > - Kotlin *peg/packcc* > - GNU linker script(LdScript) > - LEX *optlib* > - Man page *optlib* > - Markdown > - Maven2 *libxml* > - MesonBuild (Meson) *optlib* > - MesonOptions *optlib+script* > - Moose *Perl based subparser* > - Myrddin > - M4 > - NSIS > - ObjectiveC > - Org *optlib* > - OpenAPI (3.x.x / Swagger 2.0) *Yaml based subparser* > - Passwd *optlib* > - PuppetManifest *optlib* > - Perl6 *Another name for Raku* > - Pod *optlib* > - PowerShell > - PropertyList(plist) *libxml* > - Protobuf > - PythonLoggingConfig > - QemuHX *optlib* > - QtMoc > - R > - R6Class *R based subparser* > - Rake *Ruby based subparser* > - Raku *formerly Perl6* > - RDoc *optlib pcre2* > - RelaxNG *libxml* > - ReStructuredText > - RMarkdown *Markdown based subparser* > - Robot > - RpmMacros *optlib* > - RpmSpec > - RSpec *Ruby based subparser* > - Rust > - S4Class *R based subparser* > - SCSS *optlib* > - SystemdUnit > - SystemTap *optlib* > - SystemVerilog > - SVG *libxml* > - TclOO (see :ref:`The new Tcl parser `) > - Thrift *peg/packcc* > - TTCN > - Txt2tags > - TypeScript > - Varlink *peg/packcc* > - WindRes > - XSLT v1.0 *libxml* > - Yacc > - Yaml *libyaml* > - YumRepo > - Zephir > - Zsh > > Libxml2 is required to use the parser(s) marked with *libxml*. > Libyaml is required to use the parser(s) marked with *libyaml*. > pcre2 is required to use the parser(s) marked with *pcre2*. > > Fully improved parsers > > - C (see :ref:`The new C/C++ parser `) > - C++ (see :ref:`The new C/C++ parser `) > - Python (see :ref:`The new Python parser `) > - HTML (see :ref:`The new HTML parser `) > - Tcl (see :ref:`The new Tcl parser `) > - ITcl (see :ref:`The new Tcl parser `) > - Ant (rewritten with *libxml*) > - PHP > - Verilog/SystemVerilog > > - Automatically expanding CPreProcessor macros defined in the same input > file (HIGHLY EXPERIMENTAL) > > Readtags > > - Printing line numbers with ``-n`` > - Filtering in readtags command > - readtags has ability to find tag entries by name. > - Sorting in readtags command > - Listing pseudo tags with ``-D`` -- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut -- Antoine de Saint-Exupéry