|
1 | 1 | " Operating system interfaces.
|
2 | 2 | "
|
3 | 3 | " Author: Peter Odding <[email protected]>
|
4 |
| -" Last Change: June 1, 2013 |
| 4 | +" Last Change: June 3, 2013 |
5 | 5 | " URL: http://peterodding.com/code/vim/misc/
|
6 | 6 |
|
7 | 7 | function! xolox#misc#os#is_win() " {{{1
|
8 | 8 | " Returns 1 (true) when on Microsoft Windows, 0 (false) otherwise.
|
9 | 9 | return has('win16') || has('win32') || has('win64')
|
10 | 10 | endfunction
|
11 | 11 |
|
12 |
| -function! xolox#misc#os#find_vim() " {{{1 |
13 |
| - " Returns the program name of Vim as a string. On Windows and UNIX this |
14 |
| - " simply returns [v:progname] [progname] while on Mac OS X there is some |
15 |
| - " special magic to find MacVim's executable even though it's usually not on |
16 |
| - " the executable search path. If you want, you can override the value |
17 |
| - " returned from this function by setting the global variable |
| 12 | +function! xolox#misc#os#find_vim(...) " {{{1 |
| 13 | + " Returns the program name of Vim as a string. On Windows and UNIX this just |
| 14 | + " [v:progname] [] as an absolute pathname while on Mac OS X there is |
| 15 | + " some special magic to find MacVim's executable even though it's usually |
| 16 | + " not on the executable search path. If you want, you can override the |
| 17 | + " value returned from this function by setting the global variable |
18 | 18 | " `g:xolox#misc#os#vim_progname`.
|
19 | 19 | "
|
20 |
| - " [progname]: http://vimdoc.sourceforge.net/htmldoc/eval.html#v:progname |
21 |
| - let progname = '' |
| 20 | + " By default the choice of console Vim vs graphical Vim is made based on |
| 21 | + " the value of [v:progname] [], but if you have a preference you can pass |
| 22 | + " the string `vim` or `gvim` as the first and only argument. |
| 23 | + " |
| 24 | + " [v:progname]: http://vimdoc.sourceforge.net/htmldoc/eval.html#v:progname |
| 25 | + if exists('a:1') |
| 26 | + let program_name = a:1 |
| 27 | + else |
| 28 | + let program_name = v:progname |
| 29 | + endif |
22 | 30 | if exists('g:xolox#misc#os#vim_progname')
|
23 |
| - let progname = g:xolox#misc#os#vim_progname |
| 31 | + let pathname = g:xolox#misc#os#vim_progname |
| 32 | + else |
| 33 | + let pathname = '' |
24 | 34 | endif
|
25 |
| - if empty(progname) && has('macunix') |
| 35 | + if empty(pathname) && has('macunix') |
26 | 36 | " Special handling for Mac OS X where MacVim is usually not on the $PATH.
|
| 37 | + " This always returns the "Vim" executable and not "MacVim" (regardless of |
| 38 | + " the caller's preference) because "MacVim" has funky dock magic going on. |
27 | 39 | call xolox#misc#msg#debug("vim-misc %s: Trying MacVim workaround to find Vim executable ..", g:xolox#misc#version)
|
28 | 40 | let segments = xolox#misc#path#split($VIMRUNTIME)
|
29 | 41 | if segments[-3:] == ['Resources', 'vim', 'runtime']
|
30 |
| - let progname = xolox#misc#path#join(segments[0:-4] + ['MacOS', 'Vim']) |
31 |
| - call xolox#misc#msg#debug("vim-misc %s: The MacVim workaround resulted in the Vim executable %s.", g:xolox#misc#version, string(progname)) |
| 42 | + let pathname = xolox#misc#path#join(segments[0:-4] + ['MacOS', 'Vim']) |
| 43 | + call xolox#misc#msg#debug("vim-misc %s: The MacVim workaround resulted in the Vim executable %s.", g:xolox#misc#version, string(pathname)) |
32 | 44 | endif
|
33 | 45 | endif
|
34 |
| - if empty(progname) |
| 46 | + if empty(pathname) |
35 | 47 | " Default logic.
|
36 |
| - call xolox#misc#msg#debug("vim-misc %s: Looking for Vim executable named %s on search path ..", g:xolox#misc#version, string(v:progname)) |
37 |
| - let candidates = xolox#misc#path#which(v:progname) |
| 48 | + call xolox#misc#msg#debug("vim-misc %s: Looking for Vim executable named %s on search path ..", g:xolox#misc#version, string(program_name)) |
| 49 | + let candidates = xolox#misc#path#which(program_name) |
38 | 50 | if !empty(candidates)
|
39 | 51 | call xolox#misc#msg#debug("vim-misc %s: Found %i candidate(s) on search path: %s.", g:xolox#misc#version, len(candidates), string(candidates))
|
40 |
| - let progname = candidates[0] |
| 52 | + let pathname = candidates[0] |
41 | 53 | endif
|
42 | 54 | endif
|
43 |
| - call xolox#misc#msg#debug("vim-misc %s: Reporting Vim executable %s.", g:xolox#misc#version, string(progname)) |
44 |
| - return progname |
| 55 | + call xolox#misc#msg#debug("vim-misc %s: Reporting Vim executable %s.", g:xolox#misc#version, string(pathname)) |
| 56 | + return pathname |
45 | 57 | endfunction
|
46 | 58 |
|
47 | 59 | function! xolox#misc#os#exec(options) " {{{1
|
|
0 commit comments