*NrrwRgn.txt* A Narrow Region Plugin (similar to Emacs) Author: Christian Brabandt Version: 0.33 Thu, 15 Jan 2015 20:52:29 +0100 Copyright: (c) 2009-2015 by Christian Brabandt The VIM LICENSE applies to NrrwRgnPlugin.vim and NrrwRgnPlugin.txt (see |copyright|) except use NrrwRgnPlugin instead of "Vim". NO WARRANTY, EXPRESS OR IMPLIED. USE AT-YOUR-OWN-RISK. ============================================================================== 1. Contents *NarrowRegion* *NrrwRgnPlugin* 1. Contents.....................................: |NrrwRgnPlugin| 2. NrrwRgn Manual...............................: |NrrwRgn-manual| 2.1 NrrwRgn Howto..............................: |NR-HowTo| 2.2 NrrwRgn Multi..............................: |NR-multi-example| 2.3 NrrwRgn Configuration......................: |NrrwRgn-config| 2.4 NrrwRgn public functions...................: |NrrwRgn-func| 3. NrrwRgn Tips.................................: |NrrwRgn-tips| 4. NrrwRgn Feedback.............................: |NrrwRgn-feedback| 5. NrrwRgn History..............................: |NrrwRgn-history| ============================================================================== 2. NrrwRgn Manual *NrrwRgn-manual* Functionality This plugin is based on a discussion in comp.editors (see the thread at http://groups.google.com/group/comp.editors/browse_frm/thread/0f562d97f80dde13) Narrowing means focussing on a region and making the rest inaccessible. You simply select the region, call |:NarrowRegion| and the selected part will open in a new scratch buffer. The rest of the file will be protected, so you won't accidentally modify that buffer. In the new buffer, you can do a global replace, search or anything else to modify that part. When you are finished, simply write that buffer (e.g. by |:w|) and your modifications will be put in the original buffer making it accessible again. Use |:q!| or |:bw!| to abort your changes and return back to the original window. NrrwRgn allows you to either select a line based selection using an Ex-command or you can simply use any visual selected region and press your preferred key combination to open that selection in a new buffer. This plugin defines the following commands: *:NarrowRegion* *:NR* :[range]NR[!] :[range]NarrowRegion[!] When [range] is omitted, select only the current line, else use the lines in the range given and open it in a new Scratch Window. If the current line is selected and is on a folded region, select the whole folded text. Whenever you are finished modifying that region simply write the buffer. If ! is given, open the narrowed buffer not in a split buffer but in the current window. However when 'hidden' is not set, will open a new split window. *:NarrowWindow* *:NW* :NW[!] :NarrowWindow[!] Select only the range that is visible the current window and open it in a new Scratch Window. Whenever you are finished modifying that region simply write the buffer. If ! is given, open the narrowed buffer not in a split buffer but in the current window (works best with 'hidden' set). *:WidenRegion* *:WR* :WR[!] :WidenRegion[!] This command is only available in the narrowed scratch window. If the buffer has been modified, the contents will be put back on the original buffer. If ! is specified, the window will be closed, otherwise it will remain open. *:NRV* :NRV[!] Opened the narrowed window for the region that was last selected in visual mode If ! is given, open the narrowed buffer not in a split buffer but in the current window (works best with 'hidden' set). *:NUD* :NUD When viewing unified diffs, this command opens the current chunk in 2 Narrowed Windows in |diff-mode| The current chunk is determined as the one, that the cursor is at. For filetypes other than diffs, it will try to create a diff mode for a merge conflict. *:NRPrepare* :[range]NRPrepare[!] :[range]NRP[!] You can use this command, to mark several lines that will later be put into a Narrowed Window using |:NRM|. Using '!' clears the selection and does not add any lines. Use |:NRUnprepare| to remove a line again. *:NRUnprepare* :[range]NRUnprepare[!] This command will remove the current line and remove it from the lines marked for use with |:NRM|. If the current line was not previously selected for a multi narrowed window, it is ignored. *:NRMulti* :NRMulti :NRM[!] This command takes all lines, that have been marked by |:NRP| and puts them together in a new narrowed buffer. When you write your changes back, all separate lines will be put back at their origin. This command also clears the list of marked lines, that was created with |NRP|. See also |NR-multi-example|. If ! is given, open the narrowed buffer not in a split buffer but in the current window (works best with 'hidden' set). *:NRSyncOnWrite* *:NRS* :NRSyncOnWrite :NRS Enable synching the buffer content back to the original buffer when writing. (this is the default). *:NRNoSyncOnWrite* *:NRN* :NRNoSyncOnWrite :NRN Disable synching the buffer content back to the original buffer when writing. When set, the narrowed buffer behaves like an ordinary buffer that you can write in the filesystem. Note: You can still use |:WidenRegion| to write the changes back to the original buffer. *:NRL* :NRL[!] Reselect the last selected region again and open in a narrowed window. If ! is given, open the narrowed buffer not in a split buffer but in the current window (works best with 'hidden' set). 2.1 NrrwRgn HowTo *NR-HowTo* ----------------- Use the commands provided above to select a certain region to narrow. You can also start visual mode and have the selected region being narrowed. In this mode, NarrowRegion allows you to block select |CTRL-V| , character select |v| or linewise select |V| a region. Then press nr where by default is set to '\', unless you have set it to something different (see || for information how to change this) and the selected range will open in a new scratch buffer. This key combination only works in |Visual-mode| If instead of nr you use Nr in visual mode, the selection will be opened in the current window, replacing the original buffer. (Alternatively, you can use the normal mode mapping nr and the region over which you move will be opened in a new Narrowed window). When finished, simply write that Narrowed Region window, from which you want to take the modifications in your original file. It is possible, to recursively open a Narrowed Window on top of an already narrowed window. This sounds a little bit silly, but this makes it possible, to have several narrowed windows, which you can use for several different things, e.g. If you have 2 different buffers opened and you want to diff a certain region of each of those 2 buffers, simply open a Narrowed Window for each buffer, and execute |:diffthis| in each narrowed window. You can then interactively merge those 2 windows. And when you are finished, simply write the narrowed window and the changes will be taken back into the original buffer. When viewing unified diffs, you can use the provided |:NUD| command to open 2 Narrowed Windows side by side viewing the current chunk in |diff-mode|. Those 2 Narrowed windows will be marked 'modified', since there was some post processing involved when opening the narrowed windows. Be careful, when quitting the windows, not to write unwanted changes into your patch file! In the window that contains the unified buffer, you can move to a different chunk, run |:NUD| and the 2 Narrowed Windows in diff mode will update. 2.2 NrrwRgn Multi *NR-multi-example* ----------------- Using the commands |:NRP| and |:NRM| allows to select a range of lines, that will be put into a narrowed buffer together. This might sound confusing, but this allows to apply a filter before making changes. For example before editing your config file, you decide to strip all comments for making big changes but when you write your changes back, these comments will stay in your file. You would do it like this: > :v/^#/NRP :NRMulti < Now a Narrowed Window will open, that contains only the configuration lines. Each block of independent region will be separated by a string like # Start NarrowRegion1 ..... # End NarrowRegion1 This is needed, so the plugin later knows, which region belongs where in the original place. Blocks you don't want to change, you can safely delete, they won't be written back into your original file. But other than that, you shouldn't change those separating lines. When you are finished, simply write your changes back. ============================================================================== 2.3 NrrwRgn Configuration *NrrwRgn-config* ------------------------- NarrowRegion can be customized by setting some global variables. If you'd like to open the narrowed window as a vertical split buffer, simply set the variable *g:nrrw_rgn_vert* to 1 in your |.vimrc| > let g:nrrw_rgn_vert = 1 < (default: 0) ------------------------------------------------------------------------------ If you'd like to specify a certain width/height for you scratch buffer, then set the variable *g:nrrw_rgn_wdth* in your |.vimrc| . This variable defines the height or the nr of columns, if you have also set g:nrrw_rgn_vert. > let g:nrrw_rgn_wdth = 30 < (default: 20) Note: if the newly created narrowed window is smaller than this, it will be resized to fit (plus an additional padding that can be specified using the g:nrrw_rgn_pad variable (default: 0), to not leave unwanted space around (not for single narrowed windows, e.g. when the '!' attribute was used). ------------------------------------------------------------------------------ Resizing the narrowed window can happen either by some absolute values or by a relative percentage. The variable *g:nrrw_rgn_resize_window* determines what kind of resize will occur. If it is set to "absolute", the resizing will be done by absolute lines or columns (depending on whether a horizontal or vertical split has been done). If it is set to "relative" the window will be resized by a percentage. Set it like this in your |.vimrc| > let g:nrrw_rgn_resize_window = 'absolute' < (default: absolute) The percentages for increasing the window size can further be specified by seting the following variables: default: g:nrrw_rgn_rel_min: 10 (50 for vertical splits) g:nrrw_rgn_rel_max: 80 ------------------------------------------------------------------------------ It is possible to specify an increment value, by which the narrowed window can be increased. This is allows to easily toggle between the normal narrowed window size and an even increased size (think of zooming). You can either specify a relative or absolute zooming value. An absolute resize will happen, if the variable |g:nrrw_rgn_resize_window| is set to "absolute" or it is unset (see above). If absolute resizing should happen you have to either specify columns, if the Narrowed window is a vertical split window or lines, if a horizontal split has been done. Example, to increase the narrowed window by 30 lines or columns if (g:nrrw_rgn_vert is also set [see above]), set in your |.vimrc| > let g:nrrw_rgn_incr = 30 < (default: 10, if |g:nrrw_rgn_resize_window| is "absolute") Note: When using the '!' attribute for narrowing (e.g. the selection will be opened in a new window that takes the complete screen size), no resizeing will happen ------------------------------------------------------------------------------ If you'd like to change the key combination that toggles incrementing the Narrowed Window size, map *NrrwrgnWinIncr* by putting this in your |.vimrc| > nmap NrrwrgnWinIncr < (default: ) This will let you use the key to toggle the window size of the Narrowed Window. Note: This mapping is only in the narrowed window active. The amount of how much to increase can be further refined by setting the *g:nrrw_rgn_incr* for an absolute increase of by setting the variables *g:nrrw_rgn_rel_min* and *g:nrrw_rgn_rel_max* Whether an absolute or relative increase will be performed, is determined by the |g:nrrw_rgn_resize_window| variable (see above). ------------------------------------------------------------------------------ By default, NarrowRegion highlights the region that has been selected using the WildMenu highlighting (see |hl-WildMenu|). If you'd like to use a different highlighting, set the variable g:nrrw_rgn_hl to your preferred highlighting Group. For example to have the region highlighted like a search result, you could set *g:nrrw_rgn_hl* in your |.vimrc| > let g:nrrw_rgn_hl = 'Search' < (default: WildMenu) If you want to turn off the highlighting (because this can be distracting), you can set the global variable *g:nrrw_rgn_nohl* to 1 in your |.vimrc| > let g:nrrw_rgn_nohl = 1 < (default: 0) ------------------------------------------------------------------------------ If you'd like to change the key combination that starts the Narrowed Window for your selected range, you could map *NrrwrgnDo* in your |.vimrc| > xmap NrrwrgnDo < This will let open the Narrow-Window, but only if you have pressed it in Visual Mode. It doesn't really make sense to map this combination to any other mode, unless you want it to Narrow your last visually selected range. (default: nr) ------------------------------------------------------------------------------ If you'd like to specify the options that you want to have set for the narrowed window, you can set the *g:nrrw_custom_options* setting, in your |.vimrc| e.g. > let g:nrrw_custom_options={} let g:nrrw_custom_options['filetype'] = 'python' > This will only apply those options to the narrowed buffer. You need to take care that all options you need will apply. ------------------------------------------------------------------------------ If you don't like that your narrowed window opens above the current window, define the *g:nrrw_topbot_leftright* variable to your taste, e.g. > let g:nrrw_topbot_leftright = 'botright' < Now, all narrowed windows will appear below the original window. If not specified, the narrowed window will appear above/left of the original window. (default: topleft) ------------------------------------------------------------------------------ If you want to use several independent narrowed regions of the same buffer that you want to write at the same time, protecting the original buffer is not really useful. Therefore, set the *g:nrrw_rgn_protect* variable, e.g. in your |.vimrc| > let g:nrrw_rgn_protect = 'n' < This can be useful if you diff different regions of the same file, and want to be able to put back the changes at different positions. Please note that you should take care not to change any part that will later be influenced when writing the narrowed region back. Note: Don't use overlapping regions! Your changes will probably not be put back correctly and there is no guard against losing data accidentally. NrrwRgn tries hard to adjust the highlighting and regions as you write your changes back into the original buffer, but it can't guarantee that this will work and might fail silently. Therefore, this feature is experimental! (default: y) ------------------------------------------------------------------------------ If you are using the |:NRMulti| command and want to have the original window update to the position of where the cursor is in the narrowed window, you can set the variable *g:nrrw_rgn_update_orig_win,* e.g. in your |.vimrc| > let g:nrrw_rgn_update_orig_win = 1 < Now the cursor in the original window will always update when the position changes in the narrowed window (using a |CursorMoved| autocommand). Note: that this might slow down scrolling and cursor movement a bit. (default: 0) ------------------------------------------------------------------------------ By default, NarrowRegion plugin defines the two mappings nr in visual mode and normal mode and Nr only in visual mode. If you have your own mappings defined, than NarrowRegion will complain about the key already being defined. Chances are, this will be quite annoying to you, so you can disable mappings those keys by defining the variables *g:nrrw_rgn_nomap_nr* and *g:nrrw_rgn_nomap_Nr* in your |.vimr| > :let g:nrrw_rgn_nomap_nr = 1 :let g:nrrw_rgn_nomap_Nr = 1 (default: 0) ---------------------------------------------------------------------------- *NrrwRgn-hook* *NR-hooks* NarrowRegion can execute certain commands, when creating the narrowed window and when closing the narrowed window. For this, you can set 2 buffer-local variables that specify what commands to execute, which will hook into the execution of the Narrow Region plugin. For example, suppose you have a file, containing columns separated data (CSV format) which you want to modify and you also have the CSV filetype plugin (http://www.vim.org/scripts/script.php?script_id=2830) installed and you want to modify the CSV data which should be visually arranged like a table in the narrowed window. Therefore you want the command |:ArrangeColumn| to be executed in the new narrowed window upon entering it, and when writing the changes back, you want the command |:UnArrangeColumn| to be executed just before putting the changes back. So you set the two variables *b:nrrw_aucmd_create* and *b:nrrw_aucmd_close* in your original buffer: > let b:nrrw_aucmd_create = "set ft=csv|%ArrangeCol" let b:nrrw_aucmd_close = "%UnArrangeColumn" < This will execute the commands in the narrowed window: > :set ft=csv :%ArrangeCol and before writing the changes back, it'll execute: > :%UnArrangeCol Note: These hooks are executed in the narrowed window (i.e. after creating the narrowed window and its content and before writing the changes back to the original buffer). Additional hooks *b:nrrw_aucmd_writepost* and *b:nrrw_aucmd_written* are provided, when the data is written back in the original window: the first one is executed in the narrowed window, while the second one in the original one (the one where the narrowed region was created from). For example, consider you want the execute the command |:make| in the narrowed window, and also write the original buffer, whenever the narrowed window is written back to the original window. You therefore set: > :let b:nrrw_aucmd_writepost = ':make' :let b:nrrw_aucmd_written = ':update' < This will run |:make| in the narrowed window and also |:update| the original buffer, whenever it was modified after writing the changes from the narrowed window back. 2.4 NrrwRgn functions *NrrwRgn-func* --------------------- The NrrwRgn plugin defines a public function in its namespace that can be used to query its status. *nrrwrgn#NrrwRgnStatus()* nrrwrgn#NrrwRgnStatus() Returns a dict with the following keys: 'shortname': The displayed buffer name 'fullname': The complete buffer name of the original buffer 'multi': 1 if it is a multi narrowed window (|:NRMulti|), 0 otherwise. 'startl': List of start lines for a multi narrowed window (only present, if 'multi' is 1) 'endl': List of end lines for a multi narrowed window (only present, if 'multi' is 1) 'start': Start position (only present if 'multi' is 0) 'end': End position (only present if 'multi' is 0) 'visual': Visual Mode, if it the narrowed window was started from a visual selected region (empty otherwise). 'enabled': Whether syncing the buffer is enabled (|:NRS|) If not executed in a narrowed window, returns an empty dict. ============================================================================= 3. NrrwRgn Tips *NrrwRgn-tips* To have the filetype in the narrowed window set, you can use this function: > command! -nargs=* -bang -range -complete=filetype NN \ :, call nrrwrgn#NrrwRgn('',) \ | set filetype= < This lets you select a region, call :NN sql and the selected region will get the sql filetype set. (Contributed by @fourjay, thanks!) ============================================================================= 4. NrrwRgn Feedback *NrrwRgn-feedback* Feedback is always welcome. If you like the plugin, please rate it at the vim-page: http://www.vim.org/scripts/script.php?script_id=3075 You can also follow the development of the plugin at github: http://github.com/chrisbra/NrrwRgn Please don't hesitate to report any bugs to the maintainer, mentioned in the third line of this document. If you like the plugin, write me an email (look in the third line for my mail address). And if you are really happy, vote for the plugin and consider looking at my Amazon whishlist: http://www.amazon.de/wishlist/2BKAHE8J7Z6UW ============================================================================= 5. NrrwRgn History *NrrwRgn-history* 0.34: (unreleased) {{{1 - merge Github Pull #34 (https://github.com/chrisbra/NrrwRgn/pull/34, by Pyrohh, thanks!) - resize narrowed window to actual size, this won't leave the a lot of empty lines in the narrowed window. - don't switch erroneously to the narrowed window on writing (https://github.com/chrisbra/NrrwRgn/issues/35, reported by Yclept Nemo thanks!) - Always write the narrowed scratch window back on |:w| instead of only when it was modified (https://github.com/chrisbra/NrrwRgn/issues/37, reported by Konfekt, thanks!) - Do not resize window, if :NR! was used (patch by leonidborisenko from https://github.com/chrisbra/NrrwRgn/pull/38 thanks!) - Various improvements for Window resizing, partly by Yclept Nemo, thanks! - Fixed error for undefined function and cursor movement in wrong window (issue https://github.com/chrisbra/NrrwRgn/issues/42 reported by adelarsq, thanks!) - Don't set the original buffer to be modified in single-window mode (issue https://github.com/chrisbra/NrrwRgn/issues/43, reported by agguser, thanks!) - Don't clean up on BufWinLeave autocommand, so that switching buffers will not destroy the BufWriteCmd (issue https://github.com/chrisbra/NrrwRgn/issues/44, reported by agguser, thanks!) - remove highlighting after closing narrowed buffer (also issue https://github.com/chrisbra/NrrwRgn/issues/45, reported by Serabe, thanks!) - do not map nr and Nr if g:nrrw_rgn_nomap_ is set (issue https://github.com/chrisbra/NrrwRgn/issues/52, reported by digitalronin, thanks!) - correctly highlight in block-wise visual mode, if '$' has been pressed. - do not set bufhidden=delete for single narrowed windows https://github.com/chrisbra/NrrwRgn/issues/62 - Make :NUD able to handle git like merge conflicts https://github.com/chrisbra/NrrwRgn/issues/68 - Correctly jump to the original window when closing https://github.com/chrisbra/NrrwRgn/issues/70 - Allow to Unremove lines from |:NRP| command https://github.com/chrisbra/NrrwRgn/issues/72 - Clarify documentation about |:NRP| command https://github.com/chrisbra/NrrwRgn/issues/71 0.33: Jan 16, 2015 {{{1 - set local options later, so that FileType autocommands don't trigger to early - make sure, shortening the buffer name handles multibyte characters correctly. - new public function |nrrwrgn#NrrwRgnStatus()| - nr also mapped as operator function (so the region over which you move will be opened in the narrowed window - highlighting wrong when char-selecting within a line - needs Vim 7.4 - mention how to abort the narrowed window (suggested by David Fishburn, thanks!) - Execute hooks after the options for the narrowed window have been set (issue #29, reported by fmorales, thanks!) - Toggles the Narrowed Window Size (idea by David Fishburn, thanks!) - New hook b:nrrw_aucmd_written, to be executed, whenever the narrowed info has been written back into the original buffer. - g:nrrw_rgn_write_on_sync is being deprecated in favor of using the newly "written" hook - error on writing back multi narrowed window (issue #30, reported by aleprovencio https://github.com/chrisbra/NrrwRgn/issues/30, thanks!) - document autoresize function (g:nrrw_rgn_autoresize_win) - error when calling Incr Function, Make it override over global mapping. (issue #31, reported by zc he https://github.com/chrisbra/NrrwRgn/issues/31, thanks!) - |:NRP| didn't work as documented (reported by David Fishburn, thanks!) - fix small syntax error in autoload file (issue #32, reported by itchyny (https://github.com/chrisbra/NrrwRgn/issues/32, thanks!) - check, that dict key is available before accessing it (issue #33, reported by SirCorion (https://github.com/chrisbra/NrrwRgn/issues/33, thanks!) 0.32: Mar 27, 2014 {{{1 - hooks could corrupt the narrowed buffer, if it wasn't closed (reported by jszakemeister https://github.com/chrisbra/NrrwRgn/issues/19, thanks!) - Don't parse $VIMRUNTIME/doc/options.txt for finding out buffer-local options (reported by AguirreIF https://github.com/chrisbra/NrrwRgn/issues/21, thanks!), instead include a fix set of option names to set when opening the narrowed buffer. - Switching buffers in the original narrowed buffer, may confuse NrrwRgn. - Code cleanup (no more separate functions for visual and normal mode) - fix issue 22 (characterwise narrowing was brocken in last commit, reported by Matthew Boehm in https://github.com/chrisbra/NrrwRgn/issues/22, thanks!) - in characterwise visual selection, trailing \n is not stripped when writing (reported by Matthew Boehm in https://github.com/chrisbra/NrrwRgn/23, thanks!) - highlighting was wrong for characterwise visual selections - update original window for multi narrowed regions ( https://github.com/chrisbra/NrrwRgn/24, reported by Dane Summers, thanks!), use the g:nrrw_rgn_update_orig_win variable to enable - error when narrowed window was moved to new tab and trying to quit (https://github.com/chrisbra/NrrwRgn/2, reported by Mario Ricalde, thanks!) - better default names for the narrowed window (https://github.com/chrisbra/Nrrwrgn/28, reported by Mario Ricalde, thanks!) - when setting g:nrrw_rgn_write_on_sync the original file will be saved, whenever the narrowed window is written back (https://github.com/chrisbra/26, reported by Mario Ricalde, thanks!) - Some more error handling when using |:WidenRegion| - Make sure highlighting is removed when using |:WidenRegion| 0.31: Feb 16, 2013 {{{1 - NRM threw some errors (reported by pydave in https://github.com/chrisbra/NrrwRgn/issues/17, thanks!) - don't create swapfiles (reported by ping, thanks!) 0.30: Jan 25, 2013 {{{1 - |NRL| throws erros, when used without having first narrowed a region - |NRV!| not allowed (reported by ping, thanks!) - when using single window narrowing, :w would jump back to the original window. Only do this, when 'hidden' is not set (reported by ping, thanks!) - when narrowing a region, the last visual selected region wasn't correctly restored (reported by ping, thanks!) - some code cleanup - recursive narrowing was broken, fix it (reported by ping, thanks!) 0.29: Aug 20, 2012 {{{1 - Use ! to have the narrowed buffer not opened in a new window (suggested by Greg Sexton thanks!, issue #8 https://github.com/chrisbra/NrrwRgn/issues/8) - Fix mappings for visual mode (https://github.com/chrisbra/NrrwRgn/issues/9, reported by Sung Pae, thanks!) - Fix problem with setting the filetype (https://github.com/chrisbra/NrrwRgn/issues/10, reported by Hong Xu, thanks!) - Fix some minor problems, when using ! mode 0.28: Jun 03, 2012 {{{1 - Plugin did not store last narrowed region when narrowed window was moved to another tabpage (reported by Ben Fritz, thanks!) 0.27: May 17, 2012 {{{1 - When using |:NR| on a line that is folded, include the whole folded region in the Narrowed window. - Better filetype detection for comments - Error handling, when doing |:NRM| without doing |:NRP| first - Use |:NRP!| to clear the old selection - Don't load the autoload script when sourcing the plugin script (reported by Sergey Khorev, thanks!) - Vim 7.3.449 introduced E855, prevent this error. - |:NRL| - |NRM| did not correctly parse the list of lines provided by |:NRP| - highlighted pattern for blockwise visual narrowed regions was wrong - Saving blockwise visual selected regions back, could corrupt the contents 0.26: Jan 02, 2012 {{{1 - Fix issue https://github.com/chrisbra/NrrwRgn/issues/7 (reported by Alessio B., thanks!) 0.25: Nov 08, 2011 {{{1 - updated documentation (patch by Jean, thanks!) - make it possible, to not sync the narrowed buffer back by disabling it using |:NRSyncOnWrite| |:NRNoSyncOnWrite| 0.24: Oct 24, 2011 {{{1 - error on vim.org page, reuploaded version 0.22 as 0.24 0.23: Oct 24, 2011 {{{1 - (wrongly uploaded to vim.org) 0.22: Oct 24, 2011 {{{1 - Allow customization via the use of hooks (|NR-hooks|) 0.21: July 26, 2011 {{{1 - Fix undefined variable adjust_line_numbers https://github.com/chrisbra/NrrwRgn/issues/5 (reported by jmcantrell, thanks!) 0.20: July 25, 2011 {{{1 - allow customization via the g:nrrw_topbot_leftright variable (Thanks Herbert Sitz!) - allow what options will be applied using the g:nrrw_custom_options dict (suggested by Herbert Sitz. Thanks!) - NRV didn't hightlight the region that was selected (reported by Herbert Sitz, thanks!) - use the g:nrrw_rgn_protect variable, to prevent that the original buffer will be protected. This is useful, if you narrow several regions of the same buffer and want to write those changes indepentently (reported by kolyuchiy in https://github.com/chrisbra/NrrwRgn/issues/3, Thanks!) - fix an error with not correctly deleting the highlighted region, that was discovered when reporting issue 3 (see above). (Reported by kolyuchiy, thanks!) - Catch errors, when setting window local options. (Patch by Sung Pae, Thanks!) 0.19: May 22, 2011 {{{1 - fix issue 2 from github https://github.com/chrisbra/NrrwRgn/issues/2 (Widening does not work, if the narrowed windows have been moved to a new tabspace). Reported by vanschelven, thanks! 0.18: December 10, 2010 {{{1 - experimental feature: Allow to Narrow several different regions at once using :g/pattern/NRP and afterwards calling :NRM (This only works linewise. Should that be made possible for any reagion?) - disable folds, before writing changes back, otherwise chances are, you'll lose more data then wanted - code cleanup 0.17: November 23, 2010 {{{1 - cache the options, that will be set (instead of parsing $VIMRUNTIME/doc/options.txt every time) in the Narrowed Window - getting the options didn't work, when using an autocommand like this: autocmd BufEnter * cd %:p:h (reported by Xu Hong, Thanks!) - :q didn't clean up the Narrowed Buffer correctly. Fix this - some code cleanup 0.16: November 16, 2010 {{{1 - Bugfix: copy all local options to the narrowed window (reported by Xu Hong, Thanks!) 0.15: August 26, 2010 {{{1 - Bugfix: minor documentation update (reported by Hong Xu, Thanks!) 0.14: August 26, 2010 {{{1 - Bugfix: :only in the original buffer resulted in errors (reported by Adam Monsen, Thanks!) 0.13: August 22, 2010 {{{1 - Unified Diff Handling (experimental feature) 0.12: July 29, 2010 {{{1 - Version 0.11, wasn't packaged correctly and the vimball file contained some garbage. (Thanks Dennis Hostetler!) 0.11: July 28, 2010 {{{1 - Don't set 'winfixwidth' and 'winfixheight' (suggested by Charles Campbell) 0.10: May 20, 2010 {{{1 - Restore cursor position using winrestview() and winsaveview() - fix a bug, that prevented the use of visual narrowing - Make sure when closing the narrowed buffer, the content will be written to the right original region - use topleft for opening the Narrowed window - check, that the original buffer is still available - If you Narrow the complete buffer using :NRV and write the changes back, an additional trailing line is inserted. Remove that line. - When writing the changes back, update the highlighting. 0.9: May 20, 2010 {{{1 - It is now possible to Narrow a window recursively. This allows to have several narrowed windows, and allows for example to only diff certain regions (as was suggested in a recent thread at the vim_use mailinglist: http://groups.google.com/group/vim_use/msg/05d7fd9bd1556f0e) therefore, the use for the g:nrrw_rgn_sepwin variable isn't necessary anymore. - Small documentation updates 0.8: May 18, 2010 {{{1 - the g:nrrw_rgn_sepwin variable can be used to force separate Narrowed Windows, so you could easily diff those windows. - make the separating of several windows a little bit safer (look at the bufnr(), so it should work without problems for several buffers) - switch from script local variables to buffer local variables, so narrowing for several buffers should work. - set 'winfixheight' for narrowed window - Added command :NRV (suggested by Charles Campbell, thanks!) - added error handling, in case :NRV is called, without a selected region - take care of beeps, when calling :NRV - output WarningMsg 0.7: May 17, 2010 {{{1 - really use the black hole register for deleting the old buffer contents in the narrowed buffer (suggestion by esquifit in http://groups.google.com/group/comp.editors/msg/3eb3e3a7c68597db) - make autocommand nesting, so the highlighting will be removed when writing the buffer contents. - Use g:nrrw_rgn_nohl variable to disable highlighting (as this can be disturbing). 0.6: May 04, 2010 {{{1 - the previous version had problems restoring the orig buffer, this version fixes it (highlighting and setl ma did not work correctly) 0.5: May 04, 2010 {{{1 - The mapping that allows for narrowing a visually selected range, did not work. (Fixed!) - Make :WidenRegion work as expected (close the widened window) (unreleased) 0.4: Apr 28, 2010 {{{1 - Highlight narrowed region in the original buffer - Save and Restore search-register - Provide shortcut commands |:NR| - Provide command |:NW| and |:NarrowWindow| - Make plugin autoloadable - Enable GLVS (see |:GLVS|) - Provide Documenation (:h NarrowRegion) - Distribute Plugin as vimball |pi_vimball.txt| 0.3: Apr 28, 2010 {{{1 - Initial upload - development versions are available at the github repository - put plugin on a public repository (http://github.com/chrisbra/NrrwRgn) }}} ============================================================================== Modeline: vim:tw=78:ts=8:ft=help:et:fdm=marker:fdl=0:norl