Generates an index (tags) 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.
Universal Ctags continues the development of Exuberant Ctags, which
improves on Ctags, with support of: Emacs style TAGS files; prints a list
of objects found in source files; finds all types of language tags:
struct, union, enum tags; enumerated values; typedef names; external
function prototypes; function, method, macro definitions; as well as
variable declarations; and fewer issues with preprocessor directives.
Install ctags if you are going to use your system for C programming and
many other languages.

For more information see the project home page:

        https://ctags.io/

or the repo README:

        https://github.com/universal-ctags/ctags/README

The following package has been upgraded in the Cygwin distribution:

- ctags         6.2

For the many changes since the previous Cygwin release see below,
or after installation read:

        /usr/share/doc/ctags/NEWS.rst


2025-05-31      6.2

New and extended options and their flags

``--list-output-formats`` option
See `option_listing` in `ctags(1)`.

``nulltag``/``z`` extra
Universal Ctags now supports tags (*null tags*) having empty strings as
their names.
See `extras` in `ctags(1)`.

   - ``libreadtags`` and ``readtags`` do not support the null tags yet.
   - Only ``json`` and ``xref`` output formats support the null tags.

Incompatible changes

- [readtags] make -Q,--filter not work on ptags when
  -P,--with-pseudo-tags is specified together

  With this version, ``-Q,--filter`` option doesn't affect the pseudo
  tags listed
  with ``-P,--with-pseudo-tags`` option.  ``-Q,--filter`` option specified wth
  ``-P,--with-pseudo-tags`` option affect only regular tags.

  To extract speicifed pseudo tags, use ``-Q,--filter`` option with
  ``-D,--list-pseudo`` action.

Parser related changes

- Integrate `pegof <https://github.com/dolik-rce/pegof>`_ to our build process.

New parsers

The following parsers have been added:

- SELinuxInterface *M4 based subparser*
- SELinuxTypeEnforcement *optlib*
- PythonEntryPoints *subparser*
- Scdoc *optlib*
- JNI *subparser*
- TypeSpec *parser*

Changes about parser specific kinds, roles, fields, and extras

- C++

  - New kinds `module` and `partition`
  - New roles `imported` and `exported` for `header` kind

- Clojure

  - New kind `unknown`
  - New field `definer`

- EmacsLisp

  - New field `definer`

- LEX

  - New role `grouping` for `cond` kind

- Lisp

  - New kinds `class`, `generic`, `method`, `parameter`, `struct`, and `type`

- Make

  - New extra `CppDef`

- Meson

  - New kinds `cfgdata` and `cfgvar`

- PowerShell

  - New kind `enumlabel`

- Python

  - New role `entryPoint` for `module` and `function` kinds

        PythonEntryPoints parser emits tag entries having this role.

- Scheme

  - New kind `unknown`
  - New field `definer`

- SCSS

  - New kind `module`
  - New role `used` for the `module` kind
  - New kind `namespace`
  - New field `module`

- SQL

  - New kind `local`

- Vim

  - New kind `heredoc`
  - New kind `class`

Readtags

- make formatter work with -D,--list-pseudo-tags option

  An example extracting the value of ``!_TAG_PROC_CWD``:

         $ ./readtags -t podman.tags -Q '(#/.*CWD.*/ $name)' -F '(list $input 
#t)' -D
         /home/yamato/var/ctags-github/

- make -Q,--filter not work on ptags when -P,--with-pseudo-tags is
  specified together

Merged pull requests

- SystemVerilog,Verilog: accept empty names for any kind of language objects
- Units(JSON): add a test case for extracting null tags
- Misc fix
- build(deps): bump cross-platform-actions/action from 0.27.0 to 0.28.0
- Kconfig: don't leave without any items on the stack
- TypeSpec: new parser
- JNI: new subparser
- operator: add a getter for the language field
- Tests for more Clojure tags
- optlib: allow users to set fields and check extras defined in a
  foreign language
- TOML,Cargo: disable the parsers temporarily
- Scdoc: new parser
- Some minor fixes
- circleci: switch to use Fedoa42
- GitHub Actions: set timeout to tests on Qemu
- main/read:  revise the offset calculation on nested input stream
- Fix wrong parser versions
- Miscellaneous minor fixes
- SQL: fill signature and typeref fields for functions and procedures
- V: don't use multi-bytes chars in debug print
- CPreProcessor: (bugfix) don't return negative value other than EOF
  from unget-buffer
- RpmSpec: don't make a FQ tag for sub-packages if -n option is
  specified on %package line
- main: (bugfix) don't reset lineFposMap even in the 2nd pass when the
  parser runs as a guest
- main: fix typos in a parameter name
- SQL: extract trigger of Postgresql dialect
- JavaScript: (bugfix) consider << operator when detecting JSX area
- CPreProcessor,LdScript,Asm: (bugfix) don't expand macros defined with -I
- main/read: refactor step1
- C++: skip broken C++11 attributes
- PythonEntryPoints: new subparser based on Iniconf parser
- lregex: avoid crashes when regex pattern compilation fails
- Moose: stop parsing when the base parser stops parsing
- units,tmain: add a variable to control the number of threads running
  test cases
- Ada: print debug messages only if --_trace=Ada is given
- main: various minor improvements, especially about mio
- readtags: revise feature listing ptags (including an incompatible change)
- GitHub Actions: install pkg-config to the msys2 environment
- Ada: accept 'end;' as the end of function
- Circleci:  (fedora41) update libsqlite.so explicitly
- buildsys: (msvc) avoid "multiply defined symbols" errors
- JavaScript,HTML: skip JSX elements
- CPreProcessor: adjust line numbers when reading characters from
  unget-chars-buffer
- JavaScript: don't extract local constants and variables defined in
  arrow functions
- Asm: support Cpp macro arguments spanning multiple lines
- JavaScript: Fix held tokens breaking implicit semicolon insertion
- Ruby  minor improvements
- Units(Meson): add a case testing extracting config variables
- Meson: extract config variables
- CUDA: support function parameters with default values
- build(deps): bump cross-platform-actions/action from 0.25.0 to 0.27.0
- CPreProcessor: support variadic macros with GNU cpp extension syntax
- SELinuxTypeEnforcement: fill typeref: field for alias kind objects
- optlib2c: make the error message more specific when a wrong datatype
  is given
- main:  provide the way to specify data taype in --_fielddef option
- main: support integer field in the writers
- Kotlin: fix annotation parsing
- main: FIX the way to print boolean typed parser specific fields
  correctly in {xref,ctags} output
- Lisp: introduce version 0.0 of lisp meta parser
- Parsers for files defining SELinux policy
- various minor fixes
- optscropt: fix _scopedepth operator
- SCSS: support modules specified with single-quote chars like @use 'foo'
- SCSS: extract modules and namespaces from @use "..."
- Tcl: extract null tags
- JavaScript: destructuring binding
- JSON: emit full qualified tags
- main: add nulltag/z, a new extra
- ObjectiveC: (bugfix) extract the line numbers for methods correctly
- (System)Verilog: escaped identifiers (LRM 5.6.1)
- PowerShell: recognize herestrings
- Introducing Universal Ctags Guru on Gurubase.io
- delete an accidentally commited file
- Revise the files for CI (ubi8, fedora, stream10)
- units.py: Fix format-NlKkFnP on Windows
- verilog: support ifdef in enum
- verilog: do not add scope to define
- Lisp: add def{struct,type,method,class,generic,parameter} kinds and
  definer field
- Verilog: Add final_specifier support for class parse
- Verilog: Fix function parse when return type contains `::`
- Verilog: Skip the escaped characters in string
- verilog.c: keyword "unsigned1" should be "unsigned", without the 1
- units.py: pass `count' as a keyword argument
- iniconf: some more adjustments for parsing TOML
- treewide: delete more unwated files
- Remove unwanted files
- readtags: add tr operator
- Meson: handle backshash chars in strings and == operator correctly
- Meson: extract benchmark langage objects correctly
- readtags:  refactoring for support multiple tag files
- Rust: don't put EOF to a vString
- GPerf: skip comment lines started from '#'
- main: error with more friendly and understandable message when "tags"
  directory exists
- Suppress warnings
- JavaScript: (bug fix) don't append EOF token to a repr
- Make: don't track EOF as a part of value
- Update libreadtags
- SystemTap: fill the typeref field for functions
-  build-sys: eliminate READTAGS_DSL condition
- readtags: refactor for searching multiple tag files
- GemSpec: parse %q string
- Tmain: run Tmain/readtags-canonicalize-input-names.d only if DSL is
  enabled in readtags
- readtags:  minor fixes
- Fix build for Haiku
- dsl: fix the function for hashing integer object
- Optscript:  fix bugs in foreigntag proc
- Main:  use extras and fields in the foreign language specified in
  {_language=...} flag
- verilog: skip compiler directives in enum definition
- Kconfig: fill names of anonymous choices with the values of their
  prompts
- Cargo: new subparser based on TOML parser
- iniconf: Allow dot and dash for ini keys
- Kconfig: avoid stack underflow when filling typeref filed
- Kconfig: fill typeref: field
- main: make the implementation of --list-languages=_CATEGORY efficient
- main: extend --list-languages option to list only parsers using packcc
- TOML: new PEG based parser
- Fix quotes & option syntax in manpage
- build-sys,mvc: generate rules for running packcc from source.mak
- Fortran: accept $ as parts of names
- Make: add CppDef extra for extracting FOO in -DFOO as a macro of
  CPreProcessor
- Make:  refactor and add comments
- build-sys: utilize pegof
- Make: minor changes
- Circleci:  update images
- Make: parse inside define/endef
- Haskell: skip multi-line type signature
- readtags: mark <or> as a special form
- main: fix a typo in an error message
- main: report errors when calling ftell(3) fails
- Cxx:  fix file field for exported objects
- jscript: Fix representation of held tokens
- php: Skip class and trait use not to confuse typerefs
- C++: record "export" in the property field if the keyword is put at a
  "using" declaration
- powershell: Parse enum labels
- matlab: A couple fixes for corner cases
- Pascal: support for inline or one line comments added
- JavaScript: Improve support for contextual keywords as identifiers
- vera: Explicit fallthrough
- docs,man: Fix typos
- dsl: allow to specify a default value in $ and & operators
- CI: use codecov/codecov-action
- Update  packcc
- C++: extract operators specified in using declarations
- main: don't allocate a buffer for tagEntryInfoX::sourceFileName if possible
- build-sys: make lto optional
- build-sys: fix checking Windows platform with _WIN32 macro
- configure.ac: fix result message grammar
- Automake: add "makefile-automake", the name of an emacs mode, as an alias
- optscript: add _anongen operator
- C++: recognize definitions of variable templates
- Asm: relax the condition for accepting characters within a section name
- optscript: make the help messages for @[0-9] and [0-9]@ operators
  easier to understand
- FrontMatter: fix the crash for an empty input
- add support for loongarch
- main: reset file-position map when input stream is reset
- Vim: extract classes
- main: fix typos in a variable name
- JavaScript: skip static blocks
- C++ : support C++20 modules
- Terraform: fix two known bugs
- C,C++: fix properties field for object defined or declared with
  structure definitions
- LEX: make reference tags for the conditions used for making groups
- Docs(web): wrtite about foreign tags
- main: count the added tags after emitting parser-specific ptags
- Make: fix wrong end fields for targets having macros on the same line
- Vim:  support vim9script
- docs(man),man-test: require "yaml" feature in the man-test of I18nRubyGem
- Vim: skip heredoc regions
- Fix typo
- build-sys: enable LTO
- build(deps): bump actions/cache from 3 to 4
- I18nRubyGem: trim leading colon inside of tag name
- Rake: extract m in "task (:m)" as a task
- Markdown,FrontMatter,YamlFrontMatter: recognize "..." as the end of
  YAML documents
- Ruby:  optimize the parser by reducing the numbers of calling strlen
- Python: extract n in "n = SimpleNamespace(" as namespace/I kind
- Ruby: extract m in "define_method(:m" as a method
- Sh,Zsh: handle options for alias and function built-in commands
- docs(web): add the news entry for 6.1.0
- GitHub Actions: add CODECOV_TOKEN to env
- Ruby: extract m in "m = Module.new()" as a tag with module kind
- Post-release administrivia

Issues close or partially closed via above pull requests

- TOML: reporting wrong patterns when the parser runs as a sub parser
- Just another crash
- Java: crash with a multi-byte character
- JavaScript: Segfault on jQuery v1.11.0
- ctags  crashes  with memory access violation  while tagging Linux source code
- C++: bug in code detecting attributes
- Perl: Segfault on Throwable::Error
- CPreprocessor,C: macro expands multiple lines
- JavaScript:  extract local vars unexpectedly
- Issues in CUDA parsing
- JavaScript: destructural binding
- JSON full attributes path
- Support Null Tag
- Objective-C method linenumber is the first block (not the function
  name like in C)
- Powershell: (bug) herestr breaks ctags functions list.
-  `parsers/args.ctags` was also committed accidentally.
- Unwanted files accidentally committed
- meson: use benchmark() instead of bench_mark()
- "ctags: Failure on attempt to read file : Is a directory"
- Fortran: How to include "$" in variable and function names
- Haskell: reference to too generic part of the type signature emitted
  when tagging Haskell source with multi-line type signature
- C++ modules: "export" declaration wrongly marked as file-local (static)
- tagging pascal language does not recognize one-line-comments '//'
- C++: null tag for the code specfying operator in unsing statement
- Support XDG specification on Windows
- C++:  crash when a variable template is given
- C++: variable template
- JavaScript static initialization blocks break the tagging of the rest
  of the class
- C++: disappearing pseudo tags
- ctags-lang-i18nrubygem test fails without yaml support
- Enabling LTO (Was: p5.9.20210221.0: build fails)
- I18nRubyGem leading colon inside of tag name
- Python: extract SimpleNamespace

-- 
              *** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***

The easiest way to unsubscribe is to visit 
<https://cygwin.com/mailman/options/cygwin-announce>, and click 'Unsubscribe'.

If you need more information on unsubscribing, start reading here: 
<https://sourceware.org/lists.html#unsubscribe>.

Reply via email to