Pārlūkot izejas kodu

Move the documentation from the plugin file to a doc file. Handle multi-byte file names correctly

Yegappan Lakshmanan 7 gadi atpakaļ
vecāks
revīzija
7ef8683b98
2 mainītis faili ar 268 papildinājumiem un 213 dzēšanām
  1. 262 0
      doc/mru.txt
  2. 6 213
      plugin/mru.vim

+ 262 - 0
doc/mru.txt

@@ -0,0 +1,262 @@
+*mru.txt*	Plugin for accessing most recently used files
+
+Author: Yegappan Lakshmanan  (yegappan AT yahoo DOT com)
+For Vim version 7.0 and above
+Last change: August 29, 2018
+
+==============================================================================
+						*mru-license*
+License: MIT License
+Copyright (c) 2003-2018 Yegappan Lakshmanan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+==============================================================================
+CONTENTS~
+
+1. Overview					|mru-overview|
+2. Installation					|mru-installation|
+3. Usage					|mru-usage|
+4. Configuration				|mru-configuration|
+
+==============================================================================
+1. Overview					*mru-overview*
+
+The Most Recently Used (MRU) plugin provides an easy access to a list of
+recently opened/edited files in Vim. This plugin automatically stores the
+file names as you open/edit them in Vim.
+
+This plugin will work on all the platforms where Vim is supported. This
+plugin will work in both console and GUI Vim. This version of the MRU
+plugin needs Vim 7.0 and above. If you are using an earlier version of
+Vim, then you should use an older version of the MRU plugin.
+
+The recently used filenames are stored in a file specified by the Vim
+MRU_File variable.
+
+The Github repository for the MRU plugin is available at:
+
+      http://github.com/yegappan/mru
+
+==============================================================================
+2. Installation					*mru-installation*
+
+You can use any one of the Vim plugin managers (dein.vim, pathogen, vam,
+vim-plug, volt, Vundle, etc.) to install and manage this plugin.
+
+Alternatively, you can also manually download and install the plugin
+using the following steps.
+
+1. Download the mru.zip file from the vim.sourceforge.io site.
+2. Unzip the files into the $HOME/.vim or the $HOME/vimfiles directory.  After
+   this step, you should have the following files (the directory structure
+   should be preserved):
+
+	plugin/mru.vim - MRU plugin
+	doc/mru.txt    - documentation (help) file
+
+3. Change to the $HOME/.vim/doc or $HOME/vimfiles/doc or $VIM/vimfiles/doc
+   directory, start Vim and run the ":helptags ." command to process the
+   help file. Without this step, you cannot jump to the help topics.
+4. Restart Vim.
+5. You can use the |:MRU| command to list and edit the recently used files.
+   In GUI Vim, you can use the 'File->Recent Files' menu to access the
+   recently used files.
+
+To uninstall the MRU plugin, either use the uninstall command provided by the
+plugin manager or manually remove the plugin/mru.vim, and doc/greplace.txt
+files from the $HOME/.vim or $HOME/vimfiles directory.
+
+==============================================================================
+3. Usage					*mru-usage* *:MRU*
+
+To list and edit files from the Most Recently Used (MRU) list, you can use the
+":MRU" command.  The |:MRU| command displays the list of recently used files
+in a temporary Vim window.  If the MRU window is already opened, then the MRU
+list currently displayed in the window is refreshed.
+
+If you are using GUI Vim, then the names of the recently edited files are
+added to the "File->Recent Files" menu. You can select the name of a file
+from this sub-menu to edit the file.
+
+You can use the normal Vim commands to move around in the MRU window. You
+cannot make changes in the MRU window.
+
+You can select a file name to edit by pressing the <Enter> key or by double
+clicking the left mouse button on a file name.  The selected file will be
+opened. If the file is already opened in a window, the cursor will be moved
+to that window. Otherwise, the file is opened in the previous window. If the
+previous window has a modified buffer or is the preview window or is used by
+some other plugin, then the file is opened in a new window.
+
+You can press the 'o' key to open the file name under the cursor in the
+MRU window in a new window. You can also press <Shift-Enter> instead of 'o'
+to open the file in a new window.
+
+To open a file from the MRU window in read-only mode (view), press the 'v'
+key.
+
+To open a file from the MRU window in a new tab, press the 't' key.  If the
+file is already opened in a window in the current or in another tab, then
+the cursor is moved to that tab. Otherwise, a new tab is opened.
+
+You can open multiple files from the MRU window by specifying a count before
+pressing '<Enter>' or 'v' or 'o' or 't'. You can also visually (using
+linewise visual mode) select multiple filenames and invoke the commands to
+open the files. Each selected file will be opened in a separate window or
+tab.
+
+You can press the 'u' key in the MRU window to update the file list. This is
+useful if you keep the MRU window open always.
+
+You can close the MRU window by pressing the 'q' key or the <Esc> key or
+using one of the Vim window commands.
+
+To display only files matching a pattern from the MRU list in the MRU
+window, you can specify a pattern to the |:MRU| command. For example, to
+display only file names matching "vim" in them, you can use the following
+command ":MRU vim".  When you specify a partial file name and only one
+matching filename is found, then the |:MRU| command will edit that file.
+
+The |:MRU| command supports command-line completion of file names from
+the MRU list. You can enter a partial file name and then press <Tab>
+or <Ctrl-D> to complete or list all the matching file names. Note that
+after typing the |:MRU| command, you have to enter a space before completing
+the file names with <Tab>.
+
+When a file supplied to the |:MRU| command is not present in the MRU list,
+but it is a readable file, then the file will be opened (even though it is
+not present in the MRU list). This is useful if you want to open a file
+present in the same directory as a file in the MRU list. You can use the
+command-line completion of the |:MRU| command to complete the full path of a
+file and then modify the path to open another file present in the same path.
+
+Whenever the MRU list changes, the MRU file is updated with the latest MRU
+list. When you have multiple instances of Vim running at the same time, the
+latest MRU list will show up in all the instances of Vim.
+
+The MRUFilename syntax group is used to highlight the file names in the MRU
+window. By default, this syntax group is linked to the Identifier highlight
+group. You can change the highlight group by adding the following line in
+your .vimrc:
+>
+   highlight link MRUFileName LineNr
+<
+The MRU buffer uses the 'mru file type. You can use this file type to add
+custom auto commands, syntax highlighting, etc.
+
+==============================================================================
+4. Configuration				*mru-configuration*
+
+By changing the following variables you can configure the behavior of this
+plugin. Set the following variables in your .vimrc file using the 'let'
+command.
+
+The list of recently edited file names is stored in the file specified by the
+MRU_File variable.  The default setting for this variable is
+$HOME/.vim_mru_files for Unix-like systems and $USERPROFILE/_vim_mru_files
+for MS-Windows systems. You can change this variable to point to a file by
+adding the following line to the .vimrc file:
+>
+      let MRU_File = 'd:\myhome\_vim_mru_files'
+<
+By default, the plugin will remember the names of the last 100 used files.
+As you edit more files, old file names will be removed from the MRU list.
+You can set the 'MRU_Max_Entries' variable to remember more file names. For
+example, to remember 1000 most recently used file names, you can use
+>
+      let MRU_Max_Entries = 1000
+<
+By default, all the edited file names will be added to the MRU list. If you
+want to exclude file names matching a list of patterns, you can set the
+MRU_Exclude_Files variable to a list of Vim regular expressions. By default,
+this variable is set to an empty string. For example, to not include files
+in the temporary (/tmp, /var/tmp and d:\temp) directories, you can set the
+MRU_Exclude_Files variable to
+>
+      let MRU_Exclude_Files = '^/tmp/.*\|^/var/tmp/.*'  " For Unix
+      let MRU_Exclude_Files = '^c:\\temp\\.*'           " For MS-Windows
+<
+The specified pattern should be a Vim regular expression pattern.
+
+If you want to add only file names matching a set of patterns to the MRU
+list, then you can set the MRU_Include_Files variable. This variable should
+be set to a Vim regular expression pattern. For example, to add only .c and
+.h files to the MRU list, you can set this variable as below:
+>
+      let MRU_Include_Files = '\.c$\|\.h$'
+<
+By default, MRU_Include_Files is set to an empty string and all the edited
+filenames are added to the MRU list.
+
+The default height of the MRU window is 8. You can set the MRU_Window_Height
+variable to change the window height.
+>
+      let MRU_Window_Height = 15
+<
+By default, when the |:MRU| command is invoked, the MRU list will be displayed
+in a new window. Instead, if you want the MRU plugin to reuse the current
+window, then you can set the 'MRU_Use_Current_Window' variable to one.
+>
+      let MRU_Use_Current_Window = 1
+<
+The MRU plugin will reuse the current window. When a file name is selected,
+the file is also opened in the current window.
+
+When you select a file from the MRU window, the MRU window will be
+automatically closed and the selected file will be opened in the previous
+window. You can set the 'MRU_Auto_Close' variable to zero to keep the MRU
+window open.
+>
+      let MRU_Auto_Close = 0
+<
+If you don't use the "File->Recent Files" menu and want to disable it,
+then you can set the 'MRU_Add_Menu' variable to zero. By default, the
+menu is enabled.
+>
+      let MRU_Add_Menu = 0
+<
+If too many file names are present in the MRU list, then updating the MRU
+menu to list all the file names makes Vim slow. To avoid this, the
+MRU_Max_Menu_Entries variable controls the number of file names to show in
+the MRU menu. By default, this is set to 10. You can change this to show
+more entries in the menu.
+>
+      let MRU_Max_Menu_Entries = 20
+<
+If many file names are present in the MRU list, then the MRU menu is split
+into sub-menus. Each sub-menu contains MRU_Max_Submenu_Entries file names.
+The default setting for this is 10. You can change this to increase the
+number of file names displayed in a single sub-menu:
+>
+      let MRU_Max_Submenu_Entries = 15
+<
+In the MRU window, the filenames are displayed in two parts. The first part
+contains the file name without the path and the second part contains the
+full path to the file in parenthesis. This format is controlled by the
+MRU_Filename_Format variable. If you prefer to change this to some other
+format, then you can modify the MRU_Filename_Format variable. For example,
+to display the full path without splitting it, you can set this variable
+as shown below:
+>
+      let MRU_Filename_Format =
+      \   {'formatter':'v:val', 'parser':'.*', 'syntax': '[^/\\]\+$'}
+<
+==============================================================================
+
+vim:tw=78:ts=8:noet:ft=help:

+ 6 - 213
plugin/mru.vim

@@ -1,8 +1,8 @@
 " File: mru.vim
 " Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
 " Version: 3.9
-" Last Modified: Feb 3, 2015
-" Copyright: Copyright (C) 2003-2015 Yegappan Lakshmanan
+" Last Modified: Aug 29, 2018
+" Copyright: Copyright (C) 2003-2018 Yegappan Lakshmanan
 " License:   Permission is hereby granted to use and distribute this code,
 "            with or without modifications, provided that this copyright
 "            notice is copied with it. Like anything else that's free,
@@ -11,213 +11,6 @@
 "            holder be liable for any damages resulting from the use of this
 "            software.
 "
-" Overview
-" --------
-" The Most Recently Used (MRU) plugin provides an easy access to a list of
-" recently opened/edited files in Vim. This plugin automatically stores the
-" file names as you open/edit them in Vim.
-"
-" This plugin will work on all the platforms where Vim is supported. This
-" plugin will work in both console and GUI Vim. This version of the MRU
-" plugin needs Vim 7.0 and above. If you are using an earlier version of
-" Vim, then you should use an older version of the MRU plugin.
-"
-" The recently used filenames are stored in a file specified by the Vim
-" MRU_File variable.
-"
-" The Github repository for the MRU plugin is available at:
-"
-"	http://github.com/yegappan/mru
-"
-" Installation
-" ------------
-" 1. Copy the mru.vim file to one of the following directories:
-"       $HOME/.vim/plugin     - Unix like systems
-"       $HOME/vimfiles/plugin - MS-Windows
-"       $VIM:vimfiles:plugin  - Macintosh
-"       $VIM/vimfiles/plugin  - All
-" 2. Restart Vim.
-" 3. You can use the ":MRU" command to list and edit the recently used files.
-"    In GUI Vim, you can use the 'File->Recent Files' menu to access the
-"    recently used files.
-"
-" To uninstall this plugin, remove this file (mru.vim) from the
-" $HOME/.vim/plugin or $HOME/vimfiles/plugin or the $VIM/vimfile/plugin
-" directory.
-"
-" Usage
-" -----
-" To list and edit files from the MRU list, you can use the ":MRU" command.
-" The ":MRU" command displays the MRU file list in a temporary Vim window.  If
-" the MRU window is already opened, then the MRU list displayed in the window
-" is refreshed.
-"
-" If you are using GUI Vim, then the names of the recently edited files are
-" added to the "File->Recent Files" menu. You can select the name of a file
-" from this sub-menu to edit the file.
-"
-" You can use the normal Vim commands to move around in the MRU window. You
-" cannot make changes in the MRU window.
-"
-" You can select a file name to edit by pressing the <Enter> key or by double
-" clicking the left mouse button on a file name.  The selected file will be
-" opened. If the file is already opened in a window, the cursor will be moved
-" to that window. Otherwise, the file is opened in the previous window. If the
-" previous window has a modified buffer or is the preview window or is used by
-" some other plugin, then the file is opened in a new window.
-"
-" You can press the 'o' key to open the file name under the cursor in the
-" MRU window in a new window. You can also press <Shift-Enter> instead of 'o'
-" to open the file in a new window.
-"
-" To open a file from the MRU window in read-only mode (view), press the 'v'
-" key.
-"
-" To open a file from the MRU window in a new tab, press the 't' key.  If the
-" file is already opened in a window in the current or in another tab, then
-" the cursor is moved to that tab. Otherwise, a new tab is opened.
-"
-" You can open multiple files from the MRU window by specifying a count before
-" pressing '<Enter>' or 'v' or 'o' or 't'. You can also visually (using
-" linewise visual mode) select multiple filenames and invoke the commands to
-" open the files. Each selected file will be opened in a separate window or
-" tab.
-"
-" You can press the 'u' key in the MRU window to update the file list. This is
-" useful if you keep the MRU window open always.
-"
-" You can close the MRU window by pressing the 'q' key or the <Esc> key or
-" using one of the Vim window commands.
-"
-" To display only files matching a pattern from the MRU list in the MRU
-" window, you can specify a pattern to the ":MRU" command. For example, to
-" display only file names matching "vim" in them, you can use the following
-" command ":MRU vim".  When you specify a partial file name and only one
-" matching filename is found, then the ":MRU" command will edit that file.
-"
-" The ":MRU" command supports command-line completion of file names from
-" the MRU list. You can enter a partial file name and then press <Tab>
-" or <Ctrl-D> to complete or list all the matching file names. Note that
-" after typing the ":MRU" command, you have to enter a space before completing
-" the file names with <Tab>.
-"
-" When a file supplied to the ":MRU" command is not present in the MRU list,
-" but it is a readable file, then the file will be opened (even though it is
-" not present in the MRU list). This is useful if you want to open a file
-" present in the same directory as a file in the MRU list. You can use the
-" command-line completion of the ":MRU" command to complete the full path of a
-" file and then modify the path to open another file present in the same path.
-"
-" Whenever the MRU list changes, the MRU file is updated with the latest MRU
-" list. When you have multiple instances of Vim running at the same time, the
-" latest MRU list will show up in all the instances of Vim.
-"
-" The MRUFilename syntax group is used to highlight the file names in the MRU
-" window. By default, this syntax group is linked to the Identifier highlight
-" group. You can change the highlight group by adding the following line in
-" your .vimrc:
-"
-"    highlight link MRUFileName LineNr
-"
-" The MRU buffer uses the 'mru file type. You can use this file type to add
-" custom auto commands, syntax highlighting, etc.
-"
-" Configuration
-" -------------
-" By changing the following variables you can configure the behavior of this
-" plugin. Set the following variables in your .vimrc file using the 'let'
-" command.
-"
-" The list of recently edited file names is stored in the file specified by the
-" MRU_File variable.  The default setting for this variable is
-" $HOME/.vim_mru_files for Unix-like systems and $USERPROFILE/_vim_mru_files
-" for MS-Windows systems. You can change this variable to point to a file by
-" adding the following line to the .vimrc file:
-"
-"       let MRU_File = 'd:\myhome\_vim_mru_files'
-"
-" By default, the plugin will remember the names of the last 100 used files.
-" As you edit more files, old file names will be removed from the MRU list.
-" You can set the 'MRU_Max_Entries' variable to remember more file names. For
-" example, to remember 1000 most recently used file names, you can use
-"
-"       let MRU_Max_Entries = 1000
-"
-" By default, all the edited file names will be added to the MRU list. If you
-" want to exclude file names matching a list of patterns, you can set the
-" MRU_Exclude_Files variable to a list of Vim regular expressions. By default,
-" this variable is set to an empty string. For example, to not include files
-" in the temporary (/tmp, /var/tmp and d:\temp) directories, you can set the
-" MRU_Exclude_Files variable to
-"
-"       let MRU_Exclude_Files = '^/tmp/.*\|^/var/tmp/.*'  " For Unix
-"       let MRU_Exclude_Files = '^c:\\temp\\.*'           " For MS-Windows
-" 
-" The specified pattern should be a Vim regular expression pattern.
-"
-" If you want to add only file names matching a set of patterns to the MRU
-" list, then you can set the MRU_Include_Files variable. This variable should
-" be set to a Vim regular expression pattern. For example, to add only .c and
-" .h files to the MRU list, you can set this variable as below:
-"
-"       let MRU_Include_Files = '\.c$\|\.h$'
-"
-" By default, MRU_Include_Files is set to an empty string and all the edited
-" filenames are added to the MRU list.
-"
-" The default height of the MRU window is 8. You can set the MRU_Window_Height
-" variable to change the window height.
-"
-"       let MRU_Window_Height = 15
-"
-" By default, when the :MRU command is invoked, the MRU list will be displayed
-" in a new window. Instead, if you want the MRU plugin to reuse the current
-" window, then you can set the 'MRU_Use_Current_Window' variable to one.
-"
-"       let MRU_Use_Current_Window = 1
-"
-" The MRU plugin will reuse the current window. When a file name is selected,
-" the file is also opened in the current window.
-"
-" When you select a file from the MRU window, the MRU window will be
-" automatically closed and the selected file will be opened in the previous
-" window. You can set the 'MRU_Auto_Close' variable to zero to keep the MRU
-" window open.
-"
-"       let MRU_Auto_Close = 0
-"
-" If you don't use the "File->Recent Files" menu and want to disable it,
-" then you can set the 'MRU_Add_Menu' variable to zero. By default, the
-" menu is enabled.
-"
-"       let MRU_Add_Menu = 0
-"
-" If too many file names are present in the MRU list, then updating the MRU
-" menu to list all the file names makes Vim slow. To avoid this, the
-" MRU_Max_Menu_Entries variable controls the number of file names to show in
-" the MRU menu. By default, this is set to 10. You can change this to show
-" more entries in the menu.
-"
-"       let MRU_Max_Menu_Entries = 20
-"
-" If many file names are present in the MRU list, then the MRU menu is split
-" into sub-menus. Each sub-menu contains MRU_Max_Submenu_Entries file names.
-" The default setting for this is 10. You can change this to increase the
-" number of file names displayed in a single sub-menu:
-"
-"       let MRU_Max_Submenu_Entries = 15
-"
-" In the MRU window, the filenames are displayed in two parts. The first part
-" contains the file name without the path and the second part contains the
-" full path to the file in parenthesis. This format is controlled by the
-" MRU_Filename_Format variable. If you prefer to change this to some other
-" format, then you can modify the MRU_Filename_Format variable. For example,
-" to display the full path without splitting it, you can set this variable
-" as shown below:
-"
-"       let MRU_Filename_Format =
-"       \   {'formatter':'v:val', 'parser':'.*', 'syntax': '[^/\\]\+$'}
-"
 " ****************** Do not modify after this line ************************
 if exists('loaded_mru')
     finish
@@ -930,13 +723,13 @@ function! s:MRU_add_files_to_menu(prefix, file_list)
 
         " Truncate the directory name if it is long
         let dir_name = fnamemodify(fname, ':h')
-        let len = strlen(dir_name)
+        let len = strchars(dir_name)
         " Shorten long file names by adding only few characters from
         " the beginning and end.
         if len > 30
-            let dir_name = strpart(dir_name, 0, 10) .
-                        \ '...' . 
-                        \ strpart(dir_name, len - 20)
+            let dir_name = strcharpart(dir_name, 0, 10) .
+                        \ '...' .
+                        \ strcharpart(dir_name, len - 20)
         endif
         let esc_dir_name = escape(dir_name, ".\\" . s:esc_filename_chars)
         let esc_dir_name = substitute(esc_dir_name, '&', '&&', 'g')