From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by sourceware.org (Postfix) with ESMTPS id 8FB94387084B for ; Sat, 15 Jun 2024 05:21:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8FB94387084B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=SystematicSW.ab.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=SystematicSW.ab.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8FB94387084B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=216.40.44.14 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718428904; cv=none; b=aD568IQeGyQsizghmvIpEo5Iea14w3bDr2fiN9ioxuuQb/UnYK6QkR8sIbyWyBknbz+QlSL9yJ1NVYAbjonRI10I6ixW6hkaPVAz24sHOSpNQub8rDc/Qjs1XYj3pwNSZa/ysrSIb5+ucPBtofweNLSWj3nFyC3CGo+eYXXBhSI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718428904; c=relaxed/simple; bh=xcpxmLHd08ZM215RJaMQi5lG8ZCQTM/aA/zTT4ufeVg=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=RuNBEEF8zicR1UHalo6JcpkzML1qEuAgXm6kaq8JlZyP5wITAoythFh2jhifTyvMKfjlj0/BVFnGnIOLfUMT2poU91ZLUaPxRAu3yOnFO0WKLx6xBLw37i9PbrzwU4fzvapbt1BrP++Yfo+C1oObw2NQuLGsjPnV8Fd0GivJKmg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from omf17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E95F11A0A86; Sat, 15 Jun 2024 05:21:40 +0000 (UTC) Received: from [HIDDEN] (Authenticated sender: Brian.Inglis@SystematicSW.ab.ca) by omf17.hostedemail.com (Postfix) with ESMTPA id 7387519; Sat, 15 Jun 2024 05:21:39 +0000 (UTC) From: Brian Inglis To: cygwin-apps@cygwin.com Subject: [ITA] ctags 6.1.0 - programming language source indexing and cross-reference tool Date: Fri, 14 Jun 2024 23:20:40 -0600 Message-ID: <20240615052136.40007-1-Brian.Inglis@SystematicSW.ab.ca> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Reply-To: cygwin-apps@cygwin.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 7387519 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Rspamd-Server: rspamout02 X-Stat-Signature: kypfptw5m8s7ffh9djbxbp7raw9ttwao X-Session-Marker: 427269616E2E496E676C69734053797374656D6174696353572E61622E6361 X-Session-ID: U2FsdGVkX18osv/bj3QLjrNvzZqlcXf6eZfPIAf9Hzo= X-HE-Tag: 1718428899-652957 X-HE-Meta: U2FsdGVkX19hUSgu6LnclW6Dh6V55i4hYJROjr7K8mA3rBGh7YjYFKDndOxIOYpVbRoD3kXfOHAZR+BUeFxGyHAGr06YzHlh7uU5xjKIyWoGBTDfKgiDOM+MqKsf8b/WZRWAOmlM8vrCs1vPz4OhVHQqzjXaTwNpXGywYHV7m1UitAXXuU4bQZWRP/Ua5WXkeljlZTxIenRSjREbk9feiNb3mPB3Vx+TV2OotLlHYkiRYfLI5q85VWG4p2auBob/R4Wt2vD5jk3LLpcxM/wbrwr917Cl9BrIPac0uRByDK7hfUnTtaS/t6MmX3makbSgNWg1iZoSfxfITzkbB31FPKG/zLuNgLf2Iij5SFCKE1To//oRfO6aLL3No4d4vs6A+mcBsZE7vYPp/VU8iANireGckTE1WwDkRAnVvmGHqAqWLV1jYlBc1CdpcXzrexcRwGt4McqJClUPBaq8foIhSetqbVwbGF8nb7+z0RDLjQigJna9ZFX1X1UMtli2T5xSQn2gaqU+7NWoSizUV2FU9PhCWRY67YTtfavUxsD1lLx5h5D9eAglusJRFzLgj6B+uFSU6KmqPBE3aEXqRo5NhSmUKxZSjwWBihxYJSYXJj09PzGCrzeRXbDiKKKjxnFV X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: 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`` Attached: ctags.cygport