Comments (10)
FugitiveGitDir()
handles all of that. You can just do
function! s:git_dir() abort
return FugitiveGitDir()
endfunction
from gv.vim.
Thanks, tpope.
You created the issue, so feel free to create a PR that removes s:git_dir()
entirely and replaces its single use by FugitiveGitDir()
. :)
from gv.vim.
Perhaps it is because I often invoke GV from an empty buffer and there was a change in fugitive:
@@ -181,6 +181,8 @@ function! FugitiveExtractGitDir(path) abort
let path = s:Slash(a:path)
if path =~# '^fugitive:'
return matchstr(path, '\C^fugitive:\%(//\)\=\zs.\{-\}\ze\%(//\|::\|$\)')
+ elseif empty(path)
+ return ''
elseif isdirectory(path)
let path = fnamemodify(path, ':p:s?/$??')
from gv.vim.
Something like this works, but I'm sure there is a better way:
function! s:git_dir()
if empty(get(b:, 'git_dir', ''))
let l:gdir = fugitive#extract_git_dir(expand('%:p'))
if empty(l:gdir)
let l:gpath = './.git'
if isdirectory(l:gpath)
return l:gpath
endif
endif
return l:gdir
endif
return b:git_dir
endfunction
from gv.vim.
There will be two issues though:
- It only works if you're in the root of the repo.
- It will show
.
instead of the repo name in the statusline.
But the general approach is correct. So, maybe...
function! s:git_dir()
if !empty(get(b:, 'git_dir', ''))
return b:git_dir
endif
let git_dir = finddir('.git', expand('%').';')
if !empty(git_dir)
let b:git_dir = fnamemodify(git_dir, ':p:s?/$??')
return b:git_dir
endif
return ''
endfunction
Other parts of the code use b:git_dir
, so I just set it directly here. Might not be needed, though.
from gv.vim.
@mhinz awesome, thanks. Should you or I create a PR for this ?
I might still use fugitive#extract_git_dir(expand('%:p')), and only if that is empty then do your finddir code above ?
from gv.vim.
FugitiveGitDir()
works in empty buffers now. For all intents and purposes fugitive#extract_git_dir()
is deprecated.
from gv.vim.
ok, thank you @tpope.
So I can just do:
function! s:git_dir()
if !empty(get(b:, 'git_dir', ''))
return b:git_dir
endif
let b:git_dir = FugitiveGitDir()
return b:git_dir
endfunction
from gv.vim.
cool
from gv.vim.
PR #70 created.
Thank you everyone.
from gv.vim.
Related Issues (20)
- :GV outputs Unkown function: FugitiveShellCommand HOT 2
- Syntax is gone after FileType autocmd HOT 2
- Error `no previous directory` HOT 1
- How to open a commit with diffview.nvim? HOT 2
- Highlight log line that is currently open (or the last opened)
- :w creates a file named `p --graph` HOT 2
- fugitive#repo().tree() has been replaced by FugitiveFind(":/") HOT 1
- Fix tab completion with latest Fugitive HOT 2
- Reverse range in character class HOT 1
- Using <q> to quit disables command history editing <q-:> HOT 1
- Cursor cannot move over some commits HOT 1
- Question: fill location list with list of revisions passed as argument HOT 1
- reverse the commit order HOT 1
- Diff command/pager settings HOT 2
- Use author rather than commiter HOT 2
- :Gbrowse is deprecated in favor of :GBrowse, fix it to GBrowse? HOT 1
- Add mapping to open commit in preview window HOT 1
- VIRA-283: Syntax for code highlighting
- [Question] is it possible to auto show diff and changed files like agit.vim?
- Error after fugitive update
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gv.vim.