# HG changeset patch # User Steve Losh # Date 1326734140 18000 # Node ID 4d81abc7063e1c84bb5c44fc1fe01a4daa4a87df # Parent 029fa7773f34f5af94f3c656105d30caa2f0a6ce Update plugins. diff -r 029fa7773f34 -r 4d81abc7063e .hgsub --- a/.hgsub Mon Jan 16 11:28:13 2012 -0500 +++ b/.hgsub Mon Jan 16 12:15:40 2012 -0500 @@ -28,5 +28,6 @@ vim/bundle/rainbow-parentheses = [git]git://github.com/kien/rainbow_parentheses.vim.git vim/bundle/AnsiEsc.vim = [git]git://github.com/vim-scripts/AnsiEsc.vim.git vim/bundle/powerline = [git]git://github.com/Lokaltog/vim-powerline.git +vim/bundle/yankring = [git]git://github.com/vim-scripts/YankRing.vim.git keymando/Plugins/abbrev = [git]git://github.com/keymando/abbrev.git diff -r 029fa7773f34 -r 4d81abc7063e .hgsubstate --- a/.hgsubstate Mon Jan 16 11:28:13 2012 -0500 +++ b/.hgsubstate Mon Jan 16 12:15:40 2012 -0500 @@ -3,7 +3,7 @@ d2bb7878622e4c16203acf1c92a0f4bc7ac58003 vim/bundle/AnsiEsc.vim a41d5d52c39a31128e969e69acf800b198cb07f9 vim/bundle/ack 420174fc537ba986a716964db7af0bd189252944 vim/bundle/ctrlp -cdecdc56f938840cad250aecd58c1901f04c4d1b vim/bundle/easymotion +667a668e114e9ec0e5d4cbcb0962d835b23614c4 vim/bundle/easymotion b4b75ef682da3e946c648d3634ade39d0af49aba vim/bundle/fugitive 2a78f151df54b53874f0aa6a85cfdad6ead224ed vim/bundle/gundo 4ef2d418f48d30fed2f7ce00f598d6871a0010fe vim/bundle/html5 @@ -18,13 +18,14 @@ ab6c6f093b5937d631390bb69678217dc10e8018 vim/bundle/slimv c6197a10ace82e0fe0c08e5cf5c017b7069a978e vim/bundle/sparkup 6eec2c131213850ed65fd6da494dfd1a0d620a4e vim/bundle/strftimedammit -80ec6539e4139a2e0281a0f1e36d5038d55ad980 vim/bundle/supertab -d9e6bfdd902fc661c8fd58ede248ccfc3b3039d7 vim/bundle/surround -e220e1d8e6582b67618ac0d07b32c02e5f78210f vim/bundle/syntastic +ac395b57fec47f034cba151d01669d134ac7041b vim/bundle/supertab +4eb2cdfccc016889acfa3b5d63e8f390a87863cf vim/bundle/surround +2616623bb9208c4bf2559b6aa5c1eff53644a0f7 vim/bundle/syntastic bbc5193de145ba5334cf02693d959f475a3e850b vim/bundle/threesome b944e534bd6bbfc4fd56d4ee1a8aa831188387b0 vim/bundle/vim-coffee-script -8d06adbd56a761684701d1c60990b72c845be3d5 vim/bundle/vim-commentary +62b72580aba57cb5185bd077ac7a905c1c6893ea vim/bundle/vim-commentary 6362ba99c825afc046818807267d5c1143b5c887 vim/bundle/vim-javascript f21fbd8759d7fa6c3cb1bbb9fe05eae90422f01a vim/bundle/vim-makegreen -aa53673d435020ed209b9df030df29070bda81f4 vim/bundle/vim-orgmode +80cc08f3fb2205630a1f1cee159d8ff6052d91d0 vim/bundle/vim-orgmode b0ee6ec2153c5f30827d67db1668f37a975a1005 vim/bundle/vim-speeddating +280ca1b471bd3a0d2347735e8fcbd03a53f2c6ad vim/bundle/yankring diff -r 029fa7773f34 -r 4d81abc7063e vim/bundle/yankring/doc/yankring.txt --- a/vim/bundle/yankring/doc/yankring.txt Mon Jan 16 11:28:13 2012 -0500 +++ b/vim/bundle/yankring/doc/yankring.txt Mon Jan 16 12:15:40 2012 -0500 @@ -1,11 +1,13 @@ *yankring.txt* For Vim version 7.0. -Author: David Fishburn August 29, 2009 -Version: 10.0 +Author: David Fishburn September 16, 2011 +Version: 12.0 For instructions on installing this file, type :help add-local-help |add-local-help| inside Vim. +Homepage: http://vim.sourceforge.net/script.php?script_id=1234 + ============================================================================== 1. Contents *yankring* *yankring-contents* @@ -16,6 +18,7 @@ 3.1 Global Variables...................: |yankring-globals| 3.2 Default Keys.......................: |yankring-mappings| 3.3 Customizing Maps...................: |yankring-custom-maps| + 3.4 Customizing Menus..................: |yankring-custom-menus| 4. Using the YankRing Window..............: |yankring-window| 5. Commands...............................: |yankring-commands| 5.1 YRToggle..........................: |YRToggle| @@ -46,6 +49,7 @@ 6.12 YRSearch..........................: |YRSearch-example| 7. History................................: |yankring-history| + ============================================================================== 2. Description *yankring-description* @@ -78,6 +82,7 @@ For details on the changes between versions see |yankring-history|. + ============================================================================== 3. Configuration *yankring-configure* @@ -269,6 +274,33 @@ no way to noticing. To disable this feature you can put the following in your |vimrc| > let g:yankring_paste_check_default_buffer = 0 + yankring_default_menu_mode +< - Menus are useful for a number of reasons: + See a list of available commands. + Remember what the shortcut maps are. + Have a floating menu when using the plugin a lot. + Quick reference guide. + There are four settings that will control the placement + of the menu: + "0": Turns the menu off. + "1": Turns the 'Yankring' menu on with no menu shortcut. + "2": Turns the 'Yankring 'menu on with -y as the shortcut. + "3": Turns the 'Plugin -> YankRing' menu on with -y as + the shortcut. + This option defaults to a value of 3 and can be changed + by adding the following to your vimrc: > + :let g:yankring_default_menu_mode = 3 + yankring_menu_root +< - Can be used in conjuction with g:yankring_default_menu_mode = 3 but + it also allows you to control the fullname and location of the + YankRing menu. To create the menu: 'MyPlugins -> YankRing' you + can create the following variable: > + :let g:yankring_menu_root = 'MyPlugin.&YankRing' + yankring_menu_priority +< - Menus are created in a documented order by Vim (|menu-priority|). + This option allows you to override the setting and shift the + YankRing menu item to the left between the Edit and Tools menu. > + :let g:yankring_menu_priority = 30 < 3.2 Default Keys *yankring-mappings* @@ -466,6 +498,15 @@ This line remaps Y (which the user presses) to the YRYankCount command. The YRYankCount tells Vim to execute y$ instead. +3.4 Customizing Menus *yankring-custom-menus* + +There are several global variables which can be created in your vimrc to +allow you to customize where and what is displayed for the YankRing menu. +Simply look up the following global variables: > + yankring_default_menu_mode + yankring_menu_root + yankring_menu_priority + ============================================================================== 4. Using the YankRing Window: *yankring-window* @@ -526,8 +567,6 @@ g:yankring_window_increment setting. ? Toggles the display of the help. - - ============================================================================== 5. Commands: *yankring-commands* @@ -1131,6 +1170,30 @@ ============================================================================== 7. History *yankring-history* + 12.0: September 16, 2011 + NF: Added support for the clipboard option "unnamedplus" which was + added after 7.3 (Hong Xu). + NF: When displaying the YankRing using YRShow, a new command "R" + has been added to display all of Vim's registers [0-9a-z]. + BF: YRMapsDelete did not remove the normal mode @ map, which + interfers with recorded macros (Philippe Vaucher ). + + 11.0: August 09, 2010 + NF: Documented the global variables to customize the location + of the YankRing menu. + NF: The YankRing menu now shows the maps used for the default + actions to help learn them more easily. + NF: Added g:yankring_menu_root and g:yankring_menu_priority + (David Barsam). + NF: Added a warning indicating a stored value has been truncated + based on g:yankring_max_element_length and a new option to + suppress this warning, g:yankring_warn_on_truncate (Hans-Günter). + BF: The YRAfterMaps() function (if it exists) was not re-run if + YRToggle was used to disable and enable the YankRing. + BF: Multibyte strings may not have been pasted correctly (Dr. Chip). + BF: When pasting a string of 1111's, and additional -1 could also + be included in the output. + 10.0: January 31, 2010 NF: Change the buffer name to [YankRing] to resemble other non-user buffers. diff -r 029fa7773f34 -r 4d81abc7063e vim/bundle/yankring/plugin/yankring.vim --- a/vim/bundle/yankring/plugin/yankring.vim Mon Jan 16 11:28:13 2012 -0500 +++ b/vim/bundle/yankring/plugin/yankring.vim Mon Jan 16 12:15:40 2012 -0500 @@ -1,8 +1,8 @@ " yankring.vim - Yank / Delete Ring for Vim " --------------------------------------------------------------- -" Version: 10.0 +" Version: 12.0 " Authors: David Fishburn -" Last Modified: 2010 Jan 24 +" Last Modified: 2011 Jun 14 " Script: http://www.vim.org/scripts/script.php?script_id=1234 " Based On: Mocked up version by Yegappan Lakshmanan " http://groups.yahoo.com/group/vim/post?act=reply&messageNum=34406 @@ -18,7 +18,7 @@ finish endif -let loaded_yankring = 100 +let loaded_yankring = 120 let s:yr_has_voperator = 0 if v:version > 701 || ( v:version == 701 && has("patch205") ) @@ -52,6 +52,11 @@ let g:yankring_max_element_length = 1048576 endif +" Warn if truncation occurs +if !exists('g:yankring_warn_on_truncate') + let g:yankring_warn_on_truncate = 1 +endif + " Allow the user to specify if the plugin is enabled or not if !exists('g:yankring_enabled') let g:yankring_enabled = 1 @@ -323,6 +328,11 @@ let toggle = matchstr(a:1, '\d\+') endif + let show_registers = 0 + if a:0 > 1 && a:2 ==# 'R' + let show_registers = 1 + endif + if toggle == 1 if bufwinnr(s:yr_buffer_id) > -1 " If the YankRing window is already open close it @@ -351,9 +361,9 @@ " show the contents (or when it is refreshed). if g:yankring_paste_check_default_buffer == 1 let save_reg = 0 - let register = ((&clipboard=='unnamed')?'+':'"') + let register = ((&clipboard=~'unnamed')?'+':'"') - if &clipboard == 'unnamed' && getreg('+') != s:yr_prev_clipboard + if &clipboard =~ 'unnamed' && getreg('+') != s:yr_prev_clipboard let save_reg = 1 endif if register == '"' && getreg('"') != s:yr_prev_reg_unnamed @@ -371,14 +381,23 @@ " List is shown in order of replacement " assuming using previous yanks let output = "--- YankRing ---\n" - let output = output . "Elem Content\n" + let output = output . (show_registers == 1 ? 'Reg ' : 'Elem')." Content\n" - call s:YRHistoryRead() - let disp_item_nr = 1 - for elem in s:yr_history_list - let output = output . s:YRDisplayElem(disp_item_nr, elem) . "\n" - let disp_item_nr += 1 - endfor + if show_registers == 1 + for reg_name in map( range(char2nr('0'), char2nr('9')) + + \ (range(char2nr('a'), char2nr('z'))) + \, 'nr2char(v:val)' + \ ) + let output = output . s:YRDisplayElem(reg_name, getreg(reg_name).',') . "\n" + endfor + else + call s:YRHistoryRead() + let disp_item_nr = 1 + for elem in s:yr_history_list + let output = output . s:YRDisplayElem(disp_item_nr, elem) . "\n" + let disp_item_nr += 1 + endfor + endif if g:yankring_window_use_separate == 1 call s:YRWindowOpen(output) @@ -438,7 +457,7 @@ return -1 endif - let default_buffer = ((&clipboard=='unnamed')?'+':'"') + let default_buffer = ((&clipboard=~'unnamed')?'+':'"') let direction = 'p' if a:0 > 1 @@ -483,7 +502,7 @@ return -1 endif - let default_buffer = ((&clipboard=='unnamed')?'+':'"') + let default_buffer = ((&clipboard=~'unnamed')?'+':'"') call setreg(default_buffer \ , s:YRGetValElemNbr((elem), 'v') \ , s:YRGetValElemNbr((elem), 't') @@ -632,7 +651,7 @@ " Resets the common script variables for managing the ring. function! s:YRReset() - let s:yr_history_list = [] + call s:YRHistoryDelete() " Update the history file call s:YRHistorySave() endfunction @@ -696,7 +715,7 @@ " so test for this condition and return the " default register let user_register = ((v:register=='')?('"'):(v:register)) - if &clipboard == 'unnamed' && user_register == '"' + if &clipboard =~ 'unnamed' && user_register == '"' let user_register = '+' endif return user_register @@ -718,7 +737,7 @@ " If we are pushing something on to the yankring, add it to " the default buffer as well so the next item pasted will " be the item pushed - let default_buffer = ((&clipboard=='unnamed')?'+':'"') + let default_buffer = ((&clipboard=~'unnamed')?'+':'"') call setreg(default_buffer, getreg(user_register), \ getregtype(user_register)) @@ -781,7 +800,7 @@ return "" endif - let register = ((&clipboard=='unnamed')?'+':register) + let register = ((&clipboard=~'unnamed')?'+':register) " let s:yr_prev_changenr = changenr() if register == '"' @@ -804,14 +823,16 @@ let s:yr_prev_clipboard = @+ endif + " Manage the numbered registers + if g:yankring_manage_numbered_reg == 1 + " Allow the user to define an autocmd to dynamically + " setup their connection information. + silent! doautocmd User YRSetNumberedReg + endif + " If the yankring window is open, refresh it call s:YRWindowUpdate() - " Manage the numbered registers - if g:yankring_manage_numbered_reg == 1 - call s:YRSetNumberedReg() - endif - return "" endfunction @@ -827,7 +848,7 @@ return "" endif - let register = ((&clipboard=='unnamed')?'+':register) + let register = ((&clipboard=~'unnamed')?'+':register) if register == '"' " If the change has occurred via an omap, we must delay @@ -853,14 +874,16 @@ let s:yr_prev_clipboard = @+ endif + " Manage the numbered registers + if g:yankring_manage_numbered_reg == 1 + " Allow the user to define an autocmd to dynamically + " setup their connection information. + silent! doautocmd User YRSetNumberedReg + endif + " If the yankring window is open, refresh it call s:YRWindowUpdate() - " Manage the numbered registers - if g:yankring_manage_numbered_reg == 1 - call s:YRSetNumberedReg() - endif - return "" endfunction @@ -1012,19 +1035,27 @@ " Manages the Vim's numbered registers function! s:YRSetNumberedReg() - let i = 1 + let i = 0 while i <= 10 if i > s:yr_count break endif - call setreg( (i-1) - \ , s:YRGetValElemNbr((i-1),'v') - \ , s:YRGetValElemNbr((i-1),'t') + call setreg( (i) + \ , s:YRGetValElemNbr((i),'v') + \ , s:YRGetValElemNbr((i),'t') \ ) let i += 1 endwhile + + " There are a few actions that Vim automatically takes + " when modifying the numbered registers. + " Modifying register 1 - changes the named register. + " It is impossible to set register 2 to a value, since Vim will change it. + + " This will at least preserve the default register + let @" = @0 endfunction @@ -1128,7 +1159,7 @@ function! s:YRYankRange(do_delete_selection, ...) range let user_register = s:YRRegister() - let default_buffer = ((&clipboard=='unnamed')?'+':'"') + let default_buffer = ((&clipboard=~'unnamed')?'+':'"') " Default command mode to normal mode 'n' let cmd_mode = 'n' @@ -1185,7 +1216,7 @@ let user_register = s:YRRegister() - let default_buffer = ((&clipboard == 'unnamed')?'+':'"') + let default_buffer = ((&clipboard =~ 'unnamed')?'+':'"') let v_count = v:count " Default command mode to normal mode 'n' @@ -1356,7 +1387,7 @@ " echomsg "YRMapsE:".localtime() " echomsg "YRMapsE 1:".cmds.":".v:operator.":".s:yr_maps_created_zap - if (a:motion =~ '\.' && s:yr_remove_omap_dot == 1) || a:motion =~ '@' + if (a:motion =~ '\.' && s:yr_remove_omap_dot == 1) || a:motion =~ '@' " If we are repeating a series of commands we must " unmap the _zap_ keys so that the user is not " prompted when a command is replayed. @@ -1407,6 +1438,11 @@ let cmds .= a:sid. "yrrecord" endif endif + + " This will not work since we are already executing an expression + " if a:motion =~ '@' + " let cmds = 'normal! ' . cmds + " endif " echomsg "YRMapsE 5:".a:motion.":'".cmds."':".s:yr_maps_created_zap return cmds @@ -1414,41 +1450,43 @@ endfunction -" Handle any the @ -function! s:YRMapsMacro(bang, ...) range - " If we are repeating a series of commands we must - " unmap the _zap_ keys so that the user is not - " prompted when a command is replayed. - " These maps must be re-instated in YRRecord3() - " after the action of the replay is completed. - call s:YRMapsDelete('remove_only_zap_keys') - - " let zapto = (a:0==0 ? "" : s:YRGetChar()) - let zapto = s:YRGetChar() - - if zapto == "\" - " Abort if the user hits Control C - call s:YRWarningMsg( "YR:Aborting command:".v:operator.a:motion ) - return "" - endif - - let v_count = v:count - " If no count was specified it will have a value of 0 - " so set it to at least 1 - let v_count = ((v_count > 0)?(v_count):'') - - let range = '' - if a:firstline != a:lastline - let rannge = a:firstline.','.a:lastline - endif - - let cmd = range."normal! ".v_count.'@'.zapto - " DEBUG - " echomsg cmd - exec cmd - - call s:YRMapsCreate('add_only_zap_keys') -endfunction +" Handle macros (@). +" This routine is not used, YRMapsExpression is used to +" handle the @ symbol. +" function! s:YRMapsMacro(bang, ...) range +" " If we are repeating a series of commands we must +" " unmap the _zap_ keys so that the user is not +" " prompted when a command is replayed. +" " These maps must be re-instated in YRRecord3() +" " after the action of the replay is completed. +" call s:YRMapsDelete('remove_only_zap_keys') +" +" " let zapto = (a:0==0 ? "" : s:YRGetChar()) +" let zapto = s:YRGetChar() +" +" if zapto == "\" +" " Abort if the user hits Control C +" call s:YRWarningMsg( "YR:Aborting command:".v:operator.a:motion ) +" return "" +" endif +" +" let v_count = v:count +" " If no count was specified it will have a value of 0 +" " so set it to at least 1 +" let v_count = ((v_count > 0)?(v_count):'') +" +" let range = '' +" if a:firstline != a:lastline +" let rannge = a:firstline.','.a:lastline +" endif +" +" let cmd = range."normal! ".v_count.'@'.zapto +" " DEBUG +" " echomsg cmd +" exec cmd +" +" call s:YRMapsCreate('add_only_zap_keys') +" endfunction " Create the default maps @@ -1549,6 +1587,11 @@ let g:yankring_enabled = 1 let s:yr_maps_created = 1 + + if exists('*YRRunAfterMaps') + " This will allow you to override the default maps if necessary + call YRRunAfterMaps() + endif endfunction @@ -1592,84 +1635,79 @@ endtry endfor - if g:yankring_map_dot == 1 - exec "nunmap ." + if g:yankring_map_dot == 1 + silent! exec "nunmap ." endif if g:yankring_v_key != '' - exec 'vunmap '.g:yankring_v_key + silent! exec 'vunmap '.g:yankring_v_key endif if g:yankring_del_v_key != '' for v_map in split(g:yankring_del_v_key) if strlen(v_map) > 0 try - exec 'vunmap '.v_map + silent! exec 'vunmap '.v_map catch endtry endif endfor endif if g:yankring_paste_n_bkey != '' - exec 'nunmap '.g:yankring_paste_n_bkey + silent! exec 'nunmap '.g:yankring_paste_n_bkey if g:yankring_paste_using_g == 1 - exec 'nunmap g'.g:yankring_paste_n_bkey + silent! exec 'nunmap g'.g:yankring_paste_n_bkey endif endif if g:yankring_paste_n_akey != '' - exec 'nunmap '.g:yankring_paste_n_akey + silent! exec 'nunmap '.g:yankring_paste_n_akey if g:yankring_paste_using_g == 1 - exec 'nunmap g'.g:yankring_paste_n_akey + silent! exec 'nunmap g'.g:yankring_paste_n_akey endif endif if g:yankring_paste_v_bkey != '' - exec 'vunmap '.g:yankring_paste_v_bkey + silent! exec 'vunmap '.g:yankring_paste_v_bkey endif if g:yankring_paste_v_akey != '' - exec 'vunmap '.g:yankring_paste_v_akey + silent! exec 'vunmap '.g:yankring_paste_v_akey endif if g:yankring_replace_n_pkey != '' - exec 'nunmap '.g:yankring_replace_n_pkey + silent! exec 'nunmap '.g:yankring_replace_n_pkey endif if g:yankring_replace_n_nkey != '' - exec 'nunmap '.g:yankring_replace_n_nkey + silent! exec 'nunmap '.g:yankring_replace_n_nkey endif + silent! exec 'nunmap @' + let g:yankring_enabled = 0 let s:yr_maps_created = 0 endfunction function! s:YRGetValElemNbr( position, type ) - let needed_elem = a:position " The List which contains the items in the yankring " history is also ordered, most recent at the top let elem = s:YRMRUGet('s:yr_history_list', needed_elem) - if elem >= 0 - if a:type == 't' - return matchstr(elem, '^.*,\zs.*$') + if a:type == 't' + let elem = matchstr(elem, '^.*,\zs.*$') + else + let elem = matchstr(elem, '^.*\ze,.*$') + if s:yr_history_version == 'v1' + " Match three @@@ in a row as long as it is not + " preceeded by a @@@ + " v1 + let elem = substitute(elem, s:yr_history_v1_nl_pat, "\n", 'g') + let elem = substitute(elem, '\\@', '@', 'g') else - let elem = matchstr(elem, '^.*\ze,.*$') - if s:yr_history_version == 'v1' - " Match three @@@ in a row as long as it is not - " preceeded by a @@@ - " v1 - let elem = substitute(elem, s:yr_history_v1_nl_pat, "\n", 'g') - let elem = substitute(elem, '\\@', '@', 'g') - else - let elem = substitute(elem, s:yr_history_v2_nl_pat, "\n", 'g') - endif - return elem + let elem = substitute(elem, s:yr_history_v2_nl_pat, "\n", 'g') endif - else - return -1 endif - return "" + return elem endfunction function! s:YRMRUReset( mru_list ) - let {a:mru_list} = [] return 1 @@ -1683,6 +1721,16 @@ let elem = a:element if g:yankring_max_element_length != 0 let elem = strpart(a:element, 0, g:yankring_max_element_length) + if (g:yankring_warn_on_truncate > 0) + let bytes = len (a:element) - len(elem) + if (bytes > 0) + call s:YRWarningMsg("Yankring truncated its element by ". + \ bytes. + \ " bytes due to a g:yankring_max_element_length of ". + \ g:yankring_max_element_length + \ ) + endif + endif endif if s:yr_history_version == 'v1' let elem = escape(elem, '@') @@ -1754,7 +1802,6 @@ endfunction function! s:YRMRUDel( mru_list, elem_nbr ) - if a:elem_nbr >= 0 && a:elem_nbr < s:yr_count call remove({a:mru_list}, a:elem_nbr) call s:YRHistorySave() @@ -1763,6 +1810,23 @@ return 1 endfunction +function! s:YRHistoryDelete() + let s:yr_history_list = [] + let yr_filename = s:yr_history_file_{s:yr_history_version} + + if filereadable(yr_filename) + let rc = delete(yr_filename) + if rc != 0 + call s:YRErrorMsg( + \ 'YRHistoryDelete: Unable to delete the yankring history file: '. + \ yr_filename + \ ) + endif + endif + + return 0 +endfunction + function! s:YRHistoryRead() let refresh_needed = 1 let yr_history_list = [] @@ -1801,20 +1865,22 @@ endfunction function! s:YRHistorySave() + let yr_filename = s:yr_history_file_{s:yr_history_version} + if len(s:yr_history_list) > g:yankring_max_history " Remove items which exceed the max # specified call remove(s:yr_history_list, g:yankring_max_history) endif - let rc = writefile(s:yr_history_list, s:yr_history_file_{s:yr_history_version}) + let rc = writefile(s:yr_history_list, yr_filename) if rc == 0 - let s:yr_history_last_upd = getftime(s:yr_history_file_{s:yr_history_version}) + let s:yr_history_last_upd = getftime(yr_filename) let s:yr_count = len(s:yr_history_list) else call s:YRErrorMsg( \ 'YRHistorySave: Unable to save yankring history file: '. - \ s:yr_history_file_{s:yr_history_version} + \ yr_filename \ ) endif endfunction @@ -1879,7 +1945,7 @@ let msg = 'AutoClose='.g:yankring_window_auto_close. \ ';ClipboardMonitor='.g:yankring_clipboard_monitor. - \ ';Cmds:,[g]p,[g]P,d,r,s,a,c,u,q,;Help=?'. + \ ';Cmds:,[g]p,[g]P,d,r,s,a,c,u,R,q,;Help=?'. \ (s:yr_search==""?"":';SearchRegEx='.s:yr_search) if s:yr_has_voperator == 0 @@ -1896,7 +1962,8 @@ \ '" [g]P : [g][P]aste selection'."\n". \ '" r : [p]aste selection in reverse order'."\n". \ '" s : [s]earch the yankring for text'."\n". - \ '" u : [u]pdate display'."\n". + \ '" u : [u]pdate display show YankRing'."\n". + \ '" R : [R]egisters display'."\n". \ '" a : toggle [a]utoclose setting'."\n". \ '" c : toggle [c]lipboard monitor setting'."\n". \ '" q : [q]uit / close the yankring window'."\n". @@ -2084,6 +2151,7 @@ nnoremap ? :call YRWindowAction ('?' ,'n') nnoremap u :call YRWindowAction ('u' ,'n') nnoremap q :call YRWindowAction ('q' ,'n') + nnoremap R :call YRWindowAction ('R' ,'n') nnoremap \|:silent exec 'vertical resize '. \ ( \ g:yankring_window_use_horiz!=1 && winwidth('.') > g:yankring_window_width @@ -2151,7 +2219,7 @@ endfunction function! s:YRWindowAction(op, cmd_mode) range - let default_buffer = ((&clipboard=='unnamed')?'+':'"') + let default_buffer = ((&clipboard=~'unnamed')?'+':'"') let opcode = a:op let lines = [] let v_count = v:count @@ -2220,6 +2288,12 @@ call s:YRShow(0) return + elseif opcode ==# 'R' + " Switch back to the original buffer + exec s:yr_buffer_last_winnr . "wincmd w" + + call s:YRShow(0, 'R') + return elseif opcode ==# 'a' let l:curr_line = line(".") " Toggle the auto close setting @@ -2399,6 +2473,8 @@ autocmd WinLeave * :call YRWinLeave() autocmd FocusGained * :if has('clipboard') | call YRFocusGained() | endif autocmd InsertLeave * :call YRInsertLeave() + autocmd User YRSetNumberedReg :call YRSetNumberedReg() + " autocmd User YRSetNumberedReg :let i = 0 | while i <= 10 | if i > s:yr_count | break | endif | call setreg( (i), s:YRGetValElemNbr((i),'v'), s:YRGetValElemNbr((i),'t') ) | let i += 1 | endwhile augroup END @@ -2431,18 +2507,30 @@ if has("gui_running") && has("menu") && g:yankring_default_menu_mode != 0 if g:yankring_default_menu_mode == 1 let menuRoot = 'YankRing' + let menuPriority = '' elseif g:yankring_default_menu_mode == 2 let menuRoot = '&YankRing' + let menuPriority = '' + elseif g:yankring_default_menu_mode == 3 + let menuRoot = exists("g:yankring_menu_root") ? g:yankring_menu_root : '&Plugin.&YankRing' + let menuPriority = exists("g:yankring_menu_priority") ? yankring_menu_priority : '' else let menuRoot = '&Plugin.&YankRing' + let menuPriority = '' endif - exec 'noremenu