This page lists only the most significant changes as remembered. Use
git-log to review changes not enumerated here, especially in language
parsers.
New and extended options and their flags
--list-output-formats
option
See :ref:option_listing
in :ref:ctags(1) <ctags(1)>
.
nulltag
/z
extra
Universal Ctags now supports tags (null tags) having empty strings as their names.
See :ref:extras
in :ref:ctags(1) <ctags(1)>
.
NOTE:
libreadtags
andreadtags
do not support the null tags yet.- Only
json
andxref
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
#4026
Integrate pegof <https://github.com/dolik-rce/pegof>
_ to our build process.
New parsers
The following parsers have been added:
-
SELinuxIntefae M4 based subparser
-
SELinuxTypeEnforcement optlib
-
PythonEntryPoints subparser
-
Scdoc optlib
-
JNI subparser
-
TypeSpec parser
- TypeSpec by Kaisheng Xu · Pull Request #4243
NOTE: We added a TOML as a new parser in this version. However,
after adding it, we learned its implementation didn't work
entirely. So we deleted the TOML parser, and Cargo subparser
runs on the TOML parser from this "New parsers" list.
See TOML: infinite loop <https://github.com/universal-ctags/ctags/issues/4096>
__
about how it doesn't work.
Changes about parser specific kinds, roles, fields, and extras
-
C++
- New kinds
module
andpartition
- New roles
imported
andexported
forheader
kind
- New kinds
-
Clojure
- New kind
unknown
- New field
definer
- New kind
-
EmacsLisp
- New field
definer
- New field
-
LEX
- New role
grouping
forcond
kind
- New role
-
Lisp
- New kinds
class
,generic
,method
,parameter
,struct
, andtype
- New kinds
-
Make
- New extra
CppDef
- New extra
-
Meson
- New kinds
cfgdata
andcfgvar
- New kinds
-
PowerShell
- New kind
enumlabel
- New kind
-
Python
-
New role
entryPoint
formodule
andfunction
kindsPythonEntryPoints parser emits tag entries having this role.
-
-
Scheme
- New kind
unknown
- New field
definer
- New kind
-
SCSS
- New kind
module
- New role
used
for themodule
kind - New kind
namespace
- New field
module
- New kind
-
SQL
- New kind
local
- New kind
-
Vim
- New kind
heredoc
- New kind
class
- New kind
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
What's Changed
- Post-release administrivia by @masatake in #3904
- Ruby: extract m in "m = Module.new()" as a tag with module kind by @masatake in #3907
- GitHub Actions: add CODECOV_TOKEN to env by @masatake in #3911
- docs(web): add the news entry for 6.1.0 by @masatake in #3910
- Sh,Zsh: handle options for alias and function built-in commands by @masatake in #3909
- Ruby: extract m in "define_method(:m" as a method by @masatake in #3908
- add macos-13 runner by @leleliu008 in #3914
- Python: extract n in "n = SimpleNamespace(" as namespace/I kind by @masatake in #3917
- Ruby: optimize the parser by reducing the numbers of calling strlen by @masatake in #3916
- Markdown,FrontMatter,YamlFrontMatter: recognize "..." as the end of YAML documents by @masatake in #3918
- Rake: extract m in "task (:m)" as a task by @masatake in #3919
- I18nRubyGem: trim leading colon inside of tag name by @masatake in #3921
- build(deps): bump actions/cache from 3 to 4 by @dependabot in #3923
- build-sys: enable LTO by @masatake in #3922
- Fix typo by @pepsiman in #3926
- Vim: skip heredoc regions by @masatake in #3925
- docs(man),man-test: require "yaml" feature in the man-test of I18nRubyGem by @masatake in #3929
- Vim: support vim9script by @masatake in #3930
- Make: fix wrong end fields for targets having macros on the same line by @masatake in #3931
- docs(web): suppress a warning reported by sphinx by @masatake in #3933
- main: count the added tags after emitting parser-specific ptags by @masatake in #3936
- Docs(web): wrtite about foreign tags by @masatake in #3934
- LEX: make reference tags for the conditions used for making groups by @masatake in #3939
- C,C++: fix properties field for object defined or declared with structure definitions by @masatake in #3944
- Terraform: fix two known bugs by @ponchoalv in #3945
- C++ : support C++20 modules by @masatake in #3941
- GitHub Actions: add macos-14 runner by @leleliu008 in #3942
- build-sys: Do NOT check user specified tmpdir via --enable-tmpdir= if exists when cross compiling by @leleliu008 in #3950
- JavaScript: skip static blocks by @masatake in #3949
- GitHub Actions: fix macos-13 failure due to [email protected] by @leleliu008 in #3955
- main: fix typos in a variable name by @masatake in #3957
- Vim: extract classes by @masatake in #3951
- main: reset file-position map when input stream is reset by @masatake in #3953
- build-sys: fix enable_debugging command not found by @leleliu008 in #3956
- GitHub Actions: add alpine-3.19 and remove alpine-3.15 by @leleliu008 in #3959
- add support for loongarch by @wuruilong01 in #3958
- FrontMatter: fix the crash for an empty input by @masatake in #3961
- optscript: make the help messages for @[0-9] and [0-9]@ operators easier to understand by @masatake in #3965
- Asm: relax the condition for accepting characters within a section name by @masatake in #3964
- C++: recognize definitions of variable templates by @masatake in #3966
- honor XDG_CONFIG_HOME environment variable on Windows as well by @leleliu008 in #3972
- optscript: add _anongen operator by @masatake in #3973
- Automake: add "makefile-automake", the name of an emacs mode, as an alias by @masatake in #3975
- configure.ac: fix result message grammar by @glibg10b in #3976
- build-sys: fix checking Windows platform with _WIN32 macro by @Biswa96 in #3977
- build-sys: make lto optional by @iLeeWell in #3978
- main: don't allocate a buffer for tagEntryInfoX::sourceFileName if possible by @masatake in #3980
- C++: extract operators specified in using declarations by @masatake in #3982
- Update packcc by @masatake in #3983
- CI: use codecov/codecov-action by @k-takata in #3986
- dsl: allow to specify a default value in $ and & operators by @masatake in #3984
- docs,man: Fix typos by @k-takata in #3987
- vera: Explicit fallthrough by @b4n in #3992
- JavaScript: Improve support for contextual keywords as identifiers by @b4n in #3993
- JavaScript: fix a typo in a comment by @masatake in #3996
- Pascal: support for inline or one line comments added by @masatake in #3997
- matlab: A couple fixes for corner cases by @b4n in #3999
- powershell: Parse enum labels by @b4n in #3998
- C++: record "export" in the property field if the keyword is put at a "using" declaration by @masatake in #4006
- php: Skip class and trait use not to confuse typerefs by @b4n in #4009
- jscript: Fix representation of held tokens by @b4n in #4008
- Cxx: fix file field for exported objects by @masatake in #4010
- main: report errors when calling ftell(3) fails by @masatake in #4012
- main: fix a typo in an error message by @masatake in #4014
- readtags: mark as a special form by @masatake in #4022
- Haskell: skip multi-line type signature by @masatake in #4019
- GitHub Actions: remove macos-11 due to it is deprecated and unable to use any more by @leleliu008 in #4027
- Make: parse inside define/endef by @masatake in #4025
- Circleci: update images by @masatake in #4029
- Make: minor changes by @masatake in #4028
- build-sys: utilize pegof by @masatake in #4026
- Make: refactor and add comments by @masatake in #4031
- Make: add CppDef extra for extracting FOO in -DFOO as a macro of CPreProcessor by @masatake in #4024
- Fortran: accept $ as parts of names by @masatake in #4034
- build-sys,mvc: generate rules for running packcc from source.mak by @masatake in #4036
- GitHub Actions: use QEMU instead of Vagrant+Virtualbox to run FreeBSD/OpenBSD/NetBSD by @leleliu008 in #4037
- GitHub Actions: refactor cross-compile-android-ndk-on-ubuntu.yml by @leleliu008 in #4038
- GitHub Actions: refactor cross-compile-android-ndk-on-mac.yml by @leleliu008 in #4039
- GitHub Actions: refactor cross-compile-for-freebsd-on-ubuntu.yml by @leleliu008 in #4040
- GitHub Actions: refactor cross-compile-for-openbsd-on-ubuntu.yml by @leleliu008 in #4041
- GitHub Actions: refactor cross-compile-for--netbsd-on-ubuntu.yml by @leleliu008 in #4042
- GitHub Actions: rename workflow files by @leleliu008 in #4043
- Fix quotes & option syntax in manpage by @JaSpa in #4045
- GitHub Actions: refactor building-with-pegof.yml by @leleliu008 in #4044
- TOML: new PEG based parser by @masatake in #3509
- main: extend --list-languages option to list only parsers using packcc by @masatake in #4046
- main: make the implementation of --list-languages=_CATEGORY efficient by @masatake in #4047
- Kconfig: fill typeref: field by @masatake in #4050
- Kconfig: avoid stack underflow when filling typeref filed by @masatake in #4051
- iniconf: Allow dot and dash for ini keys by @techee in #4052
- Cargo: new subparser based on TOML parser by @masatake in #4048
- Kconfig: fill names of anonymous choices with the values of their prompts by @masatake in #4057
- verilog: skip compiler directives in enum definition (#4056) by @hirooih in #4058
- Main: use extras and fields in the foreign language specified in {_language=...} flag by @masatake in #4059
- GitHub Actions: refactor testing-on-netbsd.yml by @leleliu008 in #4060
- GitHub Actions: refactor testing-on-openbsd.yml by @leleliu008 in #4061
- GitHub Actions: refactor testing-on-freebsd.yml by @leleliu008 in #4062
- GitHub Actions: fix syntax error of building-with-pegof.yml by @leleliu008 in #4063
- Optscript: fix bugs in foreigntag proc by @masatake in #4064
- dsl: fix the function for hashing integer object by @masatake in #4067
- Fix build for Haiku by @Begasus in #4069
- readtags: minor fixes by @masatake in #4071
- Tmain: run Tmain/readtags-canonicalize-input-names.d only if DSL is enabled in readtags by @masatake in #4072
- GemSpec: parse %q string by @masatake in #4077
- readtags: refactor for searching multiple tag files by @masatake in #4074
- build-sys: eliminate READTAGS_DSL condition by @masatake in #4078
- SystemTap: fill the typeref field for functions by @masatake in #4084
- Update libreadtags by @masatake in #4080
- GitHub Actions: drop the MSYS2/CLANG32 environment by @leleliu008 in #4083
- Make: don't track EOF as a part of value by @masatake in #4088
- JavaScript: (bug fix) don't append EOF token to a repr by @masatake in #4087
- Suppress warnings by @masatake in #4086
- main: error with more friendly and understandable message when "tags" directory exists by @masatake in #4085
- GitHub Actions: ftp.gnu.org is down, use a mirror instead. by @leleliu008 in #4091
- GPerf: skip comment lines started from '#' by @masatake in #4092
- Rust: don't put EOF to a vString by @masatake in #4093
- readtags: refactoring for support multiple tag files by @masatake in #4079
- GitHub Actions: fix netbsd pkgin error. by @leleliu008 in #4102
- GitHub Actions: change s390x/ubuntu:latest to s390x/ubuntu:23.04 due to s390x/ubuntu:latest is not available recently by @leleliu008 in #4103
- Meson: extract benchmark langage objects correctly by @masatake in #4101
- GitHub Actions: adding macos-15 runner image by @leleliu008 in #4105
- Meson: handle backshash chars in strings and == operator correctly by @masatake in #4104
- readtags: add tr operator by @masatake in #4106
- Remove unwanted files by @k-takata in #4107
- treewide: delete more unwated files by @masatake in #4108
- iniconf: some more adjustments for parsing TOML by @techee in #4099
- units.py: pass `count' as a keyword argument by @masatake in #4112
- verilog.c: keyword "unsigned1" should be "unsigned", without the 1 by @cousteaulecommandant in #4110
- Verilog: Skip the escaped characters in string by @roccomao in #4115
- Verilog: Fix function parse when return type contains
::
by @roccomao in #4111 - Verilog: Add final_specifier support for class parse by @roccomao in #4116
- adding alpine-3.20 target by @leleliu008 in #4117
- Fix a filename typo by @leleliu008 in #4122
- Lisp: add def{struct,type,method,class,generic,parameter} kinds and definer field by @masatake in #4121
- GitHub Actions: do not install pkg-config via brew, it has already been installed by @leleliu008 in #4125
- verilog: do not add scope to define (#4127) by @hirooih in #4139
- verilog: support ifdef in enum by @hirooih in #4140
- units.py: Fix format-NlKkFnP on Windows by @k-takata in #4137
- GitHub Actions: run tests on alpine/aarch64,ppc64le,riscv64,s390x via chroot+qemu by @leleliu008 in #4136
- Revise the files for CI (ubi8, fedora, stream10) by @masatake in #4131
- build(deps): bump codecov/codecov-action from 4 to 5 by @dependabot in #4118
- GitHub Actions: change zlib download url due to the old one is unstable. by @leleliu008 in #4144
- delete an accidentally commited file by @masatake in #4143
- Introducing Universal Ctags Guru on Gurubase.io by @kursataktas in #4124
- GitHub Actions: removing macos-12 runner due to it is fully unsupported as of 2024-12.03 by @leleliu008 in #4146
- GitHub Actions: adding macos-15 runner by @leleliu008 in #4147
- GitHub Actions: adding ubuntu-24.04 runner by @leleliu008 in #4148
- GitHub Actions: testing-on-alpine.yml: removing unneeded packages by @leleliu008 in #4149
- PowerShell: recognize herestrings by @masatake in #4145
- (System)Verilog: escaped identifiers (LRM 5.6.1) by @cousteaulecommandant in #4129
- GitHub Actions: change NetBSD-9.2 sysroot download url due to the old one can not access to by @leleliu008 in #4156
- GitHub Actions: adding FreeBSD-14.2 and FreeBSD-13.4 runner by @leleliu008 in #4158
- GitHub Actions: adding Alpine-3.21 runner by @leleliu008 in #4159
- adding OpenBSD-7.6 runner by @leleliu008 in #4160
- ObjectiveC: (bugfix) extract the line numbers for methods correctly by @masatake in #4162
- main: add nulltag/z, a new extra by @masatake in #4152
- JSON: emit full qualified tags by @masatake in #4165
- JavaScript: destructuring binding by @masatake in #3435
- Tcl: extract null tags by @masatake in #4167
- SCSS: extract modules and namespaces from @use "..." by @masatake in #4168
- SCSS: support modules specified with single-quote chars like @use 'foo' by @masatake in #4169
- optscropt: fix _scopedepth operator by @masatake in #4170
- GitHub Actions: adding testing target linux-loongarch64 by @leleliu008 in #4171
- various minor fixes by @masatake in #4172
- Parsers for files defining SELinux policy by @masatake in #4173
- Lisp: introduce version 0.0 of lisp meta parser by @masatake in #4130
- main: FIX the way to print boolean typed parser specific fields correctly in {xref,ctags} output by @masatake in #4174
- Kotlin: fix annotation parsing by @dolik-rce in #4176
- main: support integer field in the writers by @masatake in #4177
- main: provide the way to specify data taype in --_fielddef option by @masatake in #4178
- optlib2c: make the error message more specific when a wrong datatype is given by @masatake in #4179
- SELinuxTypeEnforcement: fill typeref: field for alias kind objects by @masatake in #4180
- CPreProcessor: support variadic macros with GNU cpp extension syntax by @masatake in #4184
- build(deps): bump cross-platform-actions/action from 0.25.0 to 0.27.0 by @dependabot in #4183
- adding NetBSD-10.1 runner by @leleliu008 in #4185
- CUDA: support function parameters with default values by @masatake in #4188
- Meson: extract config variables by @masatake in #4186
- Units(Meson): add a case testing extracting config variables by @masatake in #4189
- Ruby minor improvements by @masatake in #4190
- JavaScript: Fix held tokens breaking implicit semicolon insertion by @b4n in #4193
- Asm: support Cpp macro arguments spanning multiple lines by @masatake in #4201
- JavaScript: don't extract local constants and variables defined in arrow functions by @masatake in #4197
- CPreProcessor: adjust line numbers when reading characters from unget-chars-buffer by @masatake in #4198
- JavaScript,HTML: skip JSX elements by @masatake in #4191
- buildsys: (msvc) avoid "multiply defined symbols" errors by @masatake in #4208
- GitHub Actions: remove ubuntu-20.04 runner by @leleliu008 in #4203
- Circleci: (fedora41) update libsqlite.so explicitly by @masatake in #4209
- GitHub Actions: refactor testing-on-ubuntu.yml by @leleliu008 in #4210
- Ada: accept 'end;' as the end of function by @masatake in #4206
- GitHub Actions: install pkg-config to the msys2 environment by @masatake in #4211
- readtags: revise feature listing ptags (including an incompatible change) by @masatake in #4095
- main: various minor improvements, especially about mio by @masatake in #4214
- Ada: print debug messages only if --_trace=Ada is given by @masatake in #4213
- units,tmain: add a variable to control the number of threads running test cases by @masatake in #4215
- Moose: stop parsing when the base parser stops parsing by @masatake in #4218
- lregex: avoid crashes when regex pattern compilation fails by @masatake in #4220
- PythonEntryPoints: new subparser based on Iniconf parser by @masatake in #4219
- C++: skip broken C++11 attributes by @masatake in #4221
- main/read: refactor step1 by @masatake in #4223
- CPreProcessor,LdScript,Asm: (bugfix) don't expand macros defined with -I by @masatake in #4226
- JavaScript: (bugfix) consider << operator when detecting JSX area by @masatake in #4228
- SQL: extract trigger of Postgresql dialect by @masatake in #4229
- main: fix typos in a parameter name by @masatake in #4230
- main: (bugfix) don't reset lineFposMap even in the 2nd pass when the parser runs as a guest by @masatake in #4231
- GitHub Actions: adding openbsd-7.6, removing old versions of openbsd by @leleliu008 in #4232
- RpmSpec: don't make a FQ tag for sub-packages if -n option is specified on %package line by @masatake in #4233
- CPreProcessor: (bugfix) don't return negative value other than EOF from unget-buffer by @masatake in #4234
- V: don't use multi-bytes chars in debug print by @masatake in #4236
- GitHub Actions: adding openbsd-7.7 target by @leleliu008 in #4239
- SQL: fill signature and typeref fields for functions and procedures by @masatake in #4238
- Miscellaneous minor fixes by @masatake in #4241
- Fix wrong parser versions by @masatake in #4242
- main/read: revise the offset calculation on nested input stream by @masatake in #4212
- GitHub Actions: set timeout to tests on Qemu by @masatake in #4247
- circleci: switch to use Fedoa42 by @masatake in #4246
- Some minor fixes by @masatake in #4245
- Scdoc: new parser by @masatake in #4244
- TOML,Cargo: disable the parsers temporarily by @masatake in #4248
- optlib: allow users to set fields and check extras defined in a foreign language by @masatake in #3960
- Tests for more Clojure tags by @aartaka in #4126
- operator: add a getter for the language field by @masatake in #4251
- JNI: new subparser by @masatake in #4252
- TypeSpec: new parser by @iaalm in #4243
- Kconfig: don't leave without any items on the stack by @masatake in #4255
- build(deps): bump cross-platform-actions/action from 0.27.0 to 0.28.0 by @dependabot in #4250
- Misc fix by @masatake in #4258
- Units(JSON): add a test case for extracting null tags by @masatake in #4256
- SystemVerilog,Verilog: accept empty names for any kind of language objects by @masatake in #4257
- ctags 6.2.0 by @masatake in #4259
New Contributors
- @pepsiman made their first contribution in #3926
- @ponchoalv made their first contribution in #3945
- @wuruilong01 made their first contribution in #3958
- @glibg10b made their first contribution in #3976
- @Biswa96 made their first contribution in #3977
- @iLeeWell made their first contribution in #3978
- @JaSpa made their first contribution in #4045
- @Begasus made their first contribution in #4069
- @cousteaulecommandant made their first contribution in #4110
- @roccomao made their first contribution in #4115
- @kursataktas made their first contribution in #4124
- @aartaka made their first contribution in #4126
Full Changelog: v6.1.0...v6.2.0