123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728 |
- *gutentags.txt* Automatic ctags management for VIM
- ___ ___ ___ ___ ___
- /\__\ /\ \ /\__\ /\__\ /\ \
- /:/ _/_ \:\ \ /:/ / /:/ _/_ \:\ \
- /:/ /\ \ \:\ \ /:/__/ /:/ /\__\ \:\ \
- /:/ /::\ \ ___ \:\ \ /::\ \ /:/ /:/ _/_ _____\:\ \
- /:/__\/\:\__\ /\ \ \:\__\ /:/\:\ \ /:/_/:/ /\__\ /::::::::\__\
- \:\ \ /:/ / \:\ \ /:/ / \/__\:\ \ \:\/:/ /:/ / \:\~~\~~\/__/
- \:\ /:/ / \:\ /:/ / \:\__\ \::/_/:/ / \:\ \
- \:\/:/ / \:\/:/ / \/__/ \:\/:/ / \:\ \
- \::/ / \::/ / \::/ / \:\__\
- \/__/ \/__/ \/__/ \/__/
- ___ ___ ___ ___
- /\__\ /\ \ /\__\ /\__\
- /:/ / /::\ \ /:/ _/_ /:/ _/_
- /:/__/ /:/\:\ \ /:/ /\ \ /:/ /\ \
- /::\ \ /:/ /::\ \ /:/ /::\ \ /:/ /::\ \
- /:/\:\ \ /:/_/:/\:\__\ /:/__\/\:\__\ /:/_/:/\:\__\
- \/__\:\ \ \:\/:/ \/__/ \:\ \ /:/ / \:\/:/ /:/ /
- \:\__\ \::/__/ \:\ /:/ / \::/ /:/ /
- \/__/ \:\ \ \:\/:/ / \/_/:/ /
- \:\__\ \::/ / /:/ /
- \/__/ \/__/ \/__/
-
-
- GUTENTAGS REFERENCE MANUAL
- by Ludovic Chabant
-
- *gutentags*
-
- 1. Introduction |gutentags-intro|
- 2. Commands |gutentags-commands|
- 3. Status Line |gutentags-status-line|
- 4. Global Settings |gutentags-settings|
- 5. Project Settings |gutentags-project-settings|
-
- =============================================================================
- 1. Introduction *gutentags-intro*
-
- Gutentags is a plugin that takes care of the much needed management of tags
- files in Vim. It will (re)generate tag files as you work while staying
- completely out of your way. It will even do its best to keep those tag files
- out of your way too. It has no dependencies and just works.
-
- In order to generate tag files, Gutentags will have to figure out what's in
- your project. To do this, it will locate well-known project root markers like
- SCM folders (.git, .hg, etc.), any custom tags you define (with
- |gutentags_project_root|), and even things you may have defined already with
- other plugins, like CtrlP.
-
- If the current file you're editing is found to be in such a project, Gutentags
- will make sure the tag file for that project is up to date. Then, as you work
- in files in that project, it will partially re-generate the tag file. Every
- time you save, it will silently, in the background, update the tags for that
- file.
-
- Usually, `ctags` can only append tags to an existing tag file, so Gutentags
- removes the tags for the current file first, to make sure the tag file is
- always consistent with the source code.
-
- Also, Gutentags is clever enough to not stumble upon itself by triggering
- multiple ctags processes if you save files too fast, or if your project is
- really big.
-
-
- 1.1 Requirements
- *gutentags-ctags-requirements*
-
- If you're using the `ctags` modules (which is the default and only working one
- at this point, really), you will need a `tags` generator that supports the
- following arguments:
-
- * `-f` (to specify the output file)
- * `--append` (to append to an existing file while keeping it sorted)
- * `--exclude` (to exclude file patterns)
- * `--options` (to specify an options file)
-
- This means you probably want Exuberant Ctags or Universal Ctags. The basic
- old BSD Ctags WON'T WORK. Other language-specific versions may or may not
- work. Check with their help or man page.
-
-
- 1.2 Similar Plugins
- *gutentags-similar-plugins*
-
- There are some similar Vim plugins out there ("vim-tags", "vim-autotag",
- "vim-automatic-ctags", etc.). They all fail on one or more of the requirements
- I set for myself with Gutentags:
-
- * No other dependency than running Vim: no Python, Ruby, or whatever.
- * Cross-platform: should work on at least Mac and Windows.
- * Incremental tags generation: don't re-generate the whole project all the
- time. This may be fine for small projects, but it doesn't scale.
- * External process management: if the ctags process is taking a long time,
- don't run another one because I saved the file again.
- * Keep the tag file consistent: don't just append the current file's tags to
- the tag file, otherwise you will still "see" tags for deleted or renamed
- classes and functions.
- * Automatically create the tag file: you open something from a freshly forked
- project, it should start indexing it automatically, just like in Sublime Text
- or Visual Studio or any other IDE.
-
-
- =============================================================================
- 2. Commands *gutentags-commands*
-
- *gutentags-project-commands*
- The following commands are only available in buffers that have been found to
- belong to a project that should be managed by Gutentags. See
- |gutentags_project_root| for how Gutentags figures out the project a file
- belongs to. When no project is found (i.e. the file is not under any of the
- known project markers), Gutentags is disabled for that buffer, and the
- following commands and remarks don't apply.
-
- If you want to force-disable Gutentags for a given project even though it does
- match one of the items in |gutentags_project_root|, create a file named
- "`.notags`" at the root of the project.
-
- The tag file that Gutentags creates and manages will be named after
- |gutentags_ctags_tagfile|, relative to the project's root directory. When
- Gutentags finds a valid project root, it will prepend the tag file's path to
- 'tags', unless |gutentags_ctags_auto_set_tags| is set to 0. This is to make
- sure Vim will use that file first.
-
- If a file managed by Gutentags is opened and no tag file already exists,
- Gutentags will start generating it right away in the background, unless
- |gutentags_generate_on_missing| is set to 0. If you have a large project, you
- may want to know when Gutentags is generating tags: see
- |gutentags-status-line| to display an indicator in your status line.
-
- When a file managed by Gutentags is saved, the tag file will be incrementally
- updated, i.e. references to the recently saved file are removed, and that file
- is re-parsed for tags, with the result being merged into the tag file. This
- makes the tag file 100% consistent with the latest changes. This doesn't
- happen however if |gutentags_generate_on_write| is set to 0, in which case you
- have to run |GutentagsUpdate| manually.
-
-
- *:GutentagsUpdate*
- :GutentagsUpdate
- Forces an update of the current tag file with the
- current buffer. If tags are already being generated,
- you will be notified and the command will abort.
-
- :GutentagsUpdate!
- Like |GutentagsUpdate|, but updates the current tags
- file with the whole project instead of just the
- current buffer.
-
-
- Some debugging/troubleshooting commands are also available if the
- |gutentags_define_advanced_commands| global setting is set to 1.
-
- *:GutentagsToggleEnabled*
- :GutentagsToggleEnabled
- Disables and re-enables Gutentags.
- When Gutentags is disabled, it won't update your tag
- file when you save a buffer. It will however still
- look for project markers as you open new buffers so
- that they can start working again when you re-enable
- Gutentags.
-
- {only available when
- |gutentags_define_advanced_commands| is set}
-
- *GutentagsToggleTrace*
- :GutentagsToggleTrace
- If you want to keep an eye on what Gutentags is doing,
- you can enable tracing. This will show messages every
- time Gutentags does something. It can get annoying
- quickly, since it will require you to press a key to
- dismiss those messages, but it can be useful to
- troubleshoot a problem.
- In addition to messages in Vim, it will also make
- Gutentags redirect the output of the tag generation
- script to a `.log` file in the project root.
-
- {only available when
- |gutentags_define_advanced_commands| is set}
-
-
- Gutentags also has some user auto-commands (see |User| and |:doautocmd|):
-
- *GutentagsUpdating*
- GutentagsUpdating
- This auto-command is triggered when a background
- update job has started.
-
- *GutentagsUpdated*
- GutentagsUpdated
- This auto-command is triggered when a background
- update job has finished.
-
-
- =============================================================================
- 3. Status Line *gutentags-status-line*
-
- Tag file generation can take a while if you're working on a project big
- enough. In that case, you may want to know when `ctags` is running, so you
- have a heads up if some of the tags aren't recognized yet.
-
- *gutentags#statusline()*
- You can display an indicator of tag generation progress in your |status-line|
- with the following function: >
- :set statusline+=%{gutentags#statusline()}
-
- The function will, by default, print a list of modules in the status line. So
- if the `ctags` module (see |g:gutentags_modules|) is currently generating
- a tags file, you will see "ctags" printed in the status line. If nothing is
- happening, nothing will be printed in the status line.
-
- You can pass some parameters to customize this:
-
- 1. A prefix string (defaults to `""`).
- 2. A suffix string (defaults to `""`).
- 3. The text to print (defaults to the names of modules currently generating
- something).
-
- So using `gutentags#statusline('[', ']')` would print `"[ctags]"` instead of
- `"ctags"`.
-
- Because Gutentags runs the tag generation in the background, the statusline
- indicator might stay there even after the background process has ended. It
- would only go away when Vim decides to refresh the statusline. You can force
- refresh it in a callback on |GutentagsUpdating| and |GutentagsUpdated|.
-
- For instance, with the `lightline` plugin:
-
- augroup MyGutentagsStatusLineRefresher
- autocmd!
- autocmd User GutentagsUpdating call lightline#update()
- autocmd User GutentagsUpdated call lightline#update()
- augroup END
-
- *gutentags#statusline_cb*
- As an alternative to the previous function, `gutentags#statusline_cb` takes
- a single parameter which should be a |Funcref| or a function name. This
- function should take a list of active module names, and return a string. This
- lets you completely control what the status line will print.
-
- For instance:
- function! s:get_gutentags_status(mods) abort
- let l:msg = ''
- if index(a:mods, 'ctags') >= 0
- let l:msg .= '♨'
- endif
- if index(a:mods, 'cscope') >= 0
- let l:msg .= '♺'
- endif
- return l:msg
- endfunction
-
- :set statusline+=%{gutentags#statusline_cb(
- \function('<SID>get_gutentags_status'))}
-
- By default, the callback function doesn't get called if no tags generation is
- currently happening. You can pass `1` as a second argument so that the
- callback function is always called.
-
-
- =============================================================================
- 4. Global Settings *gutentags-settings*
-
- The following settings can be defined in your |vimrc| to change the default
- behaviour of Gutentags.
-
- *gutentags_enabled*
- g:gutentags_enabled
- Defines whether Gutentags should be enabled. When
- disabled, Gutentags will still scan for project root
- markers when opening buffers. This is so that when you
- re-enable Gutentags, you won't have some buffers
- mysteriously working while others (those open last)
- don't.
- Defaults to `1`.
-
- *gutentags_trace*
- g:gutentags_trace
- When true, Gutentags will spit out debugging
- information as Vim messages (which you can later read
- with |:messages|). It also runs its background scripts
- with extra parameters to log activity to a `tags.log`
- file that you can also inspect for more information.
-
- Note: you can run `:verbose GutentagsUpdate` to
- temporarily set |g:gutentags_trace| to `1` for that
- update only.
-
- Defaults to `0`.
-
- *gutentags_dont_load*
- g:gutentags_dont_load
- Prevents Gutentags from loading at all on Vim startup.
-
- The difference between this and |gutentags_enabled| is
- that |gutentags_enabled| can be turned on and off in
- the same Vim session -- Gutentags as a plugin stays
- loaded and will keep track of what happened while it
- was disabled. However, |gutentags_dont_load| only
- works on Vim startup and will prevent Gutentags from
- loading at all, as if it wasn't there.
-
- *gutentags_modules*
- g:gutentags_modules
- A list of modules to load with Gutentags. Each module
- is responsible for generating a specific type of tags
- file.
- Valid values are:
-
- - `ctags`: generates a `tags` file using
- a `ctags`-compatible program like Exhuberant Ctags
- or Universal Ctags.
-
- - `cscope`: generates a code database file using
- `cscope`.
-
- - `gtags_cscope`: same as `cscope` but uses GNU's
- `gtags` executable and database.
-
- Defaults to `[ctags]`.
-
- *gutentags_project_root*
- g:gutentags_project_root
- When a buffer is loaded, Gutentags will figure out if
- it's part of a project that should have tags managed
- automatically. To do this, it looks for "root markers"
- in the current file's directory and its parent
- directories. If it finds any of those markers,
- Gutentags will be enabled for the project, and a tags
- file named after |gutentags_ctags_tagfile| will be
- created at the project root.
- Defaults to `[]` (an empty |List|).
- A list of default markers will be appended to the
- user-defined ones unless
- |gutentags_add_default_project_roots| is set to 0.
-
- *gutentags_add_default_project_roots*
- g:gutentags_add_default_project_roots
- Defines whether Gutentags should always define some
- default project roots (see |gutentags_project_root|).
- This can be useful to prevent unnecessary disk access
- when Gutentags searches for a project root.
- The default markers are:
- `['.git', '.hg', '.svn', '.bzr', '_darcs', '_darcs', '_FOSSIL_', '.fslckout']`
-
- *gutentags_add_ctrlp_root_markers*
- g:gutentags_add_ctrlp_root_markers
- If Gutentags finds `g:ctrlp_root_markers` (used by the
- CtrlP plugin), it will append those root markers to
- the existing ones (see |g:gutentags_project_root|).
- Set this to 0 to stop it from happening.
- Defaults to 1.
-
- *gutentags_exclude_filetypes*
- g:gutentags_exclude_filetypes
- A |List| of file types (see |'filetype'|) that Gutentags
- should ignore. When a buffer is opened, if its
- 'filetype' is found in this list, Gutentags features
- won't be available for this buffer.
- Defaults to an empty list (`[]`).
-
- *gutentags_exclude_project_root*
- g:gutentags_exclude_project_root
- A list of project roots to generally ignore. If a file
- is opened inside one of those projects, Gutentags
- won't be activated. This is similar to placing
- a `.notags` file in the root of those projects, but
- can be useful when you don't want to, or can't, place
- such a file there.
- Defaults to `['/usr/local']`, which is the folder where
- Homebrew is known to create a Git directory by default
- on MacOS.
-
- *gutentags_project_root_finder*
- g:gutentags_project_root_finder
- When a buffer is loaded, Gutentags uses a default
- (internal) implementation to find that file's
- project's root directory, using settings like
- |g:gutentags_project_root|. When you specify
- |g:gutentags_project_root_finder|, you can tell
- Gutentags to use a custom implementation, such as
- `vim-projectroot`. The value of this setting must be
- the name of a function that takes a single string
- argument (the path to the current buffer's file) and
- returns a string value (the project's root directory).
- Defaults to `''`.
- Note: when set, the called implementation will
- possibly ignore |g:gutentags_project_root|.
- Note: an implementation can fallback to the default
- behaviour by calling
- `gutentags#default_get_project_root`.
-
- *gutentags_generate_on_missing*
- g:gutentags_generate_on_missing
- If set to 1, Gutentags will start generating an initial
- tag file if a file is open in a project where no tags
- file is found. See |gutentags_project_root| for how
- Gutentags locates the project.
- When set to 0, Gutentags will only generate the first
- time the file is saved (if
- |gutentags_generate_on_write| is set to 1), or when
- |GutentagsUpdate| or |GutentagsGenerate| is run.
- Defaults to 1.
-
- *gutentags_generate_on_new*
- g:gutentags_generate_on_new
- If set to 1, Gutentags will start generating the tag
- file when a new project is open. A new project is
- considered open when a buffer is created for a file
- whose corresponding tag file has not been "seen" yet
- in the current Vim session -- which pretty much means
- when you open the first file in a given source control
- repository.
- When set to 0, Gutentags won't do anything special.
- See also |gutentags_generate_on_missing| and
- |gutentags_generate_on_write|.
- Defaults to 1.
-
- *gutentags_generate_on_write*
- g:gutentags_generate_on_write
- If set to 1, Gutentags will update the current
- project's tag file when a file inside that project is
- saved. See |gutentags_project_root| for how Gutentags
- locates the project.
- When set to 0, Gutentags won't do anything on save.
- This means that the project's tag file won't reflect
- the latest changes, and you will have to run
- |GutentagsUpdate| manually.
- Defaults to 1.
-
- *gutentags_generate_on_empty_buffer*
- g:gutentags_generate_on_empty_buffer
- If set to 1, Gutentags will start generating the tag
- file even if there's no buffer currently open, as long
- as the current working directory (as returned by
- |:cd|) is inside a known project.
- This is useful if you want Gutentags to generate the
- tag file right after opening Vim.
- Defaults to 0.
-
- *gutentags_background_update*
- g:gutentags_background_update
- Specifies whether the process that updates the tags
- file should be run in the background or in the
- foreground. If run in the foreground, Vim will block
- until the process is complete.
- Defaults to 1.
-
- *gutentags_cache_dir*
- g:gutentags_cache_dir
- Specifies a directory in which to create all the tags
- files, instead of writing them at the root of each
- project. This is handy to keep tags files from
- polluting many directories all across your computer.
-
- *gutentags_resolve_symlinks*
- g:gutentags_resolve_symlinks
- When set to 1, Gutentags will resolve any symlinks in
- the current buffer's path in order to find the project
- it belongs to. This is what you want if you're editing
- a symlink located outside of the project, and it
- points to a file inside the project. However, this is
- maybe not what you want if the symlink itself is
- part of the project.
- Defaults to 0.
-
- *gutentags_init_user_func*
- g:gutentags_init_user_func
- When set to a non-empty string, it is expected to be
- the name of a function that will be called when a file
- is opened in a project. The function gets passed the
- path of the file and if it returns 0, Gutentags won't
- be enabled for that file.
-
- You can use this to manually set buffer-local
- settings:
-
- * `b:gutentags_ctags_tagfile` (see |gutentags_ctags_tagfile|).
-
- This setting was previously called
- `gutentags_enabled_user_func`. The old setting is
- still used as a fallback.
-
- Defaults to "".
-
- *gutentags_define_advanced_commands*
- g:gutentags_define_advanced_commands
- Defines some advanced commands like
- |GutentagsToggleEnabled| and |GutentagsUnlock|.
-
- *gutentags_project_info*
- g:gutentags_project_info
- Defines ways for Gutentags to figure out what kind of
- project any given file belongs to. This should be
- a list of dictionaries:
-
- let g:gutentags_project_info = []
- call add(g:gutentags_project_info, {...})
-
- Each dictionary item must contain at least a `type`
- key, indicating the type of project:
-
- {"type": "python"}
-
- Other items will be used to figure out if a project is
- of the given type.
-
- "file": any existing file with this path (relative to
- the project root) will make the current project match
- the given info.
-
- "glob": any result found with this glob pattern
- (relative to the project root) will make the current
- project match the given info. See |glob()| for more
- information.
-
- Gutentags adds by default the following definitions:
-
- call add(g:gutentags_project_info, {'type': 'python', 'file': 'setup.py'})
- call add(g:gutentags_project_info, {'type': 'ruby', 'file': 'Gemfile'})
-
- This means, for example, that you can use
- `g:gutentags_ctags_executable_ruby` out of the box.
- See |gutentags_ctags_executable_{filetype}| for more
- information.
-
- *gutentags_file_list_command*
- g:gutentags_file_list_command
- Specifies command(s) to use to list files for which
- tags should be generated, instead of recursively
- examining all files within the project root. When
- invoked, file list commands will execute in the
- project root directory.
-
- This setting is useful in projects using source
- control to restrict tag generation to only files
- tracked in the repository.
-
- This variable may be set in one of two ways. If
- set as a |String|, the specified command will be used to
- list files for all projects. For example: >
-
- let g:gutentags_file_list_command = 'find . -type f'
- <
- If set as a |Dictionary|, this variable should be set
- as a mapping of project root markers to the desired
- file list command for that root marker. (See
- |gutentags_project_root| for how Gutentags uses root
- markers to locate the project.) For example: >
-
- let g:gutentags_file_list_command = {
- \ 'markers': {
- \ '.git': 'git ls-files',
- \ '.hg': 'hg files',
- \ },
- \ }
- <
- Note: If a custom ctags executable is specified, it
- must support the '-L' command line option in order to
- read the list of files to be examined.
-
-
- The following settings are valid for the `ctags` module.
-
- *gutentags_ctags_executable*
- g:gutentags_ctags_executable
- Specifies the ctags executable to launch.
- Defaults to `ctags`.
-
- *gutentags_ctags_executable_{filetype}*
- g:gutentags_ctags_executable_{type}
- Specifies the ctags executable to launch for a project
- of type {type}. See |gutentags_project_info| for more
- information.
- IMPORTANT: please see |gutentags-ctags-requirements|.
- Example: >
- let g:gutentags_ctags_executable_ruby = 'foobar'
- <
-
- *gutentags_ctags_tagfile*
- g:gutentags_ctags_tagfile
- Specifies the name of the tag file to create. This
- will be appended to the project's root. See
- |gutentags_project_root| for how Gutentags locates the
- project.
- Defaults to `tags`.
-
- *gutentags_ctags_exclude*
- g:gutentags_ctags_exclude
- A list of file patterns to pass to the
- |gutentags_ctags_executable| so that they will be
- excluded from parsing for the tags generation.
- See also |gutentags_ctags_exclude_wildignore|.
- Defaults to `[]` (an empty |List|).
-
- *gutentags_ctags_exclude_wildignore*
- g:gutentags_ctags_exclude_wildignore
- When 1, Gutentags will automatically pass your
- 'wildignore' file patterns to the
- |gutentags_ctags_executable| so that they are ignored.
- Set also |gutentags_ctags_exclude| to pass custom
- patterns.
- Defaults to 1.
-
- *gutentags_ctags_auto_set_tags*
- g:gutentags_ctags_auto_set_tags
- If set to 1, Gutentags will automatically prepend
- 'tags' with the exact path to the tag file for the
- current project. See |gutentags_project_root| for how
- Gutentags locates the project.
- When set to 0, Gutentags doesn't change 'tags', and
- this means that whatever tag file it generates may
- not be picked up by Vim. See |tagfiles()| to know what
- tag files Vim knows about.
- Defaults to 1.
-
- *gutentags_ctags_extra_args*
- g:gutentags_ctags_extra_args
- A list of arguments to pass to `ctags`.
- Defaults to `[]`.
-
- *gutentags_ctags_post_process_cmd*
- g:gutentags_ctags_post_process_cmd
- If defined, the tags generation script will run the
- command with an argument that points to a temporary
- copy of the tags file. If the post-process step is
- modifying the tags file, it needs to do so in-place.
- This is useful for cleaning up a tags file that may
- contain tags with non-ASCII names that somehow upsets
- Vim.
- Defaults to `""` (an empty |String|).
-
-
- The following settings are valid for the `cscope` module.
-
- *gutentags_cscope_executable*
- g:gutentags_cscope_executable
- Specifies the name or path of the `cscope` executable
- to use to generate the code database.
- Defaults to `"cscope"`.
-
- *gutentags_scopefile*
- g:gutentags_scopefile
- Specifies the name of the scope file to create. This
- will be appended to the project's root. See
- |gutentags_project_root| for how Gutentags locates the
- project.
- Defaults to `"cscope.out"`.
-
- *gutentags_auto_add_cscope*
- g:gutentags_auto_add_cscope
- If set to 1, Gutentags will automatically add the
- generated code database to Vim by running `:cs add`
- (see |:cscope|).
- Defaults to 1.
-
- *gutentags_cscope_build_inverted_index*
- g:gutentags_cscope_build_inverted_index
- If set to 1, Gutentags will make `cscope` build an
- inverted index.
- Defaults to 0.
-
-
- The following settings are valid for the `gtags_cscope` module.
-
- *gutentags_gtags_executable*
- g:gutentags_gtags_executable
- Specifies the name or path of the `gtags` executable
- to use to generate the code database.
- Defaults to `"gtags"`.
-
- *gutentags_gtags_cscope_executable*
- g:gutentags_gtags_cscope_executable
- Specifies the name or path of the `gtags-cscope`
- executable to use to generate the code database.
- Defaults to `"gtags-cscope"`.
-
- *gutentags_gtags_dbpath*
- g:gutentags_gtags_dbpath
- Path from the cache directory (|gutentags_cache_dir|
- or project root) to the folder containing the
- definition database file (usually called `GTAGS`).
- Defaults to `""`.
-
- *gutentags_gtags_options_file*
- g:gutentags_gtags_options_file
- The name of a file that will be looked for in
- a project root directory. The file is expected to
- contain `gtags` options (one per line).
- Defaults to `".gutgtags"`.
-
- *gutentags_auto_add_gtags_cscope*
- g:gutentags_auto_add_gtags_cscope
- If set to 1, Gutentags will automatically add the
- generated code database to Vim by running `:cs add`
- (see |:cscope|).
- Defaults to 1.
-
- People using `cscope` or `gtags_cscope` across multiple projects in the same
- Vim instance might be interested in the `gutentags_plus` plugin, which handles
- switching databases automatically before performing a query.
- See https://github.com/skywind3000/gutentags_plus.
-
- =============================================================================
- 5. Project Settings *gutentags-project-settings*
-
- Gutentags can be customized to some extent on a per-project basis with the
- following files present in the project root directory:
-
- *gutentags-.gutctags*
- `.gutctags`: if this file exists, Ctags will be told to load additional
- command-line parameters by reading it line by line (see the Ctags
- documentation for more information).
-
- Note that for complex reasons, Gutentags can't run `ctags` from the project
- root if you're using |gutentags_cache_dir|, so if the `.gutctags` file exists,
- it will be pre-processed in order to make all `--exclude=` clauses into
- absolute paths (by prepending the project root). The resulting file will be
- saved into the cache directory, and passed to `ctags` via the `--options=`
- parameter. If you're _not_ using |gutentags_cache_dir|, the `.gutctags` file
- is _not_ pre-processed, and is passed as-is via the `--options=` parameter.
-
- *gutentags-.notags*
- `.notags`: if this file exists, Gutentags will be disabled completely for that
- project.
-
-
- vim:tw=78:et:ft=help:norl:
|