aboutsummaryrefslogtreecommitdiff
path: root/vim/autoload/vimrc.vim~
diff options
context:
space:
mode:
Diffstat (limited to 'vim/autoload/vimrc.vim~')
-rw-r--r--vim/autoload/vimrc.vim~54
1 files changed, 54 insertions, 0 deletions
diff --git a/vim/autoload/vimrc.vim~ b/vim/autoload/vimrc.vim~
new file mode 100644
index 00000000..90ff13f1
--- /dev/null
+++ b/vim/autoload/vimrc.vim~
@@ -0,0 +1,54 @@
+" Escape a text value for :execute-based :set inclusion in an option
+function! vimrc#EscapeSet(string) abort
+ return escape(a:string, '\ |"')
+endfunction
+
+" Escape a text value for inclusion as an element in a comma-separated list
+" option. Yes, the comma being the sole inner escaped character here is
+" correct. No, we shouldn't escape backslash itself. Yes, that means it's
+" impossible to have the literal string '\,' in a part.
+function! vimrc#EscapeSetPart(string) abort
+ return vimrc#EscapeSet(escape(a:string, ','))
+endfunction
+
+" Check that we have a plugin available, and will be loading it
+function! vimrc#PluginReady(filename) abort
+ return globpath(&runtimepath, 'plugin/'.a:filename.'.vim') !=# ''
+ \ && &loadplugins
+endfunction
+
+" Split a comma-separated option string into its constituent parts, imitating
+" copy_option_part() in the Vim sources. This isn't perfect, but it should be
+" more than good enough. A separator can be defined as: a comma that is not
+" preceded by a backslash, and which is followed by any number of spaces
+" and/or further commas.
+function! vimrc#SplitOption(str) abort
+ return split(a:str, '\\\@<!,[, ]*')
+endfunction
+
+" Convenience version function check that should work with 7.0 or newer;
+" takes strings like 7.3.251
+function! vimrc#Version(verstr) abort
+
+ " Throw toys if the string doesn't match the expected format
+ if a:verstr !~# '^\d\+\.\d\+.\d\+$'
+ echoerr 'Invalid version string: '.a:verstr
+ endif
+
+ " Split version string into major, minor, and patch level integers
+ let [major, minor, patch] = split(a:verstr, '\.')
+
+ " Create a string like 801 from a version number 8.1 to compare it to
+ " the v:version integer
+ let ver = major * 100 + minor
+
+ " Compare versions
+ if v:version > ver
+ return 1 " Current Vim is newer than the wanted one
+ elseif ver < v:version
+ return 0 " Current Vim is older than the wanted one
+ else
+ return has('patch'.patch) " Versions equal, return patch presence
+ endif
+
+endfunction