From 6154433e228f9cdc3ed607d66ab399a5aa7b5739 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 23 Feb 2024 01:14:44 +0900 Subject: [PATCH] README: Lambda expression as post-update hook --- README.md | 21 +++++++++++++-------- doc/plug.txt | 17 +++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 6c4f77e..602e585 100644 --- a/README.md +++ b/README.md @@ -311,8 +311,14 @@ If the value starts with `:`, it will be recognized as a Vim command. Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' } ``` +To call a Vim function, you can pass a lambda expression like so: + +```vim +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +``` + If you need more control, you can pass a reference to a Vim function that -takes a single argument. +takes a dictionary argument. ```vim function! BuildYCM(info) @@ -328,14 +334,13 @@ endfunction Plug 'ycm-core/YouCompleteMe', { 'do': function('BuildYCM') } ``` -Both forms of post-update hook are executed inside the directory of the plugin -and only run when the repository has changed, but you can force it to run -unconditionally with the bang-versions of the commands: `PlugInstall!` and -`PlugUpdate!`. +A post-update hook is executed inside the directory of the plugin and only run +when the repository has changed, but you can force it to run unconditionally +with the bang-versions of the commands: `PlugInstall!` and `PlugUpdate!`. -Make sure to escape BARs and double-quotes when you write the `do` option inline -as they are mistakenly recognized as command separator or the start of the -trailing comment. +Make sure to escape BARs and double-quotes when you write the `do` option +inline as they are mistakenly recognized as command separator or the start of +the trailing comment. ```vim Plug 'junegunn/fzf', { 'do': 'yes \| ./install' } diff --git a/doc/plug.txt b/doc/plug.txt index e4131c1..3cad4f9 100644 --- a/doc/plug.txt +++ b/doc/plug.txt @@ -1,4 +1,4 @@ -plug.txt plug Last change: January 19 2023 +plug.txt plug Last change: February 23 2024 PLUG - TABLE OF CONTENTS *plug* *plug-toc* ============================================================================== @@ -297,13 +297,15 @@ In that case, use the `do` option to describe the task to be performed. Plug 'ycm-core/YouCompleteMe', { 'do': './install.py' } < If the value starts with `:`, it will be recognized as a Vim command. - - *:GoInstallBinaries* > Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' } < +To call a Vim function, you can pass a lambda expression like so: +> + Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +< If you need more control, you can pass a reference to a Vim function that -takes a single argument. +takes a dictionary argument. > function! BuildYCM(info) " info is a dictionary with 3 fields @@ -317,10 +319,9 @@ takes a single argument. Plug 'ycm-core/YouCompleteMe', { 'do': function('BuildYCM') } < -Both forms of post-update hook are executed inside the directory of the plugin -and only run when the repository has changed, but you can force it to run -unconditionally with the bang-versions of the commands: `PlugInstall!` and -`PlugUpdate!`. +A post-update hook is executed inside the directory of the plugin and only run +when the repository has changed, but you can force it to run unconditionally +with the bang-versions of the commands: `PlugInstall!` and `PlugUpdate!`. Make sure to escape BARs and double-quotes when you write the `do` option inline as they are mistakenly recognized as command separator or the start of