Giter Club home page Giter Club logo

coc-git's Introduction

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 for statusline, and addGBlameToVirtualText for inline blames.
  • 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.
  • Keymaps for git conflicts, including <Plug>(coc-git-nextconflict), <Plug>(coc-git-prevconflict), <Plug>(coc-git-keepcurrent), <Plug>(coc-git-keepincoming) & <Plug>(coc-git-keepboth).
  • Completion support for semantic commit.
  • Completion support for GitHub/GitLab issues.

Note for GitHub issues completion support:

  • GITHUB_API_TOKEN=xxx needs to be set in env to fetch issues from private repositories

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.command: Command for git, could be absolute path of git executable., default: "git"

  • git.remoteName: Remote name for fetch github issues., default: "origin"

  • git.browserRemoteName: Remote name for browserOpen and copyUrl., default: ""

  • git.browserBranchName: Branch name for browserOpen and copyUrl., default: ""

  • git.urlFix: a object to configure the url style of copyUrl and browserOpen, make this two command support other git services like gitlab and gitea. default: {}

  • git.issueFormat: Formatting string for issue completion. Supported interpolation variables: %i - issue id. %r - repository name. %o - organization/owner name. %t - issue title. %b - issue body. %c - issue created at. %a - issue author. %u - issue url., default: "#%i"

  • git.virtualTextPrefix: Prefix of git blame infomation to virtual text, require virtual text feature of neovim., default: " "

  • 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.branchCharacter: Branch character used with g:coc_git_status, default: ""

  • git.changedDecorator: Git changed decorator used with g:coc_git_status, default: "*"

  • git.conflictedDecorator: Git conflicted decorator used with g:coc_git_status, default: "x"

  • git.stagedDecorator: Git staged decorator used with g:coc_git_status, default: "●"

  • git.untrackedDecorator: Git untracked decorator used with g:coc_git_status, default: "…"

  • git.enableGlobalStatus: Enable global g:coc_git_status., default: true

  • git.enableGutters: Enable gutters in sign column., default: true

  • git.realtimeGutters: Update gutters in realtime, default: true., default: true

  • git.signPriority: Priority of sign gutters, default to 10.

  • 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: "DiffChange"

  • git.semanticCommit.filetypes: Enabled filetypes, default: ["gitcommit","gina-commit"]

  • git.semanticCommit.scope: Commit message with scope field, default: true

  • git.splitWindowCommand: Command used when split new window for show commit., default: "above sp"

  • git.showCommitInFloating: Show commit in floating or popup window, default: false

  • git.floatConfig: Configure style of float window/popup, extends from floatFactory.floatConfig

  • git.gitlab.hosts: Custom GitLab hosts, default: ["gitlab.com"]

  • git.conflict.enabled: Enable highlight conflict lines, default: true

  • git.conflict.current.hlGroup: Highlight group for the current version of a merge conflict, default: "DiffChange"

  • git.conflict.incoming.hlGroup: Highlight group for the incoming version of a merge conflict., default: "DiffAdd"

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",

When you have git.addGBlameToVirtualText enabled, use command let g:coc_git_hide_blame_virtual_text = !get(g:, 'coc_git_hide_blame_virtual_text', 0) to dynamic toggle virtual text.

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)
" navigate conflicts of current buffer
nmap [c <Plug>(coc-git-prevconflict)
nmap ]c <Plug>(coc-git-nextconflict)
" 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
  • :CocCommand git.chunkInfo Show chunk info under cursor.
  • :CocCommand git.chunkUndo Undo current chunk.
  • :CocCommand git.chunkStage Stage current chunk.
  • :CocCommand git.chunkUnstage Unstage chunk that contains current line.
  • :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
  • :CocCommand git.foldUnchanged Fold unchanged lines of current buffer.
  • :CocCommand git.toggleGutters Toggle git gutters in sign column.
  • :CocCommand git.push push code of current branch to remote.

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.

Issue autocomplete from multiple GitHub repositories

To enable autocompletion of issues from multiple GitHub repositories, put a comma-separated list of issue repository specifiers in the git config variable coc-git.issuesources. An issue repository specifier looks like this: github/neoclide/coc-git.

  • The first part specifies the issue provider, currently only "github" is supported
  • The second part specifies the organization or owner of the repository
  • The third part specifies the repository name

Multiple repositories can be specified using comma separation, like this: github/neoclide/coc-git,github/neoclide/coc.nvim

F.A.Q

Q: Virtual text not working.

A: Make sure your neovim/vim support virtual text by command :echo has('nvim-0.5.0') || has('patch-9.0.0067').

Supporting

If you like my extension, consider supporting me on Patreon or PayPal:

Patreon donate button PayPal donate button

License

MIT

coc-git's People

Contributors

antoinemadec avatar black-desk avatar chemzqm avatar fannheyward avatar gdzx avatar happylinks avatar hjylewis avatar hlidotbe avatar iamcco avatar indexxuan avatar joosepalviste avatar maswor avatar mdedonno1337 avatar micke avatar omjadas avatar paprende avatar pierrecapo avatar rcarriga avatar sandangel avatar sdroege avatar sigvef avatar tlvince avatar tobiwild avatar vegerot avatar voldikss avatar weirongxu avatar xingyibiao avatar yannham avatar yaocccc avatar ytian81 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coc-git's Issues

`gstatus` with auto-preview failed if there is a new ADD file

  1. CocList --auto-preview --normal gstatus
  2. git status lists in coc-list, for example:
~ A
~ B
+ C
  1. auto-preview shows diff of A, It's OK
  2. j move to B, auto-preview is OK
  3. j again to C, auto-preview is broken.
  4. k to B, auto-preview is still broken.

Thanks for your work, COC becomes more and more great, again and again :D

Blame Info Not Working

I've got neovim and coc configured with:

  "git.addGlameToVirtualText": true,
  "git.addGlameToBufferVar": true,

However I'm not getting any virtual text nor is b:coc_git_blame being set.
Happy to help debug, but don't know where to start.
Thanks!

Text object

This looks like an error in the docs:

" create text object for git chunks
omap ig <Plug>(coc-text-object-inner)
xmap ig <Plug>(coc-text-object-inner)
omap ig <Plug>(coc-text-object-outer)
xmap ig <Plug>(coc-text-object-outer)

Is (coc-text-object-outer) the right definition? It doesn't work, and it is very suspicious that the name is so generic. Is this a mistake?

Possible typo

- git.addGlameToBufferVar
+ git.addGBlameToBufferVar

Github issue shortcut is not shown

  • Output from :CocInfo
## versions

vim version: NVIM v0.4.0-dev
node version: v10.15.3
coc.nvim version: 0.0.68
term: xterm-256color
platform: linux

## Error messages

## Output channel: snippets


## Output channel: highlight

[Info  - 18:31:57] Highlight server running in node v10.15.3

  • Problem

shortcut "I" 显示不出来

2019-06-02 18-36-55 的屏幕截图

大佬有遇到这个问题吗

Customizable formatting for issue autocompletion

Hi! I'd like to contribute a simple optional formatting option for issue autocompletion. This could allow for automatic insertion of common phrases used when writing commit messages. A typical use case for me would be to have the autocomplete selection insert "This fixes #123." instead of just "#123".

Disable vim folds on floating chunk info

The chunk info floating win opens with closed folds in some cases.

I have been able to get around this by adding this autocmd, but it seems like a sensible default to me:

autocmd User CocOpenFloat if exists('w:float') | setl nofloatenable | endif

Here is what it looks like without the autocmd:
coc-git-float

Gitgutter displays it properly so I don't think it's a global configuration issue.

coc-git doesn't work on Windows

在 Windows 上面,这里的 p 的路径分隔符是 /,而 fullpath 的路径分隔符是 \,所以总是对不上,获取不到根目录

coc-git/src/resolver.ts

Lines 8 to 13 in 43f3ed2

public getGitRoot(fullpath: string): string | null {
for (let p of this.resolvedRoots) {
if (fullpath.toLowerCase().startsWith(p.toLowerCase())) return p
}
return null
}

Running chunkStage with repeat is completely broken

I currently have this mapping:

nmap <leader>hs :CocCommand git.chunkStage<cr>

And I will run through a file and run <leader>hs to begin staging chunks and repeat with . for all subsequent chunks I want to stage.

However doing this for even basic cases seems to be completely broken and coc seems to perform random edits in the buffer when performing .

Autocomplete issues from other repos

Hi. Can we support autocompletion of GitHub issues from other repositories than the current workspace git repository?

As an example: if working on the frontend repository for a project, it would be nice to write a commit message referencing the backend repository using autocompletion of issues, e.g. ".. This is now possible since Companyname/backend#832 was solved."

I'd be happy to create a pull request with an implementation, but would like some input on where you'd want to store which repositories should be searched. Some possible options:

  • in .git
  • in a file in the repo
  • in coc config

Coc.nvim and its plugins are great, thank you for your efforts!

Background color doesn't match

The gutter changes are displayed in a different background color (as opposed to other signs in the gutter such as eslint or typescript errors):

image

Any idea what might causing it? That's my coc-settings.json:

{
   "coc.preferences.formatOnSaveFiletypes":[  
      "css",
      "Markdown",
      "javascript",
      "javascriptreact",
      "typescript",
      "json"
   ],
   "javascript.suggest.enabled":false,
   "suggest.autoTrigger":"none",
}

Git chunk not shows up in diff window.

Hi,
when I display the diff of my file using vim-fugitive, the window on the left (the previous commit) does not display git chunk, only the window on the right (the working area) display git chunk.

Therefore I can not navigate around with shortcut with chunk in the default left window.
Screenshot 2019-12-27 at 17 59 26

Previous I use Signify and the navigation with chunks works fine on both windows.
I don't know if this is a bug or is there any config that enable git chunk on both of them?

Thank you for your work.

addGlameToBufferVar Deprecated

Getting error that addGlameToBufferVar is deprecated. Trying to find out if its being replaced with something or if I should use something else?

git command failed on Windows Command Line

单引号和双引号在 CMD 的表现是不同的,比如用 git show 'testfile' 会报错,但是 git show "testfile" 可以成功显示内容。(powershell 单双都能显示)

所以貌似这里 escape 用的单引号得不到内容

let res = await safeRun(`git --no-pager show ${shellescape(':' + file)}`, { cwd: root })

Refresh when refocussing window after CLI `git commit`

I'm still in the habit of commit on the command line in a separate pane, so when I come back to vim after committing the gutters are still there which often confuses as I mistakenly think that I left that file out of my git add. Is it possible to have another hook to update the gutters for this case?

Gruvbox specific default highlight groups

The following should be changed:

from colorscheme specific defaults:

git.changedSign.hlGroup:Highlight group for changed sign., default: "GruvboxAquaSign"
git.addedSign.hlGroup:Highlight group for added sign., default: "GruvboxGreenSign"
git.removedSign.hlGroup:Highlight group for removed sign., default: "GruvboxRedSign"
git.topRemovedSign.hlGroup:Highlight group for top removed sign., default: "GruvboxRedSign"
git.changeRemovedSign.hlGroup:Highlight group for change removed sign., default: "GruvboxPurpleSign"

to generic defaults:

"git.addedSign.hlGroup"                 : [ "DiffAdd" ],
"git.changedSign.hlGroup"               : [ "DiffChange" ],
"git.changeRemovedSign.hlGroup"         : [ "DiffChange" ],
"git.removedSign.hlGroup"               : [ "DiffDelete" ],
"git.topRemovedSign.hlGroup.hlGroup"    : [ "DiffDelete" ],

Toggle command

Is it possible to toggle the gutter as with :GitGutterTooggle?

Support for symlinks?

Plugins like gitgutter are able to provide git information with a file that was symlinked outside of its project directory. Is this something you can support?

New feature request: like GitGutterFold

Hello , thank you for provide so many pretty plugins, I like coc very much.
These days I start to try coc-git, but haven`t found the function: :GitGutterFold,
could you pls support this? thank you very much!

a lot of CPU usage on many files (not in repo)

coc git uses a lot of CPU on many files (that are not committed to repo) git ls-files --others --exclude-standard, here is CocInfo:

## versions

vim version: NVIM v0.4.0-dev
node version: v10.16.0
coc.nvim version: 0.0.73-8b9b7d83a6
term: tmux-256color
platform: linux

## Messages
"tools/train_.py" 424L, 12726C
"tools/train_.py" 424 lines --49%--
## Output channel: prettier


## Output channel: git

Looking for git in: git
> git rev-parse --show-toplevel
resolved root: /home/hovnatan/work/dram
> git ls-files -- tools/train_.py
resolved root: /home/hovnatan/work/dram
> git symbolic-ref --short HEAD
> git --no-pager show :tools/train_dramlenta.py
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard
> git diff /home/hovnatan/work/dram/tools/train_.py
resolved root: /home/hovnatan/work/dram
resolved root: /home/hovnatan/work/dram
> git symbolic-ref --short HEAD
> git ls-files -- tools/train_dramlenta.py
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard
> git --no-pager show :tools/train_dramlenta.py
> git diff /home/hovnatan/work/dram/tools/train_.py
resolved root: /home/hovnatan/work/dram
resolved root: /home/hovnatan/work/dram
> git symbolic-ref --short HEAD
> git ls-files -- tools/train_dramlenta.py
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard
> git --no-pager show :tools/train_dramlenta.py
> git diff /home/hovnatan/work/dram/tools/train_.py
resolved root: /home/hovnatan/work/dram
resolved root: /home/hovnatan/work/dram
> git symbolic-ref --short HEAD
> git ls-files -- tools/train_.py
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard
> git --no-pager show :tools/train_.py
> git diff /home/hovnatan/work/dram/tools/train_.py
resolved root: /home/hovnatan/work/dram
resolved root: /home/hovnatan/work/dram
> git symbolic-ref --short HEAD
> git ls-files -- tools/train_.py
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard
> git --no-pager show :tools/train_dramlenta.py
> git diff /home/hovnatan/work/dram/tools/train_.py
resolved root: /home/hovnatan/work/dram
resolved root: /home/hovnatan/work/dram
> git symbolic-ref --short HEAD
> git ls-files -- tools/train_.py
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard
> git --no-pager show :tools/train_.py
> git diff /home/hovnatan/work/dram/tools/train_.py
resolved root: /home/hovnatan/work/dram
resolved root: /home/hovnatan/work/dram
> git symbolic-ref --short HEAD
> git ls-files -- tools/train_.py
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard
> git --no-pager show :tools/train_dramlenta.py
> git diff /home/hovnatan/work/dram/tools/train_.py

## Output channel: Python

Starting Jedi Python language engine.
##########Linting Output - pylint##########

## Output channel: highlight

[Info  - 3:31:50 PM] Highlight server running in node v10.16.0

How to map undo chunk

I tried these:

nmap <leader>u <Plug>(coc-git-chunkundo)
nmap <leader>u <Plug>(coc-git-chunkUndo)
nmap <leader>u <Plug>(coc-git.chunkUndo)

[coc.nvim] error: UnhandledRejection: TypeError: Cannot read property 'bufnr' of null #1278

Moving neoclide/coc.nvim#1278 here because I can only reproduce it with coc-git.

Temporary fix is to patch coc-git release with:

--- lib/index.js.orig   2020-01-22 00:01:08.806144997 -0300
+++ lib/index.js        2020-01-21 17:58:31.012656259 -0300
@@ -4459,6 +4459,7 @@
     }
     diffDocument(doc, init = false) {
         return __awaiter(this, void 0, void 0, function* () {
+            if (doc == null) return;
             let { nvim } = coc_nvim_1.workspace;
             let repo = yield this.getRepo(doc.bufnr);
             if (!repo)

Which corresponds to change this part of the code:

let repo = await this.getRepo(doc.bufnr)

Please check original issue for additional logs and other user reports.

Committing using fugitive

When committing with fugitive the gutter for the buffer that was committed won't automatically update. I need to navigate to the buffer for it to update.

Can we listen for a call from fugitive or can we get a command to update all buffers?
I think this is how they solved it in vim-gitgutter airblade/vim-gitgutter@e608bff

toggle blame feature

Is it possible to toggle the display of the blame line?
I have enabled it in the settings with "git.addGBlameToVirtualText": true but I can't find anything to toggle it inside of files.

Diff against remote rather than local

Hello there,

Is it possible to see the diff (diff symbols inside the documents) against origin rather than against the latest local commit?
Sometimes I would like to see what I changed relatively to the remote branch, would be nice to have a toggling option for that?

Git gutters not working at all

init.vim:

call plug#begin('/tmp/nvim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()

CocInfo:

## versions

vim version: NVIM v0.4.3
node version: v12.13.1
coc.nvim version: 0.0.74-d83536aa4e
term: tmux-256color
platform: linux

## Messages
[coc.nvim] We encountered an issue downloading the Language Server. Reverting to the alternative, Jedi. Check the Python output panel for details. checkout output for detail.
## Output channel: git

Looking for git in: git
> git rev-parse --show-toplevel
resolved root: /data/home/..repo
> git ls-files -- somefile.py
resolved root: /data/home/...repo
> git symbolic-ref --short HEAD
> git diff --name-status
> git diff --staged --name-status
> git ls-files --others --exclude-standard

Everything looks healthy, but nothing is showing up at all in the gutter

Incorrect signs shown on Windows 10 + Neovim

On a git repository in Windows 10, I ensure the working tree is clean (git status). If I open up a small file in the repo no signs are shown (correct) and the changes I make are reflected in the signs correctly. If I open my coc-settings.json (a larger file in the same repository) the signs are meaningless.

See the below screenshot, this is on a clean working tree with no changes:
image

Please let me know how I can help you debug this, any logging I can share? Thanks.

Comparison to fugitive

Thanks for the great work on CoC!

I'm trying to work whether to switch from fugitive.

Could you please point out the similarities and differences between this plugin and vim-fugitive?

Enabling the gutter signs slows down Vim movement keys

This plugin appears to be redrawing the gutter signs constantly, pretty much after any key-press.

Personally, I find that a pain as it slows down the movement keys in Vim. I am noticing a real lag when moving around a file, or even when typing in insert-mode

I'm a user coming from vim-gitgutter. In that plugin, I had the same issue too. But luckily that plugin had some settings you could turn off, effectively making it so signs are only updated when the buffer is written:

let g:gitgutter_eager = 0
let g:gitgutter_realtime = 0

That way typing-performance is not impacted at all.

I can't see any such settings for this plugin. If there isn't any, can such settings be added?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.