Add support for various debian source files (debian/{tests/control,control,copyright,watch,upstream/metadata}) (#5107)

* Add debian-lsp support for autopkgtest files

Add Language Server Protocol support for debian/tests/control files
using debian-lsp (https://github.com/jelmer/debian-lsp).

Vim detects these files as filetype 'autopkgtest' by default.

* Add debian-lsp support for debcontrol files

Add Language Server Protocol support for debian/control files using
debian-lsp (https://github.com/jelmer/debian-lsp).

debian-lsp provides diagnostics, completions, and code actions for
Debian package control files.

* Add debian-lsp support for debcopyright files

Add Language Server Protocol support for debian/copyright files using
debian-lsp (https://github.com/jelmer/debian-lsp).

* Add debian-lsp support for debchangelog files

Add Language Server Protocol support for debian/changelog files using
debian-lsp (https://github.com/jelmer/debian-lsp).

* Add debian-lsp support for debsources files

Add Language Server Protocol support for debian/source/format files
using debian-lsp (https://github.com/jelmer/debian-lsp).

* Add debian-lsp support for debupstream files

Add Language Server Protocol support for debian/upstream/metadata
files using debian-lsp (https://github.com/jelmer/debian-lsp).

Note: Vim does not detect debian/upstream/metadata files by default.
Users need to add filetype detection to their vimrc:

  autocmd BufNewFile,BufRead */debian/upstream/metadata setfiletype debupstream

* Add debian-lsp support for debwatch files

Add Language Server Protocol support for debian/watch files using
debian-lsp (https://github.com/jelmer/debian-lsp).

Note: Vim does not detect debian/watch files by default. Users need to
add filetype detection to their vimrc:

  autocmd BufNewFile,BufRead */debian/watch setfiletype debwatch

* Add debian-lsp to supported tools documentation

Update supported-tools.md, ale-supported-languages-and-tools.txt,
and ale.txt table of contents to include the new Debian filetype
linters (autopkgtest, debchangelog, debcontrol, debcopyright,
debsources, debupstream, debwatch).
This commit is contained in:
Jelmer Vernooij
2026-06-21 11:09:16 +09:00
committed by GitHub
parent 178fe11356
commit 44ff0049a7
31 changed files with 689 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
" Author: Jelmer Vernooij <jelmer@jelmer.uk>
" Description: Language server for Debian package files
call ale#Set('autopkgtest_debian_lsp_executable', 'debian-lsp')
function! ale_linters#autopkgtest#debian_lsp#GetProjectRoot(buffer) abort
" Find the debian directory
let l:debian_dir = ale#path#FindNearestDirectory(a:buffer, 'debian')
if !empty(l:debian_dir)
return fnamemodify(l:debian_dir, ':h:h')
endif
return ''
endfunction
call ale#linter#Define('autopkgtest', {
\ 'name': 'debian_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'autopkgtest_debian_lsp_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#autopkgtest#debian_lsp#GetProjectRoot'),
\})
+23
View File
@@ -0,0 +1,23 @@
" Author: Jelmer Vernooij <jelmer@jelmer.uk>
" Description: Language server for Debian package files
call ale#Set('debchangelog_debian_lsp_executable', 'debian-lsp')
function! ale_linters#debchangelog#debian_lsp#GetProjectRoot(buffer) abort
" Find the debian directory
let l:debian_dir = ale#path#FindNearestDirectory(a:buffer, 'debian')
if !empty(l:debian_dir)
return fnamemodify(l:debian_dir, ':h:h')
endif
return ''
endfunction
call ale#linter#Define('debchangelog', {
\ 'name': 'debian_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'debchangelog_debian_lsp_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#debchangelog#debian_lsp#GetProjectRoot'),
\})
+23
View File
@@ -0,0 +1,23 @@
" Author: Jelmer Vernooij <jelmer@jelmer.uk>
" Description: Language server for Debian package files
call ale#Set('debcontrol_debian_lsp_executable', 'debian-lsp')
function! ale_linters#debcontrol#debian_lsp#GetProjectRoot(buffer) abort
" Find the debian directory
let l:debian_dir = ale#path#FindNearestDirectory(a:buffer, 'debian')
if !empty(l:debian_dir)
return fnamemodify(l:debian_dir, ':h:h')
endif
return ''
endfunction
call ale#linter#Define('debcontrol', {
\ 'name': 'debian_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'debcontrol_debian_lsp_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#debcontrol#debian_lsp#GetProjectRoot'),
\})
+23
View File
@@ -0,0 +1,23 @@
" Author: Jelmer Vernooij <jelmer@jelmer.uk>
" Description: Language server for Debian package files
call ale#Set('debcopyright_debian_lsp_executable', 'debian-lsp')
function! ale_linters#debcopyright#debian_lsp#GetProjectRoot(buffer) abort
" Find the debian directory
let l:debian_dir = ale#path#FindNearestDirectory(a:buffer, 'debian')
if !empty(l:debian_dir)
return fnamemodify(l:debian_dir, ':h:h')
endif
return ''
endfunction
call ale#linter#Define('debcopyright', {
\ 'name': 'debian_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'debcopyright_debian_lsp_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#debcopyright#debian_lsp#GetProjectRoot'),
\})
+23
View File
@@ -0,0 +1,23 @@
" Author: Jelmer Vernooij <jelmer@jelmer.uk>
" Description: Language server for Debian package files
call ale#Set('debsources_debian_lsp_executable', 'debian-lsp')
function! ale_linters#debsources#debian_lsp#GetProjectRoot(buffer) abort
" Find the debian directory
let l:debian_dir = ale#path#FindNearestDirectory(a:buffer, 'debian')
if !empty(l:debian_dir)
return fnamemodify(l:debian_dir, ':h:h')
endif
return ''
endfunction
call ale#linter#Define('debsources', {
\ 'name': 'debian_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'debsources_debian_lsp_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#debsources#debian_lsp#GetProjectRoot'),
\})
+23
View File
@@ -0,0 +1,23 @@
" Author: Jelmer Vernooij <jelmer@jelmer.uk>
" Description: Language server for Debian package files
call ale#Set('debupstream_debian_lsp_executable', 'debian-lsp')
function! ale_linters#debupstream#debian_lsp#GetProjectRoot(buffer) abort
" Find the debian directory
let l:debian_dir = ale#path#FindNearestDirectory(a:buffer, 'debian')
if !empty(l:debian_dir)
return fnamemodify(l:debian_dir, ':h:h')
endif
return ''
endfunction
call ale#linter#Define('debupstream', {
\ 'name': 'debian_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'debupstream_debian_lsp_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#debupstream#debian_lsp#GetProjectRoot'),
\})
+23
View File
@@ -0,0 +1,23 @@
" Author: Jelmer Vernooij <jelmer@jelmer.uk>
" Description: Language server for Debian package files
call ale#Set('debwatch_debian_lsp_executable', 'debian-lsp')
function! ale_linters#debwatch#debian_lsp#GetProjectRoot(buffer) abort
" Find the debian directory
let l:debian_dir = ale#path#FindNearestDirectory(a:buffer, 'debian')
if !empty(l:debian_dir)
return fnamemodify(l:debian_dir, ':h:h')
endif
return ''
endfunction
call ale#linter#Define('debwatch', {
\ 'name': 'debian_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'debwatch_debian_lsp_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#debwatch#debian_lsp#GetProjectRoot'),
\})