summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/c/ccls.vim22
-rw-r--r--ale_linters/cpp/ccls.vim22
-rw-r--r--ale_linters/objc/ccls.vim22
-rw-r--r--autoload/ale/handlers/ccls.vim17
4 files changed, 23 insertions, 60 deletions
diff --git a/ale_linters/c/ccls.vim b/ale_linters/c/ccls.vim
index d0fa566e..5dc2339f 100644
--- a/ale_linters/c/ccls.vim
+++ b/ale_linters/c/ccls.vim
@@ -4,29 +4,11 @@
call ale#Set('c_ccls_executable', 'ccls')
call ale#Set('c_ccls_init_options', {})
-function! ale_linters#c#ccls#GetProjectRoot(buffer) abort
- let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls-root')
-
- if empty(l:project_root)
- let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json')
- endif
-
- if empty(l:project_root)
- let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls')
- endif
-
- return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : ''
-endfunction
-
-function! ale_linters#c#ccls#GetInitializationOptions(buffer) abort
- return ale#Var(a:buffer, 'c_ccls_init_options')
-endfunction
-
call ale#linter#Define('c', {
\ 'name': 'ccls',
\ 'lsp': 'stdio',
\ 'executable_callback': ale#VarFunc('c_ccls_executable'),
\ 'command': '%e',
-\ 'project_root_callback': 'ale_linters#c#ccls#GetProjectRoot',
-\ 'initialization_options_callback': 'ale_linters#c#ccls#GetInitializationOptions',
+\ 'project_root_callback': 'ale#handlers#ccls#GetProjectRoot',
+\ 'initialization_options_callback':ale#VarFunc('c_ccls_init_options'),
\})
diff --git a/ale_linters/cpp/ccls.vim b/ale_linters/cpp/ccls.vim
index f1604f30..501fd685 100644
--- a/ale_linters/cpp/ccls.vim
+++ b/ale_linters/cpp/ccls.vim
@@ -4,29 +4,11 @@
call ale#Set('cpp_ccls_executable', 'ccls')
call ale#Set('cpp_ccls_init_options', {})
-function! ale_linters#cpp#ccls#GetProjectRoot(buffer) abort
- let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls-root')
-
- if empty(l:project_root)
- let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json')
- endif
-
- if empty(l:project_root)
- let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls')
- endif
-
- return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : ''
-endfunction
-
-function! ale_linters#cpp#ccls#GetInitializationOptions(buffer) abort
- return ale#Var(a:buffer, 'cpp_ccls_init_options')
-endfunction
-
call ale#linter#Define('cpp', {
\ 'name': 'ccls',
\ 'lsp': 'stdio',
\ 'executable_callback': ale#VarFunc('cpp_ccls_executable'),
\ 'command': '%e',
-\ 'project_root_callback': 'ale_linters#cpp#ccls#GetProjectRoot',
-\ 'initialization_options_callback': 'ale_linters#cpp#ccls#GetInitializationOptions',
+\ 'project_root_callback': 'ale#handlers#ccls#GetProjectRoot',
+\ 'initialization_options_callback': ale#VarFunc('cpp_ccls_init_options'),
\})
diff --git a/ale_linters/objc/ccls.vim b/ale_linters/objc/ccls.vim
index e6736df7..0aa6a5e5 100644
--- a/ale_linters/objc/ccls.vim
+++ b/ale_linters/objc/ccls.vim
@@ -4,29 +4,11 @@
call ale#Set('objc_ccls_executable', 'ccls')
call ale#Set('objc_ccls_init_options', {})
-function! ale_linters#objc#ccls#GetProjectRoot(buffer) abort
- let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls-root')
-
- if empty(l:project_root)
- let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json')
- endif
-
- if empty(l:project_root)
- let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls')
- endif
-
- return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : ''
-endfunction
-
-function! ale_linters#objc#ccls#GetInitializationOptions(buffer) abort
- return ale#Var(a:buffer, 'objc_ccls_init_options')
-endfunction
-
call ale#linter#Define('objc', {
\ 'name': 'ccls',
\ 'lsp': 'stdio',
\ 'executable_callback': ale#VarFunc('objc_ccls_executable'),
\ 'command': '%e',
-\ 'project_root_callback': 'ale_linters#objc#ccls#GetProjectRoot',
-\ 'initialization_options_callback': 'ale_linters#objc#ccls#GetInitializationOptions',
+\ 'project_root_callback': 'ale#handlers#ccls#GetProjectRoot',
+\ 'initialization_options_callback': ale#VarFunc('objc_ccls_init_options'),
\})
diff --git a/autoload/ale/handlers/ccls.vim b/autoload/ale/handlers/ccls.vim
new file mode 100644
index 00000000..29dd6aed
--- /dev/null
+++ b/autoload/ale/handlers/ccls.vim
@@ -0,0 +1,17 @@
+scriptencoding utf-8
+" Author: Ye Jingchen <ye.jingchen@gmail.com>
+" Description: Utilities for ccls
+
+function! ale#handlers#ccls#GetProjectRoot(buffer) abort
+ let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls-root')
+
+ if empty(l:project_root)
+ let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json')
+ endif
+
+ if empty(l:project_root)
+ let l:project_root = ale#path#FindNearestFile(a:buffer, '.ccls')
+ endif
+
+ return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : ''
+endfunction