mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 22:00:07 +08:00
589 lines
20 KiB
Plaintext
589 lines
20 KiB
Plaintext
|
Describe gina#core#buffer
|
||
|
Before all
|
||
|
let Path = vital#gina#import('System.Filepath')
|
||
|
let is_windows = has('win32') || has('win64')
|
||
|
" columns: 120 in docker
|
||
|
let g:gina#core#locator#winwidth_threshold = 20
|
||
|
" lines: 23 in docker
|
||
|
let g:gina#core#locator#winheight_threshold = 10
|
||
|
End
|
||
|
|
||
|
After all
|
||
|
%bwipeout!
|
||
|
End
|
||
|
|
||
|
Before
|
||
|
%bwipeout!
|
||
|
End
|
||
|
|
||
|
Describe #bufname({git}, {scheme} [, {options}])
|
||
|
Before
|
||
|
let git = {'refname': 'valid'}
|
||
|
End
|
||
|
|
||
|
It returns a shortest path for the specified params
|
||
|
Assert Equals(gina#core#buffer#bufname(git, 'status'), 'gina://valid:status')
|
||
|
Assert Equals(gina#core#buffer#bufname(git, 'commit', {
|
||
|
\ 'params': ['amend'],
|
||
|
\}),
|
||
|
\'gina://valid:commit:amend'
|
||
|
\)
|
||
|
Assert Equals(gina#core#buffer#bufname(git, 'show', {
|
||
|
\ 'path': 'README.md',
|
||
|
\}),
|
||
|
\'gina://valid:show/:README.md'
|
||
|
\)
|
||
|
Assert Equals(gina#core#buffer#bufname(git, 'diff', {
|
||
|
\ 'rev': 'origin/HEAD',
|
||
|
\ 'path': 'README.md',
|
||
|
\}),
|
||
|
\'gina://valid:diff/origin/HEAD:README.md'
|
||
|
\)
|
||
|
Assert Equals(gina#core#buffer#bufname(git, 'changes', {
|
||
|
\ 'rev': 'origin/HEAD...',
|
||
|
\}),
|
||
|
\'gina://valid:changes/origin/HEAD...'
|
||
|
\)
|
||
|
|
||
|
End
|
||
|
|
||
|
It returns an Unix-like path (separate with '/' rather than '\') always
|
||
|
Assert Equals(gina#core#buffer#bufname(git, 'show', {
|
||
|
\ 'path': 'autoload\gina\core.vim',
|
||
|
\}),
|
||
|
\'gina://valid:show/:autoload/gina/core.vim'
|
||
|
\)
|
||
|
Assert Equals(gina#core#buffer#bufname(git, 'diff', {
|
||
|
\ 'rev': 'origin/HEAD',
|
||
|
\ 'path': 'autoload\gina\core.vim',
|
||
|
\}),
|
||
|
\'gina://valid:diff/origin/HEAD:autoload/gina/core.vim'
|
||
|
\)
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Describe #parse({expr})
|
||
|
Before
|
||
|
let git = {'refname': 'valid'}
|
||
|
End
|
||
|
|
||
|
It returns an empty dictionary when {expr} is not built by gina#core#buffer#bufname()
|
||
|
Assert Equals(gina#core#buffer#parse('README.md'), {})
|
||
|
Assert Equals(gina#core#buffer#parse('autoload/gina/core.vim'), {})
|
||
|
End
|
||
|
|
||
|
It returns params of {expr} which has built by gina#core#buffer#bufname()
|
||
|
Assert Equals(gina#core#buffer#parse('gina://valid:status'), {
|
||
|
\ 'repo': 'valid',
|
||
|
\ 'scheme': 'status',
|
||
|
\ 'params': [],
|
||
|
\ 'rev': '',
|
||
|
\ 'treeish': '',
|
||
|
\})
|
||
|
Assert Equals(gina#core#buffer#parse('gina://valid:commit:amend'), {
|
||
|
\ 'repo': 'valid',
|
||
|
\ 'scheme': 'commit',
|
||
|
\ 'params': ['amend'],
|
||
|
\ 'rev': '',
|
||
|
\ 'treeish': '',
|
||
|
\})
|
||
|
Assert Equals(gina#core#buffer#parse('gina://valid:show/:README.md'), {
|
||
|
\ 'repo': 'valid',
|
||
|
\ 'scheme': 'show',
|
||
|
\ 'params': [],
|
||
|
\ 'rev': '',
|
||
|
\ 'path': 'README.md',
|
||
|
\ 'treeish': ':README.md',
|
||
|
\})
|
||
|
Assert Equals(gina#core#buffer#parse('gina://valid:diff/origin/HEAD:README.md:$'), {
|
||
|
\ 'repo': 'valid',
|
||
|
\ 'scheme': 'diff',
|
||
|
\ 'params': [],
|
||
|
\ 'rev': 'origin/HEAD',
|
||
|
\ 'path': 'README.md',
|
||
|
\ 'treeish': 'origin/HEAD:README.md',
|
||
|
\})
|
||
|
Assert Equals(gina#core#buffer#parse('gina://valid:changes/origin/HEAD...'), {
|
||
|
\ 'repo': 'valid',
|
||
|
\ 'scheme': 'changes',
|
||
|
\ 'params': [],
|
||
|
\ 'rev': 'origin/HEAD...',
|
||
|
\ 'treeish': 'origin/HEAD...',
|
||
|
\})
|
||
|
Assert Equals(gina#core#buffer#parse('gina://valid:show/:3:README.md'), {
|
||
|
\ 'repo': 'valid',
|
||
|
\ 'scheme': 'show',
|
||
|
\ 'params': [],
|
||
|
\ 'rev': ':3',
|
||
|
\ 'path': 'README.md',
|
||
|
\ 'treeish': ':3:README.md',
|
||
|
\})
|
||
|
End
|
||
|
|
||
|
It returns params of {expr} which has built by gina#core#buffer#bufname()
|
||
|
execute 'edit' 'gina://valid:status'
|
||
|
Assert Equals(gina#core#buffer#parse('%'), {
|
||
|
\ 'repo': 'valid',
|
||
|
\ 'scheme': 'status',
|
||
|
\ 'params': [],
|
||
|
\ 'rev': '',
|
||
|
\ 'treeish': '',
|
||
|
\})
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Describe #param({expr}, {attr} [, {default}])
|
||
|
It throws an exception when unknown {attr} has specified
|
||
|
Throws /Unknown attribute/
|
||
|
\ gina#core#buffer#param('gina://valid:status', 'unknown')
|
||
|
End
|
||
|
|
||
|
It returns a value of an {attr} in params of {expr}
|
||
|
Assert Equals(gina#core#buffer#param('gina://valid:status', 'repo'), 'valid')
|
||
|
Assert Equals(gina#core#buffer#param('gina://valid:status', 'scheme'), 'status')
|
||
|
Assert Equals(gina#core#buffer#param('gina://valid:commit:amend', 'params'), ['amend'])
|
||
|
Assert Equals(gina#core#buffer#param('gina://valid:show/:README.md', 'path'), 'README.md')
|
||
|
Assert Equals(gina#core#buffer#param('gina://valid:diff/origin/HEAD:README.md:$', 'rev'), 'origin/HEAD')
|
||
|
Assert Equals(gina#core#buffer#param('gina://valid:changes/origin/HEAD...', 'rev'), 'origin/HEAD...')
|
||
|
End
|
||
|
|
||
|
It returns a correct default value of an {attr} when {expr} is invalid
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'repo'), '')
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'scheme'), '')
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'params'), [])
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'rev'), '')
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'path'), '')
|
||
|
End
|
||
|
|
||
|
It returns a specified default value of an {attr} when {expr} is invalid
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'repo', 'foo'), 'foo')
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'scheme', 'foo'), 'foo')
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'params', 'foo'), 'foo')
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'rev', 'foo'), 'foo')
|
||
|
Assert Equals(gina#core#buffer#param('README.md', 'path', 'foo'), 'foo')
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Describe #open({bufname}, [, {options}])
|
||
|
It opens a new {bufname} buffer and return an informatio context
|
||
|
edit foo1
|
||
|
new foo2
|
||
|
let context = gina#core#buffer#open('foo3')
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname('%'), 'foo3')
|
||
|
Assert KeyExists(context, 'bufexists')
|
||
|
Assert KeyExists(context, 'bufloaded')
|
||
|
Assert KeyExists(context, 'bufname')
|
||
|
Assert KeyExists(context, 'bufnr')
|
||
|
Assert KeyExists(context, 'preview')
|
||
|
Assert Equals(context.bufexists, 0)
|
||
|
Assert Equals(context.bufloaded, 0)
|
||
|
Assert Equals(context.bufname, 'foo3')
|
||
|
Assert Equals(context.bufnr, bufnr('%'))
|
||
|
Assert Equals(context.preview, 0)
|
||
|
End
|
||
|
|
||
|
It focus a {bufname} buffer when exist and return an informatio context
|
||
|
edit foo1
|
||
|
new foo2
|
||
|
let context = gina#core#buffer#open('foo1')
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname('%'), 'foo1')
|
||
|
Assert KeyExists(context, 'bufexists')
|
||
|
Assert KeyExists(context, 'bufloaded')
|
||
|
Assert KeyExists(context, 'bufname')
|
||
|
Assert KeyExists(context, 'bufnr')
|
||
|
Assert KeyExists(context, 'preview')
|
||
|
Assert Equals(context.bufexists, 1)
|
||
|
Assert Equals(context.bufloaded, 1)
|
||
|
Assert Equals(context.bufname, 'foo1')
|
||
|
Assert Equals(context.bufnr, bufnr('%'))
|
||
|
Assert Equals(context.preview, 0)
|
||
|
End
|
||
|
|
||
|
Context Buffer name normalization
|
||
|
It remove leading/trailing whitespaces in {bufname}
|
||
|
let context = gina#core#buffer#open(' foo ')
|
||
|
Assert Equals(bufname('%'), 'foo')
|
||
|
End
|
||
|
|
||
|
It remove trailing : in {bufname}
|
||
|
let context = gina#core#buffer#open('foo:::')
|
||
|
Assert Equals(bufname('%'), 'foo')
|
||
|
End
|
||
|
|
||
|
It remove trailing / in {bufname}
|
||
|
let context = gina#core#buffer#open('foo///')
|
||
|
Assert Equals(bufname('%'), 'foo')
|
||
|
End
|
||
|
|
||
|
It remove trailing \ in {bufname}
|
||
|
let context = gina#core#buffer#open('foo\\\')
|
||
|
Assert Equals(bufname('%'), 'foo')
|
||
|
End
|
||
|
|
||
|
It recursively remove aboves
|
||
|
let context = gina#core#buffer#open(' foo :/\ :/\ :/\')
|
||
|
Assert Equals(bufname('%'), 'foo')
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context Anchoring before open
|
||
|
It does not moves focus before opening a new {bufname} if a current window is suitable for opening a buffer
|
||
|
edit foo1
|
||
|
new foo2
|
||
|
let context = gina#core#buffer#open('foo3')
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo3')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo1')
|
||
|
End
|
||
|
|
||
|
It moves focus before opening a new {bufname} if a current window is too small (height) for opening a buffer
|
||
|
edit foo1
|
||
|
new foo2 | execute 'resize 1'
|
||
|
let context = gina#core#buffer#open('foo3')
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo2')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo3')
|
||
|
End
|
||
|
|
||
|
It moves focus before opening a new {bufname} if a current window is too small (width) for opening a buffer
|
||
|
edit foo1
|
||
|
vnew foo2 | execute 'vertical resize 1'
|
||
|
let context = gina#core#buffer#open('foo3')
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo2')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo3')
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context {options.mod}
|
||
|
It opens a new {bufname} with respecting {options.mods}
|
||
|
edit foo1
|
||
|
let options = {'opener': 'split'}
|
||
|
call gina#core#buffer#open('foo2', options)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo2')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo1')
|
||
|
|
||
|
let options.mods = 'botright'
|
||
|
call gina#core#buffer#open('foo3', options)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo2')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo1')
|
||
|
Assert Equals(bufname(winbufnr(3)), 'foo3')
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context {options.opener}
|
||
|
It opens a new {bufname} buffer with {options.opener}
|
||
|
edit foo1
|
||
|
call gina#core#buffer#open('foo2')
|
||
|
Assert Equals(winnr('$'), 1)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo2')
|
||
|
|
||
|
let options = {'opener': 'split'}
|
||
|
call gina#core#buffer#open('foo3', options)
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo3')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo2')
|
||
|
|
||
|
let options = {'opener': 'botright split'}
|
||
|
call gina#core#buffer#open('foo4', options)
|
||
|
Assert Equals(winnr('$'), 3)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo3')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo2')
|
||
|
Assert Equals(bufname(winbufnr(3)), 'foo4')
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context {options.cmdarg}
|
||
|
Context +cmd
|
||
|
Before
|
||
|
let filename = 'test/gina/_testdata/pluscmd.txt'
|
||
|
End
|
||
|
|
||
|
It starts at thel last line with "+"
|
||
|
call gina#core#buffer#open(filename, {
|
||
|
\ 'cmdarg': '+ '
|
||
|
\})
|
||
|
Assert Equals(line('.'), line('$'))
|
||
|
End
|
||
|
|
||
|
It starts at line {num} with "+{num}"
|
||
|
call gina#core#buffer#open(filename, {
|
||
|
\ 'cmdarg': '+10 '
|
||
|
\})
|
||
|
Assert Equals(line('.'), 10)
|
||
|
End
|
||
|
|
||
|
It starts at first line containig {pat} with "+/{pat}"
|
||
|
call gina#core#buffer#open(filename, {
|
||
|
\ 'cmdarg': '+/The\ following\ is '
|
||
|
\})
|
||
|
Assert Equals(line('.'), 6)
|
||
|
End
|
||
|
|
||
|
It execute {command} after opening the new file with +{command}
|
||
|
call gina#core#buffer#open(filename, {
|
||
|
\ 'cmdarg': '+setlocal\ filetype=vim '
|
||
|
\})
|
||
|
Assert Equals(&filetype, 'vim')
|
||
|
End
|
||
|
|
||
|
It is overwritten by {options.line} option
|
||
|
call gina#core#buffer#open(filename, {
|
||
|
\ 'cmdarg': '+10 ',
|
||
|
\ 'line': 20,
|
||
|
\})
|
||
|
Assert Equals(line('.'), 20)
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context ++cmd
|
||
|
It opens a new {bufname} with {cmdarg}
|
||
|
call gina#core#buffer#open('foo', {
|
||
|
\ 'cmdarg': '++enc=sjis ++ff=mac '
|
||
|
\})
|
||
|
Assert Equals(&fileencoding, 'sjis')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
End
|
||
|
|
||
|
It focus a new {bufname} with {cmdarg}
|
||
|
edit foo
|
||
|
Assert Equals(&fileencoding, '')
|
||
|
Assert Equals(&fileformat, is_windows ? 'dos' : 'unix')
|
||
|
|
||
|
call gina#core#buffer#open('foo', {
|
||
|
\ 'cmdarg': '++enc=sjis ++ff=mac '
|
||
|
\})
|
||
|
Assert Equals(&fileencoding, 'sjis')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
End
|
||
|
|
||
|
It opens a new {bufname} with {cmdarg} with {group}
|
||
|
call gina#core#buffer#open('foo', {
|
||
|
\ 'group': 'short',
|
||
|
\ 'cmdarg': '++enc=sjis ++ff=mac '
|
||
|
\})
|
||
|
Assert Equals(&fileencoding, 'sjis')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
End
|
||
|
|
||
|
It focus a new {bufname} with {cmdarg} with {group}
|
||
|
call gina#core#buffer#open('foo', {
|
||
|
\ 'group': 'short',
|
||
|
\})
|
||
|
Assert Equals(&fileencoding, '')
|
||
|
Assert Equals(&fileformat, is_windows ? 'dos' : 'unix')
|
||
|
|
||
|
call gina#core#buffer#open('foo', {
|
||
|
\ 'group': 'short',
|
||
|
\ 'cmdarg': '++enc=sjis ++ff=mac '
|
||
|
\})
|
||
|
Assert Equals(&fileencoding, 'sjis')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
End
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context {options.callback}
|
||
|
It throws an exception if a content of the buffer has modified by callback function
|
||
|
let callback = {}
|
||
|
|
||
|
function! callback.fn() abort
|
||
|
call append(0, ['This should not be allowed.'])
|
||
|
endfunction
|
||
|
|
||
|
Throws /A buffer content could not be modified by callback/
|
||
|
\ gina#core#buffer#open('foo', {'callback': callback})
|
||
|
End
|
||
|
|
||
|
It calls a callback funcion on a opened buffer in any case
|
||
|
let options = {}
|
||
|
let options.callback = {}
|
||
|
function! options.callback.fn() abort
|
||
|
let b:gina_core_buffer_called = 1
|
||
|
endfunction
|
||
|
|
||
|
let context = gina#core#buffer#open('foo1', options)
|
||
|
Assert Equals(bufnr('%'), context.bufnr)
|
||
|
Assert Equals(getbufvar(context.bufnr, 'gina_core_buffer_called'), 1)
|
||
|
|
||
|
let options.opener = 'pedit'
|
||
|
let context = gina#core#buffer#open('foo2', options)
|
||
|
Assert NotEquals(bufnr('%'), context.bufnr)
|
||
|
Assert Equals(getbufvar(context.bufnr, 'gina_core_buffer_called'), 1)
|
||
|
End
|
||
|
|
||
|
It calls a callback function on a focused buffer in any case
|
||
|
edit foo1
|
||
|
new foo2
|
||
|
|
||
|
let options = {}
|
||
|
let options.callback = {}
|
||
|
function! options.callback.fn() abort
|
||
|
let b:gina_core_buffer_called = 1
|
||
|
endfunction
|
||
|
|
||
|
let context = gina#core#buffer#open('foo1', options)
|
||
|
Assert Equals(bufnr('%'), context.bufnr)
|
||
|
Assert Equals(getbufvar(context.bufnr, 'gina_core_buffer_called'), 1)
|
||
|
bwipeout!
|
||
|
End
|
||
|
|
||
|
It calls a callback with {args}
|
||
|
let options = {}
|
||
|
let options.callback = {}
|
||
|
function! options.callback.fn(...) abort
|
||
|
let b:gina_core_buffer_called = a:000
|
||
|
endfunction
|
||
|
|
||
|
let options.callback.args = ['foo', 'bar']
|
||
|
let context = gina#core#buffer#open('foo1', options)
|
||
|
Assert Equals(b:gina_core_buffer_called, ['foo', 'bar'])
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context {options.group}
|
||
|
It reuses an opend window which opens a buffer with same {options.group}
|
||
|
edit foo1
|
||
|
call gina#core#buffer#open('foo2', {
|
||
|
\ 'opener': 'split',
|
||
|
\ 'group': 'short',
|
||
|
\})
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo2')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo1')
|
||
|
|
||
|
call gina#core#buffer#open('foo3', {
|
||
|
\ 'opener': 'split',
|
||
|
\ 'group': 'short',
|
||
|
\})
|
||
|
Assert Equals(winnr('$'), 2)
|
||
|
Assert Equals(bufname(winbufnr(1)), 'foo3')
|
||
|
Assert Equals(bufname(winbufnr(2)), 'foo1')
|
||
|
End
|
||
|
End
|
||
|
|
||
|
Context jumps
|
||
|
Before
|
||
|
if !exists(':clearjumps')
|
||
|
Skip This Vim does not have :clearjumps so skip.
|
||
|
endif
|
||
|
End
|
||
|
|
||
|
It respects a native Vim's behavior for jumps for ':edit'
|
||
|
let opener = 'edit'
|
||
|
%bwipeout! | clearjumps
|
||
|
execute opener 'foo1'
|
||
|
let expect = split(execute('jumps'), '\r\?\n')
|
||
|
|
||
|
%bwipeout! | clearjumps
|
||
|
call gina#core#buffer#open('foo2', {
|
||
|
\ 'opener': opener,
|
||
|
\})
|
||
|
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
|
||
|
End
|
||
|
|
||
|
It respects a native Vim's behavior for jumps for ':new'
|
||
|
let opener = 'new'
|
||
|
%bwipeout! | clearjumps
|
||
|
execute opener 'foo1'
|
||
|
let expect = split(execute('jumps'), '\r\?\n')
|
||
|
|
||
|
%bwipeout! | clearjumps
|
||
|
call gina#core#buffer#open('foo2', {
|
||
|
\ 'opener': opener,
|
||
|
\})
|
||
|
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
|
||
|
End
|
||
|
|
||
|
It respects a native Vim's behavior for jumps for ':pedit'
|
||
|
let opener = 'pedit'
|
||
|
%bwipeout! | clearjumps
|
||
|
execute opener 'foo1'
|
||
|
let expect = split(execute('jumps'), '\r\?\n')
|
||
|
|
||
|
%bwipeout! | clearjumps
|
||
|
call gina#core#buffer#open('foo2', {
|
||
|
\ 'opener': opener,
|
||
|
\})
|
||
|
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
|
||
|
End
|
||
|
|
||
|
It respects a native Vim's behavior for jumps for ':tabedit'
|
||
|
let opener = 'tabedit'
|
||
|
%bwipeout! | clearjumps
|
||
|
execute opener 'foo1'
|
||
|
let expect = split(execute('jumps'), '\r\?\n')
|
||
|
|
||
|
%bwipeout! | clearjumps
|
||
|
call gina#core#buffer#open('foo2', {
|
||
|
\ 'opener': opener,
|
||
|
\})
|
||
|
Assert Equals(split(execute('jumps'), '\r\?\n'), expect)
|
||
|
End
|
||
|
End
|
||
|
|
||
|
End
|
||
|
|
||
|
Describe #focus({expr})
|
||
|
" NOTE:
|
||
|
" This feature is already tested in Vital.Vim.Window
|
||
|
End
|
||
|
|
||
|
Describe #assign_cmdarg([{cmdarg}])
|
||
|
It assigns &fileencoding if {cmdarg} has ++enc=xxxxx
|
||
|
edit foo
|
||
|
call gina#core#buffer#assign_cmdarg(' ++enc=utf-8')
|
||
|
Assert Equals(&fileencoding, 'utf-8')
|
||
|
Assert Equals(&fileformat, is_windows ? 'dos' : 'unix')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg(' ++enc=cp1250')
|
||
|
Assert Equals(&fileencoding, 'cp1250')
|
||
|
Assert Equals(&fileformat, is_windows ? 'dos' : 'unix')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg('')
|
||
|
Assert Equals(&fileencoding, 'cp1250')
|
||
|
Assert Equals(&fileformat, is_windows ? 'dos' : 'unix')
|
||
|
End
|
||
|
|
||
|
It assigns &fileformat if {cmdarg} has ++ff=xxxxx
|
||
|
edit foo
|
||
|
call gina#core#buffer#assign_cmdarg(' ++ff=unix')
|
||
|
Assert Equals(&fileencoding, '')
|
||
|
Assert Equals(&fileformat, 'unix')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg(' ++ff=dos')
|
||
|
Assert Equals(&fileencoding, '')
|
||
|
Assert Equals(&fileformat, 'dos')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg(' ++ff=mac')
|
||
|
Assert Equals(&fileencoding, '')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg('')
|
||
|
Assert Equals(&fileencoding, '')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
End
|
||
|
|
||
|
It assigns &fileencoding and &fileformat if {cmdarg} has ++enc=xxxxx and ++ff=xxxxx
|
||
|
edit foo
|
||
|
call gina#core#buffer#assign_cmdarg(' ++enc=utf-8 ++ff=unix')
|
||
|
Assert Equals(&fileencoding, 'utf-8')
|
||
|
Assert Equals(&fileformat, 'unix')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg(' ++enc=cp1250 ++ff=dos')
|
||
|
Assert Equals(&fileencoding, 'cp1250')
|
||
|
Assert Equals(&fileformat, 'dos')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg(' ++ff=mac ++enc=sjis')
|
||
|
Assert Equals(&fileencoding, 'sjis')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
|
||
|
call gina#core#buffer#assign_cmdarg('')
|
||
|
Assert Equals(&fileencoding, 'sjis')
|
||
|
Assert Equals(&fileformat, 'mac')
|
||
|
End
|
||
|
End
|
||
|
End
|