Mercurial > vim-lawrencium
diff plugin/lawrencium.vim @ 46:6a4f5200d8da
`:Hg!` command changes:
- Ability to edit in a normal buffer instead of the preview window.
- Set syntax coloring according to the Mercurial command.
- Updated the documentation.
Miscellaneous cleanup.
New pretty banner in the documentation.
New "global settings" section in the documentation.
Added `graphlog` syntax file.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 07 Nov 2012 07:14:15 -0800 |
parents | ea0ae8f6af81 |
children | 85e39bdd7089 |
line wrap: on
line diff
--- a/plugin/lawrencium.vim Tue Aug 28 21:37:53 2012 -0700 +++ b/plugin/lawrencium.vim Wed Nov 07 07:14:15 2012 -0800 @@ -32,6 +32,10 @@ let g:lawrencium_define_mappings = 1 endif +if !exists('g:lawrencium_hg_bang_edit_command') + let g:lawrencium_hg_bang_edit_command = 'pedit' +endif + " }}} " Utility {{{ @@ -313,9 +317,23 @@ if a:bang " Open the output of the command in a temp file. let l:temp_file = s:tempname('hg-output-', '.txt') - execute 'pedit ' . l:temp_file + execute g:lawrencium_hg_bang_edit_command . ' ' . l:temp_file wincmd p call append(0, split(l:output, '\n')) + call cursor(1, 1) + + " Make it a temp buffer + setlocal bufhidden=delete + setlocal buftype=nofile + + " Try to find a nice syntax to set given the current command. + let l:command_name = s:GetHgCommandName(a:000) + if l:command_name != '' && exists('g:lawrencium_hg_commands_file_types') + let l:file_type = get(g:lawrencium_hg_commands_file_types, l:command_name, '') + if l:file_type != '' + execute 'setlocal ft=' . l:file_type + endif + endif else " Just print out the output of the command. echo l:output @@ -330,6 +348,12 @@ call s:error("Can't find the Mercurial usage file. Auto-completion will be disabled in Lawrencium.") endif +" Include the command file type mappings. +let s:file_type_mappings = expand("<sfile>:h:h") . '/resources/hg_command_file_types.vim' +if filereadable(s:file_type_mappings) + execute "source " . s:file_type_mappings +endif + function! s:CompleteHg(ArgLead, CmdLine, CursorPos) " Don't do anything if the usage file was not sourced. if !exists('g:lawrencium_hg_commands') || !exists('g:lawrencium_hg_options') @@ -351,15 +375,11 @@ " Try completing a command (note that there could be global options before " the command name). if a:CmdLine =~# '\v^Hg\s+(\-[a-zA-Z0-9\-_]+\s+)*[a-zA-Z]+$' - echom " - matched command" return filter(keys(g:lawrencium_hg_commands), "v:val[0:strlen(l:arglead)-1] ==# l:arglead") endif " Try completing a command's options. let l:cmd = matchstr(a:CmdLine, '\v(^Hg\s+(\-[a-zA-Z0-9\-_]+\s+)*)@<=[a-zA-Z]+') - if strlen(l:cmd) > 0 - echom " - matched command option for " . l:cmd . " with : " . l:arglead - endif if strlen(l:cmd) > 0 && l:arglead[0] ==# '-' if has_key(g:lawrencium_hg_commands, l:cmd) " Return both command options and global options together. @@ -376,6 +396,15 @@ return s:ListRepoFiles(a:ArgLead, a:CmdLine, a:CursorPos) endfunction +function! s:GetHgCommandName(args) abort + for l:a in a:args + if stridx(l:a, '-') != 0 + return l:a + endif + endfor + return '' +endfunction + call s:AddMainCommand("-bang -complete=customlist,s:CompleteHg -nargs=* Hg :call s:Hg(<bang>0, <f-args>)") " }}} @@ -451,7 +480,6 @@ let l:status_text = l:repo.RunCommand('status') " Replace the contents of the current buffer with it, and refresh. - echo "Writing to " . expand('%:p') let l:path = expand('%:p') let l:status_lines = split(l:status_text, '\n') call writefile(l:status_lines, l:path)