Compare commits

..

4 commits

Author SHA1 Message Date
pull[bot]
c1e451b5ce
Merge pull request #241 from dmitmel/master
[pull] master from dmitmel:master
2021-04-23 22:29:43 +00:00
Dmytro Meleshko
660316fb14 [scripts/leveldb-dump] support setting separate key and value encodings 2021-04-23 21:38:37 +03:00
Dmytro Meleshko
44ba053b7c [nvim] correctly highlight class names in declarations 2021-04-23 21:17:50 +03:00
Dmytro Meleshko
4d42627b83 [nvim] use tcomment.vim instead of vim-commentary 2021-04-23 17:41:41 +03:00
4 changed files with 39 additions and 16 deletions

View file

@ -375,8 +375,9 @@
" }}} " }}}
" Python {{{ " Python {{{
hi! link pythonBuiltinType Type hi! link pythonClass Type
hi! link pythonExClass Type hi! link pythonBuiltinType pythonClass
hi! link pythonExClass pythonClass
hi! link pythonBuiltinObj pythonFunction hi! link pythonBuiltinObj pythonFunction
hi! link pythonClassVar Variable hi! link pythonClassVar Variable
" }}} " }}}

View file

@ -14,7 +14,11 @@
endif endif
Plug 'Raimondi/delimitMate' Plug 'Raimondi/delimitMate'
Plug 'tpope/vim-repeat' Plug 'tpope/vim-repeat'
Plug 'tpope/vim-commentary' " if g:vim_ide
Plug 'tomtom/tcomment_vim'
" else
" Plug 'tpope/vim-commentary'
" endif
Plug 'tpope/vim-surround' Plug 'tpope/vim-surround'
Plug 'Yggdroot/indentLine' Plug 'Yggdroot/indentLine'
Plug 'idbrii/detectindent' Plug 'idbrii/detectindent'

View file

@ -233,6 +233,18 @@ set commentstring=//%s
noremap <leader>s s noremap <leader>s s
noremap <leader>S S noremap <leader>S S
" Remove the mappings that I won't use
let g:tcomment_maps = 0
nmap <silent> gc <Plug>TComment_gc
nmap <silent> gcc <Plug>TComment_gcc
nmap <silent> gC <Plug>TComment_gcb
" The default block commenting mapping refuses to work on a single line, as
" a workaround I give it another empty one to work with.
nmap <silent> gCC m'o<Esc>''<Plug>TComment_gcb+
xnoremap <silent> gc :TCommentMaybeInline<CR>
xnoremap <silent> gC :TCommentBlock<CR>
" }}} " }}}

View file

@ -8,36 +8,42 @@ from sys import stdout
import base64 import base64
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument( encoding_names = ["utf8", "base16", "base32", "base64", "base85"]
"--encode", parser.add_argument("--encoding", "-e", choices=encoding_names, default="utf8")
"-e", parser.add_argument("--key-encoding", choices=encoding_names, default=None)
choices=["utf8", "base16", "base32", "base64", "base85"], parser.add_argument("--value-encoding", choices=encoding_names, default=None)
default="utf8",
)
parser.add_argument("db_path", type=Path) parser.add_argument("db_path", type=Path)
cli_args = parser.parse_args() cli_args = parser.parse_args()
def bytes_to_json(b: bytes) -> Union[str, list[int]]: def bytes_to_json(b: bytes, encoding: str) -> Union[str, list[int]]:
if cli_args.encode == "utf8": if encoding == "utf8":
try: try:
return b.decode("utf8") return b.decode("utf8")
except UnicodeDecodeError: except UnicodeDecodeError:
return list(b) return list(b)
elif cli_args.encode == "base16": elif encoding == "base16":
return base64.b16encode(b).decode("ascii") return base64.b16encode(b).decode("ascii")
elif cli_args.encode == "base32": elif encoding == "base32":
return base64.b32encode(b).decode("ascii") return base64.b32encode(b).decode("ascii")
elif cli_args.encode == "base64": elif encoding == "base64":
return base64.b64encode(b).decode("ascii") return base64.b64encode(b).decode("ascii")
elif cli_args.encode == "base85": elif encoding == "base85":
return base64.b85encode(b).decode("ascii") return base64.b85encode(b).decode("ascii")
else: else:
assert False assert False
key_encoding: str = cli_args.key_encoding or cli_args.encoding
value_encoding: str = cli_args.value_encoding or cli_args.encoding
db = plyvel.DB(str(cli_args.db_path), create_if_missing=False) db = plyvel.DB(str(cli_args.db_path), create_if_missing=False)
with db.iterator() as iterator: with db.iterator() as iterator:
for key, value in iterator: for key, value in iterator:
json.dump({"key": bytes_to_json(key), "value": bytes_to_json(value)}, stdout) json.dump(
{
"key": bytes_to_json(key, key_encoding),
"value": bytes_to_json(value, value_encoding),
},
stdout,
)
stdout.write("\n") stdout.write("\n")