Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

💪 Refactoring for denops v6 #292

Closed
wants to merge 21 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
941c18e
:package: Remove suffixes from import statements
lambdalisue Nov 26, 2023
93cc86c
:package: bump deno.land/std from 0.204.0 to 0.208.0
lambdalisue Nov 26, 2023
fe8a3b1
:package: bump deno.land/x/unknownutil to v3.11.0
lambdalisue Nov 26, 2023
012c6c3
:herb: Add test for `denops.redraw()`
lambdalisue Nov 26, 2023
fc1f29f
:shower: Remove unused const
lambdalisue Nov 26, 2023
e0bc9b1
:shower: Remove `g:denops#trace` debugging feature
lambdalisue Nov 26, 2023
1f71975
:muscle: Refactor worker script
lambdalisue Nov 26, 2023
aff0b2a
:muscle: Refactor denops cli
lambdalisue Nov 26, 2023
6e5298b
:muscle: Refactor host codes
lambdalisue Nov 26, 2023
c0ab004
:muscle: Refactor impl codes
lambdalisue Nov 26, 2023
db3bb5e
:muscle: Remove unnecessary async/await from service
lambdalisue Nov 26, 2023
8e611e4
:muscle: Use `notify` on `denops#plugin#reload`
lambdalisue Nov 26, 2023
1b28d94
:boom: Read meta info only once in initialization
lambdalisue Nov 26, 2023
7c0099b
:boom: Remove options from `register`, `reload`, and `discover`
lambdalisue Nov 26, 2023
f12a3e0
:muscle: Define dispatcher in the constructor of Host
lambdalisue Nov 26, 2023
f644d0e
:+1: Show denops CLI logs when `g:denops#debug` is set
lambdalisue Nov 26, 2023
cb80c84
:+1: Add performance log of host detection
lambdalisue Nov 26, 2023
605ac65
:muscle: Emit `DenopsReady` on denops side
lambdalisue Nov 26, 2023
d4f0211
:muscle: Get `meta` on denops cli
lambdalisue Nov 26, 2023
12be748
:muscle: Use `const` for constant variables
lambdalisue Dec 30, 2023
7917a57
:bug: Refeed consumed chars after wait
lambdalisue Dec 30, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion autoload/denops.vim
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ call denops#_internal#conf#define('denops#disabled', 0)
call denops#_internal#conf#define('denops#deno', 'deno')
call denops#_internal#conf#define('denops#deno_dir', v:null)
call denops#_internal#conf#define('denops#debug', 0)
call denops#_internal#conf#define('denops#trace', 0)
call denops#_internal#conf#define('denops#disable_deprecation_warning_message', 0)

" Internal configuration
Expand Down
2 changes: 1 addition & 1 deletion autoload/denops/_internal/job.vim
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
endfunction
else
" https://github.com/neovim/neovim/blob/f629f83/src/nvim/event/process.c#L24-L26
let s:KILL_TIMEOUT_MS = 2000
const s:KILL_TIMEOUT_MS = 2000

Check failure on line 49 in autoload/denops/_internal/job.vim

View workflow job for this annotation

GitHub Actions / vint

[vint] autoload/denops/_internal/job.vim#L49

E492: Not an editor command: const s:KILL_TIMEOUT_MS = 2000 (see vim-jp/vim-vimlparser)
Raw output
autoload/denops/_internal/job.vim:49:3: E492: Not an editor command: const s:KILL_TIMEOUT_MS = 2000 (see vim-jp/vim-vimlparser)

function! s:start(args, options) abort
let l:options = {
Expand Down
10 changes: 5 additions & 5 deletions autoload/denops/_internal/path.vim
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
let s:sep = has('win32') ? '\' : '/'
let s:root = expand('<sfile>:h:h:h:h')
const s:SEP = has('win32') ? '\' : '/'

Check failure on line 1 in autoload/denops/_internal/path.vim

View workflow job for this annotation

GitHub Actions / vint

[vint] autoload/denops/_internal/path.vim#L1

E492: Not an editor command: const s:SEP = has('win32') ? '\' : '/' (see vim-jp/vim-vimlparser)
Raw output
autoload/denops/_internal/path.vim:1:1: E492: Not an editor command: const s:SEP = has('win32') ? '\' : '/' (see vim-jp/vim-vimlparser)
const s:ROOT = expand('<sfile>:h:h:h:h')

function! denops#_internal#path#join(paths) abort
return join(a:paths, s:sep)
return join(a:paths, s:SEP)
endfunction

function! denops#_internal#path#norm(path) abort
Expand All @@ -19,14 +19,14 @@
endfunction

function! s:script(paths) abort
return s:norm(denops#_internal#path#join([s:root, 'denops'] + a:paths))
return s:norm(denops#_internal#path#join([s:ROOT, 'denops'] + a:paths))
endfunction
else
function! s:norm(path) abort
return a:path
endfunction

function! s:script(paths) abort
return denops#_internal#path#join([s:root, 'denops'] + a:paths)
return denops#_internal#path#join([s:ROOT, 'denops'] + a:paths)
endfunction
endif
20 changes: 10 additions & 10 deletions autoload/denops/_internal/server/chan.vim
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
let s:closed_on_purpose = 0
let s:exiting = 0

let s:host = has('nvim') ? 'nvim' : 'vim'
let s:rpcconnect = function(printf('denops#_internal#rpc#%s#connect', s:host))
let s:rpcclose = function(printf('denops#_internal#rpc#%s#close', s:host))
let s:rpcnotify = function(printf('denops#_internal#rpc#%s#notify', s:host))
let s:rpcrequest = function(printf('denops#_internal#rpc#%s#request', s:host))
const s:HOST = has('nvim') ? 'nvim' : 'vim'

Check failure on line 7 in autoload/denops/_internal/server/chan.vim

View workflow job for this annotation

GitHub Actions / vint

[vint] autoload/denops/_internal/server/chan.vim#L7

E492: Not an editor command: const s:HOST = has('nvim') ? 'nvim' : 'vim' (see vim-jp/vim-vimlparser)
Raw output
autoload/denops/_internal/server/chan.vim:7:1: E492: Not an editor command: const s:HOST = has('nvim') ? 'nvim' : 'vim' (see vim-jp/vim-vimlparser)
const s:RPCCONNECT = function(printf('denops#_internal#rpc#%s#connect', s:HOST))
const s:RPCCLOSE = function(printf('denops#_internal#rpc#%s#close', s:HOST))
const s:RPCNOTIFY = function(printf('denops#_internal#rpc#%s#notify', s:HOST))
const s:RPCREQUEST = function(printf('denops#_internal#rpc#%s#request', s:HOST))

" Args:
" addr: string
Expand Down Expand Up @@ -63,7 +63,7 @@
throw '[denops] Channel does not exist yet'
endif
let s:closed_on_purpose = 1
call s:rpcclose(s:chan)
call s:RPCCLOSE(s:chan)
let s:chan = v:null
endfunction

Expand All @@ -75,25 +75,25 @@
if s:chan is# v:null
throw '[denops] Channel is not ready yet'
endif
return s:rpcnotify(s:chan, a:method, a:params)
return s:RPCNOTIFY(s:chan, a:method, a:params)
endfunction

function! denops#_internal#server#chan#request(method, params) abort
if s:chan is# v:null
throw '[denops] Channel is not ready yet'
endif
return s:rpcrequest(s:chan, a:method, a:params)
return s:RPCREQUEST(s:chan, a:method, a:params)
endfunction

function! s:connect(addr, options) abort
let s:closed_on_purpose = 0
let s:chan = s:rpcconnect(a:addr, {
let s:chan = s:RPCCONNECT(a:addr, {
\ 'on_close': { -> s:on_close(a:options) },
\})
let s:addr = a:addr
let s:options = a:options
call denops#_internal#echo#debug(printf('Channel connected (%s)', a:addr))
doautocmd <nomodeline> User DenopsReady
call s:RPCNOTIFY(s:chan, 'void', [])
endfunction

function! s:on_close(options) abort
Expand Down
6 changes: 4 additions & 2 deletions autoload/denops/_internal/server/proc.vim
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
let s:SCRIPT = denops#_internal#path#script(['@denops-private', 'cli.ts'])
const s:SCRIPT = denops#_internal#path#script(['@denops-private', 'cli.ts'])

Check failure on line 1 in autoload/denops/_internal/server/proc.vim

View workflow job for this annotation

GitHub Actions / vint

[vint] autoload/denops/_internal/server/proc.vim#L1

E492: Not an editor command: const s:SCRIPT = denops#_internal#path#script(['@denops-private', 'cli.ts']) (see vim-jp/vim-vimlparser)
Raw output
autoload/denops/_internal/server/proc.vim:1:1: E492: Not an editor command: const s:SCRIPT = denops#_internal#path#script(['@denops-private', 'cli.ts']) (see vim-jp/vim-vimlparser)

let s:job = v:null
let s:options = v:null
Expand Down Expand Up @@ -67,10 +67,12 @@
let l:args += g:denops#server#deno_args
let l:args += [
\ s:SCRIPT,
\ '--quiet',
\ '--identity',
\ '--port', '0',
\]
if !g:denops#debug
let l:args += ['--quiet']
endif
let l:env = {
\ 'NO_COLOR': 1,
\ 'DENO_NO_PROMPT': 1,
Expand Down
13 changes: 6 additions & 7 deletions autoload/denops/_internal/wait.vim
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,22 @@ if exists('*wait')
let s:wait = function('wait')
else
" NOTE:
" The line 'call getchar(0)' is required to enable Ctrl-C
" The line 'call getcharstr(0)' is required to enable Ctrl-C
" interruption in Vim on Windows.
" See https://github.com/vim-denops/denops.vim/issues/182
function! s:sleep(duration) abort
call getchar(0)
execute printf('sleep %dm', a:duration)
endfunction

function! s:wait(timeout, condition, interval) abort
let l:s = reltime()
let l:waiter = printf('sleep %dm', a:interval)
let l:consumed = ''
try
while !a:condition()
if reltimefloat(reltime(l:s)) * 1000 > a:timeout
return -1
endif
call s:sleep(a:interval)
let l:consumed ..= getcharstr(0)
execute l:waiter
endwhile
silent! call feedkeys(l:consumed, 'it')
catch /^Vim:Interrupt$/
return -2
endtry
Expand Down
79 changes: 38 additions & 41 deletions autoload/denops/plugin.vim
Original file line number Diff line number Diff line change
Expand Up @@ -57,42 +57,54 @@ function! denops#plugin#wait_async(plugin, callback) abort
endfunction

function! denops#plugin#register(plugin, ...) abort
if a:0 is# 0 || type(a:1) is# v:t_dict
let l:options = a:0 > 0 ? a:1 : {}
let l:script = s:find_plugin(a:plugin)
else
let l:script = a:1
let l:options = a:0 > 1 ? a:2 : {}
if a:0 is# 0
" denops#plugin#register({plugin}) is deprecated.
call denops#_internal#echo#deprecate(
\ 'The {script} argument of `denops#plugin#register` will be non optional. Please specify the script path of the plugin.',
\)
return denops#plugin#register(a:plugin, s:find_plugin(a:plugin))
elseif a:0 is# 1 && type(a:1) is# v:t_dict
" denops#plugin#register({plugin}, {option}) is deprecated.
call denops#_internal#echo#deprecate(
\ 'The {option} argument of `denops#plugin#register` is removed.',
\)
return denops#plugin#register(a:plugin, s:find_plugin(a:plugin))
elseif a:0 >= 2
" denops#plugin#register({plugin}, {script}, {option}) is deprecated.
call denops#_internal#echo#deprecate(
\ 'The {option} argument of `denops#plugin#register` is removed.',
\)
return denops#plugin#register(a:plugin, a:1)
endif
let l:meta = denops#_internal#meta#get()
let l:options = s:options(l:options, {
\ 'mode': 'error',
\})
return s:register(a:plugin, l:script, l:meta, l:options)

let l:script = a:1
return s:register(a:plugin, l:script)
endfunction

function! denops#plugin#reload(plugin, ...) abort
let l:options = a:0 > 0 ? a:1 : {}
let l:meta = denops#_internal#meta#get()
let l:options = s:options(l:options, {
\ 'mode': 'error',
\})
let l:trace = s:trace(a:plugin)
let l:args = [a:plugin, l:meta, l:options, l:trace]
if a:0 >= 1
" denops#plugin#reload({plugin}, {option}) is deprecated.
call denops#_internal#echo#deprecate(
\ 'The {option} argument of `denops#plugin#reload` is removed.',
\)
endif
let l:args = [a:plugin]
call denops#_internal#echo#debug(printf('reload plugin: %s', l:args))
return denops#server#request('invoke', ['reload', l:args])
return denops#server#notify('invoke', ['reload', l:args])
endfunction

function! denops#plugin#discover(...) abort
let l:meta = denops#_internal#meta#get()
let l:options = s:options(a:0 > 0 ? a:1 : {}, {
\ 'mode': 'skip',
\})
if a:0 >= 1
" denops#plugin#discover({option}) is deprecated.
call denops#_internal#echo#deprecate(
\ 'The {option} argument of `denops#plugin#discover` is removed.',
\)
endif
let l:plugins = {}
call s:gather_plugins(l:plugins)
call denops#_internal#echo#debug(printf('%d plugins are discovered', len(l:plugins)))
for [l:plugin, l:script] in items(l:plugins)
call s:register(l:plugin, l:script, l:meta, l:options)
call s:register(l:plugin, l:script)
endfor
endfunction

Expand Down Expand Up @@ -126,29 +138,14 @@ function! s:gather_plugins(plugins) abort
endfor
endfunction

function! s:options(base, default) abort
let l:options = extend(a:default, a:base)
if l:options.mode !~# '^\(reload\|skip\|error\)$'
throw printf('Unknown mode "%s" is specified', l:options.mode)
endif
return l:options
endfunction

function! s:register(plugin, script, meta, options) abort
function! s:register(plugin, script) abort
execute printf('doautocmd <nomodeline> User DenopsSystemPluginRegister:%s', a:plugin)
let l:script = denops#_internal#path#norm(a:script)
let l:trace = s:trace(a:plugin)
let l:args = [a:plugin, l:script, a:meta, a:options, l:trace]
let l:args = [a:plugin, l:script]
call denops#_internal#echo#debug(printf('register plugin: %s', l:args))
call denops#server#notify('invoke', ['register', l:args])
endfunction

function! s:trace(plugin) abort
return type(g:denops#trace) is# v:t_list
\ ? index(g:denops#trace, a:plugin) != -1 ? v:true : v:false
\ : g:denops#trace ? v:true : v:false
endfunction

function! s:find_plugin(plugin) abort
for l:script in globpath(&runtimepath, denops#_internal#path#join(['denops', a:plugin, 'main.ts']), 1, 1, 1)
let l:plugin = fnamemodify(l:script, ':h:t')
Expand Down
6 changes: 3 additions & 3 deletions autoload/denops/server.vim
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
let s:STATUS_STOPPED = 'stopped'
let s:STATUS_STARTING = 'starting'
let s:STATUS_RUNNING = 'running'
const s:STATUS_STOPPED = 'stopped'

Check failure on line 1 in autoload/denops/server.vim

View workflow job for this annotation

GitHub Actions / vint

[vint] autoload/denops/server.vim#L1

E492: Not an editor command: const s:STATUS_STOPPED = 'stopped' (see vim-jp/vim-vimlparser)
Raw output
autoload/denops/server.vim:1:1: E492: Not an editor command: const s:STATUS_STOPPED = 'stopped' (see vim-jp/vim-vimlparser)
const s:STATUS_STARTING = 'starting'
const s:STATUS_RUNNING = 'running'


" Local server
Expand Down
24 changes: 12 additions & 12 deletions autoload/health/denops.vim
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
let s:deno_version = '1.32.0'
let s:vim_version = '9.0.1499'
let s:neovim_version = '0.8.0'
const s:DENO_VERSION = '1.32.0'

Check failure on line 1 in autoload/health/denops.vim

View workflow job for this annotation

GitHub Actions / vint

[vint] autoload/health/denops.vim#L1

E492: Not an editor command: const s:DENO_VERSION = '1.32.0' (see vim-jp/vim-vimlparser)
Raw output
autoload/health/denops.vim:1:1: E492: Not an editor command: const s:DENO_VERSION = '1.32.0' (see vim-jp/vim-vimlparser)
const s:VIM_VERSION = '9.0.1499'
const s:NEOVIM_VERSION = '0.8.0'

function! s:compare_version(v1, v2) abort
let l:v1 = map(split(a:v1, '\.'), { _, v -> v + 0 })
Expand Down Expand Up @@ -46,7 +46,7 @@
let l:deno_version = s:get_deno_version(g:denops#deno)
call s:report_info(printf(
\ 'Supported Deno version: `%s`',
\ s:deno_version,
\ s:DENO_VERSION,
\))
call s:report_info(printf(
\ 'Detected Deno version: `%s`',
Expand All @@ -55,10 +55,10 @@
if empty(l:deno_version)
call s:report_error('Unable to detect version of deno, make sure your deno runtime is correct.')
return
elseif s:compare_version(l:deno_version, s:deno_version) < 0
elseif s:compare_version(l:deno_version, s:DENO_VERSION) < 0
call s:report_error(printf(
\ 'Unsupported Deno version is detected. You need to upgrade it to `%s` or later.',
\ s:deno_version,
\ s:DENO_VERSION,
\))
return
endif
Expand All @@ -68,16 +68,16 @@
function! s:check_vim_version() abort
call s:report_info(printf(
\ 'Supported Vim version: `%s`',
\ s:vim_version,
\ s:VIM_VERSION,
\))
call s:report_info(printf(
\ 'Detected Vim version: `%s`',
\ denops#_internal#meta#get().version,
\))
if !has(printf('patch-%s', s:vim_version))
if !has(printf('patch-%s', s:VIM_VERSION))
call s:report_error(printf(
\ 'Unsupported Vim version is detected. You need to upgrade it to `%s` or later.',
\ s:vim_version,
\ s:VIM_VERSION,
\))
return
endif
Expand All @@ -87,16 +87,16 @@
function! s:check_neovim_version() abort
call s:report_info(printf(
\ 'Supported Neovim version: `%s`',
\ s:neovim_version,
\ s:NEOVIM_VERSION,
\))
call s:report_info(printf(
\ 'Detected Neovim version: `%s`',
\ denops#_internal#meta#get().version,
\))
if !has(printf('nvim-%s', s:neovim_version))
if !has(printf('nvim-%s', s:NEOVIM_VERSION))
call s:report_error(printf(
\ 'Unsupported Neovim version is detected. You need to upgrade it to `%s` or later.',
\ s:neovim_version,
\ s:NEOVIM_VERSION,
\))
return
endif
Expand Down
Loading