Compare commits

..

No commits in common. "master" and "v0.0.3" have entirely different histories.

4 changed files with 13 additions and 129 deletions

View File

@ -12,26 +12,10 @@ with a .cpp or .h file as filename to open a new tab containing a vertical split
with the corresponding header file in the left window and the corresponding with the corresponding header file in the left window and the corresponding
source file in the right window. source file in the right window.
Use
:Split
to open the corresponding header or source file to your currently open file in
a vertical split.
## Configuration ## Configuration
You can configure the following settings: You can configure the following settings:
### g:splitopen_extensions
Use this dictionary to define your pairs of left-hand- right-hand-side file
types. E.g.
let g:splitopen_extensions = {"h": "cpp"}
always places a .cpp file on the right-hand side when opening an .h file and
vice versa.
### g:splitopen_set_fzf_keys ### g:splitopen_set_fzf_keys
@ -48,15 +32,6 @@ SplitOpen is GPL-3.0 licensed. See LICENSE file for more info.
## Changelog ## Changelog
v1.1.0
* Added Split() command
v1.0.0
* Fixed error when reloading plugin
v0.0.4
* Add filetype configuraton
v0.0.3 v0.0.3
* Add fzf.vim keybinding * Add fzf.vim keybinding

View File

@ -1,68 +1,11 @@
function s:invert_dict(source_dict) function splitopen#SplitOpenFile(filename)
let result = {}
for [key, value] in items(a:source_dict)
let result[value] = key
endfor
return result
endfunction
let s:extensions = g:splitopen_extensions
let s:extensions_rev = s:invert_dict(s:extensions)
function s:isLeftSideExtension(extension)
return has_key(s:extensions, a:extension)
endfunction
function s:isRightSideExtension(extension)
return has_key(s:extensions_rev, a:extension)
endfunction
function s:getFileExtension(filename)
return fnamemodify(a:filename, ":e")
endfunction
function s:getFileRoot(filename)
return fnamemodify(a:filename, ":r")
endfunction
function s:getSwitchExtension(filename)
let extension = s:getFileExtension(a:filename)
if s:isLeftSideExtension(extension)
return s:extensions[extension]
elseif s:isRightSideExtension(extension)
return s:extensions_rev[extension]
endif
endfunction
function s:getSwitchFile(filename)
return s:getFileRoot(a:filename) . "." . s:getSwitchExtension(a:filename)
endfunction
function s:addLeftSplit(filename)
execute("vsplit " . s:getSwitchFile(a:filename))
execute("wincmd l")
endfunction
function s:addRightSplit(filename)
execute("vsplit " . s:getSwitchFile(a:filename))
execute("wincmd L")
execute("wincmd h")
endfunction
function s:splitOpenFile(filename)
let extension = s:getFileExtension(a:filename)
if s:isLeftSideExtension(extension)
call s:addRightSplit(a:filename)
elseif s:isRightSideExtension(extension)
call s:addLeftSplit(a:filename)
endif
endfunction
function! splitopen#SplitOpenFile(filename)
execute("tabedit " . a:filename) execute("tabedit " . a:filename)
call s:splitOpenFile(a:filename) let l:file_extension = tolower(fnamemodify(a:filename, ":e"))
endfunction if l:file_extension == "cpp"
execute("FSSplitLeft")
function! splitopen#SplitFile() execute("wincmd l")
call s:splitOpenFile(expand("%:p")) elseif l:file_extension == "h"
execute("FSSplitRight")
execute("wincmd h")
endif
endfunction endfunction

View File

@ -5,8 +5,7 @@ CONTENTS *SplitOpenContents*
1. Usage ..............................|SplitOpenUsage| 1. Usage ..............................|SplitOpenUsage|
2. Configuration ......................|SlitOpenConfiguraton| 2. Configuration ......................|SlitOpenConfiguraton|
2.1 g:splitopen_extensions.........|SplitOpenConfiguration_extensions| 2.1 g:splitopen_set_fzf_keys.......|SplitOpenConfiguration_set_fzf_keys|
2.2 g:splitopen_set_fzf_keys.......|SplitOpenConfiguration_set_fzf_keys|
3. License ............................|SplitOpenLicense| 3. License ............................|SplitOpenLicense|
4. Changelog ..........................|SplitOpenChangelog| 4. Changelog ..........................|SplitOpenChangelog|
@ -21,31 +20,14 @@ with a .cpp or .h file as filename to open a new tab containing a vertical split
with the corresponding header file in the left window and the corresponding with the corresponding header file in the left window and the corresponding
source file in the right window. source file in the right window.
Use
:Split
to open the corresponding header or source file to your currently open file in
a vertical split.
================================================================================ ================================================================================
2. Configuration *SplitOpenConfiguration* 2. Configuration *SplitOpenConfiguration*
You can configure the following settings: You can configure the following settings:
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
2.1 g:splitopen_extensions *SplitOpenConfiguration_extensions*
Use this dictionary to define your pairs of left-hand- right-hand-side file 2.1 g:splitopen_set_fzf_keys *SplitOpenConfiguration_set_fzf_keys*
types. E.g.
let g:splitopen_extensions = {"h": "cpp"}
always places a .cpp file on the right-hand side when opening an .h file and
vice versa.
--------------------------------------------------------------------------------
2.2 g:splitopen_set_fzf_keys *SplitOpenConfiguration_set_fzf_keys*
Set this option to 1 Set this option to 1
@ -62,12 +44,6 @@ SplitOpen is GPL-3.0 licensed. See LICENSE file for more info.
================================================================================ ================================================================================
4. Changelog *SplitOpenChangelog* 4. Changelog *SplitOpenChangelog*
v1.1.0
* Added Split() command
v1.0.0
* Fixed error when reloading plugin
v0.0.4
* Add filetype configuraton
v0.0.3 v0.0.3
* Add fzf.vim keybinding * Add fzf.vim keybinding
v0.0.2 v0.0.2

View File

@ -1,13 +1,4 @@
command! -nargs=1 SplitOpen :call splitopen#SplitOpenFile("<args>") command -nargs=1 SplitOpen :call splitopen#SplitOpenFile("<args>")
command! Split :call splitopen#SplitFile()
" map left-split / right-split file extensions
if !exists("g:splitopen_extensions")
let g:splitopen_extensions = {
\ "h": "cpp",
\ "H": "CPP",
\ }
endif
if !exists('g:splitopen_set_fzf_keys') if !exists('g:splitopen_set_fzf_keys')
let g:splitopen_set_fzf_keys = 0 let g:splitopen_set_fzf_keys = 0
@ -18,6 +9,5 @@ if g:splitopen_set_fzf_keys
\ 'ctrl-s': 'SplitOpen', \ 'ctrl-s': 'SplitOpen',
\ 'ctrl-t': 'tab split', \ 'ctrl-t': 'tab split',
\ 'ctrl-x': 'split', \ 'ctrl-x': 'split',
\ 'ctrl-v': 'vsplit', \ 'ctrl-v': 'vsplit' }
\ }
endif endif