MessageRecall : Browse and re-insert previous (commit, status) messages. 
 
 
  |  script karma  | 
  
    Rating 16/9,
    Downloaded by 3669   | 
  
   Comments, bugs, improvements 
   | 
  
    Vim wiki
   |   
 
 
 
| created by |  
| Ingo Karkat |  
|   |  
| script type |  
| utility |  
|   |  
| description |  
DESCRIPTION
 This plugin automatically persists (parts of) buffers used for the editing of
 commit (or other) messages, where Vim is invoked as the editor from an
 external tool. In these buffers, it sets up mappings and commands to iterate
 through stored past messages, and recall the contents for use in the currently
 edited message. This way, you automatically collect a history of (committed or
 aborted) past messages, and can quickly base your current message on contents
 recalled from that history.
 
 SEE ALSO
 This plugin is used by:
 - VcsMessageRecall.vim (vimscript #4117):
   Browse and re-insert previous VCS commit messages.
 
 RELATED WORKS
 USAGE
 The plugin is completely inactive until you set it up for a particular
 buffer through the following function; you'll find the details directly in the
 .vim/autoload/MessageRecall.vim implementation file.
 
 MessageRecall#Setup( messageStoreDirspec, ... )
 
 INSIDE THE CURRENT MESSAGE BUFFER
 After setup, the following mappings and commands are available in the current
 message buffer:
 
 CTRL-P, CTRL-N          When the buffer has had no changes yet: Replace with a
                         [count]'th previous / next stored message.
                         When the buffer has been modified: Open the [count]'th
                         previous / first stored message in the preview window.
                         When the buffer is modified and a stored message has
                         already been inserted: Replace it with the [count]'th
                         previous / next stored message there.
 
 :[count]MessageView     View the [count]'th previous stored message in the
                         preview-window.
 :MessageView {message}|{filespec}
                         View {message} (auto-completed from the message store
                         directory) or any arbitrary {filespec} contents
                         in the preview-window.
 
 :[count]MessageRecall[!]
                         Insert the [count]'th previous stored message below
                         the current line.
 :MessageRecall[!] {message}|{filespec}
                         Insert {message} (auto-completed from the message
                         store directory) or any arbitrary {filespec} contents
                         below the current line.
 
                         When the existing message consists of just empty (or
                         ignored boilerplate) lines (originating from the
                         message template that the tool invoking Vim has put
                         there), the inserted message replaces those empty
                         lines.
                         With [!]: Replace an existing message with the
                         inserted one.
 
 :[range]MessageWrite    Persist the current message / specified lines in
                         [range]; normally, this is done automatically when Vim
                         is done editing the buffer, but it can be useful to
                         store an intermediate state (e.g. before a complete
                         rewrite or before aborting the current edit).
 
 INSIDE A MESSAGE PREVIEW WINDOW
 CTRL-P, CTRL-N          Go to the previous / next stored message.
 
 :MessageRecall          Insert the previewed stored message below the current
                         line in the buffer from which the message preview was
                         opened.
 
 INSIDE BOTH
 :[N]MessageList         Show all / the last [N] messages in the
                         location-list-window; most recent first. (So the
                         line number directly corresponds to {count} in
                         :{count}MessageRecall.)
 
 :[N]MessageGrep [arguments]
                         Search for [arguments] in all / the last [N] stored
                         messages, and set the location-list to the matches.
 
 :[N]MessageVimGrep [/]{pattern}[/]
                         Search for {pattern} in all / the last [N] stored
                         messages, and set the location-list to the matches.
 
 :MessageStore[!] {dirspec}| {identifier}|N
                         Add the directory {dirspec} as a source (with [!]: set
                         as the sole source) for recalled messages.
                         If message stores have been preconfigured (cp.
                         g:MessageRecall_ConfiguredMessageStores), these can
                         be referenced via their short {identifier} instead, or
                         by the N'th last accessed message store .
 :MessageStore           List all message store directories for the current
                         buffer.
 
 :[N]MessagePrune[!]     Remove all / the oldest [N] messages from the message
                         store, with [!] without confirmation.
 :MessagePrune[!] {fileglob}
                         Remove all files matching {fileglob} from the message
                         store, with [!] without confirmation. |  
|   |  
| install details |  
INSTALLATION
 The code is hosted in a Git repo at
     https://github.com/inkarkat/vim-MessageRecall
 You can use your favorite plugin manager, or "git clone" into a directory used
 for Vim packages. Releases are on the "stable" branch, the latest unstable
 development snapshot on "master".
 
 This script is also packaged as a vimball. If you have the "gunzip"
 decompressor in your PATH, simply edit the *.vmb.gz package in Vim; otherwise,
 decompress the archive first, e.g. using WinZip. Inside Vim, install by
 sourcing the vimball or via the :UseVimball command.
     vim MessageRecall*.vmb.gz
     :so %
 To uninstall, use the :RmVimball command.
 
 DEPENDENCIES
 - Requires Vim 7.0 or higher.
 - Requires the ingo-library.vim plugin (vimscript #4433), version 1.043 or
   higher.
 - Requires the BufferPersist.vim plugin (vimscript #4115), version 1.11 or
   higher.
 
 CONFIGURATION
 For a permanent configuration, put the following commands into your vimrc:
 
 When you have multiple, related repositories, you may wish to recall messages
 from other message stores. Though this is possible via :MessageRecall
 path/to/other/message-store, it is tedious, and you cannot browse / preview
 them as easily as the ones from the current message store. For this, you can
 define additional message stores via:
     let b:MessageRecall_MessageStores = ['', 'path/to/other/message-store']
 The empty string stands for the current message store; by omitting it, its
 messages won't be offered any more. Note that this only affects recall and
 preview; the edited messages are still exclusively persisted to the current
 message store.
 
 If you don't want to directly add more message stores, but enable the user to
 quickly do so, you can configure additional message stores together with short
 identifying names:
     let g:MessageRecall_ConfiguredMessageStores = {
     \   'repo1': '/path/to/repo1/.svn/commit-msgs',
     \   'repo2': '/path/to/repo2/.git/commit-msgs',
     \]
 
 If you want to use different mappings, first disable the default key mappings
 in your vimrc:
     map <Plug>DisableMessageRecallPreviewPrev <Plug>(MessageRecallPreviewPrev)
     map <Plug>DisableMessageRecallPreviewNext <Plug>(MessageRecallPreviewNext)
     map <Plug>DisableMessageRecallGoPrev      <Plug>(MessageRecallGoPrev)
     map <Plug>DisableMessageRecallGoNext      <Plug>(MessageRecallGoNext)
 Since there's no common filetype for this plugin, User events are fired for
 each message buffer. You can hook into these events to define alternative
 mappings:
     autocmd User MessageRecallBuffer  map <buffer> <Leader>P <Plug>(MessageRecallGoPrev)
     autocmd User MessageRecallBuffer  map <buffer> <Leader>N <Plug>(MessageRecallGoNext)
     autocmd User MessageRecallPreview map <buffer> <Leader>P <Plug>(MessageRecallPreviewPrev)
     autocmd User MessageRecallPreview map <buffer> <Leader>N <Plug>(MessageRecallPreviewNext) |  
|   |  
 
script versions (upload new version)
Click on the package to download.
 
 
        | MessageRecall-1.50.vmb.gz | 
    1.50 | 
    2025-02-07 | 
    7.0 | 
    Ingo Karkat | 
    - ENH: Enable support for excluding Git message trailers (and similar): a:options.range can also be a List of range expressions; the first matching range will be used. A range of a single empty line will not be deleted. *** You need to update to BufferPersist.vim (vimscript #4115) version 1.11! *** | 
 
        | MessageRecall-1.40.vmb.gz | 
    1.40 | 
    2024-10-03 | 
    7.0 | 
    Ingo Karkat | 
    - ENH: Offer definition of a buffer-local command to persist the current buffer state on demand, via a:options.writeCommandName.
 - Minor: Make substitute() robust against 'ignorecase'.
 - Don't clobber the search history with the a:options.range (if given and using a /{pattern}/ address).
 - Add dependency to ingo-library (vimscript #4433). *** You need to separately install ingo-library (vimscript #4433) version 1.044 (or higher)! *** | 
 
        | MessageRecall-1.30.vmb.gz | 
    1.30 | 
    2020-02-24 | 
    7.0 | 
    Ingo Karkat | 
    - ENH: Sort the :MessageStore completion candidates for configured message stores by last modification time (instead of alphabetically by identifier), so stores that were recently updated come first.
 - ENH: Allow :MessageStore referencing via N count of configured stores, too. | 
 
        | MessageRecall-1.20.vmb.gz | 
    1.20 | 
    2018-11-18 | 
    7.0 | 
    Ingo Karkat | 
    - ENH: Add :MessageList, :MessageGrep, and :MessageVimGrep commands.
 - ENH: Add :MessagePrune.
 - Refactoring. *** You need to update to ingo-library (vimscript #4433) version 1.023! *** | 
 
        | MessageRecall-1.10.vmb.gz | 
    1.10 | 
    2014-12-23 | 
    7.0 | 
    Ingo Karkat | 
    - ENH: For :MessageRecall command completion, return the messages from other message stores also in reverse order, so that the latest one comes first.
 - ENH: Allow to override / extend the message store(s) via b:MessageRecall_MessageStores configuration.
 - Get rid of the dependency to the EditSimilar.vim plugin.
 - ENH: Add :MessageStore command that allows to add / replace message stores. Presets can be configured via the new b:MessageRecall_ConfiguredMessageStores variable.
 - Use ingo#compat#glob() and ingo#compat#globpath(). *** You need to update to ingo-library (vimscript #4433) version 1.022! *** The dependency to the EditSimilar.vim plugin has been dropped. | 
 
        | MessageRecall-1.03.vmb.gz | 
    1.03 | 
    2014-04-16 | 
    7.0 | 
    Ingo Karkat | 
    - Adapt to changed EditSimilar.vim interface that returns the success status now. Abort on error for own plugin commands. *** You need to update to EditSimilar.vim (vimscript #2544) version 2.40! *** | 
 
        | MessageRecall-1.02.vmb.gz | 
    1.02 | 
    2013-11-21 | 
    7.0 | 
    Ingo Karkat | 
    - CHG: Only replace on <C-p> / <C-n> in the message buffer when the considered range is just empty lines. I came to dislike the previous replacement also when the message had been persisted.
 - CHG: On <C-p> / <C-n> in the original message buffer: When the buffer is modified and a stored message is already being previewed, change the semantics of count to be interpreted relative to the currently previewed stored message. Beforehand, one had to use increasing <C-p>, 2<C-p>, 3<C-p>, etc. to iterate through stored messages (or go to the preview window and invoke the mapping there).
 - ENH: Allow to override the default <C-p> / <C-n> mappings.
 - Add dependency to ingo-library (vimscript #4433). *** You need to separately install ingo-library (vimscript #4433) version 1.012 (or higher)! *** | 
 
        | MessageRecall.vba.gz | 
    1.01 | 
    2012-07-12 | 
    7.0 | 
    Ingo Karkat | 
    BUG: Script error E486 when replacing a non-matching commit message buffer. | 
 
        | MessageRecall.vba.gz | 
    1.00 | 
    2012-06-25 | 
    7.0 | 
    Ingo Karkat | 
    Initial upload | 
 
 
ip used for rating: 142.132.191.50
           |