Files opened from denite grep buffer sometimes open in defx buffer instead of buffer with a file.
Files opened from denite grep buffer always open in active buffer.
:checkhealth
health#nvim#check
========================================================================
## Configuration
- OK: no issues found
## Performance
- OK: Build type: Release
## Remote Plugins
- OK: Up to date
## terminal
- INFO: key_backspace (kbs) terminfo entry: key_backspace=\177
- INFO: key_dc (kdch1) terminfo entry: key_dc=\E[3~
- INFO: $COLORTERM='rxvt'
health#provider#check
========================================================================
## Clipboard (optional)
- OK: Clipboard tool found: xsel
## Python 2 provider (optional)
- INFO: `g:python_host_prog` is not set. Searching for python2 in the environment.
- INFO: Multiple python2 executables found. Set `g:python_host_prog` to avoid surprises.
- INFO: Executable: /usr/bin/python2
- INFO: Other python executable: /bin/python2
- INFO: Python2 version: 2.7.15
- INFO: python2-neovim version: 0.3.0
- OK: Latest python2-neovim is installed: 0.3.0
## Python 3 provider (optional)
- INFO: `g:python3_host_prog` is not set. Searching for python3 in the environment.
- INFO: Multiple python3 executables found. Set `g:python3_host_prog` to avoid surprises.
- INFO: Executable: /usr/bin/python3
- INFO: Other python executable: /bin/python3
- INFO: Python3 version: 3.7.0
- INFO: python3-neovim version: 0.3.0
- OK: Latest python3-neovim is installed: 0.3.0
## Ruby provider (optional)
- INFO: Ruby: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
- INFO: Host: ~/.gem/ruby/2.5.0/bin/neovim-ruby-host
- OK: Latest "neovim" gem is installed: 0.7.1
## Node.js provider (optional)
- INFO: Node.js: v10.12.0
- INFO: Neovim node.js host: /usr/lib/node_modules/neovim/bin/cli.js
- OK: Latest "neovim" npm/yarn package is installed: 4.2.1
health#defx#check
========================================================================
## defx.nvim
- OK: has("python3") was successful
- OK: Python 3.6.1+ was successful
Provide a minimal init.vim/vimrc with less than 50 lines (Required!)
set runtimepath+=~/.local/share/nvim/plugged/defx.nvim/
set runtimepath+=~/.local/share/nvim/plugged/denite.nvim/
nnoremap <C-P> :Defx -toggle -split=vertical -winwidth=40 .<CR>
nnoremap <C-F> :Denite -post-action=suspend -auto-resume grep:::
The reproduce ways from neovim/Vim starting (Required!)
- Before starting neovim prepare a directory with 4 files containing 'test', e.g.
'mkdir /tmp/defx; for f in /tmp/defx/t{1,2,3,4}; do echo "test" > $f; done
- Hit
<C-p>
to open Defx in project drawer mode
- Switch to right buffer (
<C-w>l
)
- cd to your directory with files from 0 -
:cd /tmp/defx
<C-f>test<CR>
to open denite grep using 'test'
<CR>
- t4.txt opens in edit buffer - OK
- Open next file:
<C-w>j<C-g><CR>
- t3.txt opens in edit buffer - OK
- Open next file:
<C-w>j<C-g><CR>
- t2.txt opens in Defx buffer - NOT OK
Screen shot (if possible)
Upload the log file
https://gist.githubusercontent.com/azhi/55a0af02829a0f508a129cd08ba907d1/raw/6a346ee089d2680004e802b46c58db33a58bdef6/log_py3_rplugin
It would be nice to have a way to jump to the current file or folder. I often edit a file and I want to create another in the same folder or just explore the folder where the current file is.
How can I show/toggle hidden files from within defx?
When using the following mappings to delete a (or mutiple) file or directory:
nnoremap <silent><buffer><expr> d defx#do_action('remove_trash')
nnoremap <silent><buffer><expr> d defx#do_action('remove')
the cursor jumps to the top of the defx window after deleting the candidate/s. I expect the cursor to keep its position (as in vimfiler).
Create a directory with the following empty files: AAA, bbb, BBB, aaa
. Vimfiler will correctly sort these filenames as AAA aaa BBB bbb
whereas defx will sort them as AAA BBB aaa bbb
. I believe that defx should follow vimfiler's behaviour.
When starting defx on unsaved files, the unsaved changes will be discarded. That is unfriendly.
Therefore, it would be better to let users choose.
It will act like this:
- :Defx
- unsaved changes. discard? (y / n / s:save and go):
- :Defx -save-force
- :Defx -no-save-force
I think his option is quite necessary.
For example, I want to open defx buffer vertically, and set winwidth
option to 35
, and set columns
to mark:icons:filename:git:size
, then I cannot see git:size
without fnamewidth
option, because the file
column is too wide.
SpaceVim/SpaceVim#1261
I hope vimfiler provide a option to set the text. we can use a funcref as the value of the func. and call this func with one argv (path). then return the text which will be used as title.
Warning: I will close the issue without the minimal init.vim and the reproduction instructions.
Problems summary
Files and folders that are part of set wildignore
cannot be opened.
Expected
Expected to be able to open it even if it's ignored.
Environment Information
-
defx version(SHA1): latest
-
OS: Linux mint 19
-
neovim/Vim version: NVIM v0.3.2-dev
-
:checkhealth
or :CheckHealth
result(neovim only):
health#defx#check
========================================================================
## defx.nvim
- OK: has("python3") was successful
- OK: Python 3.6.1+ was successful
Provide a minimal init.vim/vimrc with less than 50 lines (Required!)
" Your minimal init.vim/vimrc
set runtimepath+=~/path/to/defx.nvim/
autocmd FileType defx call s:defx_my_settings()
function! s:defx_my_settings() abort
nnoremap <buffer><expr> <CR> defx#do_action('open')
endfunction
"It happened for me with node_modules, can be anything.
set wildignore=*my_ignored_folder/**
The reproduce ways from neovim/Vim starting (Required!)
- run
:!mkdir my_ignored_folder && echo "testing" > my_ignored_folder/test.txt
- run
:Defx
- navigate to folder
my_ignored_folder
- Try to open
test.txt
with Enter
With min vimrc provided i don't get any errors, but in my full setup i get this:
Hello! I love your defx.nvim!
I'm happy if you add the functions of modifing file names
.
(before)
- /Users/callmekohei/tmp/Foo/
2018-08-15-foo
2018-08-15-bar.txt
2018-08-15-baz.txt
(after)
- /Users/callmekohei/tmp/Foo/
foo
bar.txt
baz.txt
Thanks :-)
Warning: I will close the issue without the minimal init.vim and the reproduction instructions.
Problems summary
Defx is slower than nerdtree, is this normal?
Expected
I am fed up with nerdtree support for windows.
Then I try defx, I only compared the time to open defx and nerdtree, just to evaluate from subjective feelings.
Environment Information
-
defx version(SHA1): latest
-
OS: win10
-
neovim/Vim version: vim8.1
-
:checkhealth
or :CheckHealth
result(neovim only):
Provide a minimal init.vim/vimrc with less than 50 lines (Required!)
The reproduce ways from neovim/Vim starting (Required!)
Generate a logfile if appropriate
Screen shot (if possible)
Upload the log file
Warning: I will close the issue without the minimal init.vim and the reproduction instructions.
Problems summary
On Windows10, Defx does not show dot files example .gitignore
.
Expected
Defx does not show dot files .gitignore
, .editorconfig
etc.
I want find and edit dot files via defx, example .gitignore
, .stylelintrc.json
or another.
I tried :call defx#do_action('toggle_ignored_files')
.
But change nothing, is it no relation 'toggle_ignored_files' between dot files?
Environment Information
-
defx version(SHA1):
d50b5ad
-
OS:
Windows 10 Pro 1803 OS build 17134.407
-
neovim/Vim version: NeoVim 0.3.1
-
:checkhealth
or :CheckHealth
result(neovim only):
health#defx#check
========================================================================
## defx.nvim
- OK: has("python3") was successful
- OK: Python 3.6.1+ was successful
health#nvim#check
========================================================================
## Configuration
- OK: no issues found
## Performance
- OK: Build type: RelWithDebInfo
## Remote Plugins
- OK: Up to date
health#provider#check
========================================================================
## Clipboard (optional)
- OK: Clipboard tool found: win32yank
## Python 2 provider (optional)
- WARNING: No Python interpreter was found with the neovim module. Using the first available for diagnostics.
- ERROR: Python provider error
- ADVICE:
- provider/pythonx: Could not load Python 2:
python2 not found in search path or not executable.
python2.7 not found in search path or not executable.
python2.6 not found in search path or not executable.
C:\Users\akiya\AppData\Local\Programs\Python\Python37-32\python is Python 3.7 and cannot provide Python 2.
- INFO: Executable: Not found
## Python 3 provider (optional)
- INFO: Using: g:python3_host_prog = "C:\Users\akiya\AppData\Local\Programs\Python\Python37-32\python"
- INFO: Executable: C:\Users\akiya\AppData\Local\Programs\Python\Python37-32\python
- INFO: Python3 version: 3.7.0
- INFO: python-neovim version: 0.2.6
(outdated; from ~\AppData\Local\Programs\Python\Python37-32\lib\site-packages\neovim)
- WARNING: Latest python-neovim is NOT installed: 0.3.1
## Ruby provider (optional)
- WARNING: `ruby` and `gem` must be in $PATH.
- ADVICE:
- Install Ruby and verify that `ruby` and `gem` commands work.
## Node.js provider (optional)
- ERROR: Command timed out: node -v
- INFO: Node.js:
- WARNING: Missing "neovim" npm (or yarn) package.
- ADVICE:
- Run in shell: npm install -g neovim
- Run in shell (if you use yarn): yarn global add neovim
Screen shot (if possible)
Upload the log file
Currently i have this autocmd to show defx buffer if i start neovim with the directory (nvim .
):
autocmd VimEnter * if isdirectory(expand(printf('#%s:p', expand('<abuf>')))) | call DefxOpen() | endif
Is there a better way to do it?
I am sorry Shougo but I would like to say your default key mappings of choices were horrible for vimfiler. I know you can change it but it's not a great experience for first-time users. Like, who would have thought to press Shift + K to make a new directory? There is no mnemonic and it's not intuitional. So, if you don't mind, can we discuss this before its implementation? They should be easy to remember and well-thought. For example, cf
, [c]reate [f]ile
or cd
, [c]reate [d]irectory
something like that. Although this can be more intuitive with dd
, cut file or directory under cursor
and yy
, copy file or directory under cursor
.
Problems summary
Path completion doesn't work on Windows because
s:expand() returns paths with "/" as separator where glob() returns paths with "\"
|
let arglead = s:expand(a:arglead) |
|
" Path names completion. |
|
let files = filter(glob(a:arglead . '*', v:true, v:true), |
|
\ 'stridx(tolower(v:val), tolower(arglead)) == 0') |
Expected
Path completion on Windows
Warning: I will close the issue without the minimal init.vim and the reproduction instructions.
Problems summary
Path completion doesn't work when argument has "~", ".." and so on on both Windows and Ubuntu.
Expected
Path completion should work even argument has "~", ".."
One of the solution idea I wrote here. #29
Environment Information
-
defx version(SHA1):
c83f524
-
OS:
Windows 10
Ubuntu 16.04
-
neovim/Vim version:
Vim 8.1.467
-
:checkhealth
or :CheckHealth
result(neovim only):
Provide a minimal init.vim/vimrc with less than 50 lines (Required!)
call plug#begin('~/.vim/plugged')
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
Plug 'Shougo/defx.nvim'
call plug#end()
The reproduce ways from neovim/Vim starting (Required!)
:Defx ~/<Press-Tab>
With vimfiler
I can use the following to open ranger file manager at the current directory:
if executable('ranger')
nmap <buffer>ge <Plug>(vimfiler_cd_vim_current_dir)
\ <C-u>:call <SID>TmuxSplitCmd('ranger')<CR>
endif
where the TmuxSplitCmd
function is:
function! s:TmuxSplitCmd(cmd)
if empty('$TMUX')
return
endif
silent execute '!tmux split-window -p 30 -c '. getcwd() . ' ' . a:cmd
endfunction
I'm trying to do the same with defx:
if s:is_linux && executable('ranger')
nmap <silent><buffer><expr>ge defx#do_action('change_vim_cwd',
\ "call <SID>TmuxSplitCmd('ranger')")
endif
but I get the following error
Error detected while processing function defx#_do_action[6]..defx#util#rpcrequest[15].._defx_do_action[1]..remote#define#request:
line 2:
error caught in request handler '/home/pedro/git-repos/private/dotfiles/vim/bundle/.cache/init.vim/.dein/rplugin/python3/defx:function:_defx_do_action [['change_vim_cwd', ["call <SNR>1_TmuxSplitCmd('ranger')"], {
'columns': 'mark:filename:type', 'auto_cd': False, 'prev_bufnr': 7, 'resume': False, 'listed': False, 'new': False, 'fnamewidth': 100, 'direction': '', 'winheight': 0, 'profile': False, 'search': '', 'buffer_name
': 'default', 'winwidth': 0, 'split': 'no', 'cursor': 22, 'toggle': False}]]':
Traceback (most recent call last):
File "/home/pedro/git-repos/private/dotfiles/vim/bundle/.cache/init.vim/.dein/rplugin/python3/defx/__init__.py", line 41, in do_action
self._rplugin.do_action(args)
File "/home/pedro/git-repos/private/dotfiles/vim/bundle/.cache/init.vim/.dein/rplugin/python3/defx/rplugin.py", line 37, in do_action
view.do_action(args[0], args[1], args[2])
File "/home/pedro/git-repos/private/dotfiles/vim/bundle/.cache/init.vim/.dein/rplugin/python3/defx/view.py", line 321, in do_action
ret = action.do_action(self, defx, action_name, context)
File "/home/pedro/git-repos/private/dotfiles/vim/bundle/.cache/init.vim/.dein/rplugin/python3/defx/action.py", line 38, in do_action
action.func(view, defx, context)
File "/home/pedro/git-repos/private/dotfiles/vim/bundle/.cache/init.vim/.dein/rplugin/python3/defx/action.py", line 74, in _change_vim_cwd
view._vim.command(f'silent {command} {defx._cwd}')
File "/home/pedro/.local/lib/python3.7/site-packages/pynvim/api/nvim.py", line 287, in command
return self.request('nvim_command', string, **kwargs)
File "/home/pedro/.local/lib/python3.7/site-packages/pynvim/api/nvim.py", line 182, in request
res = self._session.request(name, *args, **kwargs)
File "/home/pedro/.local/lib/python3.7/site-packages/pynvim/msgpack_rpc/session.py", line 102, in request
raise self.error_wrapper(err)
pynvim.api.nvim.NvimError: b'Vim(call):E488: Trailing characters'
Error detected while processing function defx#_do_action[6]..defx#util#rpcrequest:
line 15:
E171: Missing :endif
When starting defx on unsaved files, the unsaved changes will be discarded. That is unfriendly.
Therefore, it would be better to let users choose.
It will act like this:
- :Defx
- unsaved changes. discard? (y / n / s:save and go):
- :Defx -force-save
- :Defx -force
Using the following minimal init.vim
file:
set nocompatible
let $DOTVIM = expand('$HOME/.config/nvim')
set runtimepath+=$DOTVIM/bundle/repos/github.com/Shougo/defx.nvim
set splitright
set splitbelow
call defx#custom#option('_', {
\ 'winwidth': 40,
\ 'split': 'vertical',
\ 'direction': 'topleft',
\ })
augroup ps_defx
au!
au FileType defx call s:defx_settings()
augroup END
function! s:defx_settings()
nnoremap <silent><buffer><expr> q defx#do_action('quit')
endfunction
Do:
i) Open nvim and run :vsplit
and put the cursor on the right window (with <C-W>l
)
ii) Run :Defx
and then q
to quit
iii) The cursor is now on the left window when it should be on the right one
I think defx.nvim needs screenshot in README.
If you have good screenshots for defx.nvim README, can you add it in this issue?
Consider the following minimal init.nvim:
set nocompatible
let $DOTVIM = expand('$HOME/.config/nvim')
set runtimepath+=$DOTVIM/bundle/repos/github.com/Shougo/defx.nvim
set runtimepath+=$DOTVIM/bundle/repos/github.com/Shougo/vimfiler
filetype plugin indent on
nnoremap <silent> ,xf :Defx -split=vertical -winwidth=40
\ -columns=mark:filename:type:size -show-ignored-files
\ -direction=topleft `expand('%:p:h')` -search=`expand('%:p')`<CR>
Now open nvim and run ,xf
. You can see in the GIF that the file size is not shown in the window and you need to scroll to the right to actually see it. On the other hand on vimfiler this works correctly (i.e the contents of window are adjusted to fit in the window width)
Warning: I will close the issue without the minimal init.vim and the reproduction instructions.
Problems summary
Command for vertical split not working anymore:
:Defx -split=vertical -winwidth=50 -direction=topleft -columns=icons:filename:type
It's just opening full window.
Expected
Open a sidebar as it worked previously
Environment Information
-
defx version(SHA1): 8cb96ac
-
OS: ArchLinux
-
neovim/Vim version: NeoVim 0.3.2
-
:checkhealth
or :CheckHealth
result(neovim only):
health#defx#check
========================================================================
## defx.nvim
- OK: has("python3") was successful
- OK: Python 3.6.1+ was successful
Provide a minimal init.vim/vimrc with less than 50 lines (Required!)
" Your minimal init.vim/vimrc
set runtimepath+=~/path/to/defx.nvim/
The reproduce ways from neovim/Vim starting (Required!)
:Defx -split=vertical -winwidth=50 -direction=topleft -columns=icons:filename:type
Extra
Bad commit: bf78fd8
In this issue i reported a problem where i couldn't open a file that is part of wildignore #24.
You fixed it by setting wildignore to empty list temporarily, and returning it back to the old value.
That fixed the issue, but caused another problems.
For example, i'm using vim-gutentags to auto generate tags file. It also respects the wildignore when generating tags.
I noticed that when i open a project file from defx,gutentags generates a lot of bad tags that should be ignored. When i run command to do it again, everything works fine.
I figured out that gutentags generates tags on bufread, and at that moment wildignore is empty because of defx.
It should be implemented after tree support.
Warning: I will close the issue without the minimal init.vim and the reproduction instructions.
Problems summary
I would like to have the cursor moved to the second line in defx buffer instead of the first line when I open a directory with l
like the current behaviour
- Sometimes the cursor is in the second line though but I always want the cursor go to the second line because put cursor at the first line (current opened directory in defx window) seem useless.
What I have tried so far:
nnoremap <silent><buffer><expr> l defx#do_action('open_directory') <Bar> 'j'
nnoremap <silent><buffer><expr> l defx#do_action('open_directory') <Bar> execute 'normal j'
but it does not work.
Expected
Be able to move the cursor to the second line after open a directory.
Environment Information
-
defx version(SHA1): latest
-
OS: Mojave
-
neovim/Vim version: neovim 0.3.4
-
:checkhealth
or :CheckHealth
result(neovim only):
health#defx#check
========================================================================
## defx.nvim
- OK: has("python3") was successful
- OK: Python 3.6.1+ was successful
health#coc#check
========================================================================
- OK: Environment check passed
- OK: Service started
health#nvim#check
========================================================================
## Configuration
- OK: no issues found
## Performance
- OK: Build type: Release
LuaJIT
## Remote Plugins
- OK: Up to date
## terminal
- INFO: key_backspace (kbs) terminfo entry: key_backspace=^H
- INFO: key_dc (kdch1) terminfo entry: key_dc=\E[3~
- INFO: $COLORTERM='truecolor'
## tmux
- OK: escape-time: 0ms
- INFO: $TERM: screen-256color
health#provider#check
========================================================================
## Clipboard (optional)
- OK: Clipboard tool found: pbcopy
## Python 2 provider (optional)
- INFO: Using: g:python_host_prog = "/usr/local/bin/python2"
- INFO: Executable: /usr/local/bin/python2
- INFO: Python version: 2.7.15
- INFO: pynvim version: 0.3.1
- OK: Latest pynvim is installed.
## Python 3 provider (optional)
- INFO: Using: g:python3_host_prog = "/usr/local/bin/python3"
- INFO: Executable: /usr/local/bin/python3
- INFO: Python version: 3.7.2
- INFO: pynvim version: 0.3.1
- OK: Latest pynvim is installed.
## Ruby provider (optional)
- INFO: Ruby: ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin18]
- INFO: Host: /Users/sand/.rbenv/shims/neovim-ruby-host
- OK: Latest "neovim" gem is installed: 0.8.0
## Node.js provider (optional)
- INFO: Node.js: v11.6.0
- INFO: Neovim node.js host: /Users/sand/.config/yarn/global//node_modules/neovim/bin/cli.js
- OK: Latest "neovim" npm/yarn package is installed: 4.2.1
Provide a minimal init.vim/vimrc with less than 50 lines (Required!)
" defx.nvim {{{
nnoremap <silent> <F3> :Defx `expand('%:p:h')` -search=`expand('%:p')`
\ -columns=git:mark:filename:type
\ -toggle
\ -split=vertical
\ -winwidth=50
\ -direction=botright<CR>
" }}}
" ftplugin/defx.vim
nnoremap <silent><buffer><expr> l defx#do_action('open_directory')
The reproduce ways from neovim/Vim starting (Required!)
- Press
F3
- Hit
j/k
to navigate to a directory
- Hit
l
to open directory
- The cursor is at the first line
Warning: I will close the issue without the minimal init.vim and the reproduction instructions.
Problems summary
First i use :Defx
open the defx. The syntax highlight not work. But when I :Defx
again it work.
Every time i want syntax highlight, I need to command twice.
I found that when vim-precious
plugin enable. Defx syntax highligh will not work (See minimal vimrc file).
Environment Information
-
defx version(SHA1): lastest
-
OS: macos
-
neovim/Vim version: NVIM v0.3.1
-
:checkhealth
or :CheckHealth
result(neovim only):
## defx.nvim
health#defx#check
- OK: has("python3") was successful
- OK: Python 3.6.1+ was successful
Provide a minimal init.vim/vimrc with less than 50 lines (Required!)
et $nvimrc=fnamemodify(expand('<sfile>'), ':h')
let s:dein_dir = expand($nvimrc.'/dein')
if &runtimepath !~# '/dein.vim'
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" Auto Download
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
let g:dein#install_max_processes = 16
let g:dein#install_message_type = 'none'
if !dein#load_state(s:dein_dir)
finish
endif
call dein#begin(s:dein_dir, expand('<sfile>'))
if !has('nvim')
call dein#add('roxma/nvim-yarp')
call dein#add('roxma/vim-hug-neovim-rpc')
endif
call dein#add('Shougo/defx.nvim')
call dein#add('osyo-manga/vim-precious')
call dein#end()
call dein#save_state()
if has('vim_starting') && dein#check_install()
call dein#install()
endif
The reproduce ways from neovim/Vim starting (Required!)
Use above vimrc setting then:Defx
twice
Screen shot (if possible)
:Defx
no syntax highlight
Upload the log file
https://gist.githubusercontent.com/amikai/5fbdf649a64c3e2e8441b039b4d254dc/raw/ac6417845cfa7d18bd4488bfbc02d680ecd200ec/gistfile1.txt
Recommend Projects
-
-
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
An Open Source Machine Learning Framework for Everyone
-
The Web framework for perfectionists with deadlines.
-
A PHP framework for web artisans
-
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
Some thing interesting about web. New door for the world.
-
A server is a program made to process requests and deliver data to clients.
-
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Some thing interesting about visualization, use data art
-
Some thing interesting about game, make everyone happy.
-
Recommend Org
-
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Open source projects and samples from Microsoft.
-
Google โค๏ธ Open Source for everyone.
-
Alibaba Open Source for everyone
-
Data-Driven Documents codes.
-
China tencent open source team.
-
Jobs
Jooble