Nvim plugin updates
This commit is contained in:
parent
6fa3f737e2
commit
231ff0946e
12 changed files with 209 additions and 1 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -79,3 +79,6 @@
|
||||||
[submodule "nvim/.config/nvim/pack/bundle/opt/gruvbox-baby"]
|
[submodule "nvim/.config/nvim/pack/bundle/opt/gruvbox-baby"]
|
||||||
path = nvim/.config/nvim/pack/bundle/opt/gruvbox-baby
|
path = nvim/.config/nvim/pack/bundle/opt/gruvbox-baby
|
||||||
url = https://github.com/luisiacc/gruvbox-baby
|
url = https://github.com/luisiacc/gruvbox-baby
|
||||||
|
[submodule "nvim/.config/nvim/pack/bundle/opt/vim-openscad"]
|
||||||
|
path = nvim/.config/nvim/pack/bundle/opt/vim-openscad
|
||||||
|
url = https://github.com/sirtaj/vim-openscad
|
||||||
|
|
4
nvim/.config/nvim/pack/bundle/opt/deoplete-abook/.flake8
Normal file
4
nvim/.config/nvim/pack/bundle/opt/deoplete-abook/.flake8
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[flake8]
|
||||||
|
exclude = .git,__pycache__,autoload,doc
|
||||||
|
max-complexity = 10
|
||||||
|
max-line-length = 100
|
21
nvim/.config/nvim/pack/bundle/opt/deoplete-abook/LICENSE
Normal file
21
nvim/.config/nvim/pack/bundle/opt/deoplete-abook/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 Filip Szymański
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
19
nvim/.config/nvim/pack/bundle/opt/deoplete-abook/README.md
Normal file
19
nvim/.config/nvim/pack/bundle/opt/deoplete-abook/README.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# deoplete-abook
|
||||||
|
|
||||||
|
`Deoplete-abook` offers asynchronous completion of email addresses in [Mutt](http://www.mutt.org/) using [abook](http://abook.sourceforge.net/) contacts stored in a plain text database.
|
||||||
|
Inspired by [Greg Hurrell's](https://github.com/wincent) Vim screencast [#58](https://www.youtube.com/watch?v=BNnSjJOpXDk).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
To install `deoplete-abook`, use your favorite [Neovim](https://neovim.io/) plugin manager.
|
||||||
|
|
||||||
|
#### Using [vim-plug](https://github.com/junegunn/vim-plug)
|
||||||
|
|
||||||
|
```vim
|
||||||
|
Plug 'Shougo/deoplete.nvim', {'do': ':UpdateRemotePlugins'}
|
||||||
|
Plug 'fszymanski/deoplete-abook'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
For more information, see `:help deoplete_abook.txt`.
|
|
@ -0,0 +1,35 @@
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
" Copyright (c) 2017 Filip Szymański. All rights reserved.
|
||||||
|
" Use of this source code is governed by an MIT license that can be
|
||||||
|
" found in the LICENSE file.
|
||||||
|
|
||||||
|
function! s:check_deoplete() abort
|
||||||
|
if !empty(globpath(&runtimepath, 'plugin/deoplete.vim'))
|
||||||
|
call health#report_ok('Deoplete plugin is installed')
|
||||||
|
else
|
||||||
|
call health#report_error('Deoplete plugin is not installed', [
|
||||||
|
\ 'The deoplete plugin can be found here: ' .
|
||||||
|
\ 'https://github.com/Shougo/deoplete.nvim'
|
||||||
|
\ ])
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:check_addressbook() abort
|
||||||
|
let datafile = get(g:, 'deoplete#sources#abook#datafile',
|
||||||
|
\ expand('~/.abook/addressbook'))
|
||||||
|
if filereadable(datafile)
|
||||||
|
call health#report_ok('Addressbook file was found: ' . datafile)
|
||||||
|
else
|
||||||
|
call health#report_error('Addressbook file was not found',
|
||||||
|
\ ['help: deoplete_abook.txt'])
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! health#deoplete_abook#check() abort
|
||||||
|
call health#report_start('Dependencies')
|
||||||
|
call s:check_deoplete()
|
||||||
|
call s:check_addressbook()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" vim: ts=2 et sw=2
|
|
@ -0,0 +1,61 @@
|
||||||
|
*deoplete_abook.txt* Deoplete source for abook contacts
|
||||||
|
|
||||||
|
Author: Filip Szymański <filip.szymanski@zoho.eu>
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTENTS *deoplete-abook-contents*
|
||||||
|
|
||||||
|
1. Introduction |deoplete-abook-introduction|
|
||||||
|
2. Configuration |deoplete-abook-configuration|
|
||||||
|
3. License |deoplete-abook-license|
|
||||||
|
4. Bugs |deoplete-abook-bugs|
|
||||||
|
5. Contributing |deoplete-abook-contributing|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTRODUCTION *deoplete-abook-introduction*
|
||||||
|
|
||||||
|
This deoplete[1] source offers asynchronous completion of email addresses
|
||||||
|
in Mutt[2] using abook[3] contacts stored in a plain text database.
|
||||||
|
|
||||||
|
Note: Inspired by Greg Hurrell's[4] Vim screencast #58[5].
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONFIGURATION *deoplete-abook-configuration*
|
||||||
|
|
||||||
|
*g:deoplete#sources#abook#datafile*
|
||||||
|
Set this option to use an alternative addressbook file.
|
||||||
|
>
|
||||||
|
let g:deoplete#sources#abook#datafile = expand('~/path/to/addressbook')
|
||||||
|
<
|
||||||
|
Default: '~/.abook/addressbook'
|
||||||
|
Type: string
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
LICENSE *deoplete-abook-license*
|
||||||
|
|
||||||
|
MIT
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
BUGS *deoplete-abook-bugs*
|
||||||
|
|
||||||
|
If you find a bug please create an issue on GitHub.
|
||||||
|
|
||||||
|
https://github.com/fszymanski/deoplete-abook/issues
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTRIBUTING *deoplete-abook-contributing*
|
||||||
|
|
||||||
|
Think you can make this plugin better? Awesome. Fork it on GitHub and create
|
||||||
|
a pull request.
|
||||||
|
|
||||||
|
https://github.com/fszymanski/deoplete-abook
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
[1] https://github.com/Shougo/deoplete.nvim
|
||||||
|
[2] http://www.mutt.org/
|
||||||
|
[3] http://abook.sourceforge.net/
|
||||||
|
[4] https://github.com/wincent
|
||||||
|
[5] https://www.youtube.com/watch?v=BNnSjJOpXDk
|
||||||
|
|
||||||
|
vim: tw=78 ts=8 ft=help norl
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,64 @@
|
||||||
|
# Copyright (c) 2017 Filip Szymański. All rights reserved.
|
||||||
|
# Use of this source code is governed by an MIT license that can be
|
||||||
|
# found in the LICENSE file.
|
||||||
|
|
||||||
|
import configparser
|
||||||
|
import os.path
|
||||||
|
import re
|
||||||
|
|
||||||
|
from .base import Base # pylint: disable=E0401
|
||||||
|
|
||||||
|
|
||||||
|
# pylint: disable=W0201,W0613
|
||||||
|
class Source(Base):
|
||||||
|
COLON_PATTERN = re.compile(r':\s?')
|
||||||
|
COMMA_PATTERN = re.compile(r'.+,\s?')
|
||||||
|
HEADER_PATTERN = re.compile(r'^(Bcc|Cc|From|Reply-To|To):(\s?|.+,\s?)')
|
||||||
|
|
||||||
|
def __init__(self, vim):
|
||||||
|
super().__init__(vim)
|
||||||
|
|
||||||
|
self.__cache = []
|
||||||
|
|
||||||
|
self.filetypes = ['mail']
|
||||||
|
self.mark = '[abook]'
|
||||||
|
self.matchers = ['matcher_length', 'matcher_full_fuzzy']
|
||||||
|
self.min_pattern_length = 0
|
||||||
|
self.name = 'abook'
|
||||||
|
|
||||||
|
def on_init(self, context):
|
||||||
|
self.__datafile = context['vars'].get('deoplete#sources#abook#datafile',
|
||||||
|
os.path.expanduser('~/.abook/addressbook'))
|
||||||
|
if not os.path.isfile(self.__datafile):
|
||||||
|
self.vim.err_write('[deoplete-abook] No such file: {0}\n'.format(self.__datafile))
|
||||||
|
|
||||||
|
def on_event(self, context):
|
||||||
|
self.__make_cache()
|
||||||
|
|
||||||
|
def gather_candidates(self, context):
|
||||||
|
if self.HEADER_PATTERN.search(context['input']) is not None:
|
||||||
|
if not self.__cache:
|
||||||
|
self.__make_cache()
|
||||||
|
|
||||||
|
return self.__cache
|
||||||
|
|
||||||
|
def get_complete_position(self, context):
|
||||||
|
colon = self.COLON_PATTERN.search(context['input'])
|
||||||
|
comma = self.COMMA_PATTERN.search(context['input'])
|
||||||
|
return max(colon.end() if colon is not None else -1,
|
||||||
|
comma.end() if comma is not None else -1)
|
||||||
|
|
||||||
|
def __make_cache(self):
|
||||||
|
addressbook = configparser.ConfigParser()
|
||||||
|
addressbook.read(self.__datafile)
|
||||||
|
for section in addressbook.sections():
|
||||||
|
emails = addressbook.get(section, 'email', fallback=None)
|
||||||
|
if emails is not None:
|
||||||
|
name = addressbook.get(section, 'name', fallback=None)
|
||||||
|
for email in emails.split(','):
|
||||||
|
if name is not None:
|
||||||
|
email = '"{0}" <{1}>'.format(name, email)
|
||||||
|
|
||||||
|
self.__cache.append({'word': email})
|
||||||
|
|
||||||
|
# vim: ts=4 et sw=4
|
|
@ -1 +1 @@
|
||||||
Subproject commit 9fff379c17729d4643c9ed3b2e0494e2a7bbafe8
|
Subproject commit dd4e62324ab1607aefdbeddc776489cf9826ee6e
|
1
nvim/.config/nvim/pack/bundle/opt/vim-openscad
Submodule
1
nvim/.config/nvim/pack/bundle/opt/vim-openscad
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 11ed125209e2277d439cf6d0340c6fca263cb09b
|
Loading…
Add table
Add a link
Reference in a new issue