All Projects → dalance → Ptags

dalance / Ptags

Licence: mit
A parallel universal-ctags wrapper for git repository

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Ptags

Ctags
A maintained ctags implementation
Stars: ✭ 4,768 (+5380.46%)
Mutual labels:  ctags, developer-tools
Dumb Jump
an Emacs "jump to definition" package for 50+ languages
Stars: ✭ 1,256 (+1343.68%)
Mutual labels:  developer-tools
Seer
🗜 A customizable devtool solution
Stars: ✭ 72 (-17.24%)
Mutual labels:  developer-tools
Catalogue
📙 Super lightweight function registries for your library
Stars: ✭ 77 (-11.49%)
Mutual labels:  developer-tools
Subethaedit
General purpose plain text editor for macOS. Widely known for its live collaboration feature.
Stars: ✭ 1,183 (+1259.77%)
Mutual labels:  developer-tools
Parse Dashboard For Ios
A beautiful mobile client for managing your Parse apps while you are on the go! Now you can easily view and modify your data in the same way you would on the offical desktop client.
Stars: ✭ 81 (-6.9%)
Mutual labels:  developer-tools
Crashreporter
Store and send crash reports directly to the devlopers
Stars: ✭ 69 (-20.69%)
Mutual labels:  developer-tools
Pric
Simple zero-config tool to create Private Certificate Authority & issue locally-trusted development server certificates with any domain names you'd like. SSL certificates for development purposes.
Stars: ✭ 87 (+0%)
Mutual labels:  developer-tools
Lighthouse Batch
Run Lighthouse analysis over multiple sites in a single command
Stars: ✭ 83 (-4.6%)
Mutual labels:  developer-tools
Cvise
Super-parallel Python port of the C-Reduce
Stars: ✭ 77 (-11.49%)
Mutual labels:  developer-tools
Gso
🏃 Google StackOverflow in Vim. Copy-pastes the code directly in your script.
Stars: ✭ 75 (-13.79%)
Mutual labels:  developer-tools
Multiwatch
Simple task runner on directory changes that doesn't produce tons of logs if everything is OK 👌
Stars: ✭ 74 (-14.94%)
Mutual labels:  developer-tools
React Builder
⚙ A GUI tool to build your react app in the fastest way with all components and pages with routing.
Stars: ✭ 82 (-5.75%)
Mutual labels:  developer-tools
Gulp Develop Server
Development assistant for node.js server by gulp
Stars: ✭ 72 (-17.24%)
Mutual labels:  developer-tools
Cacher Cli
The command line interface to Cacher.
Stars: ✭ 85 (-2.3%)
Mutual labels:  developer-tools
Laboratory
Achieving confident refactoring through experimentation with Python 2.7 & 3.3+
Stars: ✭ 1,179 (+1255.17%)
Mutual labels:  developer-tools
Xgist
Xcode extension to send code to GitHub's Gist
Stars: ✭ 75 (-13.79%)
Mutual labels:  developer-tools
Vista.vim
🌵 Viewer & Finder for LSP symbols and tags
Stars: ✭ 1,218 (+1300%)
Mutual labels:  ctags
Swiff
💁 Command line tools for common local ↔ remote server tasks.
Stars: ✭ 87 (+0%)
Mutual labels:  developer-tools
Xh
Friendly and fast tool for sending HTTP requests
Stars: ✭ 1,264 (+1352.87%)
Mutual labels:  developer-tools

ptags

A parallel universal-ctags wrapper for git repository

Actions Status Crates.io codecov

Description

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

Install

Download binary

Download from release page, and extract to the directory in PATH.

Arch Linux

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

Cargo

You can install by cargo.

cargo install ptags

Requirement

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

Usage

ptags 0.1.12-pre
[email protected]
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 <bin_ctags>           Path to ctags binary [default: ctags]
        --bin-git <bin_git>               Path to git binary [default: git]
        --completion <completion>         Generate shell completion file [possible values: bash, fish,
                                          zsh, powershell]
    -e, --exclude <exclude>...            Glob pattern of exclude file ( ex. --exclude '*.rs' )
    -c, --opt-ctags <opt_ctags>...        Options passed to ctags
    -g, --opt-git <opt_git>...            Options passed to git
        --opt-git-lfs <opt_git_lfs>...    Options passed to git-lfs
    -f, --file <output>                   Output filename ( filename '-' means output to stdout ) [default: tags]
    -t, --thread <thread>                 Number of threads [default: 8]

ARGS:
    <DIR>    Search directory [default: .]

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.

thread = 16
bin_ctags = "ctags2"
bin_git = "git2"

Benchmark

Environment

  • CPU: Ryzen Threadripper 1950X
  • MEM: 128GB
  • OS : CentOS 7.4.1708

Data

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

Result

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 )
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].