SlideShare a Scribd company logo
1 of 20
Download to read offline
deoplete
~ The dark powered auto
completion plugin for neovim ~
Presented by Shougo
Introduction
● This slide is English for the foreign people
● But the talk is Japanese for the Japanese
people
● The slide may contain spiritual topic or
Chuunibyou( 厨二病 )
● These are feature
Self-introduction
● Shougo
● I am called as “ 暗黒美夢王” .
● Pronounces it “Uncock Vim Awe”.
● Some people call me as “the sith lord of Vim
plugins”.
● Text editor is all of my life
● My previous works: neocomplete,
neobundle, neosnippet, unite, vimfiler,
vimshell, etc...
Today's topic
● Deoplete plugin
https://github.com/Shougo/deoplete.nvim
● It is the first asynchronous completion plugin
for neovim
● You don't have to be annoying the completion
blocks!
● If you don't know about neovim, please read
my previous presentation.
http://www.slideshare.net/Shougo/lets-talk-about-
neovim
Why deoplete is created?
● My most concern is to block Vim in the
completion
● if_lua is faster than VimL. But it also blocks
● Tarruda(neovim founder) said
Wow!!
Note: It is free translation
But
● The hell has been started from
here...
Needed works (1/4)
● Python3 support
– No if_lua support in neovim yet
– I don't want to create new
Python2 plugin in 2015
– I have added if_python3 feature
based on if_python2 in neovim
– Thanks the neovim reviewers!
Needed works (2/4)
● complete() bug fix
– It is needed for deoplete, but it is
not tested well
– Thanks the vim-jp and neovim
reviewers!
Needed works (3/4)
● v:completed_item and
completeopt patches
– It is needed for auto completion
plugins
– Thanks the vim-jp and neovim
reviewers!
Needed works (4/4)
● Understand remote plugin
features
– Less documentation
– Less examples
– Hard to debug
Deoplete original features (1/3)
● Asynchronous call omnifunc
– But the omnifunc which move
cursors(side effect) is not
supported
– For example: htmlcomplete
– Synchronous call omnifunc is
also available like neocomplete
Deoplete original features (2/3)
● Python3 sources instead of VimL
– You don't have to write VimL
– You can wrap VimL functions in
the source
Deoplete original features (3/3)
● Better buffer source
– You don't have to know the line is
cached if it is not large files
– The lines are analyzed like built-in
buffer completion
– You must wait to complete in
editing large files, but it is non
blocking!
Sources
● Built-in
– buffer, tag, file, omni, member,
dictionary
● External
– Neco-ghc, neosnippet, neco-
look, neco-vim, neco-syntax,
vim-racer, vimshell
Installation
1.Clone Deoplete source
$ git clone https://github.com/Shougo/deoplete.nvim
2.Install neovim
$ git clone https://github.com/neovim/neovim
3.Install neovim-python3
$ (sudo) pip3 install neovim
Demo
● Edit eval.c (22000 lines) with
deoplete + neovim
● Edit eval.c (22000 lines) with
neocomplete + Vim
● “Behold Vimmers, this is THE real
asynchronous!”
FAQ (1)
● Is Deoplete is faster than neocomplete?
● I think neocomplete is faster because of
if_lua power
● The asynchronous is to skip the completion
if your input is too fast
● So, you should use deoplete in newer
machine
FAQ (2)
● Deoplete does support any of languages?
● Deoplete can call omnifunc automatically
● Or you can create the source for it
● Why don't you create the source?
● :help deoplete-create-source
In the future
● Deoplete version 1.0 will be released after
the presentation!
● After version 1.0:
– More customization
– Improve file source behavior
– Implement more features in neocomplete
● Rewrite unite.vim for neovim(VimConf2016
presentation)
Fin
● If you think “Deoplete is nice!”, please
support neovim project by money or code.
https://salt.bountysource.com/teams/neovi
m
https://github.com/neovim/neovim/issues
● Deoplete depends on the neovim's
features!

More Related Content

What's hot

Vim+cscope+ctags+taglist
Vim+cscope+ctags+taglistVim+cscope+ctags+taglist
Vim+cscope+ctags+taglist
Picker Weng
 
WebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the BrowserWebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the Browser
Priyanka Aash
 

What's hot (20)

Tmux and Tmuxinator ~ Rise of the Machines
Tmux and Tmuxinator  ~ Rise of the MachinesTmux and Tmuxinator  ~ Rise of the Machines
Tmux and Tmuxinator ~ Rise of the Machines
 
Dev Tooling for your Technohipster Startup using aws, docker, tmux, vim & ope...
Dev Tooling for your Technohipster Startup using aws, docker, tmux, vim & ope...Dev Tooling for your Technohipster Startup using aws, docker, tmux, vim & ope...
Dev Tooling for your Technohipster Startup using aws, docker, tmux, vim & ope...
 
WebAssembly: In a Nutshell
WebAssembly: In a NutshellWebAssembly: In a Nutshell
WebAssembly: In a Nutshell
 
Getting started with Ruby on Rails
Getting started with Ruby on RailsGetting started with Ruby on Rails
Getting started with Ruby on Rails
 
Puphpet
PuphpetPuphpet
Puphpet
 
Quick & Easy Dev Environments with Vagrant
Quick & Easy Dev Environments with VagrantQuick & Easy Dev Environments with Vagrant
Quick & Easy Dev Environments with Vagrant
 
Working Remotely (via SSH) Rocks!
Working Remotely (via SSH) Rocks!Working Remotely (via SSH) Rocks!
Working Remotely (via SSH) Rocks!
 
Vim - for newbies, by Roy Osherove
Vim - for newbies, by Roy OsheroveVim - for newbies, by Roy Osherove
Vim - for newbies, by Roy Osherove
 
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
Playframework Hamburg Meetup #1 - Reactive persistence with Play 2 & postgres...
 
Debugging Drupal with Xdebug
Debugging Drupal with XdebugDebugging Drupal with Xdebug
Debugging Drupal with Xdebug
 
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan HoracekOpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
 
Async js
Async jsAsync js
Async js
 
Building a REST API with Node.js and MongoDB
Building a REST API with Node.js and MongoDBBuilding a REST API with Node.js and MongoDB
Building a REST API with Node.js and MongoDB
 
Vim+cscope+ctags+taglist
Vim+cscope+ctags+taglistVim+cscope+ctags+taglist
Vim+cscope+ctags+taglist
 
Local development environment through virtualisation
Local development environment through virtualisationLocal development environment through virtualisation
Local development environment through virtualisation
 
WebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the BrowserWebAssembly: A New World of Native Exploits on the Browser
WebAssembly: A New World of Native Exploits on the Browser
 
Type script新鮮貨報你知
Type script新鮮貨報你知Type script新鮮貨報你知
Type script新鮮貨報你知
 
GraalVMに入門してみた
GraalVMに入門してみたGraalVMに入門してみた
GraalVMに入門してみた
 
Contributing to ansible
Contributing  to ansibleContributing  to ansible
Contributing to ansible
 
Debugging and Profiling PHP Applications
Debugging and Profiling PHP ApplicationsDebugging and Profiling PHP Applications
Debugging and Profiling PHP Applications
 

Viewers also liked

Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
Shougo
 

Viewers also liked (7)

neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 

Similar to deoplete: The dark powered auto completion plugin for neovim

Useful Vim Plugins
Useful Vim PluginsUseful Vim Plugins
Useful Vim Plugins
anveo
 
Puppet managed loadays
Puppet managed loadaysPuppet managed loadays
Puppet managed loadays
loadays
 
Frequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last timeFrequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last time
Andreas Jung
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFs
Docker, Inc.
 
How to write patches for Vim
How to write patches for VimHow to write patches for Vim
How to write patches for Vim
k-takata
 
Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014
th0masr
 

Similar to deoplete: The dark powered auto completion plugin for neovim (20)

Useful Vim Plugins
Useful Vim PluginsUseful Vim Plugins
Useful Vim Plugins
 
Puppet managed loadays
Puppet managed loadaysPuppet managed loadays
Puppet managed loadays
 
Lessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In ProductionLessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In Production
 
Puppet managed loadays
Puppet managed loadaysPuppet managed loadays
Puppet managed loadays
 
Makefile for python projects
Makefile for python projectsMakefile for python projects
Makefile for python projects
 
Frequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last timeFrequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last time
 
Introduction to containers
Introduction to containersIntroduction to containers
Introduction to containers
 
Installing Software, Part 3: Command Line
Installing Software, Part 3: Command LineInstalling Software, Part 3: Command Line
Installing Software, Part 3: Command Line
 
Composer Helpdesk
Composer HelpdeskComposer Helpdesk
Composer Helpdesk
 
Tips and Tricks for Increased Development Efficiency
Tips and Tricks for Increased Development EfficiencyTips and Tricks for Increased Development Efficiency
Tips and Tricks for Increased Development Efficiency
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primer
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
 
Let's Talk Locks!
Let's Talk Locks!Let's Talk Locks!
Let's Talk Locks!
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFs
 
How to write patches for Vim
How to write patches for VimHow to write patches for Vim
How to write patches for Vim
 
Development and deployment with composer and kite
Development and deployment with composer and kiteDevelopment and deployment with composer and kite
Development and deployment with composer and kite
 
Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014
 
Followup Session in Asia-Pacific Geant4 Workshop and Training Course 2009 hel...
Followup Session in Asia-Pacific Geant4 Workshop and Training Course 2009 hel...Followup Session in Asia-Pacific Geant4 Workshop and Training Course 2009 hel...
Followup Session in Asia-Pacific Geant4 Workshop and Training Course 2009 hel...
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
AntiVirus Evasion Reconstructed - Veil 3.0
AntiVirus Evasion Reconstructed - Veil 3.0AntiVirus Evasion Reconstructed - Veil 3.0
AntiVirus Evasion Reconstructed - Veil 3.0
 

Recently uploaded

Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
mbmh111980
 

Recently uploaded (20)

Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdf
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdf
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabber
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by Design
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
 
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfMicrosoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
 
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
 
Naer Toolbar Redesign - Usability Research Synthesis
Naer Toolbar Redesign - Usability Research SynthesisNaer Toolbar Redesign - Usability Research Synthesis
Naer Toolbar Redesign - Usability Research Synthesis
 

deoplete: The dark powered auto completion plugin for neovim

  • 1. deoplete ~ The dark powered auto completion plugin for neovim ~ Presented by Shougo
  • 2. Introduction ● This slide is English for the foreign people ● But the talk is Japanese for the Japanese people ● The slide may contain spiritual topic or Chuunibyou( 厨二病 ) ● These are feature
  • 3. Self-introduction ● Shougo ● I am called as “ 暗黒美夢王” . ● Pronounces it “Uncock Vim Awe”. ● Some people call me as “the sith lord of Vim plugins”. ● Text editor is all of my life ● My previous works: neocomplete, neobundle, neosnippet, unite, vimfiler, vimshell, etc...
  • 4. Today's topic ● Deoplete plugin https://github.com/Shougo/deoplete.nvim ● It is the first asynchronous completion plugin for neovim ● You don't have to be annoying the completion blocks! ● If you don't know about neovim, please read my previous presentation. http://www.slideshare.net/Shougo/lets-talk-about- neovim
  • 5. Why deoplete is created? ● My most concern is to block Vim in the completion ● if_lua is faster than VimL. But it also blocks ● Tarruda(neovim founder) said Wow!! Note: It is free translation
  • 6. But ● The hell has been started from here...
  • 7. Needed works (1/4) ● Python3 support – No if_lua support in neovim yet – I don't want to create new Python2 plugin in 2015 – I have added if_python3 feature based on if_python2 in neovim – Thanks the neovim reviewers!
  • 8. Needed works (2/4) ● complete() bug fix – It is needed for deoplete, but it is not tested well – Thanks the vim-jp and neovim reviewers!
  • 9. Needed works (3/4) ● v:completed_item and completeopt patches – It is needed for auto completion plugins – Thanks the vim-jp and neovim reviewers!
  • 10. Needed works (4/4) ● Understand remote plugin features – Less documentation – Less examples – Hard to debug
  • 11. Deoplete original features (1/3) ● Asynchronous call omnifunc – But the omnifunc which move cursors(side effect) is not supported – For example: htmlcomplete – Synchronous call omnifunc is also available like neocomplete
  • 12. Deoplete original features (2/3) ● Python3 sources instead of VimL – You don't have to write VimL – You can wrap VimL functions in the source
  • 13. Deoplete original features (3/3) ● Better buffer source – You don't have to know the line is cached if it is not large files – The lines are analyzed like built-in buffer completion – You must wait to complete in editing large files, but it is non blocking!
  • 14. Sources ● Built-in – buffer, tag, file, omni, member, dictionary ● External – Neco-ghc, neosnippet, neco- look, neco-vim, neco-syntax, vim-racer, vimshell
  • 15. Installation 1.Clone Deoplete source $ git clone https://github.com/Shougo/deoplete.nvim 2.Install neovim $ git clone https://github.com/neovim/neovim 3.Install neovim-python3 $ (sudo) pip3 install neovim
  • 16. Demo ● Edit eval.c (22000 lines) with deoplete + neovim ● Edit eval.c (22000 lines) with neocomplete + Vim ● “Behold Vimmers, this is THE real asynchronous!”
  • 17. FAQ (1) ● Is Deoplete is faster than neocomplete? ● I think neocomplete is faster because of if_lua power ● The asynchronous is to skip the completion if your input is too fast ● So, you should use deoplete in newer machine
  • 18. FAQ (2) ● Deoplete does support any of languages? ● Deoplete can call omnifunc automatically ● Or you can create the source for it ● Why don't you create the source? ● :help deoplete-create-source
  • 19. In the future ● Deoplete version 1.0 will be released after the presentation! ● After version 1.0: – More customization – Improve file source behavior – Implement more features in neocomplete ● Rewrite unite.vim for neovim(VimConf2016 presentation)
  • 20. Fin ● If you think “Deoplete is nice!”, please support neovim project by money or code. https://salt.bountysource.com/teams/neovi m https://github.com/neovim/neovim/issues ● Deoplete depends on the neovim's features!