mirror of
https://github.com/keanuplayz/dotfiles.git
synced 2024-08-15 02:33:12 +00:00
Merge branch 'dmitmel-master'
This commit is contained in:
commit
5ab08f0f0b
8 changed files with 137 additions and 27 deletions
63
nvim/autoload/dotfiles/indent_motion.vim
Normal file
63
nvim/autoload/dotfiles/indent_motion.vim
Normal file
|
@ -0,0 +1,63 @@
|
|||
" Based on <https://github.com/kana/vim-textobj-indent/blob/deb76867c302f933c8f21753806cbf2d8461b548/autoload/textobj/indent.vim>
|
||||
" A motion for moving over enclosing indentation blocks. Primarily intended
|
||||
" for reverse-engineering CrossCode.
|
||||
|
||||
function dotfiles#indent_motion#run(direction)
|
||||
let l:cursor_linenr = line(".")
|
||||
let l:max_linenr = line("$")
|
||||
|
||||
let l:retry = 0
|
||||
while l:retry <# 2
|
||||
let l:retry += 1
|
||||
|
||||
let l:base_linenr = l:cursor_linenr
|
||||
let l:base_indent = 0
|
||||
while 1 <=# l:base_linenr && l:base_linenr <=# l:max_linenr
|
||||
let l:base_indent = dotfiles#indent_motion#indent_level_of(l:base_linenr)
|
||||
if l:base_indent >=# 0
|
||||
break
|
||||
endif
|
||||
let l:base_linenr += a:direction
|
||||
endwhile
|
||||
|
||||
let l:target_linenr = l:base_linenr
|
||||
|
||||
let l:curr_linenr = l:base_linenr + a:direction
|
||||
let l:prev_indent = l:base_indent
|
||||
while 1 <=# l:curr_linenr && l:curr_linenr <=# l:max_linenr
|
||||
let l:indent = dotfiles#indent_motion#indent_level_of(l:curr_linenr)
|
||||
|
||||
if l:indent >=# 0
|
||||
if l:indent <# l:base_indent
|
||||
break
|
||||
else
|
||||
let l:target_linenr = l:curr_linenr
|
||||
endif
|
||||
elseif l:base_indent ==# 0 && l:prev_indent ==# 0
|
||||
break
|
||||
endif
|
||||
|
||||
let l:prev_indent = l:indent
|
||||
let l:curr_linenr += a:direction
|
||||
endwhile
|
||||
|
||||
if l:target_linenr ==# l:cursor_linenr
|
||||
let l:cursor_linenr += a:direction
|
||||
if 1 <=# l:cursor_linenr && l:cursor_linenr <=# l:max_linenr
|
||||
continue
|
||||
endif
|
||||
endif
|
||||
|
||||
break
|
||||
endwhile
|
||||
|
||||
execute "normal! " . l:target_linenr . "G^"
|
||||
endfunction
|
||||
|
||||
" <https://github.com/kana/vim-textobj-indent/blob/deb76867c302f933c8f21753806cbf2d8461b548/autoload/textobj/indent.vim#L120-L127>
|
||||
function dotfiles#indent_motion#indent_level_of(linenr)
|
||||
if getline(a:linenr) ==# ""
|
||||
return -1
|
||||
endif
|
||||
return indent(a:linenr)
|
||||
endfunction
|
6
nvim/autoload/dotfiles/utils.vim
Normal file
6
nvim/autoload/dotfiles/utils.vim
Normal file
|
@ -0,0 +1,6 @@
|
|||
function dotfiles#utils#array_remove_element(array, element)
|
||||
let l:index = index(a:array, a:element)
|
||||
if l:index >= 0
|
||||
call remove(a:array, l:index)
|
||||
endif
|
||||
endfunction
|
9
nvim/plugin/dotfiles/indent_motion.vim
Normal file
9
nvim/plugin/dotfiles/indent_motion.vim
Normal file
|
@ -0,0 +1,9 @@
|
|||
for [s:plug_mapping, s:direction, s:user_mapping] in [["prev", -1, "("], ["next", 1, ")"]]
|
||||
let s:plug_mapping = "<Plug>dotfiles_indent_motion_".s:plug_mapping
|
||||
for s:mode in ["n", "v", "o"]
|
||||
execute s:mode."noremap" "<silent>" s:plug_mapping "<Cmd>call dotfiles#indent_motion#run(".s:direction.")<CR>"
|
||||
if !empty(s:user_mapping)
|
||||
execute s:mode."map" s:user_mapping s:plug_mapping
|
||||
endif
|
||||
endfor
|
||||
endfor
|
|
@ -106,10 +106,6 @@ set commentstring=//%s
|
|||
nnoremap <C-n> <C-i>
|
||||
nnoremap <C-p> <C-o>
|
||||
|
||||
nnoremap <leader>kk <Cmd>set keymap&<CR>
|
||||
nnoremap <leader>kr <Cmd>set keymap=russian-jcuken-custom<CR>
|
||||
nnoremap <leader>ku <Cmd>set keymap=ukrainian-jcuken-custom<CR>
|
||||
|
||||
nnoremap Q <nop>
|
||||
|
||||
" normal mode
|
||||
|
@ -138,6 +134,19 @@ set commentstring=//%s
|
|||
" }}}
|
||||
|
||||
|
||||
" Keymap switcher {{{
|
||||
|
||||
nnoremap <leader>kk <Cmd>set keymap&<CR>
|
||||
nnoremap <leader>kr <Cmd>set keymap=russian-jcuken-custom<CR>
|
||||
nnoremap <leader>ku <Cmd>set keymap=ukrainian-jcuken-custom<CR>
|
||||
|
||||
nnoremap <C-o> <Cmd>DotfilesSwapKeymaps<CR>
|
||||
let g:dotfiles_prev_keymap = &keymap
|
||||
command! -nargs=0 DotfilesSwapKeymaps let [g:dotfiles_prev_keymap, &keymap] = [&keymap, g:dotfiles_prev_keymap]
|
||||
|
||||
" }}}
|
||||
|
||||
|
||||
" Search {{{
|
||||
|
||||
" ignore case if the pattern doesn't contain uppercase characters (use '\C'
|
||||
|
|
|
@ -36,6 +36,10 @@ nnoremap <silent><expr> <CR> empty(&buftype) ? ":write<bar>wall\<CR>" : "\<CR>"
|
|||
" Ranger {{{
|
||||
let g:ranger_replace_netrw = 1
|
||||
let g:ranger_map_keys = 0
|
||||
" The default path (/tmp/chosenfile) is inaccessible at least on
|
||||
" Android/Termux, so the tempname() function was chosen because it respects
|
||||
" $TMPDIR.
|
||||
let g:ranger_choice_file = tempname()
|
||||
nnoremap <silent> <Leader>o <Cmd>Ranger<CR>
|
||||
" ranger.vim relies on the Bclose.vim plugin, but I use Bbye.vim, so this
|
||||
" command is here just for compatitabilty
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
nnoremap <leader>gw :GBrowse<CR>
|
||||
nnoremap <leader>gW :.GBrowse<CR>
|
||||
nnoremap <leader>gc :Git commit %
|
||||
nnoremap <leader>gC :Git commit --amend
|
||||
nnoremap <leader>gl :Gclog<CR>
|
||||
nnoremap <leader>gp :Git push
|
||||
" }}}
|
||||
|
|
17
zsh/path.zsh
17
zsh/path.zsh
|
@ -70,7 +70,8 @@ export GOPATH=~/go
|
|||
path_prepend path "$GOPATH/bin"
|
||||
|
||||
# Rust
|
||||
if [[ -f ~/.rustup/settings.toml ]]; then
|
||||
rustup_home="${RUSTUP_HOME:-$HOME/.rustup}"
|
||||
if [[ -f "$rustup_home"/settings.toml ]]; then
|
||||
# Make a low-effort attempt at quickly extracting the selected Rust toolchain
|
||||
# from rustup's settings. The TOML file is obviously assumed to be well-formed
|
||||
# and syntactically correct because virtually always it's manipulated with the
|
||||
|
@ -78,7 +79,7 @@ if [[ -f ~/.rustup/settings.toml ]]; then
|
|||
# because Rust toolchain names don't need escaping in strings.
|
||||
# See also <https://github.com/toml-lang/toml/blob/master/toml.abnf>.
|
||||
rust_toolchain=""
|
||||
< ~/.rustup/settings.toml while IFS= read -r line; do
|
||||
< "$rustup_home"/settings.toml while IFS= read -r line; do
|
||||
if [[ "$line" =~ '^default_toolchain = "(.+)"$' ]]; then
|
||||
rust_toolchain="${match[1]}"
|
||||
break
|
||||
|
@ -88,16 +89,20 @@ if [[ -f ~/.rustup/settings.toml ]]; then
|
|||
done; unset line
|
||||
|
||||
if [[ -n "$rust_toolchain" ]]; then
|
||||
rust_sysroot=~/.rustup/toolchains/"$rust_toolchain"
|
||||
rust_sysroot="$rustup_home"/toolchains/"$rust_toolchain"
|
||||
# path_append path "$rust_sysroot"/bin
|
||||
path_prepend fpath "$rust_sysroot"/zsh/site-functions
|
||||
path_prepend manpath "$rust_sysroot"/share/man
|
||||
path_prepend ld_library_path "$rust_sysroot"/lib
|
||||
unset rust_sysroot
|
||||
fi
|
||||
|
||||
unset rust_toolchain
|
||||
for rust_sysroot in "$rustup_home"/toolchains/*(/); do
|
||||
# The filenames of all libraries in toolchain dirs are suffixed with their
|
||||
# build hashes or the compiler identifier, so in practice conflicts are
|
||||
# insanely unlikely.
|
||||
path_prepend ld_library_path "$rust_sysroot"/lib
|
||||
done
|
||||
fi
|
||||
unset rustup_home rust_toolchain rust_sysroot
|
||||
|
||||
path_prepend path ~/.cargo/bin
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ _plugin completions 'zsh-users/zsh-completions' "$_checkout_latest_version"
|
|||
# Oh My Zsh {{{
|
||||
|
||||
omz_features=(key-bindings termsupport)
|
||||
omz_plugins=(git extract fasd)
|
||||
omz_plugins=(git)
|
||||
|
||||
_plugin ohmyzsh 'ohmyzsh/ohmyzsh' \
|
||||
load='lib/'${^omz_features}'.zsh' \
|
||||
|
@ -64,22 +64,35 @@ _plugin completions 'zsh-users/zsh-completions' "$_checkout_latest_version"
|
|||
|
||||
# fasd {{{
|
||||
|
||||
#unalias j
|
||||
#j() {
|
||||
# local _fasd_ret
|
||||
# _fasd_ret="$(
|
||||
# # -l: list all paths in the database (without scores)
|
||||
# # -d: list only directories
|
||||
# # -R: in the reverse order
|
||||
# fasd -l -d -R |
|
||||
# fzf --height=40% --layout=reverse --tiebreak=index --query="$*"
|
||||
# )"
|
||||
# if [[ -d "$_fasd_ret" ]]; then
|
||||
# cd -- "$_fasd_ret"
|
||||
# elif [[ -n "$_fasd_ret" ]]; then
|
||||
# print -- "$_fasd_ret"
|
||||
# fi
|
||||
#}
|
||||
if command_exists fasd; then
|
||||
# Initialization taken from <https://github.com/ohmyzsh/ohmyzsh/blob/6fbad5bf72fad4ecf30ba4d4ffee62bac582f0ed/plugins/fasd/fasd.plugin.zsh>
|
||||
fasd_cache="${ZSH_CACHE_DIR}/fasd-init-cache"
|
||||
if [[ "${commands[fasd]}" -nt "$fasd_cache" || ! -s "$fasd_cache" ]]; then
|
||||
fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install >| "$fasd_cache"
|
||||
fi
|
||||
source "$fasd_cache"
|
||||
unset fasd_cache
|
||||
|
||||
alias v='f -e "$EDITOR"'
|
||||
alias o='a -e xdg-open'
|
||||
|
||||
# alias j='zz'
|
||||
j() {
|
||||
local _fasd_ret
|
||||
_fasd_ret="$(
|
||||
# -l: list all paths in the database (without scores)
|
||||
# -d: list only directories
|
||||
# -R: in the reverse order
|
||||
fasd -l -d -R |
|
||||
fzf --height=40% --layout=reverse --tiebreak=index --query="$*"
|
||||
)"
|
||||
if [[ -d "$_fasd_ret" ]]; then
|
||||
cd -- "$_fasd_ret"
|
||||
elif [[ -n "$_fasd_ret" ]]; then
|
||||
print -- "$_fasd_ret"
|
||||
fi
|
||||
}
|
||||
fi
|
||||
|
||||
# }}}
|
||||
|
||||
|
|
Loading…
Reference in a new issue