Skip to content

Instantly share code, notes, and snippets.

@Konfekt
Konfekt / EvaluateAsComment.vim
Last active April 16, 2024 05:19
Add evaluation of selected code as comment
" From https://old.reddit.com/r/neovim/comments/1c3gf93/commentreplnvim_run_code_from_your_buffer_and/
"
" Add the following lines to `ftplugin/{python,sh,zsh,lua,perl, ...}.vim
" and call :EvaluateAsComment to add the evaluation of the selected lines as a comment:
"
" print(1+2)
"
" becomes
"
" # 3
@Konfekt
Konfekt / mapping-with-count-to-list-repo-or-all-files-altered-in-count-last-commits.vim
Created April 9, 2024 12:25
A mapping that uses FZF to list all files in a Git repo and takes a count to restrict to those altered in last <count> commits
" A mapping that uses FZF to list all files in a Git repo and takes a count to restrict to
" those altered in last <count> commits.
nnoremap <silent><expr> g. v:count ? ':<c-u>' . v:count . 'GFilesAltered<cr>' : ':<c-u>GFiles<cr>'
command! -count=1 GFilesAltered call fzf#vim#files('', fzf#vim#with_preview( {
\ 'source': 'git log HEAD --max-count=<count> --diff-filter=MA --name-only --pretty=format: | ' . s:filter,
\ 'options': '--multi --prompt "Files altered in last <count> commits: "',
\ } ))
" If Fugitive is installed, there's a fallback, here's a possible fallback
@Konfekt
Konfekt / RunOrRaise.ahk
Last active April 9, 2024 12:26
Autohotkey v2 Script to Run or Raise application using Shortcut
; Run or Raise Application using Shortcut
; From https://gist.github.com/dewaka/c494543b4cd2a2dcd09cc5a6aa0f7517 adapted to ah2
RunOrRaise(exePath, winID:="") {
if (winID == "") {
exeName := SubStr(exePath, InStr(exePath, "\", , -1)+1)
winID := "ahk_exe " . exeName
}
If not WinExist(winID) {
UserProfile := EnvGet("USERPROFILE")
@Konfekt
Konfekt / set.vim
Last active March 26, 2024 12:10
Use :Set! (instead of :set) to make setting persist in a modeline
function! Set(args, isPersistent) abort
" remove whitespaces surrounding =
let cmd = 'set ' . substitute(a:args, '\s*=\s*', '=', 'g')
execute cmd
if !a:isPersistent | return | endif
" append modeline
let commentstring = empty(&l:commentstring) ?
\ (empty(&g:commentstring) ? '# %s' : &g:commentstring) : &l:commentstring
@Konfekt
Konfekt / start-open.vim
Last active April 17, 2024 07:41
Open GUI application / file from Vim in background
" To start the GUI app, use :Silent! app
" Useful, say, to look up a keyword by :set keywordprg=:Silent!\ zeal
" To open file, use :Open! file
" Useful, say, to view a compiled HTML of a markdown file, by :Open! %:r.html
if executable('cmd.exe') " Win32 or WSL
command! -complete=shellcmd -nargs=1 -bang Silent
\ execute ':silent !' .
\ (&shell =~? '\v(^|\\)cmd\.exe$' ? '' : 'cmd.exe /c ') .
@Konfekt
Konfekt / make_completion.vim
Last active March 19, 2024 07:20
:Make target completion in Vim
" From https://github.com/mg979/tasks.vim/pull/15/files
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Command-line completion for ":Make"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
command! -bang -nargs=* -complete=customlist,MakeComplete Make silent make<bang> <args> | silent redraw!
command! -bang -nargs=* -complete=customlist,MakeComplete LMake silent lmake<bang> <args> | silent redraw!
if executable('awk')
@Konfekt
Konfekt / chatgpt-write-msg.py
Created March 9, 2024 12:27
let ChatGPT write a sensible commit message using an adaptable Python script
#!/usr/bin/env python3
# Adaption of https://github.com/tom-doerr/chatgpt_commit_message_hook/main/prepare-commit-msg
#
# Mark this file as executable and add it into the global hooks folder
# whose path is given by the core.hooksPath configuration variable
# skip during rebase
import sys
if len(sys.argv) > 2:
@Konfekt
Konfekt / aichat.vim
Last active March 2, 2024 05:49
Vim commands to pipe text to aichat and open a chat window
if executable('aichat')
command! -range -nargs=+ -complete=customlist,s:AIChatRoleCompletion AIRole <line1>,<line2>call s:AIRole(<q-args>)
function! s:AIRole(instruction) range
let instruction = trim(a:instruction)
let i = match(instruction . ' ', '\s')
let role = instruction[0:i-1]
let instruction = trim(instruction[i:-1])
let prompt = !empty(instruction) ? shellescape('Please consider: ' . instruction . '.') : ''
" term ++hidden ++open
exe a:firstline.','.a:lastline . 'term aichat --role ' . role . ' ' . prompt
@Konfekt
Konfekt / git-multihook.sh
Last active December 11, 2023 10:01
use global git hooks as fallback to local hooks
#!/usr/bin/env bash
#
# Adaption of https://github.com/majutsushi/etc/commit/e62904088c698e064c17522d54dff91b629ee253#diff-53b7e445a85984949f551c277d4cc4ee9682287cb234e075e6d352be887e7494
# with https://github.com/pivotal-cf/git-hooks-core/blob/master/.base-hook
#
# This script is meant to be put into a directory pointed to by core.hooksPath
# in Git 2.9.
# Then for each hook you want to support, create a symlink "hookname -> multihook"
# and optionally a directory "hookname.d" where you can put all scripts for
# that hook
@Konfekt
Konfekt / .xbindkeys.sh
Last active May 16, 2023 11:44
xbindkeys bindings to copy recognized (OCRed) text of rectangular selection or current window to clipboard (similar to Text Extractor of Powertoys under Microsoft Windows)
# Uses ksnip to select a rectangular region. Other options, instead of
#
# ksnip --rectarea --saveto "$file"
#
# are
#
# - spectacle --background --region --output "$file"
# - xfce4-screenshooter --region --mouse --save "$file"
# - maim --select --hidecursor --quiet "$file"