Skip to content

Commit

Permalink
Merge pull request #4 from lambdalisue/fix-performance
Browse files Browse the repository at this point in the history
Fix performance issue on 'node_modules'
  • Loading branch information
lambdalisue authored Aug 12, 2020
2 parents e9744d6 + 5d46e29 commit 516fc39
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 7 deletions.
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,24 @@ For example, single `-` on right side means that the directory contains some wor

See `:help fern-git-status-highlight` to customize the colors.

## Performance

Disable one by one if you face a performance issue.

```vim
" Disable listing ignored files/directories
let g:fern_git_status#disable_ignored = 1
" Disable listing untracked files
let g:fern_git_status#disable_untracked = 1
" Disable listing status of submodules
let g:fern_git_status#disable_submodules = 1
" Disable listing status of directories
let g:fern_git_status#disable_directories = 1
```

## See also

- [fern-mapping-git.vim](https://github.com/lambdalisue/fern-mapping-git.vim) - Add git related mappings
4 changes: 2 additions & 2 deletions autoload/fern_git_status.vim
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ function! s:on_redraw(helper) abort
return
endif
let options = {
\ 'include_ignores': !g:fern_git_status#disable_ignores,
\ 'include_ignored': !g:fern_git_status#disable_ignored,
\ 'include_untracked': !g:fern_git_status#disable_untracked,
\ 'include_submodules': !g:fern_git_status#disable_submodules,
\ 'include_directories': !g:fern_git_status#disable_directories,
Expand Down Expand Up @@ -78,7 +78,7 @@ function! s:handle_error(err) abort
call fern#logger#error(a:err)
endfunction

let g:fern_git_status#disable_ignores = get(g:, 'fern_git_status#disable_ignores', 0)
let g:fern_git_status#disable_ignored = get(g:, 'fern_git_status#disable_ignored', 0)
let g:fern_git_status#disable_untracked = get(g:, 'fern_git_status#disable_untracked', 0)
let g:fern_git_status#disable_submodules = get(g:, 'fern_git_status#disable_submodules', 0)
let g:fern_git_status#disable_directories = get(g:, 'fern_git_status#disable_directories', 0)
Expand Down
4 changes: 2 additions & 2 deletions autoload/fern_git_status/investigator.vim
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ endfunction

function! s:get_status(helper, options) abort
let options = extend({
\ 'include_ignores': 0,
\ 'include_ignored': 0,
\ 'include_untracked': 0,
\ 'include_submodules': 0,
\}, a:options,
Expand All @@ -56,7 +56,7 @@ function! s:get_status(helper, options) abort
let token = source.token
return fern_git_status#process#status(root, token, {
\ 'paths': paths,
\ 'include_ignores': options.include_ignores,
\ 'include_ignored': options.include_ignored,
\ 'include_untracked': options.include_untracked,
\ 'include_submodules': options.include_submodules,
\})
Expand Down
12 changes: 9 additions & 3 deletions autoload/fern_git_status/process.vim
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,26 @@ endfunction
function! fern_git_status#process#status(root, token, options) abort
let options = extend({
\ 'paths': [],
\ 'include_ignores': 0,
\ 'include_ignored': 0,
\ 'include_untracked': 0,
\ 'include_submodules': 0,
\}, a:options,
\)
let args = [
\ 'git', '-C', a:root, 'status', '--porcelain',
\ options.include_ignores ? '--ignored' : '',
\ options.include_untracked ? '-uall' : '',
\ options.include_ignored
\ ? options.include_untracked
\ ? '--ignored=matching'
\ : '--ignored=traditional'
\ : '--ignored=no',
\ options.include_untracked ? '-uall' : '-uno',
\ options.include_submodules
\ ? '--ignore-submodules=none'
\ : '--ignore-submodules=all',
\]
let args = args + ['--'] + options.paths
let args = filter(args, '!empty(v:val)')

let Profile = fern#profile#start('fern_git_status#process#status')
return s:Process.start(args, {
\ 'toekn': a:token,
Expand All @@ -55,5 +60,6 @@ endfunction
function! s:parse_status(record) abort
let status = a:record[:1]
let relpath = split(a:record[3:], ' -> ')[-1]
let relpath = relpath[-1:] ==# '/' ? relpath[:-2] : relpath
return [relpath, status]
endfunction
1 change: 1 addition & 0 deletions doc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
tags

0 comments on commit 516fc39

Please sign in to comment.