From 2e3d5630df8ce9ffacc9f03c5f7ec5327f0b9c59 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Fri, 6 Apr 2018 01:33:08 +0200 Subject: github-url: Move functions into `autoload` Improve performance by eliminating the functions from the `plugin` file. Also introduces a new `github_url#GitHubURL()` function that serves as an entry point into the plugin. Add a `g:loaded_github_url` check to prevent plugin re-sourcing and be a good Vim citizen. --- bundle/github-url/plugin/github_url.vim | 37 +++++---------------------------- 1 file changed, 5 insertions(+), 32 deletions(-) (limited to 'bundle/github-url/plugin') diff --git a/bundle/github-url/plugin/github_url.vim b/bundle/github-url/plugin/github_url.vim index 96483cb..84f6cce 100644 --- a/bundle/github-url/plugin/github_url.vim +++ b/bundle/github-url/plugin/github_url.vim @@ -1,33 +1,6 @@ -" Constructs a GitHub URL for the current Git repo by making substitutions to -" the SSH location to turn it into an HTTP URL. -function! s:BaseRepoURL() - let remote = system('git remote get-url origin') - let base_url = substitute(remote, ':', '/', '') - let base_url = substitute(base_url, '^git@', 'https://', '') - let base_url = substitute(base_url, '.git\n$', '', '') +if exists('g:loaded_github_url') + finish +endif +let g:loaded_github_url = 1 - return base_url -endfunction - -" Constructs a GitHub URL to the current file using the current HEAD's SHA. If -" lines are passed in, these are included in the URL. The `include_lines` -" argument comes from a `:command`'s ``, and tells the function whether -" a range was given. -function! s:FileURL(include_lines, start_line, end_line) - let current_sha = system('git show --format="format:%H"') - let current_sha = substitute(current_sha, '\n$', '', '') - let current_filename = expand('%') - let lines = '' - - if a:include_lines - let lines = '#L' . a:start_line - - if a:start_line != a:end_line - let lines = lines . '-L' . a:end_line - endif - endif - - return s:BaseRepoURL() . '/blob/' . current_sha . '/' . current_filename . lines -endfunction - -command! -range=0 GitHubFileURL :echo FileURL(, , ) +command! -range=0 GitHubFileURL :echo github_url#GitHubURL(, , ) -- cgit v1.2.3