diff --git a/any/bash/.bash_aliases b/any/bash/.bash_aliases index 89b6025..3d19479 100644 --- a/any/bash/.bash_aliases +++ b/any/bash/.bash_aliases @@ -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" diff --git a/any/bash/.bash_functions b/any/bash/.bash_functions index 1457bd8..8d21e7b 100644 --- a/any/bash/.bash_functions +++ b/any/bash/.bash_functions @@ -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] + # -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" +} diff --git a/any/scripts/.local/bin/aws-assume-role.sh b/any/scripts/.local/bin/aws-assume-role.sh new file mode 100644 index 0000000..4449fdb --- /dev/null +++ b/any/scripts/.local/bin/aws-assume-role.sh @@ -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)" diff --git a/any/scripts/.local/bin/portable-python b/any/scripts/.local/bin/portable-python new file mode 120000 index 0000000..7802445 --- /dev/null +++ b/any/scripts/.local/bin/portable-python @@ -0,0 +1 @@ +/home/dfc/.local/pipx/venvs/portable-python/bin/portable-python \ No newline at end of file diff --git a/any/scripts/.local/bin/share-comet-images.sh b/any/scripts/.local/bin/share-comet-images.sh new file mode 100755 index 0000000..feb3e7d --- /dev/null +++ b/any/scripts/.local/bin/share-comet-images.sh @@ -0,0 +1,99 @@ +#!/bin/bash + +set -eo pipefail + +echo "Usage:" +echo -e "\t$0 [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="" +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 diff --git a/any/vim/.vim/autoload/plug.vim b/any/vim/.vim/autoload/plug.vim index 652caa8..940811a 100644 --- a/any/vim/.vim/autoload/plug.vim +++ b/any/vim/.vim/autoload/plug.vim @@ -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 diff --git a/any/vim/.vim/autoload/plug.vim.old b/any/vim/.vim/autoload/plug.vim.old index 8332537..652caa8 100644 --- a/any/vim/.vim/autoload/plug.vim.old +++ b/any/vim/.vim/autoload/plug.vim.old @@ -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(':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', '', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] + \ [['i', '', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] execute printf( \ '%snoremap %s %s:call lod_map(%s, %s, %s, "%s")', \ 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 q :if b:plug_preview==1pcendifbd + nnoremap q :call close_pane() 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 diff --git a/any/vim/.vim/coc-settings.json b/any/vim/.vim/coc-settings.json index d79026a..a80f64c 100644 --- a/any/vim/.vim/coc-settings.json +++ b/any/vim/.vim/coc-settings.json @@ -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", diff --git a/any/vim/.vim/colors/Czar.vim b/any/vim/.vim/colors/Czar.vim index a7aca0f..dfcd651 100644 --- a/any/vim/.vim/colors/Czar.vim +++ b/any/vim/.vim/colors/Czar.vim @@ -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 diff --git a/any/vim/.vim/vimrc b/any/vim/.vim/vimrc index db7cace..2c3efff 100644 --- a/any/vim/.vim/vimrc +++ b/any/vim/.vim/vimrc @@ -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 n :NERDTreeFocus -nnoremap t :NERDTreeToggle +nnoremap f :NERDTreeToggle nnoremap o :NERDTreeFind " Open NERDTree on the right side of the window. @@ -380,6 +385,19 @@ nnoremap fh Telescope help_tags """ TreeSitter luafile ~/.vim/vimrc.d/treesitter.lua +""" todo-comments +luafile ~/.vim/vimrc.d/todo-comments.lua + +""" toggleterm +lua require("toggleterm").setup() +nnoremap t :ToggleTerm + +""" venv-selector +" luafile ~/.vim/vimrc.d/venv-selector.lua +" nnoremap vs :VenvSelect + + +""" vim-smoothie """"""""""""""""""""" " Personal Settings " diff --git a/any/vim/.vim/vimrc.d/todo-comments.lua b/any/vim/.vim/vimrc.d/todo-comments.lua new file mode 100644 index 0000000..4bb8c47 --- /dev/null +++ b/any/vim/.vim/vimrc.d/todo-comments.lua @@ -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 + }, +}) diff --git a/any/vim/.vim/vimrc.d/treesitter.lua b/any/vim/.vim/vimrc.d/treesitter.lua index 645eba4..d84736e 100644 --- a/any/vim/.vim/vimrc.d/treesitter.lua +++ b/any/vim/.vim/vimrc.d/treesitter.lua @@ -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, }, }) diff --git a/any/vim/.vim/vimrc.d/venv-selector.lua b/any/vim/.vim/vimrc.d/venv-selector.lua new file mode 100644 index 0000000..da240e0 --- /dev/null +++ b/any/vim/.vim/vimrc.d/venv-selector.lua @@ -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/*/", + }, + }, + }, +} + diff --git a/linux-gnu/gnome-extensions/.local/share/gnome-shell/extensions/hide_clock@grantmcwilliams.com/metadata.json b/linux-gnu/gnome-extensions/.local/share/gnome-shell/extensions/hide_clock@grantmcwilliams.com/metadata.json index 72cd187..9d25707 100644 --- a/linux-gnu/gnome-extensions/.local/share/gnome-shell/extensions/hide_clock@grantmcwilliams.com/metadata.json +++ b/linux-gnu/gnome-extensions/.local/share/gnome-shell/extensions/hide_clock@grantmcwilliams.com/metadata.json @@ -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 } \ No newline at end of file