diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2020-04-25 21:32:37 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-04-25 21:32:37 +0200 |
commit | 55287efdf7679a4ceda261b03bce5172d6692640 (patch) | |
tree | 9c1e17fadca966ad94a6dc868e2c935ca507897c /autoload/elm/util.vim | |
parent | d757bfd643cc73c2d495355c153ed0257f5d5b47 (diff) | |
download | vim-polyglot-55287efdf7679a4ceda261b03bce5172d6692640.tar.gz vim-polyglot-55287efdf7679a4ceda261b03bce5172d6692640.zip |
Change elm provider, closes #475
Diffstat (limited to 'autoload/elm/util.vim')
-rw-r--r-- | autoload/elm/util.vim | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/autoload/elm/util.vim b/autoload/elm/util.vim deleted file mode 100644 index 6bc7cc9e..00000000 --- a/autoload/elm/util.vim +++ /dev/null @@ -1,184 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elm') == -1 - -" IsWin returns 1 if current OS is Windows or 0 otherwise -fun! elm#util#IsWin() abort - let l:win = ['win16', 'win32', 'win32unix', 'win64', 'win95'] - for l:w in l:win - if (has(l:w)) - return 1 - endif - endfor - - return 0 -endf - -fun! elm#util#CheckBin(bin, url) abort - let l:binpath = substitute(a:bin, '^\s*\(.\{-}\)\s*$', '\1', '') - - if executable(l:binpath) - return l:binpath - endif - - call elm#util#EchoWarning('elm-vim:', 'could not find ' . l:binpath . ' [' . a:url . ']') - - return '' -endf - -" Determines the browser command to use -fun! s:get_browser_command() abort - let l:elm_browser_command = get(g:, 'elm_browser_command', '') - if l:elm_browser_command ==? '' - if elm#util#IsWin() - let l:elm_browser_command = '!start rundll32 url.dll,FileProtocolHandler %URL%' - elseif has('mac') || has('macunix') || has('gui_macvim') || system('uname') =~? '^darwin' - let l:elm_browser_command = 'open %URL%' - elseif executable('xdg-open') - let l:elm_browser_command = 'xdg-open %URL%' - elseif executable('firefox') - let l:elm_browser_command = 'firefox %URL% &' - else - let l:elm_browser_command = '' - endif - endif - return l:elm_browser_command -endf - -" OpenBrowser opens a url in the default browser -fun! elm#util#OpenBrowser(url) abort - let l:cmd = s:get_browser_command() - if len(l:cmd) == 0 - redraw - echohl WarningMsg - echo "It seems that you don't have general web browser. Open URL below." - echohl None - echo a:url - return - endif - if l:cmd =~? '^!' - let l:cmd = substitute(l:cmd, '%URL%', '\=shellescape(a:url)', 'g') - silent! exec l:cmd - elseif l:cmd =~# '^:[A-Z]' - let l:cmd = substitute(l:cmd, '%URL%', '\=a:url', 'g') - exec l:cmd - else - let l:cmd = substitute(l:cmd, '%URL%', '\=shellescape(a:url)', 'g') - call system(l:cmd) - endif -endf - -" DecodeJSON decodes a string of json into a viml object -fun! elm#util#DecodeJSON(s) abort - let l:true = 1 - let l:false = 0 - let l:null = 0 - return eval(a:s) -endf - -" Remove ANSI escape characters used for highlighting purposes -fun! s:strip_color(msg) abort - return substitute(a:msg, '\e\[[0-9;]\+[mK]', '', 'g') -endf - -" Print functions -fun! elm#util#Echo(title, msg) abort - redraws! | echon a:title . ' ' | echohl Identifier | echon s:strip_color(a:msg) | echohl None -endf - -fun! elm#util#EchoSuccess(title, msg) abort - redraws! | echon a:title . ' ' | echohl Function | echon s:strip_color(a:msg) | echohl None -endf - -fun! elm#util#EchoWarning(title, msg) abort - redraws! | echon a:title . ' ' | echohl WarningMsg | echon s:strip_color(a:msg) | echohl None -endf - -fun! elm#util#EchoError(title, msg) abort - redraws! | echon a:title . ' ' | echohl ErrorMsg | echon s:strip_color(a:msg) | echohl None -endf - -fun! elm#util#EchoLater(func_name, title, msg) abort - let s:echo_func_name = a:func_name - let s:echo_title = a:title - let s:echo_msg = a:msg -endf - -fun! elm#util#EchoStored() abort - if exists('s:echo_func_name') && exists('s:echo_title') && exists('s:echo_msg') - call elm#util#{s:echo_func_name}(s:echo_title, s:echo_msg) - unlet s:echo_func_name - unlet s:echo_title - unlet s:echo_msg - endif -endf - -function! elm#util#GoToModule(name) - if empty(a:name) | return | endif - if empty(matchstr(a:name, '^Native\.')) - let l:extension = '.elm' - else - let l:extension = '.js' - endif - let l:rel_path = substitute(a:name, '\.', '/', 'g') . l:extension - let l:root = elm#FindRootDirectory() - - let l:module_file = s:findLocalModule(l:rel_path, l:root) - if !filereadable(l:module_file) - let l:module_file = s:findDependencyModule(l:rel_path, l:root) - endif - - if filereadable(l:module_file) - exec 'edit ' . fnameescape(l:module_file) - else - return s:error("Can't find module \"" . a:name . "\"") - endif -endfunction - -function! s:findLocalModule(rel_path, root) - let l:old_match = findfile('elm-package.json', a:root . ';') - let l:new_match = findfile('elm.json', a:root . ';') - if !empty(l:new_match) - let l:package_json = l:new_match - elseif !empty(l:old_match) - let l:package_json = l:old_match - endif - if exists('*json_decode') - let l:package = json_decode(readfile(l:package_json)) - let l:source_roots = l:package['source-directories'] - else - " This is a fallback for vim's which do not support json_decode. - " It simply only looks in the 'src' subdirectory and fails otherwise. - let l:source_roots = ['src'] - end - for l:source_root in l:source_roots - let l:file_path = a:root . '/' . l:source_root . '/' . a:rel_path - if !filereadable(l:file_path) - continue - endif - return l:file_path - endfor -endfunction - -function! s:findDependencyModule(rel_path, root) - " If we are a dependency ourselves, we need to check our siblings. - " This is because elm package doesn't install dependencies recursively. - let l:root = substitute(a:root, '\/elm-stuff/packages.\+$', '', '') - - " We naively craws the dependencies dir for any fitting module name. - " If it exists, we'll find it. If multiple filenames match, - " there's a chance we return the wrong one. - let l:module_paths = glob(l:root . '/elm-stuff/packages/**/' . a:rel_path, 0, 1) - if len(l:module_paths) > 0 - return l:module_paths[0] - endif -endfunction - -" Using the built-in :echoerr prints a stacktrace, which isn't that nice. -" From: https://github.com/moll/vim-node/blob/master/autoload/node.vim -function! s:error(msg) - echohl ErrorMsg - echomsg a:msg - echohl NONE - let v:errmsg = a:msg -endfunction - -endif |