Git Product home page Git Product logo

tabnine's Introduction

TabNine

This is the repository for the backend of TabNine, the all-language autocompleter. There are no source files here because the backend is closed source.

You can make feature requests by filing an issue. You are also welcome to make pull requests for changes to the configuration files.

languages.yml determines which file extensions are considered part of the same language. (For example, identifiers from .c files will be suggested in .h files.)

language_tokenization.json determines how languages are tokenized. For example, identifiers can contain dashes in Lisp, but not in Java.

If your feature request is specific to a particular editor's TabNine client, please file an issue in one of these repositories:

You may be interested in these TabNine clients written by third parties:

NOTE: Codota is not validating any code in those plugins and is not responsible for them by any means.

Supported Architectures

  • x86_64-unknown-linux-musl
  • x86_64-apple-darwin
  • aarch64-apple-darwin
  • i686-pc-windows-gnu
  • x86_64-pc-windows-gnu

tabnine's People

Contributors

amircodota avatar avnerbarr avatar bilucodota avatar boaz-codota avatar dimacodota avatar dragonizedpizza avatar get-me-power avatar gitmensch avatar helibloks avatar nimrod-codota avatar sersorrel avatar shougo avatar shuxiao9058 avatar yahave avatar yanir-codota avatar yonip23 avatar yotamfromcodota avatar zxqfl 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  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  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  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

tabnine's Issues

bingo does not work

I have tested bingo language server instead of go-langserver.
But it does not work with TabNine.
https://github.com/saibing/bingo

@zxqfl Can you test it?

My configuration.

[language.go]
command = "bingo"
args = ["-mode", "stdio"]
install = [["go", "get", "-u", "github.com/saibing/bingo"]]
  • It works with vim-lsp
  • "go-langserver" works with TabNine
  • bingo needs Go 1.11+

TabNine terminates immediately on NixOS

From TommyX12/company-tabnine#5.

How is this supposed to work?

~/TabNine/1.0.7/x86_64-unknown-linux-gnu $ chmod +x TabNine
~/TabNine/1.0.7/x86_64-unknown-linux-gnu $ ./TabNine
~/TabNine/1.0.7/x86_64-unknown-linux-gnu $

OS info:

 - system: `"x86_64-linux"`
 - host os: `Linux 4.14.87, NixOS, 18.03.133389.b551f89e256 (Impala)`
 - multi-user?: `yes`
 - sandbox: `no`
 - version: `nix-env (Nix) 2.0.4`
 - channels(matt): `"nixos-18.03.133236.8edf566ee40, unstable-19.03pre152634.218ce4de508"`
 - channels(root): `"nixos-18.03.133389.b551f89e256, unstable-19.03pre162390.86344b3a52b"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/nixpkgs`

Disable with certain file extensions or specific files

I use my text editor for both editing code and taking notes in .txt files. I'd love a feature where TabNine suggestions could be turned off when editing certain file extensions e.g. .txt or in specific files, e.g. notes.txt.

P.S. Thank you for the amazing product. Bought it right away.

Support nested Git repositories

root
|
|-- subproj1
|
|-- subproj2
    |
    |-- subsubproj1
    |
    |-- subsubproj2

Currently TabNine will stop at the first .git it finds, but it should continue to try to find a .tabnine_root.

Provide some central source for binaries so I can write my own Vim plugin

The Vim plugin is based on YouCompleteMe, which I can't use because it conflicts with my other autocompleting plugin (deoplete). I would happily write my own plugin (deoplete source) but the main thing preventing me from doing that is no central source for binaries; instead they're included in the git repo (which also means you have to download every version of every binary for every platform when you install the plugin.)

Could there be some documentation provided for update.tabnine.com?

TabNine consumes excessive CPU for extended periods

I'm using TabNine 1.0.9 in SublimeText 3.1.1 on OS X 10.13.6.

Much of the time, the TabNine process shows that it's using 100-120% CPU. The rest of the time it bounces between 0% and 40% CPU. I'm not sure what is causing this; I thought it might be related to backup activity causing a lot of filesystem events, but now I'm not sure.

Assuming this is not expected behavior, I'm happy to help troubleshoot this.

I should add that I really like TabNine's functionality, so I've been putting up with the high CPU except when running on battery.

High memory and CPU usage

While working on rustc, I noticed TabNine and rls regularly consuming 100% CPU each for quite a while. I usually only notice it when I switch to a different virtual desktop when I build rustc, so it's not only while actually working in vim, but also(?) a while after I stop changing things.

Additionally, the memory usage for TabNine is huge. Currently top shows:

23316 doener 20 0 9964048 4,9g 0 S 0,0 31,2 74:41.38 TabNine

The process was started about 86 hours ago.

deoplete-tabnine + semantic completion questions

I have enabled semantic completion in deoplete + deoplete-tabnine environment.
But it seems does not generate candidates in python files.
semantic completion is already enabled and pyls is executable.

Can you test it?

Disable auto-update

I would like to update the binary via command only rather than auto-updating as described in the TabNine FAQ. I don't want any external requests to be made except by command.

TabNine wants to access my contacts and calendar

I recently got these two messages telling me that TabNine wants to access my contacts and calendar.
That sounds a bit creepy if you ask me, could you explain to me why TabNine would want to do that?

screenshot 2018-12-06 at 07 29 40
screenshot 2018-12-06 at 07 29 52

No semantic completion backends work.

I've tried several completion backends and all result in the same popup:

image

I have tried JavaScript with the default settings, with flow pre-installed and removing the install command, removing the install command and using /usr/local/bin/flow as an absolute path for command. I've tried hie in a stack repo, in both subdir files and Setup.hs at the project root. I've also run hie and flow alone and they run fine if started manually.

I'd like to debug this, but without stdout/stderr logged somewhere useful I don't know how to debug this short of trying to ptrace the binary, but don't have time right this moment.

Edit: This is on MacOS, within MacVim using the YCM fork vim plugin.

[Feature Request] CSS/LESS/SASS/CSS-in-JS Semantic completion

First of all, just wanted to say that I'm loving the product, keep up the good work! The moment you released semantic completion I instantly bought a license!

It would be nice to get semantic completion for CSS so that I don't have to manually trigger my editor's IntelliSense to get suggestions.

Reason support for .re files

Hi! I'm a maintainer of Reason. Currently, tabnine seems to use ocaml-language-server. For Reason, we now have a new language server more suited to it here.

cc @jaredly

Thanks!

Monthly support option (e.g. Patreon)

I'm using TabNine daily at work and would like to support TabNine's continued development/maintenance. I like your current business model of one-time payment, but it'd be nice for those who wish to continue to support you beyond the one-time payment to have the option of doing so.

Thank you.

Any plan to release a roadmap?

Hi there! First I would like to thank you for your wonderful auto-completer. I've been trying it out for the last couple of days and it works well. Is there any plan to release a roadmap or backlog for the development of this plugin?

blog does not validate

w3 feed validator reports following:

This feed does not validate.

line 1, column 14: XML parsing error: <unknown>:1:14: not well-formed (invalid token) [help]

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-125818377- ...
              ^
In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendation.

Feeds should not be served with the "text/html" media type [help]

https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Ftabnine.com%2Fblog

Completion conflicts with auto-close/auto-pairs plugins

When writing JavaScript I frequently get completion offers like someMethod('. While this may be useful to someone who's editor does not manage pairs of delimiter characters for them, using this in NeoVim equipped with plugins to manage these is a PITA (as this suggestion always is above someMethod). Is there a way to disable this or configure some characters to be ignored?

IMHO, automated management of quote/parentheses pairs in editors and IDEs is so ubiquitous these days that this behaviour should just be removed completely or at least it should require an explicit option turned on to behave like this. YMMV.

Deactivation after editor restart

First of all: TabNine is awesome, immediately purchased it after using it for 5 minutes.
I have one small problem though: Every time I restart Sublime (3180) I have to enter my license again because TabNine seemingly forgets that it is already activated.

Sublime Console output:

reloading plugin TabNine.TabNine
reloading settings Packages/TabNine/TabNine.sublime-settings
TabNine: starting version 0.4.7
Exception while interacting with TabNine subprocess: [Errno 32] Broken pipe
TabNine: starting version 0.11.2

Displayed warning:

image

With kind regards,
Philip Trauner

TabNine results yield duplicate letters

I'm using TabNine latest, nvim latest, with the deoplete plugin. macOS latest as well. I have semantic completion enabled with solargraph (also latest) as the backend (stdio). My TabNine.toml, .solargraph.yml, and .vimrc files are located here: https://github.com/jaydorsey/dotfiles

I see an issue where the TabNine results show an extra/duplicate letter as in the screenshot below:

image

If I press enter/return it enters the text as present (with the extra character).

Stopping & restarting nvim makes the problem go away, but not for very long.

I don't remember it doing this when I first enabled semantic completion, but I might be mistaken. It seems to have manifested over the last update or two. I've seen it happen with one other user but they have nearly the same setup I have.

Things I've tried that didn't work:

  • Changing the num_server_instances (1 - 4) in TabNine.toml
  • Changing the synchronous_timeout_ms (100-500) in TabNine.toml
  • Updating/clearing/downloading the solargraph-cores
  • Deleting my TabNine.toml file (in hopes that semantic completion would be disabled)
  • Trying a nearly empty vimrc file (also ran PlugClean & restarted nvim after emptying) (below)
  • Trying a nearly empty vimrc, and an empty TabNine.toml file

My mostly empty vimrc file:

set nocompatible  " We don't want vi compatibility.
set termguicolors " Enable true color support
set t_Co=256

let g:python3_host_prog = '/usr/local/bin/python3'
let g:python_host_prog = '/usr/local/bin/python'

call plug#begin()

Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
Plug 'tbodt/deoplete-tabnine', { 'do': './install.sh' }
let g:deoplete#enable_at_startup = 1
let g:deoplete#ignore_sources = get(g:,'deoplete#ignore_sources',{})
" Disable tags file as a source
let g:deoplete#ignore_sources.ruby = ['tag']

" Use <tab> key to step into the selections
inoremap <expr><tab>  pumvisible() ? "\<c-n>" : "\<tab>"
call plug#end()

This does appear to affect things like trying to type TabNine::restart, even when I don't select rrestart as an autocompletion (I can't call restart by typing)

Other things:

  • I can open up a new nvim instance, aside from one that's been impacted by this, and everything works fine
  • Restarting nvim completely makes the issue go away for a short period of time (minutes)
  • I would try disabling semantic completion, but I don't see a TabNine::disable_sem command?
  • It never does this duplication with any more than the first 2 letters from what I can tell

My next step is to try to revert back to an older version of TabNine to see if I could isolate it vs solargraph but I wanted to see if anyone else was having similiar issues or could recommend a setting I haven't looked at.

Why the indexing limit?

Even the Premium version of TabNine is advertised with a limit of "Up to 15 MB indexed".

I understand that for most smaller projects that's sufficient. But looking at the sources of Blender or the Linux kernel as bigger, but still reasonable projects it is evident that this restriction is somewhat too small.

This makes me think that there are some hidden performance problems when running on such large code bases. For example, will the code completion persist any indexing it does to disk?

Since the free version supports only 200 KB of files I can hardly do any testing. Do you have any solid benchmarks to show where the completion runs on larger projects?

Allow ignoring certain folders/extensions

For many projects, .gitignore is not enough, we also want to explicitly ignore certain folders of autogenerated code while keeping them in version control.

For example, in our project we have:

client/
    js/
        vendor/
             ...       // we want to ignore everything in here, but keep it in our VCS

server/
    build/
        ...            // we also want to ignore all autogenerated code in here, while keeping it in our VCS
    src/
        ...            // but we do want to autocomplete any files from here

Suggested Fix:
Allow adding a .tabnineignore file, just like .gitignore, .dockerignore, .npmignore, etc.
This can be excluded from VCS or added, it's up to the user.

Large log file

Moving tbodt/deoplete-tabnine#18 to the appropriate place.

The log appears to be out of control:

~/.config/nvim/plugged/deoplete-tabnine master*
❯ ll tabnine.log
-rw-r--r--  1   941M Jan 31 13:27 tabnine.log

It seems to be mostly polluted by the following message:

~/.config/nvim/plugged/deoplete-tabnine master* 27s
❯ tail tabnine.log
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)
[2019-01-31][13:27:12][server::pipeline::walk][ERROR] Walk error: No such file or directory (os error 2)

I'm not sure if it's related to the CPU usage problems, but TabNine has been spiking to 200-300% cpu util without any apparent need (in fact often vim is actually suspended through C-Z).

Potentially related to #24?

Have TabNine delegate requests for a lanaguage server

TabNine can launch a language server for semantic completion. But language servers do much more than mere completion - they provide linting, code navigation, documentation, code actions etc.

If I launch a language server I want access to all these things, and many LSP clients provide them, but if TabNine is the one launching the server I can only use it for completion - and nothing else.

Is it possible to have TabNine simply delegate messages from the client to the language server and from the language server to the client? If it gets completion requests/responses it does its magic, but everything else it should just let pass through. That way I can just set my LSP client to launch TabNine and get completion from TabNine+language server and everything else from the language server.

FreeBSD support

It would be great if there's TabNine binary for FreeBSD platform. I mainly work on macOS and on FreeBSD, and I think it would be great if I could use TabNine on both platforms.

Thanks!

Detect name conventions

The extension should be able to determine the most common name convention used in the workspace and prioritize suggesting those. Currently it only seems to prioritize snake_case, even though all of my files use camelCase.

screenshot 2018-12-11 at 13 53 42

do not autocomplete certain file types?

There's a blacklist feature in autocomplete-plus for example. I'd like to turn suggestions off for text files like .txt, .md, etc

I have .tabnineignore set up but it seems like though it's not indexing those files it's still providing suggestions

Support ncm2

Deoplete appears to be supported but NCM2 is popular as well.

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.