A parallel universal-ctags wrapper for git repository
ptags is a universal-ctags wrapper to have the following features.
- Search git tracked files only ( .gitignore
support )
- Call ctags
command in parallel for acceleration
- Up to x5 faster than universal-ctags
Download from release page, and extract to the directory in PATH.
You can install from AUR.
If you use yay
, you can install like below:
yay -S ptags // latest tagged version
yay -S ptags-git // current master of git repo
You can install by cargo.
cargo install ptags
ptags uses ctags
and git
command internally.
The tested version is below.
| Command | Version |
| --------- | ----------------------------------------------------- |
| ctags
| Universal Ctags 0.0.0(f9e6e3c1) / Exuberant Ctags 5.8 |
| git
| git version 2.14.2 |
| git-lfs
| git-lfs/2.3.3 |
``` ptags 0.1.12-pre dalance@gmail.com A parallel universal-ctags wrapper for git repository
USAGE: ptags [FLAGS] [OPTIONS] [--] [DIR]
FLAGS: --config Generate configuration sample file --exclude-lfs Exclude git-lfs tracked files -h, --help Prints help information --include-ignored Include ignored files --include-submodule Include submodule files --include-untracked Include untracked files -s, --stat Show statistics --unsorted Disable tags sort --validate-utf8 Validate UTF8 sequence of tag file -V, --version Prints version information -v, --verbose Verbose mode
OPTIONS:
--bin-ctags
ARGS:
You can pass options to ctags
by-c
/--ctags_opt
option like below.
ptags -c --links=no -c --languages=Rust
Searched file types per options are below.
--include-submodule
and --include_untracked
are exclusive.
This is the restriction of git ls-files
.
Any include/exclude options without the above combination can be used simultaneously.
| File type | Default | --exclude-lfs | --include-ignored | --include-submodule | --include-untracked | | ------------- | -------- | ------------- | ----------------- | ------------------- | ------------------- | | tracked | o | o | o | o | o | | untracked | x | x | x | x | o | | ignored | x | x | o | x | x | | lfs tracked | o | x | o | o | o | | in submodules | x | x | x | o | x |
You can override any default option by ~/.ptags.toml
like below.
The complete example of ~/.ptags.toml
can be generated by --config
option.
toml
thread = 16
bin_ctags = "ctags2"
bin_git = "git2"
| Name | Repository | Revision | Files | Size[GB] | | ------- | ------------------------------------ | ------------ | ------ | -------- | | source0 | https://github.com/neovim/neovim | f5b0f5e17 | 2370 | 0.1 | | source1 | https://github.com/llvm-mirror/llvm | ddf9edb4020 | 29670 | 1.2 | | source2 | https://github.com/torvalds/linux | 071e31e254e0 | 52998 | 2.2 | | source3 | https://github.com/chromium/chromium | d79c68510b7e | 293205 | 13 |
ptags is up to x5 faster than universal-ctags.
| Command | Version | source0 | source1 | source2 | source3 |
| ------------- | ------------------------------- | --------------- | --------------- | ---------------- | --------------- |
| ctags -R
| Universal Ctags 0.0.0(f9e6e3c1) | 0.41s ( x1 ) | 3.42s ( x1 ) | 23.64s ( x1 ) | 32.23 ( x1 ) |
| ptags -t 16
| ptags 0.1.4 | 0.13s ( x3.15 ) | 0.58s ( x5.90 ) | 4.24s ( x5.58 ) | 7.27s ( x4.43 ) |