GithubHelp home page GithubHelp logo

ddu-ui-ff's Introduction

ddu-ui-ff's People

Contributors

4513echo avatar bakudankun avatar creasty avatar erw7 avatar flow6852 avatar hasundue avatar hokorobi avatar ippachi avatar kamecha avatar kuuote avatar kyoh86 avatar matsui54 avatar milly avatar nabezokodaikon avatar omochice avatar ryicoh avatar ryota2357 avatar ryutooooo avatar shougo avatar tennashi avatar thinca avatar uga-rosa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ddu-ui-ff's Issues

When getPreviewer returns TerminalPreviewer, previewContentsTerminal raises error

Problems summary

Title says it all.

Expected

No error

Environment Information

  • ddu-ui-ff version (SHA1): ba1316e
  • denops.vim version (SHA1): 62b1d22
  • deno version(deno -V output): deno 1.34.3
  • OS: Ubuntu 20
  • neovim/Vim :version output:
NVIM v0.10.0-dev-3bf887f
Build type: Release
LuaJIT 2.1.0-beta3

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/share/nvim"

Run :checkhealth for more info

Provide a minimal init.vim/vimrc without plugin managers (Required!)

" Your minimal init.vim/vimrc
let g:denops#deno = "~/path/to/deno"
set runtimepath+=~/path/to/denops.vim
set runtimepath+=~/path/to/ddu.vim
set runtimepath+=~/path/to/ddu-ui-ff
set runtimepath+=~/path/to/ddu-source-git

function! DduSourceGit()
  cd ~/path/to/ddu.vim
  call ddu#start(#{
        \   sources: [#{name: "git_log"}],
        \   ui: "ff",
        \   uiParams: #{
        \     ff: #{
        \       autoAction: #{ name: "preview" }
        \     }
        \   },
        \ })
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. :call DduSourceGit()

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)

Error detected while processing function <lambda>59[1]..<SNR>166_do_auto_action[12]..ddu#ui#sync_action[1]..ddu#ui_sync_action[4]..ddu#_request[15]..denops#request[1]..denops#server#request[4]..denops#_internal#server#chan#request[4]..denops#_internal#rpc#nvim#request:
line    1:
Error invoking 'invoke' on channel 4:
0,Vim:E119: Not enough arguments for function: ddu#ui#ff#_open_preview_window

AutoAction preview does not work properly when startFilter is enabled

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

SSIA

Expected

Correctly updated by moving the cursor.

Environment Information

Latest

  • ddu-ui-ff version (SHA1):
    2fafeda

  • denops.vim version (SHA1):
    3b489d50ba2e034c829a09475a4002176bffbef7

  • deno version(deno -V output):
    deno 1.34.2

  • OS: Ubuntu 22.04 (WSL2)

  • neovim/Vim :version output:
    NVIM v0.10.0-dev-f31dba9

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set runtimepath+=/path/to/denops.vim
set runtimepath+=/path/to/ddu.vim
set runtimepath+=/path/to/ddu-ui-ff
set runtimepath+=/path/to/ddu-kind-file
set runtimepath+=/path/to/ddu-source-file_rec

call ddu#custom#patch_global(#{
      \ sources: [#{ name: 'file_rec' }],
      \ ui: 'ff',
      \ uiParams: #{
      \   ff: #{
      \     startFilter: v:true,
      \     autoAction: #{
      \       name: 'preview',
      \     },
      \   },
      \ },
      \ kindOptions: #{
      \   _: #{
      \     defaultAction: 'open',
      \   },
      \ },
      \})

augroup my-ddu-ff
  autocmd!
  autocmd FileType ddu-ff        call <SID>ddu_ff_mapping()
  autocmd FileType ddu-ff-filter call <SID>ddu_ff_filter_mapping()
augroup END

function! s:ddu_ff_mapping() abort
  nnoremap <buffer><silent> <CR>
        \ <Cmd>call ddu#ui#do_action('itemAction')<CR>
  nnoremap <buffer><silent> <Esc>
        \ <Cmd>call ddu#ui#do_action('quit')<CR>
  nnoremap <buffer><silent> p
        \ <Cmd>call ddu#ui#do_action('preview')<CR>
endfunction

function! s:ddu_ff_filter_mapping() abort
  nnoremap <buffer><silent> <Esc>
        \ <Cmd>call ddu#ui#do_action('closeFilterWindow')<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. call ddu#start({})
  2. Close filter using <Esc> in normal mode.
  3. Moving the cursor does not update the preview.

Screenshot (if possible)

preview

Upload the log messages by :redir and :message (if errored)

`<C-j>` hides the prompt.

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

<C-j> hides the prompt.

Expected

<C-j> does not hide the prompt.

Environment Information

  • ddu-ui-std version (SHA1): f9a5f27

  • ddu.vim version (SHA1): 8a765f0ab1d1235e51a6853bcc900c4a42134382

  • denops.vim version (SHA1): e2f17041495123e8ed9baa69098c947c5d7f6358

  • deno version(deno -V output): 1.18.2

  • OS: Mac

  • neovim/Vim :version output:

NVIM v0.7.0-dev+1017-g28d5face2
Build type: Release
LuaJIT 2.1.0-beta3
  • :checkhealth or :CheckHealth result(neovim only): OK

Provide a minimal init.vim/vimrc with less than 50 lines (Required!)

if &compatible
    set nocompatible
endif

let $CACHE = expand('~/.cache')

if !isdirectory(expand($CACHE))
    call mkdir(expand($CACHE), 'p')
endif

let s:dein_dir = expand('$CACHE/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'

if &runtimepath !~# '/dein.vim'
    if !isdirectory(s:dein_repo_dir)
        execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
    endif
    execute 'set runtimepath^=' . s:dein_repo_dir
endif

call dein#begin(s:dein_dir, expand('<sfile>'))

call dein#add('vim-denops/denops.vim')
call dein#add('Shougo/ddu.vim')
call dein#add('Shougo/ddu-commands.vim')
call dein#add('Shougo/ddu-ui-std')
call dein#add('Shougo/ddu-filter-matcher_substring')
call dein#add('Shougo/ddu-source-file_rec')
call dein#add('Shougo/ddu-kind-file')

call dein#end()
call dein#save_state()

call ddu#custom#patch_global({
    \   'ui': 'std',
    \   'sourceOptions': {
    \     '_': {
    \       'matchers': ['matcher_substring'],
    \     },
    \   },
    \   'uiParams': {
    \     'std': {
    \       'split': 'floating',
    \       'prompt': '>'
    \     },
    \   },
    \ })

autocmd FileType ddu-std call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR>
  \ <Cmd>call ddu#ui#std#do_action('itemAction')<CR>
  nnoremap <buffer><silent> i
  \ <Cmd>call ddu#ui#std#do_action('openFilterWindow')<CR>
  nnoremap <buffer><silent> q
  \ <Cmd>call ddu#ui#std#do_action('quit')<CR>
endfunction

autocmd FileType ddu-std-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR>
  \ <Esc><Cmd>close<CR>
  nnoremap <buffer><silent> <CR>
  \ <Cmd>close<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Start Neovim.
  2. Run call dein#update() commnad.
  3. Restart Neovim.
  4. Run call ddu#start({'sources': [{'name': 'file_rec'}]}) command.
  5. Type i (Open filter)
  6. Type <C-j>

Screenshot (if possible)

スクリーンショット 2022-02-06 20 16 05

split param is not work when filer is open

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

When I use ddu-ui-ff and ddu-ui-filer with different split params, these settings is not work.
For example, when I use ddu-ui-ff with split: floating and ddu-ui-filer with split:vertical ...

  • ff -> filer
    1. open ff float window
    2. try to open filer vertical window while keeping ff float window open
    3. filer window's split is not vertical
  • filer -> ff
    1. open filer vertical window
    2. try to open ff float window while keeping filer vertical window open
    3. ff window's split is not float

Expected

  • ff -> filer
    1. open ff float window
    2. try to open filer vertical window while keeping ff float window open
    3. open filer vertical window <- this behavior
  • filer -> ff
    1. open filer vertical window
    2. try to open ff float window while keeping filer vertical window open
    3. open ff float window <- this behavior

Environment Information

  • ddu-ui-ff version (SHA1):
    36b08deb8cafb8b6ceb9b677bf425f479fca3ee7
  • ddu-ui-filer version(SHA1):
    da7d1d5d3c97113c8b10e9fc104f2e312e854999
  • denops.vim version (SHA1):
    8f3899de3d3add07105221262dca90a31c4c2d4c
  • deno version(deno -V output):
    deno 1.30.3
  • OS:
    ↓WSL2
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.2 LTS
Release:        22.04
Codename:       jammy
  • neovim/Vim :version output:
NVIM v0.9.0-dev-1088+gd66832c76
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set rtp+=path/vim-denops/denops.vim
set rtp+=path/Shougo/ddu.vim
set rtp+=path/Shougo/ddu-ui-ff
set rtp+=path/Shougo/ddu-ui-filer
set rtp+=path/Shougo/ddu-source-file
set rtp+=path/Shougo/ddu-source-file_rec
let s:ddu_config_json =<< trim MARK
	{
		"uiParams": {
			"ff": {
				"split": "floating"
			},
			"filer": {
				"split": "vertical"
			}
		}
	}
MARK

let s:ddu_config_json = s:ddu_config_json->join('')->json_decode()

call ddu#custom#patch_global(s:ddu_config_json)

nnoremap [ddu] <Nop>
nmap <Space>u [ddu]
nmap <silent> [ddu]f <Cmd>call ddu#start({
			\ 'ui': 'ff',
			\ 'sources': [{'name': 'file_rec', 'params': {}}],
			\ })<CR>
nmap <silent> [ddu]e <Cmd>call ddu#start({
			\ 'ui': 'filer',
			\ 'sources': [{'name': 'file', 'params': {}}],
			\ })<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

  • ff -> filer
    1. type <Space> u f
    2. type <Space> u e keeping the ff floating window
  • filer -> ff
    1. type <Space> u e
    2. type <Space> u f keeping the filer vertical window

Screenshot (if possible)

  • ff -> filer
ff filer
image image
  • filer -> ff
filer ff
image image

Upload the log messages by :redir and :message (if errored)

Floating UI window can no be closed

Thank you for great plugin!

When I open ddu-std-ui with split: floating option by call file_rec source and call ddu#ui#std#do_action('quit') but floating ui window does not close.
It seems to be closed but ui window immediately repoen.

This problem may be caused by source with long processing time. (such as file_rec in ~)

Minimal vimrc is the following.

set rtp+=~/.cache/dein/repos/github.com/vim-denops/denops.vim
set rtp+=~/.cache/dein/repos/github.com/Shougo/ddu-ui-std
set rtp+=~/.cache/dein/repos/github.com/Shougo/ddu-source-file_rec
set rtp+=~/.cache/dein/repos/github.com/Shougo/ddu-filter-matcher_substring
set rtp+=~/.cache/dein/repos/github.com/Shougo/ddu.vim

call ddu#custom#patch_global({
\ 'ui': 'std',
\ })

call ddu#custom#patch_global({
\   'sourceOptions': {
\     '_': {
\       'matchers': ['matcher_substring'],
\     },
\   },
\   'uiParams': {
\     'std': {
\       'split': 'floating',
\     },
\   },
\ })
call ddu#custom#patch_global({
\   'sources': [
\     {'name': 'file_rec', 'params': {}},
\   ],
\ })

nnoremap \F <Cmd>call ddu#start({'name': 'file_rec', 'params': {}})<CR>

autocmd FileType ddu-std call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> q <Cmd>call ddu#ui#std#do_action('quit')<CR>
endfunction

" move to home directory so that file_rec will take more time
cd

environment

  • NVIM v0.6.1
  • ddu.vim v0.7.3
  • ddu-ui-std latest (8fd9014)
  • denops.vim v3.0.0
  • ddu-source-file_rec latest (c54ab0e)
  • ddu-filter-matcher_substring latest (1c01857)

Error `itemAction`

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

When I execute itemAction in the ddu buffer, I get an error.

Expected

The file is opened when itemAction is executed.

Environment Information

  • ddu-ui-std version (SHA1):47bbb8801d93698401bde4d9ac1409ab04f3809c

  • ddu.vim version (SHA1):8e21a4a41ead8d1531051483f248209b19f5501a

  • denops.vim version (SHA1):333aa1783352c346cc4fbaa43217bbc1c07ddbaa

  • deno version(deno -V output):1.18.1

  • OS:Mac

  • neovim/Vim :version output:v0.7.0-dev+956-g6cb670cb2

  • :checkhealth or :CheckHealth result(neovim only):OK

Provide a minimal init.vim/vimrc with less than 50 lines (Required!)

if &compatible
    set nocompatible
endif

let $CACHE = expand('~/.cache')

if !isdirectory(expand($CACHE))
    call mkdir(expand($CACHE), 'p')
endif

let s:dein_dir = expand('$CACHE/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'

if &runtimepath !~# '/dein.vim'
    if !isdirectory(s:dein_repo_dir)
        execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
    endif
    execute 'set runtimepath^=' . s:dein_repo_dir
endif

call dein#begin(s:dein_dir, expand('<sfile>'))

call dein#add('vim-denops/denops.vim')
call dein#add('Shougo/ddu.vim')
call dein#add('Shougo/ddu-commands.vim')
call dein#add('Shougo/ddu-ui-std')
call dein#add('Shougo/ddu-filter-matcher_substring')
call dein#add('Shougo/ddu-source-file_rec')

call dein#end()
call dein#save_state()

call ddu#custom#patch_global({
    \   'ui': 'std',
    \   'sourceOptions': {
    \     '_': {
    \       'ignoreCase': v:true,
    \       'matchers': ['matcher_substring'],
    \     },
    \   },
    \ })

autocmd FileType ddu-std call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR>
  \ <Cmd>call ddu#ui#std#do_action('itemAction')<CR>
  nnoremap <buffer><silent> i
  \ <Cmd>call ddu#ui#std#do_action('openFilterWindow')<CR>
  nnoremap <buffer><silent> q
  \ <Cmd>call ddu#ui#std#do_action('quit')<CR>
endfunction

autocmd FileType ddu-std-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR>
  \ <Esc><Cmd>close<CR>
  nnoremap <buffer><silent> <CR>
  \ <Cmd>close<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Run call dein#update() command.
  2. Restart Neovim
  3. Run Ddu -name=search file_rec -ui-param-startFilter=v:true command.
  4. Select an item and press the enter key.

Screenshot (if possible)

スクリーンショット 2022-01-29 16 40 15

Help configuring ff ui

I read all docs of ddu and ddu-ui-ff, but I still can't configure ff ui. I have tried:

call ddu#custom#patch_global({'uiParams': {'prompt': '> '}})

But it doesn't work. Could you give a simple example?

ddu-ff buffer is not focused after closing filter window

Thank you for great plugin.

Problems summary

ddu-ff buffer lose cursor focus after closing filter window.

Environment Information

  • OS: Manjaro Linux
  • Neovim: 0.7.0
  • deno: 1.23.0
  • denops(SHA1): f967ee0730804649d340ec409d5e97c76dacf817

This issue occurs from latest commit d7fbe6c.

Provide a minimal init.vim/vimrc with less than 50 lines (Required!)

call plug#begin(expand('~/.vim/plugged'))
Plug 'vim-denops/denops.vim'
Plug 'Shougo/ddu.vim'
Plug 'Shougo/ddu-ui-ff'
Plug 'Shougo/ddu-source-file_rec'
Plug 'Shougo/ddu-kind-file'
Plug 'yuki-yano/ddu-filter-fzf'
Plug 'matsui54/ddu-source-file_external'
call plug#end()

call ddu#custom#patch_global({
  \  'ui': 'ff',
  \  'sources': [
    \  {'name': 'file_external', 
    \  'params': 
    \  {
        \  'cmd': ['rg', '--files', '--hidden', '--glob', '!.git', '--color', 'never']
      \  }
    \  }
  \  ],
  \   'sourceOptions': {
  \     '_': {
  \       'matchers': ['matcher_fzf'],
  \     },
  \   }
\  })
autocmd FileType ddu-ff call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR>
        \ <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  nnoremap <buffer><silent> i
        \ <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
  nnoremap <buffer><silent> q
        \ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()

function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR>
  \ <Esc><Cmd>close<CR>
  nnoremap <buffer><silent> <CR>
  \ <Cmd>close<CR>
  nnoremap <buffer><silent> q
  \ <Cmd>close<CR>
endfunction

nmap <silent><c-p> :call ddu#start({})<CR>

After insert any word and close filter window by enter key, cursor don't move to the ddu-ff buffer but buffer of current opening file.
If this is expected, could you tell me the way to focus the ddu-ff buffer?

Moving the cursor does not update the preview (action-cursorNext/cursorPrevious)

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

AutoAction is not fied when moving cursor by cursorNext/cursorPrevious in ddu-ff-filter.

Expected

AutoAction is fired.

Environment Information

Latest

  • ddu-ui-ff version (SHA1):
    2fafeda

  • denops.vim version (SHA1):
    3b489d50ba2e034c829a09475a4002176bffbef7

  • deno version(deno -V output):
    deno 1.34.2

  • OS: Ubuntu 22.04 (WSL2)

  • neovim/Vim :version output:
    NVIM v0.10.0-dev-f31dba9

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set runtimepath+=/path/to/denops.vim
set runtimepath+=/path/to/ddu.vim
set runtimepath+=/path/to/ddu-ui-ff
set runtimepath+=/path/to/ddu-kind-file
set runtimepath+=/path/to/ddu-source-file_rec

call ddu#custom#patch_global(#{
      \ sources: [#{ name: 'file_rec' }],
      \ ui: 'ff',
      \ uiParams: #{
      \   ff: #{
      \     autoAction: #{
      \       name: 'preview',
      \     },
      \   },
      \ },
      \ kindOptions: #{
      \   _: #{
      \     defaultAction: 'open',
      \   },
      \ },
      \})

augroup my-ddu-ff
  autocmd!
  autocmd FileType ddu-ff        call <SID>ddu_ff_mapping()
  autocmd FileType ddu-ff-filter call <SID>ddu_ff_filter_mapping()
augroup END

function! s:ddu_ff_mapping() abort
  nnoremap <buffer><silent> <CR>
        \ <Cmd>call ddu#ui#do_action('itemAction')<CR>
  nnoremap <buffer><silent> <Esc>
        \ <Cmd>call ddu#ui#do_action('quit')<CR>
  nnoremap <buffer><silent> i
        \ <Cmd>call ddu#ui#do_action('openFilterWindow')<CR>
endfunction

function! s:ddu_ff_filter_mapping() abort
  nnoremap <buffer><silent> <Esc>
        \ <Cmd>call ddu#ui#do_action('closeFilterWindow')<CR>
  nnoremap <buffer><silent> <C-n>
        \ <Cmd>call ddu#ui#do_action('cursorNext')<CR>
  nnoremap <buffer><silent> <C-p>
        \ <Cmd>call ddu#ui#do_action('cursorPrevious')<CR>
endfunction

set cursorline

How to reproduce the problem from neovim/Vim startup (Required!)

  1. call ddu#start({})
  2. Enter filter window using i.
  3. Move cursor using <C-n>/<C-p> in ddu-ff-filter (normal mode).
  4. Moving the cursor does not update the preview.

Screenshot (if possible)

preview

Upload the log messages by :redir and :message (if errored)

when I close ddu, the mode is INSERT not NORMAL.

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Open the ddu ,open filter window then close the ddu with ddu#ui#ff#do_action('quit') in insert mode, and the mode is INSERT not NORMAL.

Expected

After the above situation, the mode is NORMAL.
Or when ddu#start({}) in INSERT mode, the mode is INSERT. when ddu#start({}) in NORMAL mode , the mode is NORMAL.

Environment Information

  • ddu-ui-ff version (SHA1):
    d1bc22e
  • denops.vim version (SHA1):
    3b489d5
  • deno version(deno -V output):
    deno 1.30.3
  • OS:
    WSL2 Ubuntu22.04
  • neovim/Vim :version output:
    NVIM v0.9.0-dev-1088+gd66832c76
    Build type: RelWithDebInfo
    LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set rtp+=~/.cache/dein/nvim/repos/github.com/vim-denops/denops.vim
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu.vim
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu-ui-ff
nnoremap [ddu] <Nop>
nmap <Space>u [ddu]
nmap <silent> [ddu]f <Cmd>call ddu#start({ 'ui': 'ff' })<CR>

autocmd FileType ddu-ff call s:ddu_my_settings()

function! s:ddu_my_settings() abort
	nnoremap <buffer><silent> i
				\ <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()

function! s:ddu_filter_my_settings() abort
	inoremap <buffer> <C-q>
				\ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. type <Space> u f
  2. type i for open filter window.
  3. type <C-q> in filter window in INSERT mode for quit ddu.
  4. the mode is INSERT... not NORMAL.

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)

Filter window cannot fixed.

Problems summary

When using ddu-ui-ff to display a filter window, the window division is not fixed and the window width changes repeatedly.

Expected

Filter windows is fixed.

Environment Information

  • ddu.vim version (SHA1):
    990b0c6d14a6be27682be73fdc3d9a835d62f765

  • denops.vim version (SHA1):
    a104cbff7e47a63978cfb3921da4333465fc6d15

  • deno version(deno -V output):
    1.22.2

  • OS: Windows11

  • neovim/Vim :version output:
    GVim 8.2
    patch 1-3438

Provide a minimal init.vim/vimrc with less than 50 lines (Required!)

if &compatible
  set nocompatible               " Be iMproved
endif

if empty(glob('/path/to/vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
        \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall | source $MYVIMRC
endif

call plug#begin('/path/to/vim/plugged')
Plug 'vim-denops/denops.vim'
Plug 'Shougo/ddu.vim'
Plug 'Shougo/ddu-ui-ff'
Plug 'Shougo/ddu-filter-matcher_substring'
Plug 'Shougo/ddu-kind-file'
Plug 'Shougo/ddu-ui-filer'
Plug 'Shougo/ddu-commands.vim'
call plug#end()

 " ddu
 " Specify matcher.
 call ddu#custom#patch_global({
    \   'ui': 'ff',
    \   'sourceOptions' : {
    \     '_' : {
    \       'ignoreCase': v:true,
    \     },
    \   },
    \ })
 
nnoremap <silent> <space><space> <Cmd>Ddu
   \ -name=search mr -ui-param-startFilter=v:true<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Add minimal vimrc settings to your vimrc.
  2. Close Gvim.
  3. Boot Gvim.
  4. Wait denops process (ex. about 10 sec)
  5. Key type to execute Ddu mr
  6. Displayed filter window process, but filter windows height is not fixed.

Screenshot (if possible)

ddu

[Feature Request] Ability to switch autoAction during ddu launch

There are times when I want to disable the preview display while using ddu with a preview set in autoAction. Even if the preview is closed once, if it is set in autoAction, the preview will be redisplayed when moving the cursor.

I would like a function that can cancel the specified autoAction in that ddu session. Also, when this function is supported, it is desirable that the preview in autoAction is enabled again in the next launch of ddu, but should this be handled with something like autocmd?

Multiple filter windows are created on incremental update

Problem

Filter windows are created every time items are enqueued.

Environment

Neovim v0.7.0

Minimal vimrc

set runtimepath+=~/.cache/dein/repos/github.com/vim-denops/denops.vim
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu.vim
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu-ui-ff
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu-kind-file
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu-source-file_rec

nnoremap <Space>f
      \ <Cmd>call ddu#start({'sources': [{'name': 'file_rec'}]})<CR>

call ddu#custom#patch_global({
      \ 'ui': 'ff',
      \ 'uiParams': {'ff': {
      \   'split': 'floating',
      \   'autoResize': v:true,
      \ }},
      \ })

autocmd FileType ddu-ff call s:ddu_ff_my_settings()
function! s:ddu_ff_my_settings() abort
  nnoremap <buffer> i
        \ <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
  nnoremap <buffer> q
        \ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer> <CR> <Esc><Cmd>close<CR>
endfunction

Reproduce steps

  1. start nvim and cd to large directory (which has more than 200000 files)
  2. execute <Space>f (start ddu)
  3. type i (open filter window) immediately after the ddu window appears
  4. type <CR> (close filter window) immediately after the filter window appears
  5. wait for items are enqueued

Screenshot

ddu_incremental

Cursor move to the left

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

When calling ddu#ui#do_action('quit') from insert mode of filter, the cursor position is shifted to the left when returning to the original buffer.

Expected

Keep the cursor position.

Environment Information

Latest

  • ddu-ui-ff version (SHA1): 0de01b6

  • denops.vim version (SHA1): 949a52412d35d56354f69bbbade6bcfe2951b8d6

  • deno version(deno -V output): deno 1.33.4

  • OS:

  • neovim/Vim :version output: NVIM v0.10.0-dev-0788394

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set runtimepath+=/path/to/denops.vim
set runtimepath+=/path/to/ddu.vim
set runtimepath+=/path/to/ddu-ui-ff
set runtimepath+=/path/to/ddu-source-file_rec
set runtimepath+=/path/to/ddu-filter-matcher_substring
set runtimepath+=/path/to/ddu-kind-file

call ddu#custom#patch_global({
      \ 'sources': [{'name': 'file_rec'}],
      \ 'ui': 'ff',
      \ 'uiParams': {
      \   'ff': {
      \     'startFilter': v:true,
      \   },
      \ },
      \ 'sourceOptions': {
      \   '_': {
      \       'ignoreCase': v:true,
      \       'matchers': ['matcher_substring'],
      \   },
      \ },
      \ 'kindOptions': {
      \   '_': {
      \     'defaultAction': 'open',
      \   },
      \ },
      \})

augroup my-ddu-ff
  autocmd!
  autocmd FileType ddu-ff-filter call <SID>ddu_ff_filter_mapping()
augroup END

function! s:ddu_ff_filter_mapping() abort
  inoremap <buffer><silent> <Esc> <Cmd>call ddu#ui#do_action('quit')<CR>
endfunction

set debug=msg

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Start by call ddu#start({}).
  2. Close ddu with <Esc>.
  3. You can see that the cursor is shifted to the left.

Screenshot (if possible)

The cursor that was over the "r" has moved one position to the left.

cursor-move

Upload the log messages by :redir and :message (if errored)

If the preview buffer name contains `|`, the string following `|` is treated as a command.

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Previewing an item with item.word containing | will execute the string following |.

Probably need to escape here.

private async getPreviewBufferName(
denops: Denops,
previewer: BufferPreviewer | NoFilePreviewer,
item: DduItem,
): Promise<string> {
if (previewer.kind === "buffer") {
if (previewer.expr) {
const bufname = await fn.bufname(denops, previewer.expr);
if (!bufname.length) {
return `ddu-ff:no-name:${previewer.expr}`;
} else {
return `ddu-ff:${bufname}`;
}
} else {
return `ddu-ff:${previewer.path}`;
}
} else {
return `ddu-ff:${item.word}`;
}
}

Expected

| is treated as just a string.

Environment Information

  • ddu-ui-ff version (SHA1): 36a0c44165ef081740b8721c7a8a4fe3b2a93e90

  • denops.vim version (SHA1): d7a15615f86830e9464c30f761a3911f619b38b3

  • deno version(deno -V output): deno 1.33.1

  • OS: Linux (6.1.0-7-amd64)

  • neovim/Vim :version output:

VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Mar  4 2023 19:53:01)
適用済パッチ: 1-1376

Provide a minimal init.vim/vimrc without plugin managers (Required!)

" Your minimal init.vim/vimrc
set runtimepath+=~/path/to/ddu.vim/
set runtimepath+=~/path/to/ddu-ui-ff/
set runtimepath+=~/path/to/test/

call ddu#custom#patch_global({
\ 'uiParams': {
\   'ff': {
\     'autoAction': {'name': 'preview'},
\   },
\ },
\})
  • ~/path/to/test_kind/denops/@ddu-sources/test.ts
import { BaseSource, Item } from "https://deno.land/x/[email protected]/types.ts";
import { GatherArguments } from "https://deno.land/x/[email protected]/base/source.ts";

type Params = Record<never, never>;

export class Source extends BaseSource<Params> {
  kind = "test";

  gather(_args: GatherArguments<Params>): ReadableStream<Item<never>[]> {
    return new ReadableStream({
      start(controler) {
        controler.enqueue([
          { word: "| !ls" },
        ]);
        controler.close();
      },
    });
  }

  params(): Params {
    return {};
  }
}
  • ~/path/to/test_kind/denops/@ddu-kinds/test.ts
import {
  ActionArguments,
  ActionFlags,
  BaseKind,
  Previewer,
} from "https://deno.land/x/[email protected]/types.ts";
import { GetPreviewerArguments } from "https://deno.land/x/[email protected]/base/kind.ts";

type Params = Record<never, never>;

export class Kind extends BaseKind<Params> {
  actions: Record<
    string,
    (args: ActionArguments<Params>) => Promise<ActionFlags>
  > = {};

  getPreviewer(_args: GetPreviewerArguments): Promise<Previewer | undefined> {
    return Promise.resolve({
      kind: "nofile",
      contents: ["hoge"],
    });
  }

  params(): Params {
    return {};
  }
}

How to reproduce the problem from neovim/Vim startup (Required!)

  1. :call ddu#start({'ui': 'ff', 'sources': [{'name': 'test'}]})

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)

Start with wrong mode when starting in insert mode

The problem was occurred with both vim and neovim which have these version:

versions
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Mar 18 2022 21:40:10)
適用済パッチ: 1-4586
Compiled by Hibiki (4513ECHO)
NVIM v0.7.0-dev+1276-g0a81a33a9
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
Compilation: /usr/bin/cc -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNVIM_TS_HAS_SET_MATCH_LIMIT -DNVIM_TS_HAS_SET_ALLOCATOR -O2 -g -Og -g -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=always -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -I/home/hibiki/Develops/github.com/neovim/neovim/build/config -I/home/hibiki/Develops/github.com/neovim/neovim/src -I/home/hibiki/Develops/github.com/neovim/neovim/.deps/usr/include -I/usr/include -I/home/hibiki/Develops/github.com/neovim/neovim/build/src/nvim/auto -I/home/hibiki/Develops/github.com/neovim/neovim/build/include
Compiled by hibiki@rpi0ubuntu

Features: +acl +iconv +tui
See ":help feature-compile"

      システム vimrc: "$VIM/sysinit.vim"
       省略時の $VIM: "/usr/local/share/nvim"

Run :checkhealth for more info

Step to reproduce

  • call ddu#start() in insert mode

minimal vimrc

if &compatible
  set nocompatible
endif

set runtimepath+=~/.cache/nvim/dein/repos/github.com/vim-denops/denops.vim
set runtimepath+=~/.cache/nvim/dein/repos/github.com/Shougo/ddu.vim
set runtimepath+=~/.cache/nvim/dein/repos/github.com/Shougo/ddu-ui-ff
set runtimepath+=~/.cache/nvim/dein/repos/github.com/Shougo/ddu-kind-word
set runtimepath+=~/.cache/nvim/dein/repos/github.com/4513echo/ddu-source-emoji

inoremap <C-x><C-e>
      \ <Cmd>call ddu#start({'sources': [{'name': 'emoji'}]})<CR>

call ddu#custom#patch_global({
      \ 'ui': 'ff',
      \ 'kindOptions': {
      \   'word': {
      \     'defaultAction': 'append',
      \   },
      \ },
      \ })

autocmd FileType ddu-ff call s:ddu_ff_my_settings()
function! s:ddu_ff_my_settings() abort
  nnoremap <buffer> <CR>
        \ <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  nnoremap <buffer> i
        \ <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
  nnoremap <buffer> q
        \ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer> <CR> <Esc><Cmd>close<CR>
  nnoremap <buffer> <CR> <Cmd>close<CR>
endfunction

`nofile` previewer contents are not saved

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Once an item has been previewed, previewing another item and then previewing it again will empty the buffer.

The following code may be the reason why the contents of the buffer are not saved.

await denops.cmd(`noswap edit ${bufname}`);
const text = await this.getContents(denops, previewer);
const bufnr = await fn.bufnr(denops) as number;
await batch(denops, async (denops: Denops) => {
await fn.setbufvar(denops, bufnr, "&buftype", "nofile");
await replace(denops, bufnr, text);
const limit = actionParams.syntaxLimitChars ?? 200000;
if (text.join("\n").length < limit) {
if (previewer.syntax) {
await fn.setbufvar(denops, bufnr, "&syntax", previewer.syntax);
} else if (previewer.kind === "buffer") {
await denops.cmd("filetype detect");
}
}
});

Expected

preview contents are displayed.

Environment Information

  • ddu-ui-ff version (SHA1): 36a0c44165ef081740b8721c7a8a4fe3b2a93e90

  • denops.vim version (SHA1): d7a15615f86830e9464c30f761a3911f619b38b3

  • deno version(deno -V output): deno 1.33.1

  • OS: Linux (6.1.0-7-amd64)

  • neovim/Vim :version output:

VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Mar  4 2023 19:53:01)
適用済パッチ: 1-1376

Provide a minimal init.vim/vimrc without plugin managers (Required!)

" Your minimal init.vim/vimrc
set runtimepath+=~/path/to/ddu.vim/
set runtimepath+=~/path/to/ddu-ui-ff/
set runtimepath+=~/path/to/test/

call ddu#custom#patch_global({
\ 'uiParams': {
\   'ff': {
\     'autoAction': {'name': 'preview'},
\   },
\ },
\})
  • ~/path/to/test_kind/denops/@ddu-sources/test.ts
import { BaseSource, Item } from "https://deno.land/x/[email protected]/types.ts";
import { GatherArguments } from "https://deno.land/x/[email protected]/base/source.ts";

type Params = Record<never, never>;

export class Source extends BaseSource<Params> {
  kind = "test";

  gather(_args: GatherArguments<Params>): ReadableStream<Item<never>[]> {
    return new ReadableStream({
      start(controler) {
        controler.enqueue([
          { word: "test-1" },
          { word: "test-2" },
        ]);
        controler.close();
      },
    });
  }

  params(): Params {
    return {};
  }
}
  • ~/path/to/test_kind/denops/@ddu-kinds/test.ts
import {
  ActionArguments,
  ActionFlags,
  BaseKind,
  Previewer,
} from "https://deno.land/x/[email protected]/types.ts";
import { GetPreviewerArguments } from "https://deno.land/x/[email protected]/base/kind.ts";

type Params = Record<never, never>;

export class Kind extends BaseKind<Params> {
  actions: Record<
    string,
    (args: ActionArguments<Params>) => Promise<ActionFlags>
  > = {};

  getPreviewer(_args: GetPreviewerArguments): Promise<Previewer | undefined> {
    return Promise.resolve({
      kind: "nofile",
      contents: ["hoge"],
    });
  }

  params(): Params {
    return {};
  }
}

How to reproduce the problem from neovim/Vim startup (Required!)

  1. :call ddu#start({'ui': 'ff', 'sources': [{'name': 'test'}]}) (preview test-1)
  2. j (preview test-2)
  3. k (preview test-1)

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)

Cannot open filter window properly

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

When using autoAction, startFilter and split float, the filter window may not open properly.

Expected

Open the filter window normally.

Environment Information

  • ddu-ui-ff version (SHA1): b7aa22b828c3198298d703f9b7123b9c53d0f8d4

  • denops.vim version (SHA1): 8f3899de3d3add07105221262dca90a31c4c2d4c

  • deno version(deno -V output): deno 1.30.3

  • OS: Arch Linux

  • neovim/Vim :version output:

NVIM v0.9.0-dev-888+g81c5483dcb
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
Compilation: /usr/bin/cc -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wdouble-promotion -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fno-common -fdiagnostics-color=always -fstack-protector-strong -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_TS_HAS_SET_MATCH_LIMIT -DNVIM_TS_HAS_SET_ALLOCATOR -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DMIN_LOG_LEVEL=3 -DNVIM_UNIBI_HAS_VAR_FROM -I/usr/include/luajit-2.1 -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/home/hyuoou/.cache/paru/clone/neovim-git/src/build/src/nvim/auto -I/home/hyuoou/.cache/paru/clone/neovim-git/src/build/include -I/home/hyuoou/.cache/paru/clone/neovim-git/src/build/cmake.config -I/home/hyuoou/.cache/paru/clone/neovim-git/src/neovim/src -I/usr/include -I/usr/include -I/usr/include
Compiled by hyuoou

Features: +acl +tui
See ":help feature-compile"

      システム vimrc: "$VIM/sysinit.vim"
       省略時の $VIM: "/usr/share/nvim"

Run :checkhealth for more info

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set runtimepath^=~/plugins/denops.vim
set runtimepath^=~/plugins/ddu.vim
set runtimepath^=~/plugins/ddu-ui-ff
set runtimepath^=~/plugins/ddu-source-file_rec
set runtimepath^=~/plugins/ddu-filter-matcher_substring
set runtimepath^=~/plugins/ddu-kind-file
set runtimepath^=~/plugins/tokyonight.nvim

colorscheme tokyonight

call ddu#custom#patch_global({
  \ 'ui': 'ff',
  \ 'sources': [{'name': 'file_rec', 'params': {}}],
  \ 'uiParams': {
  \   'ff': {
  \     'split': 'floating',
  \     'startFilter': v:true,
  \     'autoAction': {'name': 'preview'},
  \   },
  \ },
  \ 'sourceOptions': {
  \   '_': {
  \     'matchers': ['matcher_substring'],
  \   },
  \ },
  \ 'kindOptions': {
  \   'file': {
  \     'defaultAction': 'open',
  \   },
  \ }
  \ })

autocmd FileType ddu-ff call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  nnoremap <buffer><silent> i <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
  nnoremap <buffer><silent> q <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR> <Esc><Cmd>call ddu#ui#ff#close()<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Execute call ddu#start({})
  2. Close ddu.vim
  3. Execute call ddu#start({}) again

Screenshot (if possible)

nvim-2023-02-08_18.08.48.mp4

Upload the log messages by :redir and :message (if errored)

Error opening ddu window with AutoResize option

Problem

Error like this is thrown when opening floating ddu window with the following step.

[denops] error: Uncaught (in worker "ddu") (in promise) Error: Failed to call 'call' with ["ddu#ui#ff#filter#_floating",3,1003,{"autoResize":true,"cursorPos":-1,"displaySourceName":"no","floatingBorder":"none","filterFloatingPosition":"top","filterSplitDirection":"floating","filterUpdateTime":0,"highlights":{},"ignoreEmpty":true,"previewFloating":false,"previewHeight":10,"previewVertical":false,"previewWidth":40,"prompt":"","reversed":false,"split":"floating","splitDirection":"botright","startFilter":false,"winCol":47,"winHeight":20,"winRow":15,"winWidth":95}]: Error: Failed to call 'nvim_call_function' with ["ddu#ui#ff#filter#_floating",[3,1003,{"autoResize":true,"cursorPos":-1,"displaySourceName":"no","floatingBorder":"none","filterFloatingPosition":"top","filterSplitDirection":"floating","filterUpdateTime":0,"highlights":{},"ignoreEmpty":true,"previewFloating":false,"previewHeight":10,"previewVertical":false,"previewWidth":40,"prompt":"","reversed":false,"split":"floating","splitDirection":"botright","startFilter":false,"winCol":47,"winHeight":20,"winRow":15,"winWidth":95}]]: [0,"Vim(call):E5555: API call: Wrong type for argument 1 when calling nvim_win_set_config, expecting Window"]
[denops]     at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
[denops]     at async Service.call (file:///home/denjo/.cache/dein/.cache/init.vim/.dein/denops/@denops-private/service.ts:86:12)
[denops]     at async Session.call (file:///home/denjo/.cache/dein/.cache/init.vim/.dein/denops/@denops-private/service.ts:135:14)
[denops]     at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
[denops]     at async https://deno.land/x/[email protected]/session.ts:108:18
[denops]     at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)
[denops]       throw new Error(
[denops]             ^
[denops]     at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
[denops]     at async DenopsImpl.call (file:///home/denjo/.cache/dein/.cache/init.vim/.dein/denops/@denops/impl.ts:28:12)
[denops]     at async Ui.redraw (file:///home/denjo/.cache/dein/.cache/init.vim/.dein/denops/@ddu-uis/ff.ts:174:9)
[denops]     at async file:///home/denjo/.cache/dein/.cache/init.vim/.dein/denops/ddu/ddu.ts:269:7
[denops]     at async Lock.with (https://deno.land/x/[email protected]/lock.ts:23:7)
[denops]     at async Ddu.redraw (file:///home/denjo/.cache/dein/.cache/init.vim/.dein/denops/ddu/ddu.ts:268:5)
[denops]     at async readChunk (file:///home/denjo/.cache/dein/.cache/init.vim/.dein/denops/ddu/ddu.ts:193:11)
[denops] error: Uncaught (in promise) Error: Unhandled error event in child worker.
[denops]     at Worker.#pollControl (deno:runtime/js/11_workers.js:168:21)
[denops] Server stopped (1). Restarting...
[denops] Server is restarted.

environment

Neovim v0.7.0

Minimal vimrc

set runtimepath+=~/.cache/dein/repos/github.com/vim-denops/denops.vim
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu.vim
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu-ui-ff
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu-kind-file
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/ddu-source-file

nnoremap <Space>f
      \ <Cmd>call ddu#start({'sources': [{'name': 'file'}]})<CR>

call ddu#custom#patch_global({
      \ 'ui': 'ff',
      \ 'uiParams': {'ff': {
      \   'split': 'floating',
      \   'autoResize': v:true,
      \ }},
      \ })

autocmd FileType ddu-ff call s:ddu_ff_my_settings()
function! s:ddu_ff_my_settings() abort
  nnoremap <buffer> i
        \ <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
  nnoremap <buffer> q
        \ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer> <CR> <Esc><Cmd>close<CR>
endfunction

Reproduce steps

  1. start nvim and execute <Space>f (start ddu)
  2. type i (open filter window) and <CR> (close filter)
  3. type q (quit ddu)
  4. type <Space>f (reopen ddu window) and you will see error

Layout issue with floating filter window display

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

When positioning the filter window at the bottom using float display, the layout becomes distorted.

Expected

Filter and source borders are displayed properly and highlighting is set correctly.

Environment Information

  • ddu-ui-ff version (SHA1):

    • 87e95b80226f591f53b5e2afed1d9f16838a2d38
  • denops.vim version (SHA1):

    • 8f3899de3d3add07105221262dca90a31c4c2d4c
  • deno version(deno -V output):

    • deno 1.30.3
  • OS:

    • Ubuntu 22.04 (WSL2)
  • neovim/Vim :version output:

    NVIM v0.9.0-dev-1088+gd66832c76
    Build type: RelWithDebInfo
    LuaJIT 2.1.0-beta3
    

Provide a minimal init.vim/vimrc without plugin managers (Required!)

" Your minimal init.vim/vimrc
syntax enable
filetype plugin indent on

set rtp+=~/path/to/denops.vim
set rtp+=~/path/to/ddu.vim
set rtp+=~/path/to/ddu-ui-ff
set rtp+=~/path/to/ddu-kind-file
set rtp+=~/path/to/ddu-source-file_rec

let s:ddu_config_json =<< trim MARK
	{
		"uiParams": {
			"ff": {
				"split": "floating",
				"floatingBorder": "rounded",
				"startFilter": true,
				"filterFloatingPosition": "bottom",
				"filterSplitDirection": "floating"
			}
		}
	}
MARK

let s:ddu_config_json = s:ddu_config_json->join('')->json_decode()

call ddu#custom#patch_global(s:ddu_config_json)

nnoremap [ddu] <Nop>
nmap <Space>u [ddu]
nmap <silent> [ddu]f <Cmd>call ddu#start({
			\ 'ui': 'ff',
			\ 'sources': [{'name': 'file_rec', 'params': {}}],
			\ })<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

  1. type <Space> u f

Screenshot (if possible)

image

Upload the log messages by :redir and :message (if errored)

New `ddu-ff-filter-default` can be opened for many times

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Expected

ddu-ff-filter-default should be opened only once.

Environment Information

  • ddu-ui-ff version (SHA1): 15196ec

  • denops.vim version (SHA1): 3b489d50ba2e034c829a09475a4002176bffbef7

  • deno version(deno -V output): deno 1.32.2

  • OS: MacOS 13.4 (22F66)

  • neovim/Vim :version output: NVIM v0.9.0, Build type: Release, LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

packadd denops.vim
packadd ddu.vim
packadd ddu-ui-ff
packadd ddu-filter-matcher_substring
packadd ddu-kind-file
packadd ddu-source-file_rec


call ddu#custom#patch_global({
    \   'ui': 'ff',
    \   'uiParams': {
    \     'ff': { 'startFilter': v:true },
    \   },
    \   'sourceOptions': {
    \     '_': { 'matchers': ['matcher_substring'] },
    \   },
    \   'kindOptions': {
    \     'file': { 'defaultAction': 'open' }
    \   }
    \ })

nmap <space>f <Cmd>call ddu#start(#{ sources: [#{ name: 'file_rec' }] })<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

  1. open with minimal vimrc
  2. press <space>f to open ddu ff
  3. press <Esc>
  4. press <space>f again

Screenshot (if possible)

Screenshot 2023-06-06 at 16 19 13

Upload the log messages by :redir and :message (if errored)

No message

C-u to cycle thru input history

Denite keeps the history of input and you retrieve previously inputted queries with C-u.
I'm wondering if you could implement the same feature in ddu too.

Screen.Recording.2022-03-12.at.18.17.21.mov

`ddu-ff-filter` ended up being replaced by other buffer

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

When re-open ddu buffer, raise E444 and filter buffer is replaced by preview buffer.
It seem to occur when 'autoAction': { 'name': 'preview' } is specified.

Expected

Raise no error, open filter buffer.

Environment Information

  • ddu-ui-ff version (SHA1):
$ git rev-parse HEAD
53e4490e74de37deabf8a23dc9fa8eced1a7a1a0
  • denops.vim version (SHA1):
$ git rev-parse HEAD
a40e0c10be0c67b5fd6cb9713914b9259dafa7e2
  • deno version(deno -V output):
$ deno --version
deno 1.24.2 (release, x86_64-unknown-linux-gnu)
v8 10.4.132.20
typescript 4.7.4
  • OS:

Ubuntu 20.04.4 LTS (via WSL2)

  • neovim/Vim :version output:
NVIM v0.8.0-dev-810-g252dea592
Build type: Release
LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set runtimepath^=/tmp/ddu-issue/denops.vim
set runtimepath^=/tmp/ddu-issue/ddu.vim
set runtimepath^=/tmp/ddu-issue/ddu-ui-ff
set runtimepath^=/tmp/ddu-issue/ddu-kind-file
set runtimepath^=/tmp/ddu-issue/ddu-filter-matcher_substring
set runtimepath^=/tmp/ddu-issue/ddu-source-file_rec

call ddu#custom#patch_global({
    \   'ui': 'ff',
    \   'sources': [{'name': 'file_rec', 'params': {}}],
    \   'sourceOptions': {
    \     '_': {
    \       'matchers': ['matcher_substring'],
    \     },
    \   },
    \   'kindOptions': {
    \     'file': {
    \       'defaultAction': 'open',
    \     },
    \   },
    \   'uiParams': {
    \     'ff': {
    \       'autoAction': { 'name': 'preview' },
    \       'startFilter': v:true,
    \     },
    \   },
    \ })

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Execute call ddu#start({})
  2. Move ddu-ff-default buffer and move cursor
  3. Quit ddu buffers
  4. Re-execute call ddu#start({})

Screenshot (if possible)

issue.mp4

Upload the log messages by :redir and :message (if errored)

[ddu] ui: ff "redraw()" failed
[ddu] Vim(close):E444: Cannot close last window
[ddu] BatchError: Vim(close):E444: Cannot close last window^@    at DenopsImpl.batch (file:///tmp/ddu-issue/denops.vim/denops/@denops/impl.ts:45:13)^@    at async batch (https://deno.land/x/[email protected]/batch/batch.ts:98:3)^@    at async PreviewUi.close (file:///tmp/ddu-issue/ddu-ui-ff/denops/@ddu-ui-ff/preview.ts:37:7)^@    at async Ui.redraw (file:///tmp/ddu-issue/ddu-ui-ff/denops/@ddu-uis/ff.ts:115:7)^@    at async file:///tmp/ddu-issue/ddu.vim/denops/ddu/ddu.ts:1441:7^@    at async Lock.with (https://deno.land/x/[email protected]/lock.ts:23:7)^@    at async uiRedraw (file:///tmp/ddu-issue/ddu.vim/denops/ddu/ddu.ts:1439:3)^@    at async Ddu.uiRedraw (file:///tmp/ddu-issue/ddu.vim/denops/ddu/ddu.ts:429:5)^@    at async Ddu.start (file:///tmp/ddu-issue/ddu.vim/denops/ddu/ddu.ts:195:5)^@    at async Session.start (file:///tmp/ddu-issue/ddu.vim/denops/ddu/app.ts:130:7)

If floating is enabled, the filtered items will be hidden.

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

If floating is enabled, the filtered items will be hidden.

Expected

When filtering, the scroll position will be the topmost.

Environment Information

  • ddu-ui-std version (SHA1): 8b86d54

  • ddu.vim version (SHA1): e876d13b656a35232fa9f371a9c9cc9ba2a09f5d

  • denops.vim version (SHA1): e2f17041495123e8ed9baa69098c947c5d7f6358

  • deno version(deno -V output): 1.18.1

  • OS: Mac

  • neovim/Vim :version output:

NVIM v0.7.0-dev+997-g21cdecc8e
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by [email protected]

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/opt/homebrew/Cellar/neovim/HEAD-21cdecc/share/nvim"

Run :checkhealth for more info
  • :checkhealth or :CheckHealth result(neovim only): OK

Provide a minimal init.vim/vimrc with less than 50 lines (Required!)

if &compatible
    set nocompatible
endif

let $CACHE = expand('~/.cache')

if !isdirectory(expand($CACHE))
    call mkdir(expand($CACHE), 'p')
endif

let s:dein_dir = expand('$CACHE/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'

if &runtimepath !~# '/dein.vim'
    if !isdirectory(s:dein_repo_dir)
        execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
    endif
    execute 'set runtimepath^=' . s:dein_repo_dir
endif

call dein#begin(s:dein_dir, expand('<sfile>'))

call dein#add('vim-denops/denops.vim')
call dein#add('Shougo/ddu.vim')
call dein#add('Shougo/ddu-commands.vim')
call dein#add('Shougo/ddu-ui-std')
call dein#add('Shougo/ddu-filter-matcher_substring')
call dein#add('Shougo/ddu-source-file_rec')
call dein#add('Shougo/ddu-kind-file')

call dein#end()
call dein#save_state()

call ddu#custom#patch_global({
    \   'ui': 'std',
    \   'sourceOptions': {
    \     '_': {
    \       'matchers': ['matcher_substring'],
    \     },
    \   },
    \   'uiParams': {
    \     'std': {
    \       'split': 'floating'
    \     },
    \   },
    \ })

autocmd FileType ddu-std call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR>
  \ <Cmd>call ddu#ui#std#do_action('itemAction')<CR>
  nnoremap <buffer><silent> i
  \ <Cmd>call ddu#ui#std#do_action('openFilterWindow')<CR>
  nnoremap <buffer><silent> q
  \ <Cmd>call ddu#ui#std#do_action('quit')<CR>
endfunction

autocmd FileType ddu-std-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR>
  \ <Esc><Cmd>close<CR>
  nnoremap <buffer><silent> <CR>
  \ <Cmd>close<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Prepare enough files to scroll.
  2. Focus on ddu-ui-std without filtering.
  3. Scroll with ddu-ui-std.
  4. Filter.
  5. Then, ddu-ui-std will not be refreshed and the upper item will be hidden. (You need to scroll to see it.)

Screenshot (if possible)

This is the result of filtering after scrolling.
スクリーンショット 2022-02-03 13 02 59

The actual filtered results will not be visible without scrolling up.
スクリーンショット 2022-02-03 13 03 12

startFilter=v:trueのとき、インサートモードにならない

概要

startFilter=v:trueのとき、filter window にあるカーソルがノーマルモードになっている。

期待する動作

カーソルがインサートモードになっていること

環境

OS : Windows11
vim : gvim。バージョンは、スクリーンショット参照
image
deno : 1.18.1
vimプラグイン : PlugUpdateして、2022/01/30時点の最新の状態になっている

minimal vimrc

set encoding=utf-8
scriptencoding utf-8

" 単体動作テスト用 {{{1
if &compatible
  set nocompatible               " Be iMproved
endif

if empty(glob('c:/takeda/tools/vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
        \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall | source $MYVIMRC
endif

call plug#begin('c:/takeda/tools/vim/plugged')

Plug 'vim-denops/denops.vim'
Plug 'Shougo/ddu.vim'
Plug 'Shougo/ddu-commands.vim'
Plug 'Shougo/ddu-ui-std'
Plug 'Shougo/ddu-source-line'
Plug 'Shougo/ddu-filter-matcher_substring'
Plug 'Shougo/ddu-kind-file'

call plug#end()

call ddu#custom#patch_global({
	    \ 'ui': 'std',
	    \ })

" Specify matcher.
call ddu#custom#patch_global({
    \   'sourceOptions' : {
    \     '_' : {
    \       'ignoreCase': v:true,
    \       'matchers': ['matcher_substring'],
    \     }
    \   }
    \ })

autocmd FileType ddu-std call s:ddu_my_settings()
function! s:ddu_my_settings() abort
	nnoremap <buffer><silent> <CR>
				\ <Cmd>call ddu#ui#std#do_action('itemAction')<CR>
	nnoremap <buffer><silent> <Space>
				\ <Cmd>call ddu#ui#std#do_action('toggleSelectItem')<CR>
	nnoremap <buffer><silent> i
				\ <Cmd>call ddu#ui#std#do_action('openFilterWindow')<CR>
	nnoremap <buffer><silent> q
				\ <Cmd>call ddu#ui#std#do_action('quit')<CR>
endfunction
autocmd FileType ddu-std-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
	inoremap <buffer><silent> <CR>
				\ <Esc><Cmd>close<CR>
	nnoremap <buffer><silent> <CR>
				\ <Cmd>close<CR>
endfunction

" }}}1

再現手順

  1. gvimを起動する
  2. :PlugUpdateを実行して、プラグインを最新の状態に更新する
  3. :e vimrc を実行する
  4. :Ddu -name=search line -ui-param-startFilter=v:true を実行する
  5. dduのウインドウと、filter window が描画されるのを待つ
  6. filter window にカーソルが表示されている状態で、 aaa と入力する

インサートモードであるはずのfilter windowに aaa と入力されるはずが、 aa のみが表示される。
aがノーマルモードで処理され、 残りの aaがインサートモードで入力されているためと思われる。

`previewVertical` can not be coexisted with `previewFloating`

First of all, I'd like to say Thank you for creating great plugin, I'm really enjoying use this!

Overview

I was caught the error as following.

image

text version↑

function ddu#ui#ff#do_action[1]..ddu#ui_action[1]..ddu#_request[6]..denops#request[1]..denops#server#request[6]..<SNR>97_request の処理中にエラーが検出されました:
行    1:
Error invoking 'invoke' on channel 4:
Error: Failed to call 'uiAction' with ["default","preview",{}]: Error: Failed to call 'call' with ["ddu#ui#ff#_preview_file",{"autoResize":false,"cursorPos":-1,"displaySourceName":"no","filterFloatingPosition":"top","filterSplitDirection":"
floating","filterUpdateTime":0,"previewHeight":10,"previewVertical":true,"previewFloating":true,"previewWidth":40,"prompt":"","reversed":false,"split":"floating","splitDirection":"botright","startFilter":false,"winCol":0,"winHeight":20,"win
Row":0,"winWidth":0},"/Users/ryutooooo/dotfiles/setup.sh"]: Error: Failed to call 'nvim_call_function' with ["ddu#ui#ff#_preview_file",[{"autoResize":false,"cursorPos":-1,"displaySourceName":"no","filterFloatingPosition":"top","filterSplitD
irection":"floating","filterUpdateTime":0,"previewHeight":10,"previewVertical":true,"previewFloating":true,"previewWidth":40,"prompt":"","reversed":false,"split":"floating","splitDirection":"botright","startFilter":false,"winCol":0,"winHeig
ht":20,"winRow":0,"winWidth":0},"/Users/ryutooooo/dotfiles/setup.sh"]]: [0,"Vim(let):E716: Key not present in Dictionary: \"winrow\""]
    at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
    at async Service.call (file:///Users/ryutooooo/.config/nvim/plugged/denops.vim/denops/@denops-private/service.ts:86:12)
    at async Session.call (file:///Users/ryutooooo/.config/nvim/plugged/denops.vim/denops/@denops-private/service.ts:135:14)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)
    at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
    at async DenopsImpl.call (file:///Users/ryutooooo/.config/nvim/plugged/denops.vim/denops/@denops/impl.ts:28:12)
    at async preview (file:///Users/ryutooooo/.config/nvim/plugged/ddu-ui-ff/denops/@ddu-uis/ff.ts:370:7)
    at async Ddu.uiAction (file:///Users/ryutooooo/.config/nvim/plugged/ddu.vim/denops/ddu/ddu.ts:299:19)
    at async Session.uiAction (file:///Users/ryutooooo/.config/nvim/plugged/ddu.vim/denops/ddu/app.ts:204:7)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)
    at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
    at async Service.dispatch (file:///Users/ryutooooo/.config/nvim/plugged/denops.vim/denops/@denops-private/service.ts:101:14)
    at async Session.invoke (file:///Users/ryutooooo/.config/nvim/plugged/denops.vim/denops/@denops-private/host/nvim.ts:48:16)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)

Error message is showing as below

[0,"Vim(let):E716: Key not present in Dictionary: \"winrow\""]

Then I tried to modify following part to winRow and winCol.

let win_row = a:params['winrow']
let win_col = a:params['wincol']

The error never shows up, following image is showing the result.
image

Environment

  • neovim: NVIM v0.7.0-dev+914-g7717f38d3
  • plugins
silent! let g:plugs['ddu-filter-matcher_substring'].commit = '4f5109aca2d3f10d6f0ffe258f79873aa8c51ae2'
silent! let g:plugs['ddu-kind-file'].commit = 'b824ea5be94340e5de3772e529880ad6a8a0a182'
silent! let g:plugs['ddu-source-file_rec'].commit = '614138553618fb973770800d1ef54b577cd866a5'
silent! let g:plugs['ddu-ui-ff'].commit = 'e41791bd5d9c2a36beb6ff946067cbee395507e0'
silent! let g:plugs['ddu.vim'].commit = 'cb0ec8d79727b96bb734a3e0a5c170e7ae394395'
silent! let g:plugs['denops.vim'].commit = '333aa1783352c346cc4fbaa43217bbc1c07ddbaa'

preview window's width is not arranged correctly when setting border

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

SSIA

Expected

preview window's width and main window's width should be same.
Or user can setting preview window's width when setting when setting previewSplit is horizontal.

Environment Information

  • ddu-ui-ff version (SHA1):
    361bc52
  • denops.vim version (SHA1):
    df65c22
  • deno version(deno -V output):
    deno 1.30.3
  • OS:
    WSL2 Ubuntu22.04
  • neovim/Vim :version output:
    NVIM v0.9.0-dev-1088+gd66832c76
    Build type: RelWithDebInfo
    LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set rtp+=~/.cache/dein/nvim/repos/github.com/vim-denops/denops.vim
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu.vim
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu-ui-ff
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu-source-file_rec
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu-kind-file

nnoremap [ddu] <Nop>
nmap <Space>u [ddu]
nmap <silent> [ddu]f <Cmd>call ddu#start({
			\ 'ui': 'ff',
			\ 'uiParams': {
			\	'ff': {
			\		'startFilter': v:true,
			\		'autoAction': {
			\			'name': 'preview',
			\		},
			\		'split': 'floating',
			\		'filterFloatingPosition': 'bottom',
			\		'previewFloating': v:true,
			\		'floatingBorder': 'rounded',
			\		'previewFloatingBorder': 'rounded',
			\	}
			\ },
			\ 'sources': [{'name': 'file_rec', 'params': {}}],
			\ })<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

  1. type <Space> u f for start ddu

Screenshot (if possible)

image

Upload the log messages by :redir and :message (if errored)

Text property error (E275) when close FF window immediately

Problems summary

If user immediately closes the FF window, get a text property error (E275).

Expected

Close FF window without error.

Environment Information

VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Nov 22 2022 23:29:02)
MS-Windows 64-bit GUI version with OLE support
Included patches: 1-924

Provide a minimal init.vim/vimrc without plugin managers (Required!)

" vimrc
set nocompatible

set rtp^=~/path/to/denops.vim
set rtp^=~/path/to/ddu.vim
set rtp^=~/path/to/ddu-ui-ff

call ddu#custom#patch_global(#{
\ ui: 'ff',
\ sources: [ #{ name: 'testsource', params: {} } ],
\})

nnoremap gy <Cmd>call ddu#start({})<CR>
autocmd FileType ddu-ff
      \ nnoremap <buffer> q <Cmd>call ddu#ui#ff#do_action('quit')<CR>

" testing
" 1. Start ddu.
  autocmd User DenopsPluginPost:ddu call timer_start(1000, {-> feedkeys('gy')})
" 2. Quit ddu-ff immediately.
  autocmd FileType ddu-ff call timer_start(100, {-> feedkeys('q')})

Test source that returns Item.highlights.

// denops/@ddu-sources/testsource
import { delay } from "https://deno.land/[email protected]/async/delay.ts";
import { BaseSource } from "https://deno.land/x/[email protected]/types.ts";
import type { Item } from "https://deno.land/x/[email protected]/types.ts";

type Params = Record<never, never>;

export type ActionData = {
  text: string;
};

export class Source extends BaseSource<Params> {
  override kind = "word";

  override gather(): ReadableStream<Item<ActionData>[]> {
    return new ReadableStream({
      async start(controller) {
        const items: Item<ActionData>[] = [
          {
            word: "a:foo",
            action: {
              text: "foo",
            },
            highlights: [
              {
                name: "header",
                hl_group: "ErrorMsg",
                col: 1,
                width: 2,
              },
            ],
          },
        ];

        controller.enqueue(items);
        controller.close();
      },
    });
  }

  override params(): Params {
    return {};
  }
}

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Run vim -u vimrc.
  2. Wait 1 second (test running).

Upload the log messages by :redir and :message (if errored)

[ddu] ui: ff "redraw()" failed
[ddu] Failed to call 'call' with ["ddu#ui#ff#_highlight_items",{"autoAction":{},"autoResize":false,"cursorPos":-1,"displaySourceName":"no","displayTree":false,"filterFloatingPosition":"bottom","filterSplitDirection":"botright","filterUpdateTime":0,"floatingBorder":"none","highlights":{},"ignoreEmpty":false,"previewCol":0,"previewFloating":false,"previewFloatingBorder":"none","previewFloatingZindex":50,"previewHeight":10,"previewRow":0,"previewVertical":false,"previewWidth":40,"prompt":"","reversed":false,"replaceCol":0,"split":"horizontal","splitDirection":"botright","startFilter":false,"statusline":true,"winCol":20,"winHeight":20,"winRow":2,"winWidth":40},2,1,[{"highlights":[{"name":"header","hl_group":"ErrorMsg","col":1,"width":2}],"row":1,"prefix":""}],[]]: Error: Failed to call 'ddu#ui#ff#_highlight_items([object Object], 2, 1, [object Object], )': Vim(call):E275: Cannot add text property to unloaded buffer
function ddu#ui#ff#do_action[13]..ddu#ui_action[1]..ddu#_request[22]..denops#request[1]..denops#server#request[6]..<SNR>23_request[1]..denops#api#vim#call[2]..ddu#ui#ff#_highlight_items[12]..ddu#ui#ff#_highlight, line 22
    at Vim.call (file:///tmp/denops.vim/denops/@denops-private/host/vim.ts:37:13)
    at async Session.call (file:///tmp/denops.vim/denops/@denops-private/service.ts:170:14)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)
[ddu] Error: Failed to call 'call' with ["ddu#ui#ff#_highlight_items",{"autoAction":{},"autoResize":false,"cursorPos":-1,"displaySourceName":"no","displayTree":false,"filterFloatingPosition":"bottom","filterSplitDirection":"botright","filterUpdateTime":0,"floatingBorder":"none","highlights":{},"ignoreEmpty":false,"previewCol":0,"previewFloating":false,"previewFloatingBorder":"none","previewFloatingZindex":50,"previewHeight":10,"previewRow":0,"previewVertical":false,"previewWidth":40,"prompt":"","reversed":false,"replaceCol":0,"split":"horizontal","splitDirection":"botright","startFilter":false,"statusline":true,"winCol":20,"winHeight":20,"winRow":2,"winWidth":40},2,1,[{"highlights":[{"name":"header","hl_group":"ErrorMsg","col":1,"width":2}],"row":1,"prefix":""}],[]]: Error: Failed to call 'ddu#ui#ff#_highlight_items([object Object], 2, 1, [object Object], )': Vim(call):E275: Cannot add text property to unloaded buffer
function ddu#ui#ff#do_action[13]..ddu#ui_action[1]..ddu#_request[22]..denops#request[1]..denops#server#request[6]..<SNR>23_request[1]..denops#api#vim#call[2]..ddu#ui#ff#_highlight_items[12]..ddu#ui#ff#_highlight, line 22
    at Vim.call (file:///tmp/denops.vim/denops/@denops-private/host/vim.ts:37:13)
    at async Session.call (file:///tmp/denops.vim/denops/@denops-private/service.ts:170:14)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)
    at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
    at async DenopsImpl.call (file:///tmp/denops.vim/denops/@denops/impl.ts:34:12)
    at async Ui.redraw (file:///C:/tmp/ddu-ui-ff/denops/@ddu-uis/ff.ts:350:5)
    at async file:///tmp/ddu.vim/denops/ddu/ddu.ts:1501:7
    at async Lock.with (https://deno.land/x/[email protected]/lock.ts:23:7)
    at async uiRedraw (file:///tmp/ddu.vim/denops/ddu/ddu.ts:1499:3)
    at async Ddu.uiRedraw (file:///tmp/ddu.vim/denops/ddu/ddu.ts:458:5)
    at async Ddu.redraw (file:///tmp/ddu.vim/denops/ddu/ddu.ts:408:5)
    at async readChunk (file:///tmp/ddu.vim/denops/ddu/ddu.ts:366:9)

Existing window is cleared when invoke any action with chooseAction UI

Steps to reproduce

  1. Install next plugins
    • denops.vim
    • ddu.vim
    • ddu-ui-ff
    • ddu-source-action
    • ddu-source-file
    • ddu-kind-file
  2. Start vim
  3. :edit any file
  4. :call ddu#custom#set_global(#{ui: 'ff'})
  5. :call ddu#start(#{sources: [#{name: 'file'}]})
  6. Place cursor on a directory and :call ddu#ui#ff#do_action('chooseAction')
  7. Place cursor on cd and :call ddu#ui#ff#do_action('itemAction', #{name: 'do'})
  8. The first window which had a buffer (at step 3) is cleared and starts editing "No Name" buffer, just like :enew is executed at that window

Whatever action you select at step 7, the same thing will occur.

Expected behaviour

The windows is not cleared; just do what is selected at step 7 (closing the FF UI).

Additional information

This problem was resolved when I tried next patch. I don't know whether it has any side effects, but I didn't find one.

diff --git a/denops/@ddu-uis/ff.ts b/denops/@ddu-uis/ff.ts
index 7f2c47f..4caaaa8 100644
--- a/denops/@ddu-uis/ff.ts
+++ b/denops/@ddu-uis/ff.ts
@@ -309,7 +309,7 @@ export class Ui extends BaseUi<Params> {
     }
 
     if ((await fn.winnr(args.denops, "$")) == 1) {
-      await args.denops.cmd("enew");
+      await args.denops.cmd(`buffer ${args.context.bufNr}`);
     } else {
       await args.denops.cmd("close!");
       await fn.win_gotoid(args.denops, args.context.winId);

Environment

  • Windows 11 and Ubuntu 20.04
  • Vim 8.2.4563
  • denops.vim: 963a8a9effd785e3ba6c6596aa265a9d85fe92ba
  • ddu.vim: 92ddeccbfa90503f9e6316f1fe640adc21490cf3
  • ddu-ui-ff: d51ed07

The cursor position is forcedly overwrite when the source is large

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

The cursor position is reset randomly. It seems ddu does not keep the cursor position in async load?

CleanShot.2022-09-03.at.00.19.02.mp4

Expected

The cursor position is persistent

Environment Information

  • ddu-ui-ff version (SHA1):

  • denops.vim version (SHA1):

  • deno version(deno -V output):

  • OS:

  • neovim/Vim :version output:

Provide a minimal init.vim/vimrc without plugin managers (Required!)

if exists('+compatible') && &compatible
  set nocompatible
endif

" Disable Vim's native pack feature
set packpath=

" Clone https://github.com/lambdalisue/fern.vim in somewhere
" and specify that directory to the below
set runtimepath^=~/.config/nvim/pack/jetpack/src/github.com/vim-denops/denops.vim
set runtimepath^=~/.config/nvim/pack/jetpack/src/github.com/Shougo/ddu.vim
set runtimepath^=~/.config/nvim/pack/jetpack/src/github.com/Shougo/ddu-ui-ff
set runtimepath^=~/.config/nvim/pack/jetpack/src/github.com/Shougo/ddu-source-file_rec
set runtimepath^=~/.config/nvim/pack/jetpack/src/github.com/Shougo/ddu-filter-matcher_substring
set runtimepath^=~/.config/nvim/pack/jetpack/src/github.com/EdenEast/nightfox.nvim

filetype plugin indent on
syntax on
"----------------------------------------------------------------

nnoremap ; :
nnoremap : ;


call ddu#custom#patch_global({
      \ 'ui': 'ff',
      \ 'sources': [
      \   {
      \     'name': 'file_rec',
      \   },
      \ ],
      \ 'sourceOptions': {
      \   '_': {
      \     'matchers': ['matcher_substring'],
      \   },
      \ },
      \ 'uiParams': {
      \   'ff': {
      \     'split': 'floating',
      \     'startFilter': v:true,
      \     'prompt': '> ',
      \   },
      \ },
      \})

function! s:my_ddu_ff() abort
  nnoremap <buffer><silent> <Esc>
        \ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

function! s:my_ddu_ff_filter() abort
  inoremap <buffer><silent> <Esc> <Esc><Cmd>call ddu#ui#ff#close()<CR>
  nnoremap <buffer><silent> <Esc> <Cmd>call ddu#ui#ff#close()<CR>

  inoremap <buffer><silent> <C-n>
	  \ <Cmd>call ddu#ui#ff#execute("call cursor(line('.')+1,0)")<CR>
  inoremap <buffer><silent> <C-p>
	  \ <Cmd>call ddu#ui#ff#execute("call cursor(line('.')-1,0)")<CR>
endfunction

augroup my-ddu
  autocmd!
  autocmd FileType ddu-ff call s:my_ddu_ff()
  autocmd FileType ddu-ff-filter call s:my_ddu_ff_filter()
augroup END

colorscheme nightfox

"----------------------------------------------------------------
echomsg "Custom minimal vimrc has loaded"

How to reproduce the problem from neovim/Vim startup (Required!)

  1. :cd ~ (or wherevever a directory that has a lot of children)
  2. :call ddu#start({})
  3. Hit <C-n> and wait

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)

When :tcd , cursor mark does not work

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Once I open the ddu-ui-ff with specified directory, and then when I open the ddu-ui-ff with different directory (like after :tcd), it does not work.

Expected

cursor mark is still displayed after

Environment Information

  • ddu-ui-ff version (SHA1):
    56c6ef2

  • denops.vim version (SHA1):
    949a52412d35d56354f69bbbade6bcfe2951b8d6

  • deno version(deno -V output):
    deno 1.30.3

  • OS:
    WSL2 Ubuntu-22.04

  • neovim/Vim :version output:
    NVIM v0.9.0-dev-1088+gd66832c76
    Build type: RelWithDebInfo
    LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set rtp+=/home/kamecha_linux/workspace/Plugin/min-plugin/tmp/vim-denops/denops.vim
set rtp+=/home/kamecha_linux/workspace/Plugin/min-plugin/tmp/Shougo/ddu.vim
set rtp+=/home/kamecha_linux/workspace/Plugin/min-plugin/tmp/Shougo/ddu-ui-ff
set rtp+=/home/kamecha_linux/workspace/Plugin/min-plugin/tmp/Shougo/ddu-source-file_rec
set rtp+=/home/kamecha_linux/workspace/Plugin/min-plugin/tmp/Shougo/ddu-kind-file

nnoremap [ddu] <Nop>
nmap <Space>u [ddu]
nmap <silent> [ddu]f <Cmd>call ddu#start({
			\ 'ui': 'ff',
			\ 'sources': [{'name': 'file_rec', 'params': {}}],
			\ })<CR>
autocmd FileType ddu-ff call s:ddu_my_settings()

function! s:ddu_my_settings() abort
	setlocal signcolumn=yes
	nnoremap <buffer><silent> q
				\ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
	autocmd CursorMoved <buffer> call s:update_cursor()
	function! s:update_cursor()
		sign unplace 100
		sign define cursor text=>> texthl=Constant
		execute printf('sign place 100 line=%d name=cursor file=%s',
					\ '.'->line(), '%:p'->expand())
	endfunction
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. open the ddu with (<Space>uf)
  2. close the ddu with (q)
  3. open another tab with (:tabnew ../hogehoge)
  4. in another tab, :tcd %:h
  5. open the ddu with (<Space>uf)

Screenshot (if possible)

image

Upload the log messages by :redir and :message (if errored)

Error detected while processing CursorMoved Autocommands for "<buffer=2>"..function <SNR>3_update_cursor:
line    3:
E158: Invalid buffer name: /home/kamecha_linux/workspace/Plugin/ddu-source-window/ddu-ff-default
Error detected while processing CursorMoved Autocommands for "<buffer=2>"..function <SNR>3_update_cursor:
line    3:
E158: Invalid buffer name: /home/kamecha_linux/workspace/Plugin/ddu-source-window/ddu-ff-default
Error detected while processing CursorMoved Autocommands for "<buffer=2>"..function <SNR>3_update_cursor:
line    3:
E158: Invalid buffer name: /home/kamecha_linux/workspace/Plugin/ddu-source-window/ddu-ff-default
Error detected while processing CursorMoved Autocommands for "<buffer=2>"..function <SNR>3_update_cursor:
line    3:
E158: Invalid buffer name: /home/kamecha_linux/workspace/Plugin/ddu-source-window/ddu-ff-default
Error detected while processing CursorMoved Autocommands for "<buffer=2>"..function <SNR>3_update_cursor:
line    3:
E158: Invalid buffer name: /home/kamecha_linux/workspace/Plugin/ddu-source-window/ddu-ff-default
Error detected while processing CursorMoved Autocommands for "<buffer=2>"..function <SNR>3_update_cursor:
line    3:
E158: Invalid buffer name: /home/kamecha_linux/workspace/Plugin/ddu-source-window/ddu-ff-default
Error detected while processing CursorMoved Autocommands for "<buffer=2>"..function <SNR>3_update_cursor:
line    3:
E158: Invalid buffer name: /home/kamecha_linux/workspace/Plugin/ddu-source-window/ddu-ff-default

Option 'previewwindow' in the ddu-ff preview-window is not set

Hi Shougo.

Thx a lot for the ddu series of plugins of course. (And a late 'thx-a-lot' for the denite.nvim, unite.vim... plugins as well). Still can't figure out what your avatar on github is meant to be (its not a zebra-dragon is it? 😉)

Problems summary

When invoking the preview action on a file kind/source the emerging preview window has its previewwindow option set to nopreviewwindow.
As of now there is only on big problem I have with this fact. I really like to use the vim-preview plugin to scroll the preview window while leaving the cursor in the denite-window and I am missing this functionality in ddu.

Expected

I would expect the ddu-ff preview window to have its previewwindow option set to previewwindow

Environment Information

  • ddu-ui-ff version (SHA1): c5958937bd73b262642aec93f9ff0623c4250e67

  • denops.vim version (SHA1): d7db28587bb281f9fcf56d4986e313025e250295

  • deno version(deno -V output): deno 1.21.1

  • OS: GNU/Linux

  • neovim/Vim :version output:

NVIM v0.8.0-dev-1071-gf98cff957
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by lorenz@chicken

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/share/nvim"

Run :checkhealth for more info

Provide a minimal init.vim/vimrc without plugin managers (Required!)

" Your minimal init.vim/vimrc
set nocompatible

set runtimepath+=/usr/local/src/neovim_minimal_stuff/denops.vim
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu.vim
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-source-file
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-kind-file
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-ui-ff
set runtimepath+=/usr/local/src/neovim_minimal_stuff/ddu-commands.vim
set runtimepath+=/usr/local/src/neovim_minimal_stuff/vim-preview

filetype plugin indent on

" ddu#custom#patch_global ui: ff --- {{{
call ddu#custom#patch_global({
    \ 'ui': 'ff',
    \ })
" }}}

" ddu_ff_my_settings --- {{{
autocmd FileType ddu-ff call s:ddu_ff_my_settings()
function! s:ddu_ff_my_settings() abort
  nnoremap <buffer><silent> p
        \ <Cmd>call ddu#ui#ff#do_action('preview')<CR>
endfunction
" }}}

" vim-preview --- {{{
noremap <silent> <A-k> :PreviewScroll -1<cr>
noremap <silent> <A-j> :PreviewScroll +1<cr>
inoremap <silent> <A-k> <c-\><c-o>:PreviewScroll -1<cr>
inoremap <silent> <A-j> <c-\><c-o>:PreviewScroll +1<cr>
" }}}

How to reproduce the problem from neovim/Vim startup (Required!)

  1. start a minimal neovim with the command: VIMRUNTIME=/usr/local/src/neovim/runtime /usr/local/src/neovim/build/bin/nvim --clean -u /usr/local/src/neovim_minimal_stuff/minimal_init.vim
  2. execute Ddu file
  3. move the cursor to a file entry
  4. press the the p-key (mapping for the preview action) to open the
    preview window
  5. execute the command wincmd k to focus the preview window
  6. query the 'previewwindow'-option by executing the command set previewwindow?

Screenshot (if possible)

ddu-ui-ff-nopreviewwindow

Upload the log messages by :redir and :message (if errored)

Further remarks:

If this is by design, would it be possible to add the feature of scrolling the preview window while keeping the cursor-focus on the ddu-ff window?

Thx a lot and have a good one ^^

Doesn't restore the previous cursor position resuming

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Expected

Related: #54

Environment Information

  • ddu-ui-ff version (SHA1): 0e889a3

  • denops.vim version (SHA1): 8f3899de3d3add07105221262dca90a31c4c2d4c

  • deno version(deno -V output): 1.30.3

  • OS:

  • neovim/Vim :version output: v0.8.3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

if has('vim_starting')
  let s:config_path = stdpath('config')
  for s:repo in [
    \ 'vim-denops/denops.vim',
    \ 'Shougo/ddu.vim',
    \ 'Shougo/ddu-ui-ff',
    \ 'Shougo/ddu-kind-file',
    \ 'matsui54/ddu-filter-fzy',
  \ ]
    let s:path = s:config_path . '/dein/repos/github.com/' . s:repo
    let &g:rtp .= ',' . s:path
  endfor
endif

call ddu#custom#patch_global({
  \ 'ui': 'ff',
  \ 'uiParams': {
    \ 'ff': {
      \ 'split': 'floating',
      \ 'filterSplitDirection': 'floating',
    \ },
  \ },
  \ 'sourceOptions': {
    \ 'ghq': {
      \ 'matchers': ['matcher_fzy'],
    \ },
  \ },
\ })

command! Open call s:open()
function! s:open() abort
  call ddu#start({
    \ 'name': 'ghq',
    \ 'sources': [{ 'name': 'ghq' }],
    \ 'uiParams': { 'ff': { 'startFilter': v:true } },
    \ 'resume': v:true,
  \ })
endfunction

augroup _init_ddu
  autocmd!
  autocmd FileType ddu-ff call <SID>init_ddu()
  autocmd FileType ddu-ff-filter call <SID>init_ddu()
augroup END

function! s:init_ddu() abort
  nnoremap <buffer> <Esc> <Cmd>call ddu#ui#ff#do_action('quit')<CR>
  nnoremap <buffer> q <Cmd>call ddu#ui#ff#do_action('quit')<CR>
  nnoremap <buffer> <C-q> <Cmd>call ddu#ui#ff#do_action('quit')<CR>
  inoremap <buffer> <C-q> <Cmd>call ddu#ui#ff#do_action('quit')<CR>

  nnoremap <buffer> <CR> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  inoremap <buffer> <CR> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  nnoremap <buffer> <C-j> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  inoremap <buffer> <C-j> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>

  if &filetype ==# 'ddu-ff'
    setl cursorline
  endif
  if &filetype ==# 'ddu-ff-filter'
    inoremap <buffer> <C-p> <Cmd>call ddu#ui#ff#execute("call cursor(line('.')-1,0)<Bar>redraw")<CR>
    inoremap <buffer> <C-n> <Cmd>call ddu#ui#ff#execute("call cursor(line('.')+1,0)<Bar>redraw")<CR>
  endif
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Open ddu-ui by :Open
  2. Enter query (optional)
  3. Move cursor
  4. Quit with <C-q>
  5. Reopen ddu-ui

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)

Error when closing filter window

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

An error occurs when I try to close the filter window with autoAction and startFilter set.

Expected

Close filter window without error.

Environment Information

  • ddu-ui-ff version (SHA1): ba8be0062bd67d5f4a93933600e66ece30a812cd

  • denops.vim version (SHA1): d7db28587bb281f9fcf56d4986e313025e250295

  • deno version(deno -V output): deno 1.26.0

  • OS: Arch Linux

  • neovim/Vim :version output:

NVIM v0.8.0
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by builduser

Features: +acl +iconv +tui
See ":help feature-compile"

      システム vimrc: "$VIM/sysinit.vim"
       省略時の $VIM: "/usr/share/nvim"

Run :checkhealth for more info

Provide a minimal init.vim/vimrc without plugin managers (Required!)

set runtimepath^=~/plugins/denops.vim
set runtimepath^=~/plugins/ddu.vim
set runtimepath^=~/plugins/ddu-ui-ff
set runtimepath^=~/plugins/ddu-source-file_rec
set runtimepath^=~/plugins/ddu-filter-matcher_substring
set runtimepath^=~/plugins/ddu-kind-file

call ddu#custom#patch_global({
  \ 'ui': 'ff',
  \ 'uiParams': {
  \   'ff': {
  \     'split': 'floating',
  \     'startFilter': v:true,
  \     'autoAction': {'name': 'preview'},
  \   },
  \ },
  \ 'sources': [{'name': 'file_rec', 'params': {}}],
  \ 'sourceOptions': {
  \   '_': {
  \     'matchers': ['matcher_substring'],
  \   },
  \ },
  \ 'kindOptions': {
  \   'file': {
  \     'defaultAction': 'open',
  \   },
  \ }
  \ })

autocmd FileType ddu-ff call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  nnoremap <buffer><silent> i <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
  nnoremap <buffer><silent> q <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR> <Esc><Cmd>close<CR>
  nnoremap <buffer><silent> <CR> <Esc><Cmd>close<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Execute call ddu#start({})
  2. Close filter window.

Screenshot (if possible)

error

Upload the log messages by :redir and :message (if errored)

CursorMoved Autocommands for "<buffer=2>"..function ddu#ui#ff#_do_auto_action[13]..ddu#ui#ff#do_action[13]..ddu#ui_action[1]..ddu#_request[22]..denops#request[1]..denops#server#request[6]..<SNR>17_request の処理中にエラーが検出されました:
行    1:
Error invoking 'invoke' on channel 4:
Error: Failed to call 'uiAction' with ["default","preview",{}]: Error: Failed to call 'call' with ["ddu#ui#ff#_open_preview_window",{"autoAction":{"name":"preview","params":{}},"autoResize":false,"cursorPos":-1,"displaySourceName":"no","filterFloatingPosition":"bottom","filterSplitDirection":"botright","filterUpdateTime":0,"floatingBorder":"none","highlights":{},"ignoreEmpty":false,"previewCol":0,"previewFloating":false,"previewHeight":10,"previewRow":0,"previewVertical":false,"previewWidth":40,"previewFloatingBorder":"none","previewFloatingZindex":50,"prompt":"","reversed":false,"split":"floating","splitDirection":"botright","startFilter":true,"statusline":true,"winCol":0,"winHeight":20,"winRow":0,"winWidth":0},2]: Error: Failed to call 'nvim_call_function' with ["ddu#ui#ff#_open_preview_window",[{"autoAction":{"name":"preview","params":{}},"autoResize":false,"cursorPos":-1,"displaySourceName":"no","filterFloatingPosition":"bottom","filterSplitDirection":"botright","filterUpdateTime":0,"floatingBorder":"none","highlights":{},"ignoreEmpty":false,"previewCol":0,"previewFloating":false,"previewHeight":10,"previewRow":0,"previewVertical":false,"previewWidth":40,"previewFloatingBorder":"none","previewFloatingZindex":50,"prompt":"","reversed":false,"split":"floating","splitDirection":"botright","startFilter":true,"statusline":true,"winCol":0,"winHeight":20,"winRow":0,"winWidth":0},2]]: [0,"Vim(new):E242: Can't split a window while closing another"]
    at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
    at async Service.call (file:///home/hyuoou/plugins/denops.vim/denops/@denops-private/service.ts:99:12)
    at async Session.call (file:///home/hyuoou/plugins/denops.vim/denops/@denops-private/service.ts:166:14)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)
    at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
    at async DenopsImpl.call (file:///home/hyuoou/plugins/denops.vim/denops/@denops/impl.ts:34:12)
    at async PreviewUi.previewBuffer (file:///home/hyuoou/plugins/ddu-ui-ff/denops/@ddu-ui-ff/preview.ts:194:7)
    at async PreviewUi.preview (file:///home/hyuoou/plugins/ddu-ui-ff/denops/@ddu-ui-ff/preview.ts:106:14)
    at async Ddu.uiAction (file:///home/hyuoou/plugins/ddu.vim/denops/ddu/ddu.ts:543:19)
    at async Session.uiAction (file:///home/hyuoou/plugins/ddu.vim/denops/ddu/app.ts:233:7)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)
    at Session.call (https://deno.land/x/[email protected]/session.ts:207:13)
    at async Service.dispatch (file:///home/hyuoou/plugins/denops.vim/denops/@denops-private/service.ts:114:14)
    at async Session.invoke (file:///home/hyuoou/plugins/denops.vim/denops/@denops-private/host/nvim.ts:53:16)
    at async Session.dispatch (https://deno.land/x/[email protected]/session.ts:99:12)
    at async https://deno.land/x/[email protected]/session.ts:108:18
    at async Session.handleRequest (https://deno.land/x/[email protected]/session.ts:104:29)

terminanl preview does not work well

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

When I use terminal previewer with ddu-kind-file, it is unable to preview continuously.

Expected

preview contents continuously with terminal.

Environment Information

  • ddu-ui-ff version (SHA1):

  • denops.vim version (SHA1):

    • 3b489d50ba2e034c829a09475a4002176bffbef7
  • deno version(deno -V output):

    • deno 1.30.3
  • OS:

    • WSL2 Ubuntu22.04
  • neovim/Vim :version output:
    NVIM v0.9.0-dev-1088+gd66832c76
    Build type: RelWithDebInfo
    LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

" Your minimal init.vim/vimrc
set rtp+=~/.cache/dein/nvim/repos/github.com/vim-denops/denops.vim
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu.vim
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu-ui-ff
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu-source-file_rec
set rtp+=~/.cache/dein/nvim/repos/github.com/Shougo/ddu-kind-file

nnoremap [ddu] <Nop>
nmap <Space>u [ddu]
nmap <silent> [ddu]f <Cmd>call ddu#start({
			\ 'ui': 'ff',
			\ 'uiParams': {
			\	'ff': {
			\		'autoAction': {
			\			'name': 'preview',
			\			'params': {
			\				'previewCmds': ['less', '+%b', '%s']
			\			}
			\		}
			\	}
			\ },
			\ 'sources': [{'name': 'file_rec', 'params': {}}],
			\ })<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

  1. open neovim. ()
  2. type <Space> u f
  3. after previewd, type j for move cursor to down
  4. cursor is now displayer in terminal preview buffer?

Screenshot (if possible)

ddu-ui-ff

Upload the log messages by :redir and :message (if errored)

[Feature Request] Customizable statusline

I want to custom statusline of ddu-ui-ff, But it is impossible becouse feature does not exist yet.
2 features are needed to custom statuleine:

  • Add statusline uiParams like denite's it
						*denite-option-statusline*
-statusline
		Enable statusline.
		Default: true
  • Add ddu#ui#ff#get_status() function like deinte#get_status()
denite#get_status({name})				*denite#get_status()*
		Returns the {name} part of the status string.  It is useful to
		customize the statusline.
		Note: It also works in the Denite filter window.

		The available status names:
		"input": Current filtering text
		"sources": Current sources and candidates number
		"path": Specified |denite-option-path|
		"buffer_name": Current |denite-option-buffer-name|
		"line_total": Total candidates. Part of "linenr".

[Question] What happens when the filter closes.

I have some processing that I want to execute at the same time as the filter closes. Is there any processing that is executed when the filter closes (hides)?

Environment Information

  • ddu-ui-std version (SHA1): cc8ea78

  • ddu.vim version (SHA1): e876d13b656a35232fa9f371a9c9cc9ba2a09f5d

  • denops.vim version (SHA1): e2f17041495123e8ed9baa69098c947c5d7f6358

  • deno version(deno -V output): 1.18.1

  • OS: Mac

  • neovim/Vim :version output: v0.7.0-dev+984-g2870311a3

  • :checkhealth or :CheckHealth result(neovim only): OK

[Feature Request] Customizable preview window position

I want to set the column/row position of the preview window.

Could you add previewCol and previewRow, like winCol and winRow ?

or, could you fix the following problem?

If we call ddu#ui#ff#do_action('preview') in ddu-ff, the preview window is shown like this.
スクリーンショット 2022-05-22 14 45 01

but, if we call it in ddu-ff-filter, the preview window is shown at strange position.
スクリーンショット 2022-05-22 14 45 28

Problems with resume option

NVIM v0.6.1
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by brew@Monterey
call ddu#custom#patch_global({
  \ 'ui': 'ff',
  \ 'uiParams': {
    \ 'ff': {
      \ 'split': 'floating',
      \ 'filterSplitDirection': 'floating',
      \ 'prompt': '>',
    \ },
  \ },
  ...
\ })
let l:source = ... " Any source will do
call ddu#start({
  \ 'name': l:source,
  \ 'sources': [{ 'name': l:source }],
  \ 'uiParams': { 'ff': { 'startFilter': v:true } },
  \ 'resume': v:true,
\ })

Problem 1: Letters typed into the filter window gets rearranged in reverse

What I typed What I got
wb bw
abcdefg gfedcba
Screen.Recording.2022-03-11.at.19.58.11.mov

I could fix the problem by commenting out this line of code:

await fn.cursor(args.denops, this.saveCursor[1], this.saveCursor[2]);

With the line commented out:

Screen.Recording.2022-03-11.at.20.06.39.mov

Problem 2: The previous state not being properly restored

Open the UI for the second time with resume: v:true, nothing is restored — items are refreshed, the input text is gone, and the cursor position is lost.

I've confirmed that commenting out the following line fixed this problem.

await args.denops.call("ddu#pop", args.options.name);

If you select it when the window is empty, you will get an error.

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

If you select it when the window is empty, you will get an error.
It also happens with other source plugins.

Expected

No error occurs when the selection operation is performed when the window is empty.

Environment Information

  • ddu-ui-std version (SHA1): ed7c2ef

  • ddu.vim version (SHA1): e876d13b656a35232fa9f371a9c9cc9ba2a09f5d

  • denops.vim version (SHA1): e2f17041495123e8ed9baa69098c947c5d7f6358

  • deno version(deno -V output): 1.18.1

  • OS: Mac

  • neovim/Vim :version output: v0.7.0-dev+978-g46bd48f7e

  • :checkhealth or :CheckHealth result(neovim only): OK

Provide a minimal init.vim/vimrc with less than 50 lines (Required!)

if &compatible
    set nocompatible
endif

let $CACHE = expand('~/.cache')

if !isdirectory(expand($CACHE))
    call mkdir(expand($CACHE), 'p')
endif

let s:dein_dir = expand('$CACHE/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'

if &runtimepath !~# '/dein.vim'
    if !isdirectory(s:dein_repo_dir)
        execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
    endif
    execute 'set runtimepath^=' . s:dein_repo_dir
endif

call dein#begin(s:dein_dir, expand('<sfile>'))

call dein#add('vim-denops/denops.vim')
call dein#add('Shougo/ddu.vim')
call dein#add('Shougo/ddu-commands.vim')
call dein#add('Shougo/ddu-ui-std')
call dein#add('Shougo/ddu-filter-matcher_substring')
call dein#add('Shougo/ddu-source-file_rec')
call dein#add('Shougo/ddu-kind-file')

call dein#end()
call dein#save_state()

call ddu#custom#patch_global({
    \   'ui': 'std',
    \   'sourceOptions': {
    \     '_': {
    \       'matchers': ['matcher_substring'],
    \     },
    \   },
    \ })

autocmd FileType ddu-std call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR>
  \ <Cmd>call ddu#ui#std#do_action('itemAction')<CR>
  nnoremap <buffer><silent> i
  \ <Cmd>call ddu#ui#std#do_action('openFilterWindow')<CR>
  nnoremap <buffer><silent> q
  \ <Cmd>call ddu#ui#std#do_action('quit')<CR>
endfunction

autocmd FileType ddu-std-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR>
  \ <Esc><Cmd>close<CR>
  nnoremap <buffer><silent> <CR>
  \ <Cmd>close<CR>
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. mkdir foo
  2. cd foo
  3. nvim
  4. Run call dein#update()
  5. Restart Neovim.
  6. Run call ddu#start({'sources': [{'name': 'file_rec'}]}) command.
  7. Select item.

Screenshot (if possible)

スクリーンショット 2022-01-31 13 23 47

ddu says Invalid ui: "ff"

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Maybe just after the fix in last week, not for sure
when I execute this in EX the first time after start Neovim

:call ddu#start({})

nothing happens. and afte that, this command starts saying

[ddu] Invalid ui: "ff"

Expected

shows pop up menu

Environment Information

  • ddu-ui-ff version (SHA1):
    da3ece8

  • denops.vim version (SHA1):
    8f3899de3d3add07105221262dca90a31c4c2d4c

  • deno version(deno -V output):
    1.31.1

  • OS:
    Windows 11 22H2

  • neovim/Vim :version output:
    v0.8.3

Provide a minimal init.vim/vimrc without plugin managers (Required!)

"init.vim for ddu-ui-ff test

let s:neovim_dir = expand('~/.config/nvim')
execute 'set runtimepath+=' . s:neovim_dir

filetype plugin indent on
syntax on

" --------------------------------------------------
"
"Directory where plugins are installed in
let s:dein_dir = expand("~/.cache/dein.vim")
let s:dein_repo_dir = s:dein_dir . '/repos'

execute 'set runtimepath+=' . s:dein_dir
execute 'set runtimepath+=' . s:dein_repo_dir
execute 'set runtimepath+=' . s:dein_repo_dir . '/github.com/Shougo/dein.vim'
execute 'set runtimepath+=' . s:dein_repo_dir . '/github.com/vim-denops/denops.vim'
execute 'set runtimepath+=' . s:dein_repo_dir . '/github.com/Shougo/ddu.vim'
execute 'set runtimepath+=' . s:dein_repo_dir . '/github.com/Shougo/ddu-ui-ff'

"Load plugins
    
call dein#begin(s:dein_dir)

call dein#add('vim-denops/denops.vim')
call dein#add('Shougo/ddu.vim')
call dein#add('Shougo/ddu-ui-ff')
call dein#add('Shougo/ddu-source-file')

call dein#end()    

if dein#check_install()
    call dein#install()
endif

call ddu#custom#patch_global(#{
\ ui: 'ff',
\ sources: [
\     #{name: 'file'},
\     ]
\})

nnoremap <buffer><silent> q <Cmd>call ddu#ui#ff#do_action('quit')<CR>
nnoremap <silent> ;h <Cmd>call ddu#start(#{sources: [#{name: 'file'}]})<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

execute this
:call ddu#start({})

Screenshot (if possible)

2023-03-08 15_17_19-Neovim

intentionally disabling cursor resume

Problems summary

Related to #63 but I have the opposite issue: I never want to resume and always want my cursor to start at the top.

ddu-ui-ff does not have a toggle for this feature currently.

I tried adding autoAction: #{name: 'noop'} to my configuration since startFilter + autoAction disables the feature. This does prevent cursor resume but adds "Invalid UI action: noop" warnings.

Expected

Not expected as such but I think a cursorResume default-true boolean toggle would work fine!

Environment Information

  • ddu-ui-ff version (SHA1): f069b00
  • denops.vim version (SHA1): 8f3899de3d3add07105221262dca90a31c4c2d4c
  • deno version(deno -V output):
deno 1.31.1 (release, x86_64-unknown-linux-gnu)
v8 11.0.226.13
typescript 4.9.4
  • OS: Arch Linux
  • neovim/Vim :version output:
NVIM v0.8.3
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by builduser

Features: +acl +iconv +tui

Provide a minimal init.vim/vimrc without plugin managers (Required!)

if has('vim_starting')
  let s:config_path = stdpath('cache')
  for s:repo in [
    \ 'vim-denops/denops.vim',
    \ 'Shougo/ddu.vim',
    \ 'Shougo/ddu-ui-ff',
    \ 'Shougo/ddu-kind-file',
    \ 'shun/ddu-source-buffer',
    \ 'Shougo/ddu-filter-matcher_substring',
  \ ]
    let s:path = s:config_path . '/../dein/repos/github.com/' . s:repo
    let &g:rtp .= ',' . s:path
  endfor
endif

call ddu#custom#patch_global(#{
  \   ui: 'ff',
  \   volatile: v:true,
  \   uiParams: #{
  \     ff: #{
  \       startFilter: v:true,
  \       ignoreEmpty: v:false,
  \       autoResize: v:false,
  \     }
  \   },
  \   kindOptions: #{
  \     file: #{
  \       defaultAction: 'open',
  \     },
  \   },
  \   sources: [
  \     #{ name: 'buffer', },
  \   ],
  \   sourceParams: #{
  \     buffer: #{
  \       orderby: 'desc'
  \     },
  \   },
  \ })

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer> <CR>
    \ <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  inoremap <buffer> <Esc>
    \ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
  inoremap <buffer> <C-j>
    \ <Cmd>call ddu#ui#ff#execute(
    \ "call cursor(line('.')+1,0)<Bar>redraw")<CR>
  inoremap <buffer> <C-k>
    \ <Cmd>call ddu#ui#ff#execute(
    \ "call cursor(line('.')-1,0)<Bar>redraw")<CR>
endfunction

nnoremap <space>b :call ddu#start(#{sources: [#{name: 'buffer'}]})<CR>

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Open multiple buffers
  2. <Space>-b to open ddu-ui-ff with buffer source
  3. <C-j> to move down the list; note ddu status line updates with current cursor row
  4. <Enter> to open the file or to cancel and exit ddu (same result either way)
  5. <Space-b> to open ddu-ui-ff again: cursor row is unchanged from step 3

Regression in a4e73d0d6234fb121f129e8561cc6acfc4001ea1

Warning: I will close the issue without the minimal init.vim and the
reproduction instructions.

Problems summary

Commit: a4e73d0

The cursor position isn't correctly restored after resuming.

Expected

Environment Information

  • ddu-ui-ff version (SHA1): fbe319b

  • denops.vim version (SHA1):

  • deno version(deno -V output):

  • OS:

  • neovim/Vim :version output:

Provide a minimal init.vim/vimrc without plugin managers (Required!)

if has('vim_starting')
  let s:config_path = stdpath('config')
  for s:repo in [
    \ 'vim-denops/denops.vim',
    \ 'Shougo/ddu.vim',
    \ 'Shougo/ddu-ui-ff',
    \ 'Shougo/ddu-kind-file',
    \ 'matsui54/ddu-filter-fzy',
  \ ]
    let s:path = s:config_path . '/dein/repos/github.com/' . s:repo
    let &g:rtp .= ',' . s:path
  endfor
endif

call ddu#custom#patch_global({
  \ 'ui': 'ff',
  \ 'sourceOptions': {
    \ 'ghq': {
      \ 'matchers': ['matcher_fzy'],
    \ },
  \ },
\ })

command! Open call s:open()
function! s:open() abort
  call ddu#start({
    \ 'name': 'ghq',
    \ 'sources': [{ 'name': 'ghq' }],
    \ 'uiParams': { 'ff': { 'startFilter': v:true } },
    \ 'resume': v:true,
  \ })
endfunction

augroup _init_ddu
  autocmd!
  autocmd FileType ddu-ff call <SID>init_ddu()
  autocmd FileType ddu-ff-filter call <SID>init_ddu()
augroup END

function! s:init_ddu() abort
  nnoremap <buffer> <Esc> <Cmd>call ddu#ui#ff#do_action('quit')<CR>
  nnoremap <buffer> q <Cmd>call ddu#ui#ff#do_action('quit')<CR>
  nnoremap <buffer> <C-q> <Cmd>call ddu#ui#ff#do_action('quit')<CR>
  inoremap <buffer> <C-q> <Cmd>call ddu#ui#ff#do_action('quit')<CR>

  nnoremap <buffer> <CR> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  inoremap <buffer> <CR> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  nnoremap <buffer> <C-j> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
  inoremap <buffer> <C-j> <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>

  if &filetype ==# 'ddu-ff-filter'
    inoremap <buffer> <C-p> <Cmd>call ddu#ui#ff#execute("call cursor(line('.')-1,0)<Bar>redraw")<CR>
    inoremap <buffer> <C-n> <Cmd>call ddu#ui#ff#execute("call cursor(line('.')+1,0)<Bar>redraw")<CR>
  endif
endfunction

How to reproduce the problem from neovim/Vim startup (Required!)

  1. Open ddu-ui by :Open
  2. Enter query (optional)
  3. Move cursor
  4. Quit with <C-q>
  5. Reopen ddu-ui

Screenshot (if possible)

Upload the log messages by :redir and :message (if errored)

If search results is zero, the item window remains, when filtering items while displaying the preview window.

**Warning: i solved the problem with minimal init.vim and no
Reproduction Instructions. **

Problem Summary.

Conditions

  1. neovim
  2. set split to 'floating'
  3. preview window is displayed.

Problem

Only the preview window disappears and the cursor moves to the original window while the item window remains.

Expected.

Either of the following

  1. the preview window and the window for the item remain and the cursor remains in the item window. 2.
  2. the item window disappears and the cursor moves to the original window.

Environment Information

  • ddu-ui-ff version (SHA1):

36a0c44

  • denops.vim version (SHA1):

d7a15615f86830e9464c30f761a3911f619b38b3

  • deno version (deno -V output):

deno 1.32.5

  • OS:

ArchLinux

  • neovim/Vim :version output:

NVIM v0.9.0
Build type: Release
LuaJIT 2.1.0-beta3

Provide a minimal init.vim/vimrc without plugin manager (Required!)


set runtimepath^=~/.vim runtimepath+=~/.vim/after
set runtimepath+=~/.vim/plugged/denops.vim
set runtimepath+=~/.vim/plugged/ddu.vim
set runtimepath+=~/.vim/plugged/ddu-ui-ff
set runtimepath+=~/.vim/plugged/ddu-source-file
set runtimepath+=~/.vim/plugged/ddu-kind-file
set runtimepath+=~/.vim/plugged/ddu-filter-matcher_substring

let &packpath = &runtimepath

" keybind
nmap <silent> ;f <Cmd>call ddu#start(#{
    \   ui: 'ff',
    \   uiParams: #{
    \       ff: #{
    \         split: "floating",
    \         highlights: {'selected': 'Statement'},
    \         winCol: &columns/8 ,
    \         winWidth: 15 ,
    \         winRow: &lines/8,
    \         winHeight: 10 ,
    \         autoAction: {'name':'preview'},
    \         startFilter : v:false
    \       },
    \   },
    \   sourceOptions : #{
    \       _: #{
    \           matchers: ['matcher_substring']
    \       }
    \   },
    \   sources: [#{
    \      name: "file",
    \   }]})<CR>

augroup DduKeyMap
  au!
  autocmd FileType ddu-ff call s:ddu_my_settings()
  autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
augroup End

function! s:ddu_my_settings() abort
  " global 
  nnoremap <buffer><silent> <Esc>
    \ <Cmd>call ddu#ui#do_action('quit')<CR>

  nnoremap <buffer><silent> i
    \ <Cmd>call ddu#ui#do_action('openFilterWindow')<CR>

  nnoremap <buffer><silent> p
    \ <Cmd>call ddu#ui#do_action('preview')<CR>
endfunction

function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR> <Esc><Cmd>close<CR>
  inoremap <buffer><silent> <Esc> <Esc><Cmd>close<CR>

  nnoremap <buffer><silent> <CR> <Cmd>close<CR>
  nnoremap <buffer><silent> <Esc> <Cmd>close<CR>
endfunction

How to reproduce from neovim/Vim startup (Required!)

  1. exec ddu#start
  2. Open filter window
  3. do preview action
  4. search for elements not in item

screenshot (if possible)

ddu-ui-ff-nvim-issue.mp4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.