kristijanhusak / vim-dadbod-completion

Database autocompletion powered by https://github.com/tpope/vim-dadbod
MIT License
653 stars 27 forks source link
autocompletions coc database deoplete deoplete-source neovim neovim-plugin nvim-cmp vim vim-dadbod vim-plugin vim-plugins

vim-dadbod-completion

Database auto completion powered by vim-dadbod.

Supports:

coc-db

Video presentation by TJ:

Video presentation by TJ

Install

Dependencies:

For coc.nvim

:CocInstall coc-db

For deoplete, completion-nvim, nvim-compe, ddc and omnifunc, install it with your favorite plugin manager.

Plug 'tpope/vim-dadbod'
Plug 'kristijanhusak/vim-dadbod-ui' "Optional
Plug 'kristijanhusak/vim-dadbod-completion'

" For built in omnifunc
autocmd FileType sql setlocal omnifunc=vim_dadbod_completion#omni

" hrsh7th/nvim-compe
let g:compe.source.vim_dadbod_completion = v:true

" hrsh7th/nvim-cmp
  autocmd FileType sql,mysql,plsql lua require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} })

" Shougo/ddc.vim
call ddc#custom#patch_filetype(['sql', 'mysql', 'plsql'], 'sources', 'dadbod-completion')
call ddc#custom#patch_filetype(['sql', 'mysql', 'plsql'], 'sourceOptions', {
\ 'dadbod-completion': {
\   'mark': 'DB',
\   'isVolatile': v:true,
\ },
\ })

Configuration using lazy.nvim with vim-dadbod-ui

return {
  {
    'kristijanhusak/vim-dadbod-ui',
    dependencies = {
      { 'tpope/vim-dadbod', lazy = true },
      { 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true },
    },
    cmd = {
      'DBUI',
      'DBUIToggle',
      'DBUIAddConnection',
      'DBUIFindBuffer',
    },
    init = function()
      -- Your DBUI configuration
      vim.g.db_ui_use_nerd_fonts = 1
    end,
  },
  { -- optional saghen/blink.cmp completion source
    'saghen/blink.cmp',
    opts = {
      sources = {
        -- add vim-dadbod-completion to your completion providers
        completion = {
          enabled_providers = { "lsp", "path", "snippets", "buffer", "dadbod" },
        },
        providers = {
          dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" },
        },
      },
    },
  }
}

Features

How it works

Settings

Default mark for completion items is [DB]. To change it, add this to vimrc:

let g:vim_dadbod_completion_mark = 'MYMARK'

Commands

This plugin caches the database tables and columns to leverage maximum performance. If you want to clear the cache at any point just run:

:DBCompletionClearCache

Todo