update from lal-10
This commit is contained in:
parent
6f28dcccad
commit
6e450de6ca
@ -1,6 +1,6 @@
|
||||
alias fixnasperms="sudo bash -c 'find . -type d -exec chmod 775 {} \\; && find . -type f -exec chmod 664 {} \\; && chown -R 2000:2000 .'"
|
||||
# alias wordgrinder="gnome-terminal --profile=wordgrinder -t wordgrinder --full-screen -- wordgrinder"
|
||||
alias wordgrinder="kitty -c ~/.wordgrinder/kitty.conf --session ~/.wordgrinder/kitty.session --start-as=fullscreen"
|
||||
# alias wordgrinder="kitty -c ~/.wordgrinder/kitty.conf --session ~/.wordgrinder/kitty.session --start-as=fullscreen"
|
||||
alias tmux="tmux -2"
|
||||
alias ssh="TERM=xterm ssh"
|
||||
alias pyenv3="pyenv shell 3.6.12"
|
||||
@ -40,6 +40,12 @@ fi
|
||||
|
||||
alias k=kubectl
|
||||
|
||||
if [ -x "$(which nvim)" ]
|
||||
then
|
||||
alias vim=nvim
|
||||
alias vimdiff="nvim -d"
|
||||
fi
|
||||
|
||||
if [ -f ~/.bash_aliases.local ]
|
||||
then
|
||||
. "$HOME/.bash_aliases.local"
|
||||
|
@ -1,3 +1,38 @@
|
||||
function debinstall() {
|
||||
sudo dpkg -i $1 || (sudo apt install -f && sudo dpkg -i $1)
|
||||
}
|
||||
|
||||
# Define the function
|
||||
function whence() {
|
||||
# Usage:
|
||||
# which_follow_links [-p] <command>
|
||||
# -p: Print each symlink path
|
||||
local follow_links=false
|
||||
local print_links=false
|
||||
|
||||
# Option parsing
|
||||
while getopts "p" opt; do
|
||||
case $opt in
|
||||
p) print_links=true ;;
|
||||
\?) echo "Invalid option: -$OPTARG" >&2; return ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
# Find the initial path using which
|
||||
local path=$(which "$1" 2> /dev/null)
|
||||
if [[ -z "$path" ]]; then
|
||||
echo "$1 not found"
|
||||
return
|
||||
fi
|
||||
|
||||
# Follow symlinks
|
||||
while [[ -L "$path" ]]; do
|
||||
if [[ "$print_links" == "true" ]]; then
|
||||
echo "Link: $path -> $(readlink -f "$path")"
|
||||
fi
|
||||
path=$(readlink -f "$path")
|
||||
done
|
||||
|
||||
echo "Final target: $path"
|
||||
}
|
||||
|
23
any/scripts/.local/bin/aws-assume-role.sh
Normal file
23
any/scripts/.local/bin/aws-assume-role.sh
Normal file
@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
ROLE_ARN=$1
|
||||
SESSION_NAME=$2
|
||||
|
||||
unset AWS_ACCESS_KEY_ID
|
||||
unset AWS_SECRET_ACCESS_KEY
|
||||
unset AWS_SESSION_TOKEN
|
||||
|
||||
resp=$( \
|
||||
aws \
|
||||
sts \
|
||||
assume-role \
|
||||
--role-arn $ROLE_ARN \
|
||||
--role-session-name $SESSION_NAME \
|
||||
--duration-seconds 43200 \
|
||||
)
|
||||
|
||||
# echo $resp
|
||||
|
||||
export AWS_ACCESS_KEY_ID="$(echo $resp | jq -r .Credentials.AccessKeyId)"
|
||||
export AWS_SECRET_ACCESS_KEY="$(echo $resp | jq -r .Credentials.SecretAccessKey)"
|
||||
export AWS_SESSION_TOKEN="$(echo $resp | jq -r .Credentials.SessionToken)"
|
1
any/scripts/.local/bin/portable-python
Symbolic link
1
any/scripts/.local/bin/portable-python
Symbolic link
@ -0,0 +1 @@
|
||||
/home/dfc/.local/pipx/venvs/portable-python/bin/portable-python
|
99
any/scripts/.local/bin/share-comet-images.sh
Executable file
99
any/scripts/.local/bin/share-comet-images.sh
Executable file
@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
echo "Usage:"
|
||||
echo -e "\t$0 <Customer ID> <Backend Version> <Frontend Version> <Optimizer Version> [Customer Password]"
|
||||
echo
|
||||
|
||||
customer_id=$1
|
||||
backend_version=$2
|
||||
frontend_version=$3
|
||||
optimizer_version=$4
|
||||
customer_pass=$5
|
||||
|
||||
if [ -z $customer_pass ]
|
||||
then
|
||||
customer_pass="<PASS>"
|
||||
fi
|
||||
|
||||
echo "This script will pull and share Comet images:"
|
||||
echo -e "\tBackend Version: $backend_version"
|
||||
echo -e "\tFrontend Version: $frontend_version"
|
||||
echo -e "\tOptimizer Version: $optimizer_version"
|
||||
echo "With the customer: $customer_id"
|
||||
|
||||
read -p "Do you want to continue? (yes/no) " answer
|
||||
|
||||
# Check the user's answer
|
||||
case $answer in
|
||||
[yY]es)
|
||||
echo "Continuing..."
|
||||
# Place the commands to execute if the user chooses to continue
|
||||
;;
|
||||
[nN]o)
|
||||
echo "Cancelling..."
|
||||
exit 2
|
||||
;;
|
||||
*)
|
||||
echo "Invalid input...exiting."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
tmp_dir=$(mktemp -d)
|
||||
|
||||
# Check if the directory was created
|
||||
if [[ ! -d "$tmp_dir" ]]; then
|
||||
echo "Failed to create temp directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
clean_prompt() {
|
||||
read -p "Do you want to delete temporary directory/files? (yes/no) " answer
|
||||
|
||||
# Check the user's answer
|
||||
case $answer in
|
||||
[yY]es)
|
||||
echo "Cleaning Up..."
|
||||
rm -rf "$tmp_dir"
|
||||
;;
|
||||
*)
|
||||
echo "Leaving files in ${tmp_dir}..."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
trap clean_prompt EXIT
|
||||
|
||||
declare -A docker_images=( ["backend-python"]=$backend_version ["backend-react"]=$backend_version ["backend-postprocess"]=$backend_version ["backend-mpm"]=$backend_version ["backend-optimizer"]=$optimizer_version ["frontend-nginx"]=$frontend_version )
|
||||
|
||||
# Pull
|
||||
for image in "${!docker_images[@]}"
|
||||
do
|
||||
version=${docker_images[$image]}
|
||||
docker pull docker.comet.com/comet-ml/${image}:${version}
|
||||
done
|
||||
|
||||
# Save
|
||||
for image in "${!docker_images[@]}"
|
||||
do
|
||||
version=${docker_images[$image]}
|
||||
echo "Saving docker.comet.com/comet-ml/${image}:${version} ..."
|
||||
docker save docker.comet.com/comet-ml/${image}:${version} | gzip > ${tmp_dir}/comet-ml-${image}-${version}.tar.gz
|
||||
done
|
||||
|
||||
# Upload
|
||||
ssh deb-repository -- mkdir -p /mnt/data/fileshare/${customer_id}/docker-images/
|
||||
scp ${tmp_dir}/*.tar.gz deb-repository:/mnt/data/fileshare/${customer_id}/docker-images/
|
||||
|
||||
echo
|
||||
echo "Download links:"
|
||||
echo
|
||||
# Print links
|
||||
for image in "${!docker_images[@]}"
|
||||
do
|
||||
version=${docker_images[$image]}
|
||||
echo "https://${customer_id}:${customer_pass}@fileshare.comet.com/${customer_id}/docker-images/comet-ml-${image}-${version}.tar.gz"
|
||||
done
|
||||
echo
|
@ -22,7 +22,7 @@
|
||||
" Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
|
||||
"
|
||||
" " On-demand loading
|
||||
" Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
|
||||
" Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' }
|
||||
" Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
|
||||
"
|
||||
" " Using a non-default branch
|
||||
@ -238,7 +238,6 @@ endfunction
|
||||
|
||||
function! plug#begin(...)
|
||||
if a:0 > 0
|
||||
let s:plug_home_org = a:1
|
||||
let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p'))
|
||||
elseif exists('g:plug_home')
|
||||
let home = s:path(g:plug_home)
|
||||
@ -391,6 +390,9 @@ function! plug#end()
|
||||
if !empty(types)
|
||||
augroup filetypedetect
|
||||
call s:source(s:rtp(plug), 'ftdetect/**/*.vim', 'after/ftdetect/**/*.vim')
|
||||
if has('nvim-0.5.0')
|
||||
call s:source(s:rtp(plug), 'ftdetect/**/*.lua', 'after/ftdetect/**/*.lua')
|
||||
endif
|
||||
augroup END
|
||||
endif
|
||||
for type in types
|
||||
@ -438,6 +440,9 @@ endfunction
|
||||
|
||||
function! s:load_plugin(spec)
|
||||
call s:source(s:rtp(a:spec), 'plugin/**/*.vim', 'after/plugin/**/*.vim')
|
||||
if has('nvim-0.5.0')
|
||||
call s:source(s:rtp(a:spec), 'plugin/**/*.lua', 'after/plugin/**/*.lua')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:reload_plugins()
|
||||
@ -655,6 +660,9 @@ function! s:lod(names, types, ...)
|
||||
let rtp = s:rtp(g:plugs[name])
|
||||
for dir in a:types
|
||||
call s:source(rtp, dir.'/**/*.vim')
|
||||
if has('nvim-0.5.0') " see neovim#14686
|
||||
call s:source(rtp, dir.'/**/*.lua')
|
||||
endif
|
||||
endfor
|
||||
if a:0
|
||||
if !s:source(rtp, a:1) && !empty(s:glob(rtp, a:2))
|
||||
@ -869,7 +877,7 @@ function! s:lastline(msg)
|
||||
endfunction
|
||||
|
||||
function! s:new_window()
|
||||
execute get(g:, 'plug_window', 'vertical topleft new')
|
||||
execute get(g:, 'plug_window', '-tabnew')
|
||||
endfunction
|
||||
|
||||
function! s:plug_window_exists()
|
||||
@ -1031,6 +1039,11 @@ function! s:is_updated(dir)
|
||||
endfunction
|
||||
|
||||
function! s:do(pull, force, todo)
|
||||
if has('nvim')
|
||||
" Reset &rtp to invalidate Neovim cache of loaded Lua modules
|
||||
" See https://github.com/junegunn/vim-plug/pull/1157#issuecomment-1809226110
|
||||
let &rtp = &rtp
|
||||
endif
|
||||
for [name, spec] in items(a:todo)
|
||||
if !isdirectory(spec.dir)
|
||||
continue
|
||||
@ -1092,12 +1105,14 @@ endfunction
|
||||
function! s:checkout(spec)
|
||||
let sha = a:spec.commit
|
||||
let output = s:git_revision(a:spec.dir)
|
||||
let error = 0
|
||||
if !empty(output) && !s:hash_match(sha, s:lines(output)[0])
|
||||
let credential_helper = s:git_version_requirement(2) ? '-c credential.helper= ' : ''
|
||||
let output = s:system(
|
||||
\ 'git '.credential_helper.'fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir)
|
||||
let error = v:shell_error
|
||||
endif
|
||||
return output
|
||||
return [output, error]
|
||||
endfunction
|
||||
|
||||
function! s:finish(pull)
|
||||
@ -1158,7 +1173,7 @@ function! s:update_impl(pull, force, args) abort
|
||||
let threads = (len(args) > 0 && args[-1] =~ '^[1-9][0-9]*$') ?
|
||||
\ remove(args, -1) : get(g:, 'plug_threads', 16)
|
||||
|
||||
let managed = filter(copy(g:plugs), 's:is_managed(v:key)')
|
||||
let managed = filter(deepcopy(g:plugs), 's:is_managed(v:key)')
|
||||
let todo = empty(args) ? filter(managed, '!v:val.frozen || !isdirectory(v:val.dir)') :
|
||||
\ filter(managed, 'index(args, v:key) >= 0')
|
||||
|
||||
@ -1292,9 +1307,11 @@ function! s:update_finish()
|
||||
if !pos
|
||||
continue
|
||||
endif
|
||||
let out = ''
|
||||
let error = 0
|
||||
if has_key(spec, 'commit')
|
||||
call s:log4(name, 'Checking out '.spec.commit)
|
||||
let out = s:checkout(spec)
|
||||
let [out, error] = s:checkout(spec)
|
||||
elseif has_key(spec, 'tag')
|
||||
let tag = spec.tag
|
||||
if tag =~ '\*'
|
||||
@ -1307,19 +1324,16 @@ function! s:update_finish()
|
||||
endif
|
||||
call s:log4(name, 'Checking out '.tag)
|
||||
let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir)
|
||||
else
|
||||
let branch = s:git_origin_branch(spec)
|
||||
call s:log4(name, 'Merging origin/'.s:esc(branch))
|
||||
let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1'
|
||||
\. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir)
|
||||
let error = v:shell_error
|
||||
endif
|
||||
if !v:shell_error && filereadable(spec.dir.'/.gitmodules') &&
|
||||
if !error && filereadable(spec.dir.'/.gitmodules') &&
|
||||
\ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir))
|
||||
call s:log4(name, 'Updating submodules. This may take a while.')
|
||||
let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir)
|
||||
let error = v:shell_error
|
||||
endif
|
||||
let msg = s:format_message(v:shell_error ? 'x': '-', name, out)
|
||||
if v:shell_error
|
||||
if error
|
||||
call add(s:update.errors, name)
|
||||
call s:regress_bar()
|
||||
silent execute pos 'd _'
|
||||
@ -1382,7 +1396,9 @@ function! s:job_out_cb(self, data) abort
|
||||
if !self.running || self.tick % len(s:jobs) == 0
|
||||
let bullet = self.running ? (self.new ? '+' : '*') : (self.error ? 'x' : '-')
|
||||
let result = self.error ? join(self.lines, "\n") : s:last_non_empty_line(self.lines)
|
||||
call s:log(bullet, self.name, result)
|
||||
if len(result)
|
||||
call s:log(bullet, self.name, result)
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
@ -1406,16 +1422,17 @@ function! s:nvim_cb(job_id, data, event) dict abort
|
||||
\ s:job_cb('s:job_exit_cb', self, 0, a:data)
|
||||
endfunction
|
||||
|
||||
function! s:spawn(name, cmd, opts)
|
||||
let job = { 'name': a:name, 'running': 1, 'error': 0, 'lines': [''],
|
||||
\ 'new': get(a:opts, 'new', 0) }
|
||||
function! s:spawn(name, spec, queue, opts)
|
||||
let job = { 'name': a:name, 'spec': a:spec, 'running': 1, 'error': 0, 'lines': [''],
|
||||
\ 'new': get(a:opts, 'new', 0), 'queue': copy(a:queue) }
|
||||
let Item = remove(job.queue, 0)
|
||||
let argv = type(Item) == s:TYPE.funcref ? call(Item, [a:spec]) : Item
|
||||
let s:jobs[a:name] = job
|
||||
|
||||
if s:nvim
|
||||
if has_key(a:opts, 'dir')
|
||||
let job.cwd = a:opts.dir
|
||||
endif
|
||||
let argv = a:cmd
|
||||
call extend(job, {
|
||||
\ 'on_stdout': function('s:nvim_cb'),
|
||||
\ 'on_stderr': function('s:nvim_cb'),
|
||||
@ -1431,7 +1448,7 @@ function! s:spawn(name, cmd, opts)
|
||||
\ 'Invalid arguments (or job table is full)']
|
||||
endif
|
||||
elseif s:vim8
|
||||
let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"script": 0})'))
|
||||
let cmd = join(map(copy(argv), 'plug#shellescape(v:val, {"script": 0})'))
|
||||
if has_key(a:opts, 'dir')
|
||||
let cmd = s:with_cd(cmd, a:opts.dir, 0)
|
||||
endif
|
||||
@ -1451,27 +1468,34 @@ function! s:spawn(name, cmd, opts)
|
||||
let job.lines = ['Failed to start job']
|
||||
endif
|
||||
else
|
||||
let job.lines = s:lines(call('s:system', has_key(a:opts, 'dir') ? [a:cmd, a:opts.dir] : [a:cmd]))
|
||||
let job.lines = s:lines(call('s:system', has_key(a:opts, 'dir') ? [argv, a:opts.dir] : [argv]))
|
||||
let job.error = v:shell_error != 0
|
||||
let job.running = 0
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:reap(name)
|
||||
let job = s:jobs[a:name]
|
||||
let job = remove(s:jobs, a:name)
|
||||
if job.error
|
||||
call add(s:update.errors, a:name)
|
||||
elseif get(job, 'new', 0)
|
||||
let s:update.new[a:name] = 1
|
||||
endif
|
||||
let s:update.bar .= job.error ? 'x' : '='
|
||||
|
||||
let bullet = job.error ? 'x' : '-'
|
||||
let more = len(get(job, 'queue', []))
|
||||
let bullet = job.error ? 'x' : more ? (job.new ? '+' : '*') : '-'
|
||||
let result = job.error ? join(job.lines, "\n") : s:last_non_empty_line(job.lines)
|
||||
call s:log(bullet, a:name, empty(result) ? 'OK' : result)
|
||||
call s:bar()
|
||||
if len(result)
|
||||
call s:log(bullet, a:name, result)
|
||||
endif
|
||||
|
||||
call remove(s:jobs, a:name)
|
||||
if !job.error && more
|
||||
let job.spec.queue = job.queue
|
||||
let s:update.todo[a:name] = job.spec
|
||||
else
|
||||
let s:update.bar .= job.error ? 'x' : '='
|
||||
call s:bar()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:bar()
|
||||
@ -1524,6 +1548,16 @@ function! s:update_vim()
|
||||
call s:tick()
|
||||
endfunction
|
||||
|
||||
function! s:checkout_command(spec)
|
||||
let a:spec.branch = s:git_origin_branch(a:spec)
|
||||
return ['git', 'checkout', '-q', a:spec.branch, '--']
|
||||
endfunction
|
||||
|
||||
function! s:merge_command(spec)
|
||||
let a:spec.branch = s:git_origin_branch(a:spec)
|
||||
return ['git', 'merge', '--ff-only', 'origin/'.a:spec.branch]
|
||||
endfunction
|
||||
|
||||
function! s:tick()
|
||||
let pull = s:update.pull
|
||||
let prog = s:progress_opt(s:nvim || s:vim8)
|
||||
@ -1538,13 +1572,18 @@ while 1 " Without TCO, Vim stack is bound to explode
|
||||
|
||||
let name = keys(s:update.todo)[0]
|
||||
let spec = remove(s:update.todo, name)
|
||||
let new = empty(globpath(spec.dir, '.git', 1))
|
||||
let queue = get(spec, 'queue', [])
|
||||
let new = empty(globpath(spec.dir, '.git', 1))
|
||||
|
||||
call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
|
||||
redraw
|
||||
if empty(queue)
|
||||
call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
|
||||
redraw
|
||||
endif
|
||||
|
||||
let has_tag = has_key(spec, 'tag')
|
||||
if !new
|
||||
if len(queue)
|
||||
call s:spawn(name, spec, queue, { 'dir': spec.dir })
|
||||
elseif !new
|
||||
let [error, _] = s:git_validate(spec, 0)
|
||||
if empty(error)
|
||||
if pull
|
||||
@ -1555,7 +1594,11 @@ while 1 " Without TCO, Vim stack is bound to explode
|
||||
if !empty(prog)
|
||||
call add(cmd, prog)
|
||||
endif
|
||||
call s:spawn(name, cmd, { 'dir': spec.dir })
|
||||
let queue = [cmd, split('git remote set-head origin -a')]
|
||||
if !has_tag && !has_key(spec, 'commit')
|
||||
call extend(queue, [function('s:checkout_command'), function('s:merge_command')])
|
||||
endif
|
||||
call s:spawn(name, spec, queue, { 'dir': spec.dir })
|
||||
else
|
||||
let s:jobs[name] = { 'running': 0, 'lines': ['Already installed'], 'error': 0 }
|
||||
endif
|
||||
@ -1570,7 +1613,7 @@ while 1 " Without TCO, Vim stack is bound to explode
|
||||
if !empty(prog)
|
||||
call add(cmd, prog)
|
||||
endif
|
||||
call s:spawn(name, extend(cmd, [spec.uri, s:trim(spec.dir)]), { 'new': 1 })
|
||||
call s:spawn(name, spec, [extend(cmd, [spec.uri, s:trim(spec.dir)]), function('s:checkout_command'), function('s:merge_command')], { 'new': 1 })
|
||||
endif
|
||||
|
||||
if !s:jobs[name].running
|
||||
@ -2346,18 +2389,21 @@ function! s:git_validate(spec, check_branch)
|
||||
\ current_branch, origin_branch)
|
||||
endif
|
||||
if empty(err)
|
||||
let [ahead, behind] = split(s:lastline(s:system([
|
||||
\ 'git', 'rev-list', '--count', '--left-right',
|
||||
\ printf('HEAD...origin/%s', origin_branch)
|
||||
\ ], a:spec.dir)), '\t')
|
||||
if !v:shell_error && ahead
|
||||
if behind
|
||||
let ahead_behind = split(s:lastline(s:system([
|
||||
\ 'git', 'rev-list', '--count', '--left-right',
|
||||
\ printf('HEAD...origin/%s', origin_branch)
|
||||
\ ], a:spec.dir)), '\t')
|
||||
if v:shell_error || len(ahead_behind) != 2
|
||||
let err = "Failed to compare with the origin. The default branch might have changed.\nPlugClean required."
|
||||
else
|
||||
let [ahead, behind] = ahead_behind
|
||||
if ahead && behind
|
||||
" Only mention PlugClean if diverged, otherwise it's likely to be
|
||||
" pushable (and probably not that messed up).
|
||||
let err = printf(
|
||||
\ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n"
|
||||
\ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', origin_branch, ahead, behind)
|
||||
else
|
||||
elseif ahead
|
||||
let err = printf("Ahead of origin/%s by %d commit(s).\n"
|
||||
\ .'Cannot update until local changes are pushed.',
|
||||
\ origin_branch, ahead)
|
||||
@ -2389,7 +2435,7 @@ function! s:clean(force)
|
||||
let errs = {}
|
||||
let [cnt, total] = [0, len(g:plugs)]
|
||||
for [name, spec] in items(g:plugs)
|
||||
if !s:is_managed(name)
|
||||
if !s:is_managed(name) || get(spec, 'frozen', 0)
|
||||
call add(dirs, spec.dir)
|
||||
else
|
||||
let [err, clean] = s:git_validate(spec, 1)
|
||||
@ -2637,8 +2683,8 @@ function! s:preview_commit()
|
||||
return
|
||||
endif
|
||||
|
||||
if exists('g:plug_pwindow') && !s:is_preview_window_open()
|
||||
execute g:plug_pwindow
|
||||
if !s:is_preview_window_open()
|
||||
execute get(g:, 'plug_pwindow', 'vertical rightbelow new')
|
||||
execute 'e' title
|
||||
else
|
||||
execute 'pedit' title
|
||||
|
@ -25,7 +25,7 @@
|
||||
" Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
|
||||
" Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
|
||||
"
|
||||
" " Using a non-master branch
|
||||
" " Using a non-default branch
|
||||
" Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
|
||||
"
|
||||
" " Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
|
||||
@ -106,7 +106,7 @@ if s:is_win && &shellslash
|
||||
else
|
||||
let s:me = resolve(expand('<sfile>:p'))
|
||||
endif
|
||||
let s:base_spec = { 'branch': 'master', 'frozen': 0 }
|
||||
let s:base_spec = { 'branch': '', 'frozen': 0 }
|
||||
let s:TYPE = {
|
||||
\ 'string': type(''),
|
||||
\ 'list': type([]),
|
||||
@ -116,6 +116,94 @@ let s:TYPE = {
|
||||
let s:loaded = get(s:, 'loaded', {})
|
||||
let s:triggers = get(s:, 'triggers', {})
|
||||
|
||||
function! s:is_powershell(shell)
|
||||
return a:shell =~# 'powershell\(\.exe\)\?$' || a:shell =~# 'pwsh\(\.exe\)\?$'
|
||||
endfunction
|
||||
|
||||
function! s:isabsolute(dir) abort
|
||||
return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)')
|
||||
endfunction
|
||||
|
||||
function! s:git_dir(dir) abort
|
||||
let gitdir = s:trim(a:dir) . '/.git'
|
||||
if isdirectory(gitdir)
|
||||
return gitdir
|
||||
endif
|
||||
if !filereadable(gitdir)
|
||||
return ''
|
||||
endif
|
||||
let gitdir = matchstr(get(readfile(gitdir), 0, ''), '^gitdir: \zs.*')
|
||||
if len(gitdir) && !s:isabsolute(gitdir)
|
||||
let gitdir = a:dir . '/' . gitdir
|
||||
endif
|
||||
return isdirectory(gitdir) ? gitdir : ''
|
||||
endfunction
|
||||
|
||||
function! s:git_origin_url(dir) abort
|
||||
let gitdir = s:git_dir(a:dir)
|
||||
let config = gitdir . '/config'
|
||||
if empty(gitdir) || !filereadable(config)
|
||||
return ''
|
||||
endif
|
||||
return matchstr(join(readfile(config)), '\[remote "origin"\].\{-}url\s*=\s*\zs\S*\ze')
|
||||
endfunction
|
||||
|
||||
function! s:git_revision(dir) abort
|
||||
let gitdir = s:git_dir(a:dir)
|
||||
let head = gitdir . '/HEAD'
|
||||
if empty(gitdir) || !filereadable(head)
|
||||
return ''
|
||||
endif
|
||||
|
||||
let line = get(readfile(head), 0, '')
|
||||
let ref = matchstr(line, '^ref: \zs.*')
|
||||
if empty(ref)
|
||||
return line
|
||||
endif
|
||||
|
||||
if filereadable(gitdir . '/' . ref)
|
||||
return get(readfile(gitdir . '/' . ref), 0, '')
|
||||
endif
|
||||
|
||||
if filereadable(gitdir . '/packed-refs')
|
||||
for line in readfile(gitdir . '/packed-refs')
|
||||
if line =~# ' ' . ref
|
||||
return matchstr(line, '^[0-9a-f]*')
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! s:git_local_branch(dir) abort
|
||||
let gitdir = s:git_dir(a:dir)
|
||||
let head = gitdir . '/HEAD'
|
||||
if empty(gitdir) || !filereadable(head)
|
||||
return ''
|
||||
endif
|
||||
let branch = matchstr(get(readfile(head), 0, ''), '^ref: refs/heads/\zs.*')
|
||||
return len(branch) ? branch : 'HEAD'
|
||||
endfunction
|
||||
|
||||
function! s:git_origin_branch(spec)
|
||||
if len(a:spec.branch)
|
||||
return a:spec.branch
|
||||
endif
|
||||
|
||||
" The file may not be present if this is a local repository
|
||||
let gitdir = s:git_dir(a:spec.dir)
|
||||
let origin_head = gitdir.'/refs/remotes/origin/HEAD'
|
||||
if len(gitdir) && filereadable(origin_head)
|
||||
return matchstr(get(readfile(origin_head), 0, ''),
|
||||
\ '^ref: refs/remotes/origin/\zs.*')
|
||||
endif
|
||||
|
||||
" The command may not return the name of a branch in detached HEAD state
|
||||
let result = s:lines(s:system('git symbolic-ref --short HEAD', a:spec.dir))
|
||||
return v:shell_error ? '' : result[-1]
|
||||
endfunction
|
||||
|
||||
if s:is_win
|
||||
function! s:plug_call(fn, ...)
|
||||
let shellslash = &shellslash
|
||||
@ -154,6 +242,8 @@ function! plug#begin(...)
|
||||
let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p'))
|
||||
elseif exists('g:plug_home')
|
||||
let home = s:path(g:plug_home)
|
||||
elseif has('nvim')
|
||||
let home = stdpath('data') . '/plugged'
|
||||
elseif !empty(&rtp)
|
||||
let home = s:path(split(&rtp, ',')[0]) . '/plugged'
|
||||
else
|
||||
@ -179,7 +269,7 @@ function! s:define_commands()
|
||||
endif
|
||||
if has('win32')
|
||||
\ && &shellslash
|
||||
\ && (&shell =~# 'cmd\.exe' || &shell =~# 'powershell\.exe')
|
||||
\ && (&shell =~# 'cmd\(\.exe\)\?$' || s:is_powershell(&shell))
|
||||
return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.')
|
||||
endif
|
||||
if !has('nvim')
|
||||
@ -262,7 +352,7 @@ function! plug#end()
|
||||
endif
|
||||
let lod = { 'ft': {}, 'map': {}, 'cmd': {} }
|
||||
|
||||
if exists('g:did_load_filetypes')
|
||||
if get(g:, 'did_load_filetypes', 0)
|
||||
filetype off
|
||||
endif
|
||||
for name in g:plugs_order
|
||||
@ -317,7 +407,7 @@ function! plug#end()
|
||||
|
||||
for [map, names] in items(lod.map)
|
||||
for [mode, map_prefix, key_prefix] in
|
||||
\ [['i', '<C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']]
|
||||
\ [['i', '<C-\><C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']]
|
||||
execute printf(
|
||||
\ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, %s, "%s")<CR>',
|
||||
\ mode, map, map_prefix, string(map), string(names), mode != 'i', key_prefix)
|
||||
@ -419,7 +509,7 @@ if s:is_win
|
||||
let batchfile = s:plug_tempname().'.bat'
|
||||
call writefile(s:wrap_cmds(a:cmd), batchfile)
|
||||
let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0})
|
||||
if &shell =~# 'powershell\.exe'
|
||||
if s:is_powershell(&shell)
|
||||
let cmd = '& ' . cmd
|
||||
endif
|
||||
return [batchfile, cmd]
|
||||
@ -646,25 +736,25 @@ function! s:parse_options(arg)
|
||||
endif
|
||||
let opts.tag = a:arg
|
||||
elseif type == s:TYPE.dict
|
||||
call extend(opts, a:arg)
|
||||
for opt in ['branch', 'tag', 'commit', 'rtp', 'dir', 'as']
|
||||
if has_key(opts, opt)
|
||||
\ && (type(opts[opt]) != s:TYPE.string || empty(opts[opt]))
|
||||
if has_key(a:arg, opt)
|
||||
\ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt]))
|
||||
throw printf(opt_errfmt, opt, 'string')
|
||||
endif
|
||||
endfor
|
||||
for opt in ['on', 'for']
|
||||
if has_key(opts, opt)
|
||||
\ && type(opts[opt]) != s:TYPE.list
|
||||
\ && (type(opts[opt]) != s:TYPE.string || empty(opts[opt]))
|
||||
if has_key(a:arg, opt)
|
||||
\ && type(a:arg[opt]) != s:TYPE.list
|
||||
\ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt]))
|
||||
throw printf(opt_errfmt, opt, 'string or list')
|
||||
endif
|
||||
endfor
|
||||
if has_key(opts, 'do')
|
||||
\ && type(opts.do) != s:TYPE.funcref
|
||||
\ && (type(opts.do) != s:TYPE.string || empty(opts.do))
|
||||
if has_key(a:arg, 'do')
|
||||
\ && type(a:arg.do) != s:TYPE.funcref
|
||||
\ && (type(a:arg.do) != s:TYPE.string || empty(a:arg.do))
|
||||
throw printf(opt_errfmt, 'do', 'string or funcref')
|
||||
endif
|
||||
call extend(opts, a:arg)
|
||||
if has_key(opts, 'dir')
|
||||
let opts.dir = s:dirpath(s:plug_expand(opts.dir))
|
||||
endif
|
||||
@ -720,7 +810,7 @@ function! s:syntax()
|
||||
syn match plugNumber /[0-9]\+[0-9.]*/ contained
|
||||
syn match plugBracket /[[\]]/ contained
|
||||
syn match plugX /x/ contained
|
||||
syn match plugDash /^-/
|
||||
syn match plugDash /^-\{1}\ /
|
||||
syn match plugPlus /^+/
|
||||
syn match plugStar /^*/
|
||||
syn match plugMessage /\(^- \)\@<=.*/
|
||||
@ -738,6 +828,7 @@ function! s:syntax()
|
||||
syn match plugError /^x.*/
|
||||
syn region plugDeleted start=/^\~ .*/ end=/^\ze\S/
|
||||
syn match plugH2 /^.*:\n-\+$/
|
||||
syn match plugH2 /^-\{2,}/
|
||||
syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean
|
||||
hi def link plug1 Title
|
||||
hi def link plug2 Repeat
|
||||
@ -850,7 +941,7 @@ function! s:prepare(...)
|
||||
call s:new_window()
|
||||
endif
|
||||
|
||||
nnoremap <silent> <buffer> q :if b:plug_preview==1<bar>pc<bar>endif<bar>bd<cr>
|
||||
nnoremap <silent> <buffer> q :call <SID>close_pane()<cr>
|
||||
if a:0 == 0
|
||||
call s:finish_bindings()
|
||||
endif
|
||||
@ -872,6 +963,15 @@ function! s:prepare(...)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:close_pane()
|
||||
if b:plug_preview == 1
|
||||
pc
|
||||
let b:plug_preview = -1
|
||||
else
|
||||
bd
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:assign_name()
|
||||
" Assign buffer name
|
||||
let prefix = '[Plugins]'
|
||||
@ -890,9 +990,9 @@ function! s:chsh(swap)
|
||||
set shell=sh
|
||||
endif
|
||||
if a:swap
|
||||
if &shell =~# 'powershell\.exe' || &shell =~# 'pwsh$'
|
||||
if s:is_powershell(&shell)
|
||||
let &shellredir = '2>&1 | Out-File -Encoding UTF8 %s'
|
||||
elseif &shell =~# 'sh' || &shell =~# 'cmd\.exe'
|
||||
elseif &shell =~# 'sh' || &shell =~# 'cmd\(\.exe\)\?$'
|
||||
set shellredir=>%s\ 2>&1
|
||||
endif
|
||||
endif
|
||||
@ -991,10 +1091,11 @@ endfunction
|
||||
|
||||
function! s:checkout(spec)
|
||||
let sha = a:spec.commit
|
||||
let output = s:system(['git', 'rev-parse', 'HEAD'], a:spec.dir)
|
||||
if !v:shell_error && !s:hash_match(sha, s:lines(output)[0])
|
||||
let output = s:git_revision(a:spec.dir)
|
||||
if !empty(output) && !s:hash_match(sha, s:lines(output)[0])
|
||||
let credential_helper = s:git_version_requirement(2) ? '-c credential.helper= ' : ''
|
||||
let output = s:system(
|
||||
\ 'git fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir)
|
||||
\ 'git '.credential_helper.'fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir)
|
||||
endif
|
||||
return output
|
||||
endfunction
|
||||
@ -1109,7 +1210,8 @@ function! s:update_impl(pull, force, args) abort
|
||||
normal! 2G
|
||||
silent! redraw
|
||||
|
||||
let s:clone_opt = []
|
||||
" Set remote name, overriding a possible user git config's clone.defaultRemoteName
|
||||
let s:clone_opt = ['--origin', 'origin']
|
||||
if get(g:, 'plug_shallow', 1)
|
||||
call extend(s:clone_opt, ['--depth', '1'])
|
||||
if s:git_version_requirement(1, 7, 10)
|
||||
@ -1206,7 +1308,7 @@ function! s:update_finish()
|
||||
call s:log4(name, 'Checking out '.tag)
|
||||
let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir)
|
||||
else
|
||||
let branch = get(spec, 'branch', 'master')
|
||||
let branch = s:git_origin_branch(spec)
|
||||
call s:log4(name, 'Merging origin/'.s:esc(branch))
|
||||
let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1'
|
||||
\. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir)
|
||||
@ -1446,7 +1548,7 @@ while 1 " Without TCO, Vim stack is bound to explode
|
||||
let [error, _] = s:git_validate(spec, 0)
|
||||
if empty(error)
|
||||
if pull
|
||||
let cmd = ['git', 'fetch']
|
||||
let cmd = s:git_version_requirement(2) ? ['git', '-c', 'credential.helper=', 'fetch'] : ['git', 'fetch']
|
||||
if has_tag && !empty(globpath(spec.dir, '.git/shallow'))
|
||||
call extend(cmd, ['--depth', '99999999'])
|
||||
endif
|
||||
@ -2128,9 +2230,9 @@ function! plug#shellescape(arg, ...)
|
||||
let opts = a:0 > 0 && type(a:1) == s:TYPE.dict ? a:1 : {}
|
||||
let shell = get(opts, 'shell', s:is_win ? 'cmd.exe' : 'sh')
|
||||
let script = get(opts, 'script', 1)
|
||||
if shell =~# 'cmd\.exe'
|
||||
if shell =~# 'cmd\(\.exe\)\?$'
|
||||
return s:shellesc_cmd(a:arg, script)
|
||||
elseif shell =~# 'powershell\.exe' || shell =~# 'pwsh$'
|
||||
elseif s:is_powershell(shell)
|
||||
return s:shellesc_ps1(a:arg)
|
||||
endif
|
||||
return s:shellesc_sh(a:arg)
|
||||
@ -2182,7 +2284,7 @@ function! s:system(cmd, ...)
|
||||
return system(a:cmd)
|
||||
endif
|
||||
let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"shell": &shell, "script": 0})'))
|
||||
if &shell =~# 'powershell\.exe'
|
||||
if s:is_powershell(&shell)
|
||||
let cmd = '& ' . cmd
|
||||
endif
|
||||
else
|
||||
@ -2211,18 +2313,17 @@ endfunction
|
||||
function! s:git_validate(spec, check_branch)
|
||||
let err = ''
|
||||
if isdirectory(a:spec.dir)
|
||||
let result = s:lines(s:system('git rev-parse --abbrev-ref HEAD 2>&1 && git config -f .git/config remote.origin.url', a:spec.dir))
|
||||
let result = [s:git_local_branch(a:spec.dir), s:git_origin_url(a:spec.dir)]
|
||||
let remote = result[-1]
|
||||
if v:shell_error
|
||||
if empty(remote)
|
||||
let err = join([remote, 'PlugClean required.'], "\n")
|
||||
elseif !s:compare_git_uri(remote, a:spec.uri)
|
||||
let err = join(['Invalid URI: '.remote,
|
||||
\ 'Expected: '.a:spec.uri,
|
||||
\ 'PlugClean required.'], "\n")
|
||||
elseif a:check_branch && has_key(a:spec, 'commit')
|
||||
let result = s:lines(s:system('git rev-parse HEAD 2>&1', a:spec.dir))
|
||||
let sha = result[-1]
|
||||
if v:shell_error
|
||||
let sha = s:git_revision(a:spec.dir)
|
||||
if empty(sha)
|
||||
let err = join(add(result, 'PlugClean required.'), "\n")
|
||||
elseif !s:hash_match(sha, a:spec.commit)
|
||||
let err = join([printf('Invalid HEAD (expected: %s, actual: %s)',
|
||||
@ -2230,8 +2331,9 @@ function! s:git_validate(spec, check_branch)
|
||||
\ 'PlugUpdate required.'], "\n")
|
||||
endif
|
||||
elseif a:check_branch
|
||||
let branch = result[0]
|
||||
let current_branch = result[0]
|
||||
" Check tag
|
||||
let origin_branch = s:git_origin_branch(a:spec)
|
||||
if has_key(a:spec, 'tag')
|
||||
let tag = s:system_chomp('git describe --exact-match --tags HEAD 2>&1', a:spec.dir)
|
||||
if a:spec.tag !=# tag && a:spec.tag !~ '\*'
|
||||
@ -2239,14 +2341,14 @@ function! s:git_validate(spec, check_branch)
|
||||
\ (empty(tag) ? 'N/A' : tag), a:spec.tag)
|
||||
endif
|
||||
" Check branch
|
||||
elseif a:spec.branch !=# branch
|
||||
elseif origin_branch !=# current_branch
|
||||
let err = printf('Invalid branch: %s (expected: %s). Try PlugUpdate.',
|
||||
\ branch, a:spec.branch)
|
||||
\ current_branch, origin_branch)
|
||||
endif
|
||||
if empty(err)
|
||||
let [ahead, behind] = split(s:lastline(s:system([
|
||||
\ 'git', 'rev-list', '--count', '--left-right',
|
||||
\ printf('HEAD...origin/%s', a:spec.branch)
|
||||
\ printf('HEAD...origin/%s', origin_branch)
|
||||
\ ], a:spec.dir)), '\t')
|
||||
if !v:shell_error && ahead
|
||||
if behind
|
||||
@ -2254,11 +2356,11 @@ function! s:git_validate(spec, check_branch)
|
||||
" pushable (and probably not that messed up).
|
||||
let err = printf(
|
||||
\ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n"
|
||||
\ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', a:spec.branch, ahead, behind)
|
||||
\ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', origin_branch, ahead, behind)
|
||||
else
|
||||
let err = printf("Ahead of origin/%s by %d commit(s).\n"
|
||||
\ .'Cannot update until local changes are pushed.',
|
||||
\ a:spec.branch, ahead)
|
||||
\ origin_branch, ahead)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@ -2271,7 +2373,7 @@ endfunction
|
||||
|
||||
function! s:rm_rf(dir)
|
||||
if isdirectory(a:dir)
|
||||
call s:system(s:is_win
|
||||
return s:system(s:is_win
|
||||
\ ? 'rmdir /S /Q '.plug#shellescape(a:dir)
|
||||
\ : ['rm', '-rf', a:dir])
|
||||
endif
|
||||
@ -2355,6 +2457,7 @@ endfunction
|
||||
function! s:delete(range, force)
|
||||
let [l1, l2] = a:range
|
||||
let force = a:force
|
||||
let err_count = 0
|
||||
while l1 <= l2
|
||||
let line = getline(l1)
|
||||
if line =~ '^- ' && isdirectory(line[2:])
|
||||
@ -2363,11 +2466,22 @@ function! s:delete(range, force)
|
||||
let answer = force ? 1 : s:ask('Delete '.line[2:].'?', 1)
|
||||
let force = force || answer > 1
|
||||
if answer
|
||||
call s:rm_rf(line[2:])
|
||||
let err = s:rm_rf(line[2:])
|
||||
setlocal modifiable
|
||||
call setline(l1, '~'.line[1:])
|
||||
let s:clean_count += 1
|
||||
call setline(4, printf('Removed %d directories.', s:clean_count))
|
||||
if empty(err)
|
||||
call setline(l1, '~'.line[1:])
|
||||
let s:clean_count += 1
|
||||
else
|
||||
delete _
|
||||
call append(l1 - 1, s:format_message('x', line[1:], err))
|
||||
let l2 += len(s:lines(err))
|
||||
let err_count += 1
|
||||
endif
|
||||
let msg = printf('Removed %d directories.', s:clean_count)
|
||||
if err_count > 0
|
||||
let msg .= printf(' Failed to remove %d directories.', err_count)
|
||||
endif
|
||||
call setline(4, msg)
|
||||
setlocal nomodifiable
|
||||
endif
|
||||
endif
|
||||
@ -2507,26 +2621,34 @@ function! s:preview_commit()
|
||||
|
||||
let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}')
|
||||
if empty(sha)
|
||||
return
|
||||
let name = matchstr(getline('.'), '^- \zs[^:]*\ze:$')
|
||||
if empty(name)
|
||||
return
|
||||
endif
|
||||
let title = 'HEAD@{1}..'
|
||||
let command = 'git diff --no-color HEAD@{1}'
|
||||
else
|
||||
let title = sha
|
||||
let command = 'git show --no-color --pretty=medium '.sha
|
||||
let name = s:find_name(line('.'))
|
||||
endif
|
||||
|
||||
let name = s:find_name(line('.'))
|
||||
if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir)
|
||||
return
|
||||
endif
|
||||
|
||||
if exists('g:plug_pwindow') && !s:is_preview_window_open()
|
||||
execute g:plug_pwindow
|
||||
execute 'e' sha
|
||||
execute 'e' title
|
||||
else
|
||||
execute 'pedit' sha
|
||||
execute 'pedit' title
|
||||
wincmd P
|
||||
endif
|
||||
setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable
|
||||
setlocal previewwindow filetype=git buftype=nofile bufhidden=wipe nobuflisted modifiable
|
||||
let batchfile = ''
|
||||
try
|
||||
let [sh, shellcmdflag, shrd] = s:chsh(1)
|
||||
let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha
|
||||
let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && '.command
|
||||
if s:is_win
|
||||
let [batchfile, cmd] = s:batchfile(cmd)
|
||||
endif
|
||||
@ -2576,20 +2698,23 @@ function! s:diff()
|
||||
endif
|
||||
call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:')
|
||||
for [k, v] in plugs
|
||||
let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..'
|
||||
let cmd = ['git', 'log', '--graph', '--color=never']
|
||||
if s:git_version_requirement(2, 10, 0)
|
||||
call add(cmd, '--no-show-signature')
|
||||
endif
|
||||
call extend(cmd, ['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range])
|
||||
if has_key(v, 'rtp')
|
||||
call extend(cmd, ['--', v.rtp])
|
||||
endif
|
||||
let diff = s:system_chomp(cmd, v.dir)
|
||||
if !empty(diff)
|
||||
let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : ''
|
||||
call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)')))
|
||||
let cnts[origin] += 1
|
||||
let branch = s:git_origin_branch(v)
|
||||
if len(branch)
|
||||
let range = origin ? '..origin/'.branch : 'HEAD@{1}..'
|
||||
let cmd = ['git', 'log', '--graph', '--color=never']
|
||||
if s:git_version_requirement(2, 10, 0)
|
||||
call add(cmd, '--no-show-signature')
|
||||
endif
|
||||
call extend(cmd, ['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range])
|
||||
if has_key(v, 'rtp')
|
||||
call extend(cmd, ['--', v.rtp])
|
||||
endif
|
||||
let diff = s:system_chomp(cmd, v.dir)
|
||||
if !empty(diff)
|
||||
let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : ''
|
||||
call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)')))
|
||||
let cnts[origin] += 1
|
||||
endif
|
||||
endif
|
||||
let bar .= '='
|
||||
call s:progress_bar(2, bar, len(total))
|
||||
@ -2649,9 +2774,9 @@ function! s:snapshot(force, ...) abort
|
||||
1
|
||||
let anchor = line('$') - 3
|
||||
let names = sort(keys(filter(copy(g:plugs),
|
||||
\'has_key(v:val, "uri") && !has_key(v:val, "commit") && isdirectory(v:val.dir)')))
|
||||
\'has_key(v:val, "uri") && isdirectory(v:val.dir)')))
|
||||
for name in reverse(names)
|
||||
let sha = s:system_chomp(['git', 'rev-parse', '--short', 'HEAD'], g:plugs[name].dir)
|
||||
let sha = has_key(g:plugs[name], 'commit') ? g:plugs[name].commit : s:git_revision(g:plugs[name].dir)
|
||||
if !empty(sha)
|
||||
call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha))
|
||||
redraw
|
||||
|
@ -3,12 +3,17 @@
|
||||
"pylsp.builtin.enableInstallPylsIsort": true,
|
||||
"pylsp.builtin.enableInstallPylspRope": true,
|
||||
"pylsp.plugins.pyflakes.enabled": false,
|
||||
"pylsp.plugins.pylint.enabled": false,
|
||||
"pylsp.plugins.pylint.enabled": true,
|
||||
"pylsp.plugins.pylint.executable": "pylint",
|
||||
"pylsp.plugins.pylint.args": [
|
||||
"--disable=line-too-long,import-error,too-many-arguments,too-many-locals,too-many-branches,too-many-lines,too-many-return-statements,fixme,too-few-public-methods,too-many-instance-attributes,too-many-statements,too-many-public-methods"
|
||||
],
|
||||
"pylsp.plugins.pycodestyle.enabled": false,
|
||||
"pylsp.plugins.autopep8.enabled": false,
|
||||
"pylsp.plugins.flake8.enabled": true,
|
||||
"pylsp.plugins.flake8.maxComplexity": 15,
|
||||
"pylsp.plugins.yapf.enabled": true,
|
||||
"pylsp.plugins.mccabe.enabled": true,
|
||||
"pylsp.plugins.mccabe.enabled": false,
|
||||
"pylsp.plugins.pydocstyle.enabled": true,
|
||||
"pylsp.plugins.pydocstyle.convention": "google",
|
||||
"pydocstring.formatter": "google",
|
||||
|
@ -25,7 +25,7 @@ hi PmenuSel ctermfg=NONE ctermbg=238 cterm=NONE
|
||||
hi IncSearch ctermfg=234 ctermbg=196 cterm=NONE
|
||||
hi Search ctermfg=NONE ctermbg=NONE cterm=underline
|
||||
hi Directory ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi Folded ctermfg=71 ctermbg=234 cterm=NONE
|
||||
hi Folded ctermfg=245 ctermbg=NONE cterm=NONE
|
||||
|
||||
hi Normal ctermfg=231 ctermbg=234 cterm=NONE
|
||||
hi Boolean ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
@ -43,22 +43,25 @@ hi WarningMsg ctermfg=231 ctermbg=124 cterm=NONE
|
||||
hi Float ctermfg=214 ctermbg=NONE cterm=NONE
|
||||
hi Function ctermfg=230 ctermbg=NONE cterm=NONE
|
||||
hi Identifier ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi Include ctermfg=39 ctermbg=NONE cterm=italic
|
||||
hi Keyword ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi Label ctermfg=196 ctermbg=NONE cterm=NONE
|
||||
hi NonText ctermfg=240 ctermbg=None cterm=NONE
|
||||
hi Number ctermfg=214 ctermbg=NONE cterm=NONE
|
||||
hi Operator ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi PreProc ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi PreProc ctermfg=242 ctermbg=NONE cterm=italic
|
||||
hi Special ctermfg=231 ctermbg=NONE cterm=NONE
|
||||
hi SpecialKey ctermfg=240 ctermbg=NONE cterm=NONE
|
||||
hi Statement ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi Structure ctermfg=230 ctermbg=NONE cterm=NONE
|
||||
hi StorageClass ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi String ctermfg=196 ctermbg=NONE cterm=NONE
|
||||
hi Tag ctermfg=230 ctermbg=NONE cterm=NONE
|
||||
hi Title ctermfg=231 ctermbg=NONE cterm=bold
|
||||
hi Todo ctermfg=71 ctermbg=NONE cterm=inverse,bold
|
||||
hi Type ctermfg=230 ctermbg=NONE cterm=NONE
|
||||
hi Type ctermfg=230 ctermbg=NONE cterm=italic
|
||||
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
|
||||
hi pythonDecoratorName ctermfg=230 ctermbg=NONE cterm=italic
|
||||
hi htmlTag ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi htmlEndTag ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
hi htmlTagName ctermfg=39 ctermbg=NONE cterm=NONE
|
||||
|
@ -32,12 +32,17 @@ if !has('nvim')
|
||||
endif
|
||||
if has('nvim')
|
||||
Plug 'nvim-lua/plenary.nvim'
|
||||
Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.1' }
|
||||
Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.8' }
|
||||
" Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
"Plug 'jodosha/vim-godebug' " Debugger integration via delve
|
||||
Plug 'github/copilot.vim'
|
||||
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
||||
Plug 'folke/todo-comments.nvim'
|
||||
Plug 'akinsho/toggleterm.nvim', {'tag' : 'v2.11.0'}
|
||||
Plug 'neovim/nvim-lspconfig'
|
||||
" Plug 'mfussenegger/nvim-dap-python'
|
||||
" Plug 'linux-cultist/venv-selector.nvim', {'branch': 'regexp'}
|
||||
endif
|
||||
" All of your Plugs must be added before the following line
|
||||
call plug#end()
|
||||
@ -336,7 +341,7 @@ let g:rooter_resolve_links = 1
|
||||
|
||||
""" NERDtree
|
||||
nnoremap <leader>n :NERDTreeFocus<CR>
|
||||
nnoremap <leader>t :NERDTreeToggle<CR>
|
||||
nnoremap <leader>f :NERDTreeToggle<CR>
|
||||
nnoremap <leader>o :NERDTreeFind<CR>
|
||||
|
||||
" Open NERDTree on the right side of the window.
|
||||
@ -380,6 +385,19 @@ nnoremap <leader>fh <cmd>Telescope help_tags<cr>
|
||||
""" TreeSitter
|
||||
luafile ~/.vim/vimrc.d/treesitter.lua
|
||||
|
||||
""" todo-comments
|
||||
luafile ~/.vim/vimrc.d/todo-comments.lua
|
||||
|
||||
""" toggleterm
|
||||
lua require("toggleterm").setup()
|
||||
nnoremap <leader>t :ToggleTerm<CR>
|
||||
|
||||
""" venv-selector
|
||||
" luafile ~/.vim/vimrc.d/venv-selector.lua
|
||||
" nnoremap <leader>vs :VenvSelect<CR>
|
||||
|
||||
|
||||
""" vim-smoothie
|
||||
|
||||
"""""""""""""""""""""
|
||||
" Personal Settings "
|
||||
|
64
any/vim/.vim/vimrc.d/todo-comments.lua
Normal file
64
any/vim/.vim/vimrc.d/todo-comments.lua
Normal file
@ -0,0 +1,64 @@
|
||||
require("todo-comments").setup({
|
||||
signs = true, -- show icons in the signs column
|
||||
sign_priority = 8, -- sign priority
|
||||
-- keywords recognized as todo comments
|
||||
keywords = {
|
||||
FIX = {
|
||||
icon = " ", -- icon used for the sign, and in search results
|
||||
color = "error", -- can be a hex color, or a named color (see below)
|
||||
alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
|
||||
-- signs = false, -- configure signs for some keywords individually
|
||||
},
|
||||
TODO = { icon = " ", color = "info" },
|
||||
HACK = { icon = " ", color = "warning" },
|
||||
-- WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
|
||||
-- PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
||||
-- NOTE = { icon = " ", color = "hint", alt = { "INFO" } },
|
||||
-- TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
|
||||
},
|
||||
gui_style = {
|
||||
fg = "NONE", -- The gui style to use for the fg highlight group.
|
||||
bg = "BOLD", -- The gui style to use for the bg highlight group.
|
||||
},
|
||||
merge_keywords = false, -- when true, custom keywords will be merged with the defaults
|
||||
-- highlighting of the line containing the todo comment
|
||||
-- * before: highlights before the keyword (typically comment characters)
|
||||
-- * keyword: highlights of the keyword
|
||||
-- * after: highlights after the keyword (todo text)
|
||||
highlight = {
|
||||
multiline = true, -- enable multine todo comments
|
||||
multiline_pattern = "^.", -- lua pattern to match the next multiline from the start of the matched keyword
|
||||
multiline_context = 10, -- extra lines that will be re-evaluated when changing a line
|
||||
before = "", -- "fg" or "bg" or empty
|
||||
keyword = "wide", -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
|
||||
after = "fg", -- "fg" or "bg" or empty
|
||||
pattern = [[.*<(KEYWORDS)\s*:]], -- pattern or table of patterns, used for highlighting (vim regex)
|
||||
comments_only = true, -- uses treesitter to match keywords in comments only
|
||||
max_line_len = 400, -- ignore lines longer than this
|
||||
exclude = {}, -- list of file types to exclude highlighting
|
||||
},
|
||||
-- list of named colors where we try to extract the guifg from the
|
||||
-- list of highlight groups or use the hex color if hl not found as a fallback
|
||||
colors = {
|
||||
error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
|
||||
warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" },
|
||||
info = { "DiagnosticInfo", "#2563EB" },
|
||||
hint = { "DiagnosticHint", "#10B981" },
|
||||
default = { "Identifier", "#7C3AED" },
|
||||
test = { "Identifier", "#FF00FF" }
|
||||
},
|
||||
search = {
|
||||
command = "rg",
|
||||
args = {
|
||||
"--color=never",
|
||||
"--no-heading",
|
||||
"--with-filename",
|
||||
"--line-number",
|
||||
"--column",
|
||||
},
|
||||
-- regex that will be used to match keywords.
|
||||
-- don't replace the (KEYWORDS) placeholder
|
||||
pattern = [[\b(KEYWORDS):]], -- ripgrep regex
|
||||
-- pattern = [[\b(KEYWORDS)\b]], -- match without the extra colon. You'll likely get false positives
|
||||
},
|
||||
})
|
@ -2,6 +2,7 @@ require("nvim-treesitter.configs").setup({
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"c",
|
||||
"comment",
|
||||
"cpp",
|
||||
"css",
|
||||
"dockerfile",
|
||||
@ -35,7 +36,7 @@ require("nvim-treesitter.configs").setup({
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
disable = { "markdown", "make" },
|
||||
additional_vim_regex_highlighting = false,
|
||||
disable = { "markdown", "make"},
|
||||
additional_vim_regex_highlighting = true,
|
||||
},
|
||||
})
|
||||
|
37
any/vim/.vim/vimrc.d/venv-selector.lua
Normal file
37
any/vim/.vim/vimrc.d/venv-selector.lua
Normal file
@ -0,0 +1,37 @@
|
||||
local function on_venv_activate()
|
||||
local command_run = false
|
||||
|
||||
local function run_shell_command()
|
||||
local venv = require("venv-selector").venv():match("([^/]+)$")
|
||||
|
||||
if command_run == false then
|
||||
local command = "workon " .. venv
|
||||
vim.api.nvim_feedkeys(command .. "\n", "n", false)
|
||||
command_run = true
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_augroup("TerminalCommands", { clear = true })
|
||||
|
||||
vim.api.nvim_create_autocmd("TermEnter", {
|
||||
group = "TerminalCommands",
|
||||
pattern = "*",
|
||||
callback = run_shell_command,
|
||||
})
|
||||
vim.print("Activated venv: " .. require("venv-selector").venv())
|
||||
end
|
||||
|
||||
require("venv-selector").setup {
|
||||
settings = {
|
||||
options = {
|
||||
on_venv_activate_callback = on_venv_activate,
|
||||
notify_user_on_venv_activation = true,
|
||||
},
|
||||
search = {
|
||||
my_venvs = {
|
||||
command = "ls -d ~/devel/venvs/*/",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -8,9 +8,10 @@
|
||||
"40",
|
||||
"41",
|
||||
"42",
|
||||
"43"
|
||||
"43",
|
||||
"44"
|
||||
],
|
||||
"url": "https://github.com/grantmcwilliams/Gnome_Hide_Clock",
|
||||
"uuid": "hide_clock@grantmcwilliams.com",
|
||||
"version": 10
|
||||
"version": 11
|
||||
}
|
Loading…
Reference in New Issue
Block a user