• This repository has been archived on 08/Jan/2024
  • Stars
    star
    161
  • Rank 233,470 (Top 5 %)
  • Language
    Lua
  • Created over 4 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Treesitter source for completion-nvim and more

asciicast

Gitter

completion-treesitter

Treesitter source and more for completion-nvim.

This is a basic completion source based on the treesitter api of neovim.

Since v0.1 this only contains a completion source. All other features are being migrated to nvim-treesitter

Quickstart

This plugin requires the following plugins:

Install them like this (vim-plugged or your favorite package manager):

Plug 'haorenW1025/completion-nvim'
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'nvim-treesitter/completion-treesitter'

Completion

Configure completion-nvim as you desire, you can use the ts source for lua, python and c filetypes, for example :

" Configure the completion chains
let g:completion_chain_complete_list = {
			\'default' : {
			\	'default' : [
			\		{'complete_items' : ['lsp', 'snippet']},
			\		{'mode' : 'file'}
			\	],
			\	'comment' : [],
			\	'string' : []
			\	},
			\'vim' : [
			\	{'complete_items': ['snippet']},
			\	{'mode' : 'cmd'}
			\	],
			\'c' : [
			\	{'complete_items': ['ts']}
			\	],
			\'python' : [
			\	{'complete_items': ['ts']}
			\	],
			\'lua' : [
			\	{'complete_items': ['ts']}
			\	],
			\}

" Use completion-nvim in every buffer
autocmd BufEnter * lua require'completion'.on_attach()

Open a buffer of a supported filetype and enjoy !

Using parsers

From nvim-treesitter

To install a parser run the following command in nvim for the supported language of your choice :

:TSInstall lua

From source

To use a parser for one of the supported languages clone the parser sources (the python parser for example) :

git clone https://github.com/tree-sitter/tree-sitter-python.git

Then compile it :

gcc -o parser.so -shared src/parser.c src/scanner.cc -I./src -lstdc++

An move it to neovim config files :

mv parser.so ~/.config/nvim/parser/{lang}.so

Where {lang} is the filetype corresponding to the parser's language (python in above example).

Examples usages

Some examples usages of the plugin, not only for completion. All of these functionnalities are available for all supported filetypes.

Goals

The aim of the plugin is mainly to fiddle a bit with treesitter, and a nice way is completion, but there is many things we can do with it.

There is still some goals for the plugin:

  • As hackable as possible
  • As fast as possible