npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

coc-git-p

v1.7.2

Published

Git extension for coc.nvim

Downloads

19

Readme

coc-git

Git integration of coc.nvim.

Note: many useful features not implemented, it's recommended to use plugin like vim-fugitive at the same time.

Install

In your vim/neovim, run command:

:CocInstall coc-git

Why

  • Always async.
  • Always refresh on TextChange.
  • Powerful list support.
  • Semantic commit and github issues completion support.

Features

  • Sign support for git status of current buffer.
  • Git status of current project, by g:coc_git_status.
  • Git status of current buffer, byb:coc_git_status.
  • Git status of current line, byb:coc_git_blame. used for statusline.
  • Git related lists, including issues, gfiles, gstatus, commits, branches & bcommits
  • Keymaps for git chunks, including <Plug>(coc-git-chunkinfo) <Plug>(coc-git-nextchunk) & <Plug>(coc-git-prevchunk) ,
  • Commands for chunks, including git.chunkInfo git.chunkStage git.chunkUndo and more.
  • Completion support for semantic commit.
  • Completion support for GitHub/GitLab issues.

Note for GitLab issues completion support:

  • current only API v4 support, which availabled since GitLab 9.0
  • GITLAB_PRIVATE_TOKEN=XXX needs to be set in env, check Personal access tokens
  • GitLab host needs to be set in coc-settings.json, for example "git.gitlab.hosts": ["gitlab.example.com", "gitlab.com"]

Configuration

  • git.enableGlobalStatus: Enable global g:coc_git_status, default: true.
  • git.command: Command for git, could be absolute path of git executable, default: "git".
  • git.branchCharacter: Branch character used with g:coc_git_branch, default: "".
  • git.remoteName: Remote name used for fetch github issues, default: origin.
  • git.enableGutters: Enable gutters in sign column., default: true.
  • git.realtimeGutters: Change to false when you want gutters update only on save, default: true.
  • git.signOffset: Start offset of sign gutter, change to higher value to prevent overwrite by other plugin., default: 99.
  • git.changedSign.text: Text of changed sign., default: "~".
  • git.changedSign.hlGroup: Highlight group for changed sign., default: "DiffChange".
  • git.addedSign.text: Text of added sign., default: "+".
  • git.addedSign.hlGroup: Highlight group for added sign., default: "DiffAdd".
  • git.removedSign.text: Text of removed sign., default: "_".
  • git.removedSign.hlGroup: Highlight group for removed sign., default: "DiffDelete".
  • git.topRemovedSign.text: Text of top removed sign., default: "‾".
  • git.topRemovedSign.hlGroup: Highlight group for top removed sign., default: "DiffDelete".
  • git.changeRemovedSign.text: Text of change removed sign., default: "≃".
  • git.changeRemovedSign.hlGroup: Highlight group for change removed sign., default: "DiffDelete".
  • git.virtualTextPrefix: Prefix of git blame information to virtual text, require virtual text feature of neovim. default: 5 <Space>.
  • git.addGBlameToVirtualText: Add git blame information to virtual text, require virtual text feature of neovim. default: false.
  • git.addGBlameToBufferVar: Add git blame information to b:coc_git_blame. default: false.
  • git.semanticCommit.filetypes: filetype list to enable semantic commit completion, default: ["gitcommit", "gina-commit"]
  • git.gitlab.hosts: Custom GitLab host list, defaults: ['gitlab.com']
  • coc.source.issues.enable: enable issues completion from github, default true.
  • coc.source.issues.priority: priority of issues source, default: 9.
  • coc.source.issues.shortcut: shortcut of issues source, default: "I".
  • coc.source.issues.filetypes: filetype list to enable issues source, default: ["gitcommit", "gina-commit"]

more information, see package.json

Note for user from vim-gitgutter, if your have highlight groups defined for vim-gitgutter, you can use:

"git.addedSign.hlGroup": "GitGutterAdd",
"git.changedSign.hlGroup": "GitGutterChange",
"git.removedSign.hlGroup": "GitGutterDelete",
"git.topRemovedSign.hlGroup": "GitGutterDelete",
"git.changeRemovedSign.hlGroup": "GitGutterChangeDelete",

Usage

Statusline integration

  • g:coc_git_status including git branch and current project status.
  • b:coc_git_status including changed lines of current buffer.
  • b:coc_git_blame including blame info of current line.

Example for lightline user:

" lightline
let g:lightline = {
  \ 'active': {
  \   'left': [
  \     [ 'mode', 'paste' ],
  \     [ 'ctrlpmark', 'git', 'diagnostic', 'cocstatus', 'filename', 'method' ]
  \   ],
  \   'right':[
  \     [ 'filetype', 'fileencoding', 'lineinfo', 'percent' ],
  \     [ 'blame' ]
  \   ],
  \ },
  \ 'component_function': {
  \   'blame': 'LightlineGitBlame',
  \ }
\ }

function! LightlineGitBlame() abort
  let blame = get(b:, 'coc_git_blame', '')
  " return blame
  return winwidth(0) > 120 ? blame : ''
endfunction

If you're not using statusline plugin, you can add them to statusline by:

set statusline^=%{get(g:,'coc_git_status','')}%{get(b:,'coc_git_status','')}%{get(b:,'coc_git_blame','')}

User autocmd

autocmd User CocGitStatusChange {command}

Triggered after the g:coc_git_status b:coc_git_status b:coc_git_blame has changed.

Could be used for update the statusline.

Keymaps

Create keymappings like:

" navigate chunks of current buffer
nmap [g <Plug>(coc-git-prevchunk)
nmap ]g <Plug>(coc-git-nextchunk)
" show chunk diff at current position
nmap gs <Plug>(coc-git-chunkinfo)
" show commit contains current position
nmap gc <Plug>(coc-git-commit)
" create text object for git chunks
omap ig <Plug>(coc-git-chunk-inner)
xmap ig <Plug>(coc-git-chunk-inner)
omap ag <Plug>(coc-git-chunk-outer)
xmap ag <Plug>(coc-git-chunk-outer)

Commands

Use command :CocCommand to open commands and type git. to get all git related commands.

  • :CocCommand git.copyUrl Copy url of current line to clipboard, github url supported.
  • :CocCommand git.chunkInfo Show chunk info under cursor.
  • :CocCommand git.chunkUndo Undo current chunk.
  • :CocCommand git.chunkStage Stage current chunk.
  • :CocCommand git.diffCached Show cached diff in preview window.
  • :CocCommand git.showCommit Show commit of current chunk.
  • :CocCommand git.browserOpen Open current line in browser, github url supported.
  • :CocCommand git.foldUnchanged Fold unchanged lines of current buffer.
  • :CocCommand git.toggleGutters Toggle git gutters in sign column.

Work with git lists

To open a specified coc list, you have different ways:

  • Run :CocList and select the list by <CR>.

  • Run :CocList and type name of list for completion.

  • Create keymap for open specified list with list options, like:

    nnoremap <silent> <space>g  :<C-u>CocList --normal gstatus<CR>

To toggle list mode, use <C-o> and i.

To move up&down on insertmode, use <C-j> and <C-k>

To run a action, press <tab> and select the action.

For more advance usage, checkout :h coc-list.

F.A.Q

Q: Virtual text not working.

A: Make sure your neovim support virtual text by command :echo exists('*nvim_buf_set_virtual_text').

License

MIT