mirror of
https://github.com/amix/vimrc
synced 2025-02-28 14:12:51 +08:00
867 lines
38 KiB
Plaintext
867 lines
38 KiB
Plaintext
*misc.txt* Miscellaneous auto-load Vim scripts
|
|
|
|
===============================================================================
|
|
Contents ~
|
|
|
|
1. Introduction |misc-introduction|
|
|
2. Installation |misc-installation|
|
|
3. Function documentation |misc-function-documentation|
|
|
1. Handling of special buffers |misc-handling-of-special-buffers|
|
|
1. The |xolox#misc#buffer#is_empty()| function
|
|
2. The |xolox#misc#buffer#prepare()| function
|
|
3. The |xolox#misc#buffer#lock()| function
|
|
4. The |xolox#misc#buffer#unlock()| function
|
|
2. Tab completion for user defined commands |misc-tab-completion-for-user-defined-commands|
|
|
1. The |xolox#misc#complete#keywords()| function
|
|
3. String escaping functions |misc-string-escaping-functions|
|
|
1. The |xolox#misc#escape#pattern()| function
|
|
2. The |xolox#misc#escape#substitute()| function
|
|
3. The |xolox#misc#escape#shell()| function
|
|
4. Human friendly string formatting for Vim |misc-human-friendly-string-formatting-for-vim|
|
|
1. The |xolox#misc#format#pluralize()| function
|
|
2. The |xolox#misc#format#timestamp()| function
|
|
5. List handling functions |misc-list-handling-functions|
|
|
1. The |xolox#misc#list#unique()| function
|
|
2. The |xolox#misc#list#binsert()| function
|
|
6. Functions to interact with the user |misc-functions-to-interact-with-user|
|
|
1. The |xolox#misc#msg#info()| function
|
|
2. The |xolox#misc#msg#warn()| function
|
|
3. The |xolox#misc#msg#debug()| function
|
|
7. Integration between Vim and its environment |misc-integration-between-vim-its-environment|
|
|
1. The |xolox#misc#open#file()| function
|
|
2. The |xolox#misc#open#url()| function
|
|
8. Vim and plug-in option handling |misc-vim-plug-in-option-handling|
|
|
1. The |xolox#misc#option#get()| function
|
|
2. The |xolox#misc#option#split()| function
|
|
3. The |xolox#misc#option#join()| function
|
|
4. The |xolox#misc#option#split_tags()| function
|
|
5. The |xolox#misc#option#join_tags()| function
|
|
6. The |xolox#misc#option#eval_tags()| function
|
|
9. Operating system interfaces |misc-operating-system-interfaces|
|
|
1. The |xolox#misc#os#is_mac()| function
|
|
2. The |xolox#misc#os#is_win()| function
|
|
3. The |xolox#misc#os#find_vim()| function
|
|
4. The |xolox#misc#os#exec()| function
|
|
5. The |xolox#misc#os#can_use_dll()| function
|
|
10. Pathname manipulation functions |misc-pathname-manipulation-functions|
|
|
1. The |xolox#misc#path#which()| function
|
|
2. The |xolox#misc#path#split()| function
|
|
3. The |xolox#misc#path#join()| function
|
|
4. The |xolox#misc#path#directory_separator()| function
|
|
5. The |xolox#misc#path#absolute()| function
|
|
6. The |xolox#misc#path#relative()| function
|
|
7. The |xolox#misc#path#merge()| function
|
|
8. The |xolox#misc#path#commonprefix()| function
|
|
9. The |xolox#misc#path#encode()| function
|
|
10. The |xolox#misc#path#decode()| function
|
|
11. The |xolox#misc#path#is_relative()| function
|
|
12. The |xolox#misc#path#tempdir()| function
|
|
11. String handling |misc-string-handling|
|
|
1. The |xolox#misc#str#slug()| function
|
|
2. The |xolox#misc#str#ucfirst()| function
|
|
3. The |xolox#misc#str#compact()| function
|
|
4. The |xolox#misc#str#trim()| function
|
|
5. The |xolox#misc#str#indent()| function
|
|
6. The |xolox#misc#str#dedent()| function
|
|
12. Test runner & infrastructure for Vim plug-ins |misc-test-runner-infrastructure-for-vim-plug-ins|
|
|
1. The |xolox#misc#test#reset()| function
|
|
2. The |xolox#misc#test#summarize()| function
|
|
3. The |xolox#misc#test#wrap()| function
|
|
4. The |xolox#misc#test#passed()| function
|
|
5. The |xolox#misc#test#failed()| function
|
|
6. The |xolox#misc#test#assert_true()| function
|
|
7. The |xolox#misc#test#assert_equals()| function
|
|
8. The |xolox#misc#test#assert_same_type()| function
|
|
13. Tests for the miscellaneous Vim scripts |tests-for-miscellaneous-vim-scripts|
|
|
1. The |xolox#misc#tests#run()| function
|
|
2. The |xolox#misc#tests#pattern_escaping()| function
|
|
3. The |xolox#misc#tests#substitute_escaping()| function
|
|
4. The |xolox#misc#tests#shell_escaping()| function
|
|
5. The |xolox#misc#tests#making_a_list_unique()| function
|
|
6. The |xolox#misc#tests#binary_insertion()| function
|
|
7. The |xolox#misc#tests#getting_configuration_options()| function
|
|
8. The |xolox#misc#tests#splitting_of_multi_valued_options()| function
|
|
9. The |xolox#misc#tests#joining_of_multi_valued_options()| function
|
|
10. The |xolox#misc#tests#finding_vim_on_the_search_path()| function
|
|
11. The |xolox#misc#tests#synchronous_command_execution()| function
|
|
12. The |xolox#misc#tests#synchronous_command_execution_with_stderr()| function
|
|
13. The |xolox#misc#tests#synchronous_command_execution_with_raising_of_errors()|
|
|
function
|
|
14. The |xolox#misc#tests#synchronous_command_execution_without_raising_errors()|
|
|
function
|
|
15. The |xolox#misc#tests#asynchronous_command_execution()| function
|
|
16. The |xolox#misc#tests#string_case_transformation()| function
|
|
17. The |xolox#misc#tests#string_whitespace_compaction()| function
|
|
18. The |xolox#misc#tests#string_whitespace_trimming()| function
|
|
19. The |xolox#misc#tests#multiline_string_dedent()| function
|
|
20. The |xolox#misc#tests#version_string_parsing()| function
|
|
21. The |xolox#misc#tests#version_string_comparison()| function
|
|
14. Timing of long during operations |misc-timing-of-long-during-operations|
|
|
1. The |xolox#misc#timer#start()| function
|
|
2. The |xolox#misc#timer#stop()| function
|
|
3. The |xolox#misc#timer#force()| function
|
|
15. Version string handling |misc-version-string-handling|
|
|
1. The |xolox#misc#version#parse()| function
|
|
2. The |xolox#misc#version#at_least()| function
|
|
4. Contact |misc-contact|
|
|
5. License |misc-license|
|
|
6. References |misc-references|
|
|
|
|
===============================================================================
|
|
*misc-introduction*
|
|
Introduction ~
|
|
|
|
The vim-misc plug-in contains Vim scripts that are used by most of the Vim
|
|
plug-ins I've written [1] yet don't really belong with any single one of the
|
|
plug-ins. Basically it's an extended standard library of Vim script functions
|
|
that I wrote during the development of my Vim profile and plug-ins.
|
|
|
|
In the past these scripts were bundled with each plug-in, however that turned
|
|
out to be a maintenance nightmare for me. That's why the miscellaneous scripts
|
|
are now a proper plug-in with their own page on Vim Online.
|
|
|
|
Because the miscellaneous scripts are no longer bundled with my Vim plug-ins,
|
|
users are now required to install the miscellaneous scripts separately. This is
|
|
unfortunate for users who are upgrading from a previous release that did bundle
|
|
the miscellaneous scripts, but I don't see any way around this. Sorry!
|
|
|
|
===============================================================================
|
|
*misc-installation*
|
|
Installation ~
|
|
|
|
Unzip the most recent ZIP archive [2] file inside your Vim profile directory
|
|
(usually this is '~/.vim' on UNIX and '%USERPROFILE%\vimfiles' on Windows),
|
|
restart Vim and execute the command ':helptags ~/.vim/doc' (use ':helptags
|
|
~\vimfiles\doc' instead on Windows).
|
|
|
|
If you prefer you can also use Pathogen [3], Vundle [4] or a similar tool to
|
|
install & update the plug-in using a local clone of the git repository.
|
|
|
|
===============================================================================
|
|
*misc-function-documentation*
|
|
Function documentation ~
|
|
|
|
Below is the documentation for the functions included in the miscellaneous
|
|
scripts. Anyone is free to use these functions in their own Vim profile and/or
|
|
plug-ins. I care about backwards compatibility so won't break it without a good
|
|
reason to do so.
|
|
|
|
For those who are curious: The function descriptions given below were extracted
|
|
from the source code of the miscellaneous scripts using the Python module
|
|
'vimdoctool.py' included in vim-tools [5].
|
|
|
|
The documentation of the 80 functions below was extracted from 15 Vim scripts
|
|
on July 20, 2013 at 10:41.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-handling-of-special-buffers*
|
|
Handling of special buffers ~
|
|
|
|
The functions defined here make it easier to deal with special Vim buffers that
|
|
contain text generated by a Vim plug-in. For example my vim-notes plug-in [6]
|
|
generates several such buffers:
|
|
|
|
- :RecentNotes [7] lists recently modified notes
|
|
- :ShowTaggedNotes [8] lists notes grouped by tags
|
|
- etc.
|
|
|
|
Because the text in these buffers is generated, Vim shouldn't bother with swap
|
|
files and it should never prompt the user whether to save changes to the
|
|
generated text.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#buffer#is_empty()* function
|
|
|
|
Checks if the current buffer is an empty, unchanged buffer which can be reused.
|
|
Returns 1 if an empty buffer is found, 0 otherwise.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#buffer#prepare()* function
|
|
|
|
Open a special buffer, i.e. a buffer that will hold generated contents, not
|
|
directly edited by the user. The buffer can be customized by passing a
|
|
dictionary with the following key/value pairs as the first argument:
|
|
|
|
- **name** (required): The base name of the buffer (i.e. the base name of the
|
|
file loaded in the buffer, even though it isn't really a file and nothing
|
|
is really 'loaded' :-)
|
|
|
|
- **path** (required): The pathname of the buffer. May be relevant if |:lcd|
|
|
or |'autochdir'| is being used.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#buffer#lock()* function
|
|
|
|
Lock a special buffer so that its contents can no longer be edited.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#buffer#unlock()* function
|
|
|
|
Unlock a special buffer so that its content can be updated.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-tab-completion-for-user-defined-commands*
|
|
Tab completion for user defined commands ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#complete#keywords()* function
|
|
|
|
This function can be used to perform keyword completion for user defined Vim
|
|
commands based on the contents of the current buffer. Here's an example of how
|
|
you would use it:
|
|
>
|
|
:command -nargs=* -complete=customlist,xolox#misc#complete#keywords MyCmd call s:MyCmd(<f-args>)
|
|
<
|
|
-------------------------------------------------------------------------------
|
|
*misc-string-escaping-functions*
|
|
String escaping functions ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#escape#pattern()* function
|
|
|
|
Takes a single string argument and converts it into a |:substitute| /
|
|
|substitute()| pattern string that matches the given string literally.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#escape#substitute()* function
|
|
|
|
Takes a single string argument and converts it into a |:substitute| /
|
|
|substitute()| replacement string that inserts the given string literally.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#escape#shell()* function
|
|
|
|
Takes a single string argument and converts it into a quoted command line
|
|
argument.
|
|
|
|
I was going to add a long rant here about Vim's |'shellslash'| option, but
|
|
really, it won't make any difference. Let's just suffice to say that I have yet
|
|
to encounter a single person out there who uses this option for its intended
|
|
purpose (running a UNIX style shell on Microsoft Windows).
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-human-friendly-string-formatting-for-vim*
|
|
Human friendly string formatting for Vim ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#format#pluralize()* function
|
|
|
|
Concatenate a counter (the first argument, expected to be an integer) with a
|
|
singular or plural label (the second and third arguments, both expected to be
|
|
strings).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#format#timestamp()* function
|
|
|
|
Format a time stamp (a string containing a formatted floating point number)
|
|
into a human friendly format, for example 70 seconds is phrased as "1 minute
|
|
and 10 seconds".
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-list-handling-functions*
|
|
List handling functions ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#list#unique()* function
|
|
|
|
Remove duplicate values from the given list in-place (preserves order).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#list#binsert()* function
|
|
|
|
Performs in-place binary insertion, which depending on your use case can be
|
|
more efficient than calling Vim's |sort()| function after each insertion (in
|
|
cases where a single, final sort is not an option). Expects three arguments:
|
|
|
|
1. A list
|
|
2. A value to insert
|
|
3. 1 (true) when case should be ignored, 0 (false) otherwise
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-functions-to-interact-with-user*
|
|
Functions to interact with the user ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#msg#info()* function
|
|
|
|
Show a formatted informational message to the user.
|
|
|
|
This function has the same argument handling as Vim's |printf()| function with
|
|
one notable difference: Any arguments which are not numbers or strings are
|
|
coerced to strings using Vim's |string()| function.
|
|
|
|
In the case of |xolox#misc#msg#info()|, automatic string coercion simply makes
|
|
the function a bit easier to use.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#msg#warn()* function
|
|
|
|
Show a formatted warning message to the user.
|
|
|
|
This function has the same argument handling as the |xolox#misc#msg#info()|
|
|
function.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#msg#debug()* function
|
|
|
|
Show a formatted debugging message to the user, _if the user has enabled
|
|
increased verbosity by setting Vim's |'verbose'| option to one (1) or higher_.
|
|
|
|
This function has the same argument handling as the |xolox#misc#msg#info()|
|
|
function.
|
|
|
|
In the case of |xolox#misc#msg#debug()|, automatic string coercion provides
|
|
lazy evaluation in the sense that complex data structures are only converted to
|
|
strings when the user has enabled increased verbosity.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-integration-between-vim-its-environment*
|
|
Integration between Vim and its environment ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#open#file()* function
|
|
|
|
Given a pathname or URL as the first argument, this opens the file with the
|
|
program associated with the file type. So for example a text file might open in
|
|
Vim, an '*.html' file would probably open in your web browser and a media file
|
|
would open in a media player.
|
|
|
|
This should work on Windows, Mac OS X and most Linux distributions. If this
|
|
fails to find a file association, you can pass one or more external commands to
|
|
try as additional arguments. For example:
|
|
>
|
|
:call xolox#misc#open#file('/path/to/my/file', 'firefox', 'google-chrome')
|
|
<
|
|
This generally shouldn't be necessary but it might come in handy now and then.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#open#url()* function
|
|
|
|
Given a URL as the first argument, this opens the URL in your preferred or best
|
|
available web browser:
|
|
|
|
- In GUI environments a graphical web browser will open (or a new tab will be
|
|
created in an existing window)
|
|
|
|
- In console Vim without a GUI environment, when you have any of 'lynx',
|
|
'links' or 'w3m' installed it will launch a command line web browser in
|
|
front of Vim (temporarily suspending Vim)
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-vim-plug-in-option-handling*
|
|
Vim and plug-in option handling ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#option#get()* function
|
|
|
|
Expects one or two arguments: 1. The name of a variable and 2. the default
|
|
value if the variable does not exist.
|
|
|
|
Returns the value of the variable from a buffer local variable, global variable
|
|
or the default value, depending on which is defined.
|
|
|
|
This is used by some of my Vim plug-ins for option handling, so that users can
|
|
customize options for specific buffers.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#option#split()* function
|
|
|
|
Given a multi-value Vim option like |'runtimepath'| this returns a list of
|
|
strings. For example:
|
|
>
|
|
:echo xolox#misc#option#split(&runtimepath)
|
|
['/home/peter/Projects/Vim/misc',
|
|
'/home/peter/Projects/Vim/colorscheme-switcher',
|
|
'/home/peter/Projects/Vim/easytags',
|
|
...]
|
|
<
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#option#join()* function
|
|
|
|
Given a list of strings like the ones returned by |xolox#misc#option#split()|,
|
|
this joins the strings together into a single value that can be used to set a
|
|
Vim option.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#option#split_tags()* function
|
|
|
|
Customized version of |xolox#misc#option#split()| with specialized handling for
|
|
Vim's |'tags'| option.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#option#join_tags()* function
|
|
|
|
Customized version of |xolox#misc#option#join()| with specialized handling for
|
|
Vim's |'tags'| option.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#option#eval_tags()* function
|
|
|
|
Evaluate Vim's |'tags'| option without looking at the file system, i.e. this
|
|
will report tags files that don't exist yet. Expects the value of the |'tags'|
|
|
option as the first argument. If the optional second argument is 1 (true) only
|
|
the first match is returned, otherwise (so by default) a list with all matches
|
|
is returned.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-operating-system-interfaces*
|
|
Operating system interfaces ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#os#is_mac()* function
|
|
|
|
Returns 1 (true) when on Mac OS X, 0 (false) otherwise. You would expect this
|
|
to simply check the Vim feature list, but for some obscure reason the
|
|
'/usr/bin/vim' included in Mac OS X (verified on version 10.7.5) returns 0
|
|
(false) in response to "has('mac')", so we check the output of 'uname' to avoid
|
|
false negatives.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#os#is_win()* function
|
|
|
|
Returns 1 (true) when on Microsoft Windows, 0 (false) otherwise.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#os#find_vim()* function
|
|
|
|
Returns the program name of Vim as a string. On Windows and UNIX this just
|
|
|v:progname| as an absolute pathname while on Mac OS X there is some special
|
|
magic to find MacVim's executable even though it's usually not on the
|
|
executable search path. If you want, you can override the value returned from
|
|
this function by setting the global variable 'g:xolox#misc#os#vim_progname'.
|
|
|
|
By default the choice of console Vim vs graphical Vim is made based on the
|
|
value of |v:progname|, but if you have a preference you can pass the string
|
|
'vim' or 'gvim' as the first and only argument.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#os#exec()* function
|
|
|
|
Execute an external command (hiding the console on Microsoft Windows when my
|
|
vim-shell plug-in [9] is installed).
|
|
|
|
Expects a dictionary with the following key/value pairs as the first argument:
|
|
|
|
- **command** (required): The command line to execute
|
|
|
|
- **async** (optional): set this to 1 (true) to execute the command in the
|
|
background (asynchronously)
|
|
|
|
- **stdin** (optional): a string or list of strings with the input for the
|
|
external command
|
|
|
|
- **check** (optional): set this to 0 (false) to disable checking of the exit
|
|
code of the external command (by default an exception will be raised when
|
|
the command fails)
|
|
|
|
Returns a dictionary with one or more of the following key/value pairs:
|
|
|
|
- **command** (always available): the generated command line that was used to
|
|
run the external command
|
|
|
|
- **exit_code** (only in synchronous mode): the exit status of the external
|
|
command (an integer, zero on success)
|
|
|
|
- **stdout** (only in synchronous mode): the output of the command on the
|
|
standard output stream (a list of strings, one for each line)
|
|
|
|
- **stderr** (only in synchronous mode): the output of the command on the
|
|
standard error stream (as a list of strings, one for each line)
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#os#can_use_dll()* function
|
|
|
|
If a) we're on Microsoft Windows, b) the vim-shell plug-in is installed and c)
|
|
the compiled DLL included in vim-shell works, we can use the vim-shell plug-in
|
|
to execute external commands! Returns 1 (true) if we can use the DLL, 0 (false)
|
|
otherwise.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-pathname-manipulation-functions*
|
|
Pathname manipulation functions ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#which()* function
|
|
|
|
Scan the executable search path ('$PATH') for one or more external programs.
|
|
Expects one or more string arguments with program names. Returns a list with
|
|
the absolute pathnames of all found programs. Here's an example:
|
|
>
|
|
:echo xolox#misc#path#which('gvim', 'vim')
|
|
['/usr/local/bin/gvim',
|
|
'/usr/bin/gvim',
|
|
'/usr/local/bin/vim',
|
|
'/usr/bin/vim']
|
|
<
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#split()* function
|
|
|
|
Split a pathname (the first and only argument) into a list of pathname
|
|
components.
|
|
|
|
On Windows, pathnames starting with two slashes or backslashes are UNC paths
|
|
where the leading slashes are significant... In this case we split like this:
|
|
|
|
- Input: "'//server/share/directory'"
|
|
- Result: "['//server', 'share', 'directory']"
|
|
|
|
Everything except Windows is treated like UNIX until someone has a better
|
|
suggestion :-). In this case we split like this:
|
|
|
|
- Input: "'/foo/bar/baz'"
|
|
- Result: "['/', 'foo', 'bar', 'baz']"
|
|
|
|
To join a list of pathname components back into a single pathname string, use
|
|
the |xolox#misc#path#join()| function.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#join()* function
|
|
|
|
Join a list of pathname components (the first and only argument) into a single
|
|
pathname string. This is the counterpart to the |xolox#misc#path#split()|
|
|
function and it expects a list of pathname components as returned by
|
|
|xolox#misc#path#split()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#directory_separator()* function
|
|
|
|
Find the preferred directory separator for the platform and settings.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#absolute()* function
|
|
|
|
Canonicalize and resolve a pathname, _regardless of whether it exists_. This is
|
|
intended to support string comparison to determine whether two pathnames point
|
|
to the same directory or file.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#relative()* function
|
|
|
|
Make an absolute pathname (the first argument) relative to a directory (the
|
|
second argument).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#merge()* function
|
|
|
|
Join a directory pathname and filename into a single pathname.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#commonprefix()* function
|
|
|
|
Find the common prefix of path components in a list of pathnames.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#encode()* function
|
|
|
|
Encode a pathname so it can be used as a filename. This uses URL encoding to
|
|
encode special characters.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#decode()* function
|
|
|
|
Decode a pathname previously encoded with |xolox#misc#path#encode()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#is_relative()* function
|
|
|
|
Returns true (1) when the pathname given as the first argument is relative,
|
|
false (0) otherwise.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#path#tempdir()* function
|
|
|
|
Create a temporary directory and return the pathname of the directory.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-string-handling*
|
|
String handling ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#str#slug()* function
|
|
|
|
Convert a string to a "slug" - something that can be safely used in filenames
|
|
and URLs without worrying about quoting/escaping of special characters.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#str#ucfirst()* function
|
|
|
|
Uppercase the first character in a string (the first argument).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#str#compact()* function
|
|
|
|
Compact whitespace in a string (the first argument).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#str#trim()* function
|
|
|
|
Trim all whitespace from the start and end of a string (the first argument).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#str#indent()* function
|
|
|
|
Indent all lines in a multi-line string (the first argument) with a specific
|
|
number of _space characters_ (the second argument, an integer).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#str#dedent()* function
|
|
|
|
Remove common whitespace from a multi line string.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-test-runner-infrastructure-for-vim-plug-ins*
|
|
Test runner & infrastructure for Vim plug-ins ~
|
|
|
|
The Vim auto-load script 'autoload/xolox/misc/test.vim' contains infrastructure
|
|
that can be used to run an automated Vim plug-in test suite. It provides a
|
|
framework for running test functions, keeping track of the test status, making
|
|
assertions and reporting test results to the user.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#reset()* function
|
|
|
|
Reset counters for executed tests and passed/failed assertions.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#summarize()* function
|
|
|
|
Print a summary of test results, to be interpreted interactively.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#wrap()* function
|
|
|
|
Call a function in a try/catch block and prevent exceptions from bubbling. The
|
|
name of the function should be passed as the first and only argument; it should
|
|
be a string containing the name of a Vim auto-load function.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#passed()* function
|
|
|
|
Record a test which succeeded.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#failed()* function
|
|
|
|
Record a test which failed.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#assert_true()* function
|
|
|
|
Check whether an expression is true.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#assert_equals()* function
|
|
|
|
Check whether two values are the same.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#test#assert_same_type()* function
|
|
|
|
Check whether two values are of the same type.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*tests-for-miscellaneous-vim-scripts*
|
|
Tests for the miscellaneous Vim scripts ~
|
|
|
|
The Vim auto-load script 'autoload/xolox/misc/tests.vim' contains the automated
|
|
test suite of the miscellaneous Vim scripts. Right now the coverage is not very
|
|
high yet, but this will improve over time.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#run()* function
|
|
|
|
Run the automated test suite of the miscellaneous Vim scripts. To be used
|
|
interactively. Intended to be safe to execute irrespective of context.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#pattern_escaping()* function
|
|
|
|
Test escaping of regular expression patterns with
|
|
|xolox#misc#escape#pattern()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#substitute_escaping()* function
|
|
|
|
Test escaping of substitution strings with |xolox#misc#escape#substitute()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#shell_escaping()* function
|
|
|
|
Test escaping of shell arguments with |xolox#misc#escape#shell()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#making_a_list_unique()* function
|
|
|
|
Test removing of duplicate values from lists with |xolox#misc#list#unique()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#binary_insertion()* function
|
|
|
|
Test the binary insertion algorithm implemented in |xolox#misc#list#binsert()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#getting_configuration_options()* function
|
|
|
|
Test getting of scoped plug-in configuration "options" with
|
|
|xolox#misc#option#get()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#splitting_of_multi_valued_options()* function
|
|
|
|
Test splitting of multi-valued Vim options with |xolox#misc#option#split()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#joining_of_multi_valued_options()* function
|
|
|
|
Test joining of multi-valued Vim options with |xolox#misc#option#join()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#finding_vim_on_the_search_path()* function
|
|
|
|
Test looking up Vim's executable on the search path using |v:progname| with
|
|
|xolox#misc#os#find_vim()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#synchronous_command_execution()* function
|
|
|
|
Test basic functionality of synchronous command execution with
|
|
|xolox#misc#os#exec()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#synchronous_command_execution_with_stderr()* function
|
|
|
|
Test basic functionality of synchronous command execution with
|
|
|xolox#misc#os#exec()| including the standard error stream (not available on
|
|
Windows when vim-shell is not installed).
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#synchronous_command_execution_with_raising_of_errors()*
|
|
function
|
|
|
|
Test raising of errors during synchronous command execution with
|
|
|xolox#misc#os#exec()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#synchronous_command_execution_without_raising_errors()*
|
|
function
|
|
|
|
Test synchronous command execution without raising of errors with
|
|
|xolox#misc#os#exec()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#asynchronous_command_execution()* function
|
|
|
|
Test the basic functionality of asynchronous command execution with
|
|
|xolox#misc#os#exec()|. This runs the external command 'mkdir' and tests that
|
|
the side effect of creating the directory takes place. This might seem like a
|
|
peculiar choice, but it's one of the few 100% portable commands (Windows +
|
|
UNIX) that doesn't involve input/output streams.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#string_case_transformation()* function
|
|
|
|
Test string case transformation with |xolox#misc#str#ucfirst()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#string_whitespace_compaction()* function
|
|
|
|
Test compaction of whitespace in strings with |xolox#misc#str#compact()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#string_whitespace_trimming()* function
|
|
|
|
Test trimming of whitespace in strings with |xolox#misc#str#trim()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#multiline_string_dedent()* function
|
|
|
|
Test dedenting of multi-line strings with |xolox#misc#str#dedent()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#version_string_parsing()* function
|
|
|
|
Test parsing of version strings with |xolox#misc#version#parse()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#tests#version_string_comparison()* function
|
|
|
|
Test comparison of version strings with |xolox#misc#version#at_least()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-timing-of-long-during-operations*
|
|
Timing of long during operations ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#timer#start()* function
|
|
|
|
Start a timer. This returns a list which can later be passed to
|
|
|xolox#misc#timer#stop()|.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#timer#stop()* function
|
|
|
|
Show a formatted debugging message to the user, if the user has enabled
|
|
increased verbosity by setting Vim's |'verbose'| option to one (1) or higher.
|
|
|
|
This function has the same argument handling as Vim's |printf()| function with
|
|
one difference: At the point where you want the elapsed time to be embedded,
|
|
you write '%s' and you pass the list returned by |xolox#misc#timer#start()| as
|
|
an argument.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#timer#force()* function
|
|
|
|
Show a formatted message to the user. This function has the same argument
|
|
handling as Vim's |printf()| function with one difference: At the point where
|
|
you want the elapsed time to be embedded, you write '%s' and you pass the list
|
|
returned by |xolox#misc#timer#start()| as an argument.
|
|
|
|
-------------------------------------------------------------------------------
|
|
*misc-version-string-handling*
|
|
Version string handling ~
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#version#parse()* function
|
|
|
|
Convert a version string to a list of integers.
|
|
|
|
-------------------------------------------------------------------------------
|
|
The *xolox#misc#version#at_least()* function
|
|
|
|
Check whether the second version string is equal to or greater than the first
|
|
version string. Returns 1 (true) when it is, 0 (false) otherwise.
|
|
|
|
===============================================================================
|
|
*misc-contact*
|
|
Contact ~
|
|
|
|
If you have questions, bug reports, suggestions, etc. the author can be
|
|
contacted at peter@peterodding.com. The latest version is available at
|
|
http://peterodding.com/code/vim/misc and http://github.com/xolox/vim-misc. If
|
|
you like the script please vote for it on Vim Online [10].
|
|
|
|
===============================================================================
|
|
*misc-license*
|
|
License ~
|
|
|
|
This software is licensed under the MIT license [11]. © 2013 Peter Odding
|
|
<peter@peterodding.com>.
|
|
|
|
===============================================================================
|
|
*misc-references*
|
|
References ~
|
|
|
|
[1] http://peterodding.com/code/vim/
|
|
[2] http://peterodding.com/code/vim/downloads/misc.zip
|
|
[3] http://www.vim.org/scripts/script.php?script_id=2332
|
|
[4] https://github.com/gmarik/vundle
|
|
[5] http://peterodding.com/code/vim/tools/
|
|
[6] http://peterodding.com/code/vim/notes/
|
|
[7] http://peterodding.com/code/vim/notes/#recentnotes_command
|
|
[8] http://peterodding.com/code/vim/notes/#showtaggednotes_command
|
|
[9] http://peterodding.com/code/vim/shell/
|
|
[10] http://www.vim.org/scripts/script.php?script_id=4597
|
|
[11] http://en.wikipedia.org/wiki/MIT_License
|
|
|
|
vim: ft=help
|