Ctags: gtags .ctags рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рджрд┐рд╕ре░ 2017  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: universal-ctags/ctags

рдореИрдВрдиреЗ рдпреВрдирд┐рд╡рд░реНрд╕рд▓-рд╕реАрдЯреАрдПрдЬреА рдХреЗ рд╕рд╛рде рдЧреНрд▓реЛрдмрд▓реНрд╕ рдмрдирд╛рдП рд╣реИрдВред рдореИрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ ctags --version рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ-ctags рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдирд╣реАрдВред

рдореИрдВрдиреЗ рдПрдХ .ctags рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

-exclude=foo

gtags рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЗрд╕реЗ .ctags рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?

рд╕рднреА 25 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Universal-ctags .ctags рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИред ctags.1 рдореИрди рдкреЗрдЬ рдХрд╛ рдлрд╛рдЗрд▓ рд╕реЗрдХреНрд╢рди рджреЗрдЦреЗрдВред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

/ctags.cnf (on MSDOS, MSWindows only)
/etc/ctags.conf
/usr/local/etc/ctags.conf
$HOME/.ctags
$HOME/ctags.cnf (on MSDOS, MSWindows only)
.ctags
ctags.cnf (on MSDOS, MSWindows only)

If any of these configuration files exist, each will be expected to contain a set of default options which are read in the order listed when ctags starts, but before the CTAGS environment variable is read or any command line options are read. This makes it possible to set up site-wide, personal or project-level defaults. It is possible to compile ctags to read an additional configuration file before any of those shown above, which will be indicated if the output produced by the --version option lists the "custom-conf" feature. Options appearing in the CTAGS environment variable or on the command line will override options specified in these files. Only options will be read from these files. Note that the option files are read in line-oriented mode in which spaces are significant (since shell quoting is not possible). Each line of the file is read as one command line parameter (as if it were quoted with single quotes). Therefore, use new lines to indicate separate command-line arguments.

рдореИрдВ .ctags рдХреЛ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ!

рд╕рдВрднрд╡рддрдГ, рдЙрдирдХрд╛ рдорддрд▓рдм рд╡рд░реНрддрдорд╛рди рдореИрди рдкреЗрдЬ рд╕реЗ рдерд╛ ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХреЛрдбрдмреНрд░реЗрдирдЬрд╝ред рддреЛ рдореИрдВрдиреЗ рдпрд╣ рдлрд╛рдЗрд▓ рдмрдирд╛рдИ:
/pathtorepo/ctags.d/.ctags

рдЬрд┐рд╕рдореЗрдВ -R --excludes рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд░реЗрдкреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп:

ctags --verbose

рдпрд╣ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрдирдкреБрдЯ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЬрдм рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ

ctags --vertbose --options=ctags.d/.ctags

рдпрд╣ рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ .ctags рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд░реЗрдкреЛ рд╕реЗ рдЯреИрдЧ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?

рдХреЗрд╡рд▓ "ctags" рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ ctags.d/.ctags (рдпрд╛ рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ctags рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ emacs рдХреЗ рдЕрдВрджрд░ ggtags рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ ggtags рдХреЛ ctags рдХреЗ рд╕рд╛рде рдХрдВрдзреЗ рд╕реЗ рдХрдВрдзрд╛ рдорд┐рд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ ggtags рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрдм рдореИрдВ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░ "gtags" рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ:

  1. рдпреВрдирд┐рд╡рд░реНрд╕рд▓-ctags рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ
  2. рдпреВрдирд┐рд╡рд░реНрд╕рд▓-ctags (ctags.d/.ctags) рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рд╡рд╣ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

/pathtorepo/.ctags.d/exclude.ctags рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?
рдпреВрдирд┐рд╡рд░реНрд╕рд▓-ctags рдХрд╛ рд╕реНрд░реЛрдд рдЯреНрд░реА рд╣реА рджреЗрдЦреЗрдВред рдЖрдк рдЗрд╕рдореЗрдВ .ctags.d рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
https://github.com/universal-ctags/ctags/tree/master/.ctags.d

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

/pathtorepo рдкрд░ u-ctags рдЪрд▓рд╛рддреЗ рд╕рдордп u-ctags рдХреЛ /pathtorepo/.ctags.d/exclude.ctags рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ u-ctags рдЖрдкрдХреЗ рдмрд╣рд┐рд╖реНрдХреГрдд.ctags рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдорд╛рд╕рд╛рдЯреЗрдХ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣рд┐рд╖реНрдХреГрдд рдлрд╝рд╛рдЗрд▓ рдЙрдард╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВ:

  1. рдпрд╣ рдЧреИрд░ рдмрд╣рд┐рд╖реНрдХреГрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ:
    ctags --verbose --options=.ctags
    рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
    ctags --verbose
    рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ:

ctags: рдХреЛрдИ рдлрд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред "ctags --help" рдЖрдЬрд╝рдорд╛рдПрдВред

рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ? рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
ctags --verbose --options=.ctags
рдФрд░ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ?

  1. рдпреВрдирд┐рд╡рд░реНрд╕рд▓-ctags рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ gtags рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреА рдмрд╣рд┐рд╖реНрдХреГрдд рдлрд╝рд╛рдЗрд▓ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?
    рдЬрдм рдореИрдВ gtags рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╕рдм рдХреБрдЫ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╣рд┐рд╖реНрдХреГрдд.ctags рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ --with-universal-ctags

рд▓рдЧрднрдЧ 1. рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЦрд░рд╛рдм рд╣реВрдБред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдЖрдкрдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред

рдХреГрдкрдпрд╛, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ u-ctags рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

$ ./ctags --version | grep Universal
Universal Ctags 0.0.0(248cffc9), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.

u-ctags ./.ctags.d рдХреЗ рддрд╣рдд рдкреНрд░рддреНрдпрдп рдХреЗ рд░реВрдк рдореЗрдВ .ctags рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

$  ls -l .ctags.d
-rw-r--r--. 1 jet jet 104 Oct 14 02:46 exclusion.ctags

--verbose рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рд╣реИрдВред

$ ./ctags --verbose 2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...

рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ --options рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджреА рдЧрдИ рд╣реИ,
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рддреНрдпрдп рдХреЗ рд░реВрдк рдореЗрдВ .ctags рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рджреЛ рдмрд╛рд░ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

$ ./ctags --verbose --options=.ctags.d 2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...
Considering option file .ctags.d/exclusion.ctags: already considered

рдкреНрд░рддреНрдпрдп рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рддрдм рддрдХ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ --options рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

$ touch ./.ctags.d/please-load-me
$ ./ctags --verbose  2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...
$ mv ./.ctags.d/please-load-me ./.ctags.d/please-load-me.ctags
$ ./ctags --verbose  2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...
Considering option file .ctags.d/please-load-me.ctags: reading...

рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдХреГрдкрдпрд╛, рдореИрди рдкреЗрдЬ рджреЗрдЦреЗрдВред рдпрджрд┐ рдореИрди рдкреЗрдЬ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред

2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ gtags рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдареАрдХ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рд╡рд╛рд▓ рдмрд╛рд░-рдмрд╛рд░ рдорд┐рд▓реЗрдЧрд╛ред рдкреНрд░рд╢реНрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдпрджрд┐ рдЖрдк рдЕрднреА рднреА $HOME/.ctags рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рд╕рдВрдЧрддрддрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИ, рдФрд░ рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдХрдорд┐рдЯ ce0617a7be7a4d33a09ac60f21b8a9ce26690853 рдиреЗ рдмрд┐рдирд╛ рдХрд╛рд░рдг рдмрддрд╛рдП рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ред

рдЕрдм рдореБрдЭреЗ рдЕрдкрдиреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ #1519 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ рдХрд╛рд░рдг рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдВрдЧрддрддрд╛ рддреЛрдбрд╝рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░, рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ) u-ctags рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд░рддреЗ рд╕рдордп рдХрд░реВрдБрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЦрд┐рд░реА рд╡рд╛рд▓рд╛ рдЯреИрдЧ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рдо @b4n рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЬреЛ рдХрд░рдирд╛ рд╣реИ рд╡рд╣ рд╣реИ assigning version 3 tags file format рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдирд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ ~/.ctags.d/*.ctags рдФрд░ (рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ) ./.ctags.d/*.ctags рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рдкреЛрд╕реНрдЯрд░ рдХреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореИрдВ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╕реАрдЯреАрдПрдЬреА рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдЬреАрдПрдирдпреВ рдЧреНрд▓реЛрдмрд▓ 6.6.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред GTAGSCONF рдбрд┐рдлрд╝реЙрд▓реНрдЯ gtags.conf рд╕реНрдерд╛рдкрдирд╛ рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ GTAGSLABEL new-ctags ред

рдореИрдВрдиреЗ рдЧреНрд▓реЛрдмрд▓ рдХреЗ /plugin-factory/exuberant-ctags.c (рдпреВрдирд┐рд╡рд░реНрд╕рд▓ Ctags рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рд▓рд╛рдЗрди 193 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ) рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рднреА рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ Ctags рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рдХрд▓реНрдк рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ .ctags.d/*.ctags рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдЧрд╛ред .

рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реИрд╢реНрд╡рд┐рдХ рджреЗрд╡реЛрдВ рдХреЛ рдЗрд╕рдХреА рд╕реВрдЪрдирд╛ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдРрд╕рд╛ рдХрд░реВрдВрдЧрд╛ред :)

рдкреНрд░рдЬрдирди рдХрд░рдирд╛:

git clone -b tests --single-branch https://github.com/janEbert/julia-ctags.git
cd julia-ctags
mkdir -p ~/.ctags.d
mkdir -p .ctags.d
ln -s $PWD/ctags ~/.ctags.d/julia.ctags  # or cp if you want to be safe
ln -s $PWD/ctags ./.ctags.d/julia.ctags
gtags
global greet  # returns nothing

ctags рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ:

$ new-ctags --version
$ new-ctags -o - JULIA-FILE

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ?

рд╣рд╛рдВ, рдпреВрдирд┐рд╡рд░реНрд╕рд▓ Ctags рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ ( uctags рдореЗрд░реА рдорд╢реАрди рдкрд░; GTAGSLABEL рдмрд╛рдЗрдирд░реА рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИ) --options рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ .ctags рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рд╕реАрдзреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рддреЛ Universal Ctags ~/.ctags.d рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧреНрд▓реЛрдмрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХреГрдкрдпрд╛, --options рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред uctags рдХреЛ --options рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ ~/.ctags.d/julia.ctags рдФрд░ ./.ctags.d/julia.ctags рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рджреМрдбрд╝реЗрдВ:

$ uctags --version
$ uctags -o - JULIA-FILE

рдореИрдВ рдХрдорд╛рдВрдб рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдмреАрдЯреАрдбрдмреНрд▓реВ, рдХреНрдпрд╛ рдЖрдк рдЬреАрдПрдирдпреВ/рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕реАрдЯреАрдПрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ред uctags рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ ~/.ctags.d рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВ --options рдзреНрд╡рдЬ рди рджреВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдмреИрдХрдПрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ gtags рд╕рд╛рде uctags рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ ~/.ctags.d рдХрд╛ рдЙрдкрдпреЛрдЧ _not_ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рдВ, рдореИрдВ рдЗрд╕реЗ рдЬреАрдПрдирдпреВ/рд▓рд┐рдирдХреНрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдмрдВрдЯреВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

$ uctags --version
Universal Ctags 0.0.0(1a94658c), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jul 29 2019, 13:42:51
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath, +packcc
$ uctags -o - testfile.jl
CtagsTest   testfile.jl /^module CtagsTest$/;"  f
ImmutablePoint  testfile.jl /^struct ImmutablePoint{T}$/;"  f
MutablePoint    testfile.jl /^mutable struct MutablePoint{T}$/;"    f
addcoment   testfile.jl /^addcoment(string::AbstractString, comment, spaces=1) = begin  # Maybe write without `begin`?$/;"  f
addone! testfile.jl /^function addone!(x::T) where {T <: Number}$/;"    f
deprecated_returnsquarepower    testfile.jl /^deprecated_returnsquarepower() = 2.0$/;"  f
multiply    testfile.jl /^multiply(x, y) = x * y$/;"    f
multiply    testfile.jl /^multiply(x, y...) = begin$/;" f
printgreeting   testfile.jl /^    function printgreeting(x)$/;" f
square  testfile.jl /^function square(x)$/;"    f

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпреВрдирд┐рд╡рд░реНрд╕рд▓ Ctags рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдХрд▓рд┐рдд, рдЖрдЙрдЯрдкреБрдЯ рд╡рд╣реА рд░рд╣рд╛ред

рдЖрдЙрдЯрдкреБрдЯ greet рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдФрд░ рдКрдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдЙрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдПрдХ рдкреБрд░рд╛рдиреЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ - рдмрд╕ global greet рдХреЛ global square рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдЕрднреА рднреА рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рджреЗрдЧрд╛ред

рдУрдХреЗ рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рдЕрд▓реЛрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ, uctags рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдЬреАрдПрдирдпреВ/рд▓рд┐рдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдЪреНрдЫрд╛! рдореИрдВ рдЖрдкрдХреА рдФрд░ рднреА рдмрд╣реБрдд рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдХреГрдкрдпрд╛, рд╕реНрдЯреНрд░реЗрд╕ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдореИрдВ рдЙрдмрдВрдЯреВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди apt-get рд╕реНрдЯреНрд░реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдлрд┐рд░ рднрд╛рдЧреЛ

$ strace -s 4096 -f -e execve,execveat gtags

рдореИрдВ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдУрдХреЗ рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рдЕрд▓реЛрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ, uctags рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдЖрдк рдЬреАрдПрдирдпреВ/рд▓рд┐рдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдЪреНрдЫрд╛! рдореИрдВ рдЖрдкрдХреА рдФрд░ рднреА рдмрд╣реБрдд рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред

$ strace -s 4096 -f -e execve,execveat gtags
execve("/usr/local/bin/gtags", ["gtags"], 0x7ffe7e8d0fe8 /* 83 vars */) = 0
strace: Process 2210 attached
[pid  2210] execve("/usr/bin/sort", ["/usr/bin/sort", "-k", "1,1"], 0x562714c855b0 /* 84 vars */) = 0
strace: Process 2211 attached
[pid  2211] execve("/usr/bin/sort", ["/usr/bin/sort", "-k", "1,1"], 0x562714c97410 /* 84 vars */) = 0
[pid  2210] +++ exited with 0 +++
[pid  2209] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=2210, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
[pid  2211] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=2211, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++

рд╕реНрдЯреНрд░реЗрд╕ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ gtags рдиреЗ uctags рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред
рдлрд┐рд░ рдЧреНрд▓реЛрдмрд▓ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд▓рд┐рдЦреЗрдВ!
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж! рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╕реАрдЯреАрдПрдЬреА рдорд╣рд╛рди рд╣реИрдВред :)

рдЕрд░реЗ, рдореИрдВрдиреЗ рдереЛрдбрд╝реА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╢рд┐рдЧрд┐рдпреЛред

GNU Global, GTAGSCONF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ gtags рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП langmap рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ Universal Ctags рдХреЛ рднреА рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВрдиреЗ рдЬреВрд▓рд┐рдпрд╛ (.jl) рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЧреНрд▓реЛрдмрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреВрдирд┐рд╡рд░реНрд╕рд▓ Ctags рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛ рдЧрдП:
рдЕрдЬреНрдЮрд╛рдд рднрд╛рд╖рд╛ "[рд▓реИрдВрдЧрдореИрдкреНрд╕ рдХреА рд╕реВрдЪреА]"

рд╕рдорд╕реНрдпрд╛ рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Universal Ctags рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ .ctags.d рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЧреНрд▓реЛрдмрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ --options=[...].ctags _before_ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛, рдпрд╣ --langmap рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЧреНрд▓реЛрдмрд▓ рдЯреЗрдмрд▓ рдорд┐рд▓рддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рддрд╛рдХрд┐ .ctags.d рдлрд╛рдЗрд▓реЗрдВ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ Ctags рдХреЗ рддрд░реНрдХреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдВ) рдпрд╛ рдЕрдЧрд░ рдореБрдЭреЗ Global.

рд╕рдорд╕реНрдпрд╛ рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Universal Ctags рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ .ctags.d рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдРрд╕рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрдкрд╡рд╛рдж, Universal-ctags .ctags.d/*.ctags рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ cmdline рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ ctags-optlib.7 рдореИрди рдкреЗрдЬ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдЖрдк --_echo=MSG рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕рдордЭрдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ u-ctags рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

 [yamato@slave]~% ls ~/.ctags.d 
config.ctags
[yamato@slave]~% cat ~/.ctags.d/config.ctags
--_echo=hello from dot-ctags


[yamato@slave]~% u-ctags --_echo="hello from cmdline" --_force-quit
u-ctags: Notice: hello from dot-ctags
u-ctags: Notice: hello from cmdline

ctags.1 рдореИрди рдкреЗрдЬ рджреЗрдЦреЗрдВред рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк --options рдХреЛ ctags рдореЗрдВ рдХреНрдпреЛрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
julia.ctags рдХреЛ ~/.ctags.d рдкрд░ рд░рдЦрдирд╛ рдЖрдкрдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред u-ctags рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ julia.ctags рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ --options рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЕрднреА рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рднреА рдЕрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИред рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lvc picture lvc  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

songouyang picture songouyang  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fabiensabatie picture fabiensabatie  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

blackb1rd picture blackb1rd  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

liuchengxu picture liuchengxu  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ