vit.am is a Fediverse instance that uses the ActivityPub protocol. In other words, users at this host can communicate with people that use software like Mastodon, Pleroma, Friendica, etc. all around the world.
This server runs the snac software and there is no automatic sign-up process.
Gitea 1.26.3 and 1.26.4 are now available.
1.26.3 includes security fixes, bug fixes, and stability improvements.
1.26.4 fixes a repository code-page regression introduced in 1.26.3, plus one additional security fix.
We recommend upgrading.
https://blog.gitea.com/release-of-1.26.3-and-1.26.4/
Not sure if this is useful to anyone other than me, but I made a TODO item linter that complains if the TODO items in your code don't have an owner and a reference to an issue so someone has a chance of addressing them in the future:
https://worktree.ca/taffer/todo-linter
Works with pre-commit: https://pre-commit.com
you cannot handle my vimrc. its too powerful for you. you’ll have to find another vimscript merchant in uganda
vim9script
set termguicolors
set hidden
set relativenumber
set cursorline
set cursorlineopt=both
set list
set listchars=trail:·,tab:»\ ,nbsp:␣,extends:›,precedes:‹
set showbreak=↪\
set breakindent
set laststatus=2
set statusline=%#Status1#%y\[%{empty(&fenc)\ ?\ &enc\ :\ &fenc}\|%{&fileformat}\]%r%m%#Status2#\ %F\ %=\ %l:%c\ %L
set tabstop=4
set shiftwidth=4
packadd! matchit
set smartindent
set equalalways
set splitbelow
set splitright
set splitkeep=screen
set nostartofline
set completeopt=menuone,noselect,noinsert
set scrolloff=8
set sidescrolloff=4
set pumheight=16
set shortmess+=c
set ignorecase
set smartcase
set undofile
set swapfile
set directory=~/.cache/vim/swap
set undodir=~/.cache/vim/undo
set path+=**
set wildmenu
set wildmode=longest:full,full
set title
set ttimeoutlen=67
set updatetime=420
set mouse=a
augroup terminal_setup
au!
autocmd TerminalOpen * setlocal nospell nonumber nobuflisted textwidth=0 winheight=1
augroup END
filetype plugin on
filetype plugin indent on
syntax on
imap <C-BS> <C-W>
cnoremap %% <C-R>=fnameescape(expand("%:p:h")."/")<CR>
if has('clipboard_provider') && executable('wl-copy')
set t_fd=
set t_fe=
def WlClipCopy(reg: string, regtype: string, lines: list<string>)
call system('wl-copy', join(lines, "\n") .. (regtype[0] ==# 'V' ? "\n" : ''))
if v:shell_error != 0
echohl WarningMsg | echom 'wl-copy failed' | echohl None
endif
enddef
def WlClipPaste(reg: string): list<any>
var lines = systemlist('wl-paste --no-newline')
if v:shell_error != 0
return [] # invalid return = register left unchanged, per the docs
endif
return ['', lines]
enddef
v:clipproviders['wl'] = {
available: () => !empty($WAYLAND_DISPLAY),
copy: {'+': WlClipCopy, '*': WlClipCopy},
paste: {'+': WlClipPaste, '*': WlClipPaste},
}
set clipmethod^=wl
endif
# git clone https://github.com/k-takata/minpac.git ~/.config/vim/pack/minpac/opt/minpac
def PackInit()
packadd minpac
call minpac#init()
call minpac#add('k-takata/minpac', {'type': 'opt'})
# colorscheme
call minpac#add('ayu-theme/ayu-vim')
#lsp/linting/formatting
call minpac#add('yegappan/lsp')
call minpac#add('dense-analysis/ale')
#git stuff this shit runs git like every second
call minpac#add('airblade/vim-gitgutter')
call minpac#add('Eliot00/git-lens.vim')
#useful shortcuts
call minpac#add('ubaldot/vim-op-surround')
call minpac#add('mao-yining/undotree.vim')
#repl
call minpac#add('ubaldot/vim-replica')
# vimwiki :)
call minpac#add('vimwiki/vimwiki')
enddef
command! PackUpdate source $MYVIMRC | call PackInit() | call minpac#update()
command! PackClean source $MYVIMRC | call PackInit() | call minpac#clean()
command! PackStatus packadd minpac | call PackInit() | call minpac#status()
# silently add now so ayu-vim doesnt error
silent! packadd ayu-vim
#light
#set background=light
#highlight LineNr guifg=#f040a0
#highlight CursorLine guibg=#f7f7f7 term=none cterm=none
#highlight CursorLineNr guibg=#f4f4f4 gui=bold term=none cterm=bold
#highlight CursorColumn guibg=#f8f8f8
#highlight Folded guibg=#ff4faf guifg=#ffffff gui=bold
#highlight Status1 guibg=#f040a0 guifg=#ffffff gui=bold
#highlight Status2 guibg=#f040a0 guifg=#ffffff
#dark
#set background=dark
#highlight CursorLine guibg=#984373 term=none cterm=none
#highlight CursorLineNr guibg=#984373 gui=bold term=none cterm=bold
#highlight CursorColumn guibg=#984373
#highlight Folded guibg=#5a5a5a guifg=#f040a0 gui=bold
#highlight Status1 guibg=#f040a0 guifg=#ffffff gui=bold
#highlight Status2 guibg=#f040a0 guifg=#ffffff
#powershell
#set background=dark
#highlight CursorLine guibg=#084483 term=none cterm=none
#highlight CursorLineNr guibg=#084483 gui=bold term=none cterm=bold
#highlight CursorColumn guibg=#084483
#highlight Folded guibg=#5a5a5a guifg=#0b57a8 gui=bold
#highlight Status1 guibg=#0b57a8 guifg=#ffffff gui=bold
#highlight Status2 guibg=#0b57a8 guifg=#ffffff
#ayu
g:ayucolor = "dark"
colorscheme ayu
augroup lsp_options
au!
autocmd User LspSetup call g:LspOptionsSet({
\ 'autoComplete': v:true,
\ 'showDiagWithSign': v:true,
\ 'showDiagWithVirtualText': v:false,
\ 'highlightDiagInline': v:true,
\ 'showDiagInPopup': v:false,
\ 'autoHighlightDiags': v:true,
\ 'autoHighlight': v:true,
\ 'semanticHighlight': v:true,
\ 'showInlayHints': v:true,
\ 'showSignature': v:true,
\ 'echoSignature': v:true,
\ 'diagSignErrorText': '✘',
\ 'diagSignWarningText': '▲',
\ 'diagSignInfoText': 'ℹ',
\ 'diagSignHintText': '●',
\ })
augroup END
highlight Error ctermfg=red guifg=red ctermbg=NONE guibg=NONE cterm=bold gui=bold
highlight Todo ctermfg=lightyellow guifg=lightyellow ctermbg=NONE guibg=NONE cterm=bold gui=bold
# diagnostics
highlight LspDiagInlineError ctermfg=red guisp=#e06c75 cterm=undercurl gui=undercurl
highlight LspDiagInlineWarning ctermfg=yellow guisp=#e5c07b cterm=underline gui=underline
highlight LspDiagInlineInfo ctermfg=lightblue guisp=#61afef cterm=underline gui=underline
highlight LspDiagInlineHint ctermfg=lightmagenta guisp=#c678dd cterm=underline gui=underline
#gutter
highlight LspErrorText guifg=#FF3333 guibg=NONE gui=bold
highlight LspWarningText guifg=#FFB454 guibg=NONE gui=bold
highlight LspInformationText guifg=#36A3D9 guibg=NONE
highlight LspHintText guifg=#95E6CB guibg=NONE
highlight LspCodeActionText guifg=#E7C547 guibg=NONE
# document highlight
highlight LspReference guibg=#253340 guifg=NONE
highlight LspReferenceText guibg=#253340 guifg=NONE
highlight LspReferenceRead guibg=#253340 guifg=NONE
highlight LspReferenceWrite guibg=#2E3A2A guifg=NONE
highlight Status1 guibg=#FFB454 guifg=#0F1419 gui=bold
highlight Status2 guibg=#253340 guifg=#E6E1CF gui=NONE
highlight StatusLine guibg=#253340 guifg=#E6E1CF gui=NONE
highlight StatusLineNC guibg=#161D24 guifg=#8A94A0 gui=NONE
highlight LineNr guifg=#5C6773 guibg=NONE
highlight CursorLineNr guifg=#FFB454 guibg=#1B232C gui=bold
highlight CursorLine guibg=#1B232C guifg=NONE
highlight CursorColumn guibg=#1B232C guifg=NONE
highlight CursorLineConceal guibg=#1B232C guifg=#5C6773
highlight VertSplit guifg=#5C6773 guibg=NONE gui=NONE
highlight WinSeparator guifg=#5C6773 guibg=NONE gui=NONE
g:ale_disable_lsp = 1
g:ale_linters_explicit = 1
g:ale_fix_on_save = 1
g:ale_fixers = {
\ 'zig': ['zigfmt'],
\ 'rust': ['rustfmt'],
\ 'go': ['goimports', 'gofmt'],
\ 'c': ['clang-format'],
\ 'cpp': ['clang-format'],
\ 'cmake': ['cmake-format'],
\ 'python': ['ruff', 'ruff_format'],
\ 'sh': ['shfmt'],
\ 'bash': ['shfmt'],
\ 'terraform': ['terraform'],
\ 'typescript': ['prettier'],
\ 'javascript': ['prettier'],
\ 'html': ['prettier'],
\ 'css': ['prettier'],
\ 'json': ['prettier'],
\ 'jsonc': ['prettier'],
\ }
au BufRead,BufNewFile *.vrl setlocal filetype=vrl
if executable('vrl')
autocmd FileType vrl setlocal makeprg=vrl\ --program\ %\ --input\ /dev/null
elseif executable('vector')
autocmd FileType vrl setlocal makeprg=vector\ vrl\ --program\ %\ --input\ /dev/null
endif
def SqlFluffFormat()
var view = winsaveview()
var src = getline(1, '$')
var out = systemlist('sqlfluff format --dialect ansi -', src)
if v:shell_error == 0 && !empty(out)
if out !=# src
deletebufline('%', 1, '$')
setline(1, out)
endif
else
echohl WarningMsg | echom 'sqlfluff: ' .. join(out, ' ') | echohl None
endif
winrestview(view)
enddef
if executable('sqlfluff')
augroup sqlfluff_format
au!
autocmd BufWritePre * if &filetype ==# 'sql' | SqlFluffFormat() | endif
autocmd FileType sql setlocal formatprg=SqlFluffFormat()
augroup END
endif
def OnLspAttached()
augroup lsp_cursor_diag
autocmd! CursorHold <buffer>
autocmd CursorHold <buffer> silent! LspDiag current
augroup END
nnoremap <buffer> <silent> <leader>gd <Cmd>LspGotoDefinition<CR>
nnoremap <buffer> <silent> <leader>gD <Cmd>LspGotoDeclaration<CR>
nnoremap <buffer> <silent> <leader>gi <Cmd>LspGotoImpl<CR>
nnoremap <buffer> <silent> <leader>gr <Cmd>LspShowReferences<CR>
nnoremap <buffer> <silent> <leader>gt <Cmd>LspGotoTypeDef<CR>
nnoremap <buffer> <silent> <leader>K <Cmd>LspHover<CR>
nnoremap <buffer> <silent> <leader>rn <Cmd>LspRename<CR>
nnoremap <buffer> <silent> <leader>ca <Cmd>LspCodeAction<CR>
nnoremap <buffer> <silent> <leader>dl <Cmd>LspDiag show<CR>
nnoremap <buffer> <silent> [d <Cmd>LspDiag prev<CR>
nnoremap <buffer> <silent> ]d <Cmd>LspDiag next<CR>
nnoremap <buffer> <silent> <leader>f <Cmd>LspFormat<CR>
nnoremap <buffer> <silent> <leader>ds <Cmd>LspDocumentSymbol<CR>
nnoremap <buffer> <silent> <leader>ws <Cmd>LspSymbolSearch<CR>
nnoremap <buffer> <silent> <leader>pe <Cmd>LspPeekDefinition<CR>
nnoremap <buffer> ]q :cnext<CR>
nnoremap <buffer> [q :cprev<CR>
nnoremap <buffer> ]Q :clast<CR>
nnoremap <buffer> [Q :cfirst<CR>
setlocal signcolumn=yes
enddef
augroup lsp_attach
au!
autocmd User LspAttached call OnLspAttached()
augroup END
def HasPrettierRc(): bool
var dir = expand('%:p:h')
for name in [
\ '.prettierrc',
\ '.prettierrc.json', '.prettierrc.yaml', '.prettierrc.yml',
\ '.prettierrc.json5', '.prettierrc.toml',
\ '.prettierrc.js', '.prettierrc.cjs', '.prettierrc.mjs',
\ '.prettierrc.ts', '.prettierrc.cts', '.prettierrc.mts',
\ 'prettier.config.js', 'prettier.config.cjs', 'prettier.config.mjs',
\ 'prettier.config.ts', 'prettier.config.cts', 'prettier.config.mts']
if !empty(findfile(name, dir .. ';'))
return true
endif
endfor
return false
enddef
def PrettierYaml()
var view = winsaveview()
var src = getline(1, '$')
var out = systemlist('prettier --stdin-filepath ' .. shellescape(expand('%:p')), src)
if v:shell_error == 0 && !empty(out)
if out !=# src
call deletebufline('%', 1, '$')
call setline(1, out)
endif
else
echohl WarningMsg | echom 'prettier: ' .. join(out, ' ') | echohl None
endif
call winrestview(view)
enddef
def YamlFormatOnSave()
if executable('prettier') && HasPrettierRc()
call PrettierYaml()
else
silent! LspFormat
endif
enddef
augroup yaml_fmt
au!
autocmd BufWritePre *.yaml,*.yml call YamlFormatOnSave()
augroup END
def RegisterLspServers()
# append to this and we will declare everything at the end once
var servers = []
if executable('ty') && executable('ruff')
call add(servers, {'name': 'ruff', 'filetype': ['python'], 'path': 'ruff', 'args': ['server']})
call add(servers, {'name': 'ty', 'filetype': ['python'], 'path': 'ty', 'args': ['server']})
elseif executable('pylsp') && executable('ruff')
var pylsp_cfg = {'pylsp': {'plugins': {
\ 'pycodestyle': {'enabled': v:false},
\ 'pyflakes': {'enabled': v:false},
\ 'mccabe': {'enabled': v:false},
\ 'yapf': {'enabled': v:false},
\ 'autopep8': {'enabled': v:false},
\ 'ruff': {'enabled': v:true, 'formatEnabled': v:true},
\ }}}
call add(servers, {'name': 'pylsp', 'filetype': ['python'], 'path': 'pylsp', 'args': [], 'workspaceConfig': pylsp_cfg})
elseif executable('ty')
call add(servers, {'name': 'ty', 'filetype': ['python'], 'path': 'ty', 'args': ['server']})
elseif executable('ruff')
call add(servers, {'name': 'ruff', 'filetype': ['python'], 'path': 'ruff', 'args': ['server']})
elseif executable('pylsp')
var pylsp_cfg = {'pylsp': {'plugins': {
\ 'pycodestyle': {'enabled': v:false},
\ 'pyflakes': {'enabled': v:true},
\ 'yapf': {'enabled': v:false},
\ }}}
call add(servers, {'name': 'pylsp', 'filetype': ['python'], 'path': 'pylsp', 'args': [], 'workspaceConfig': pylsp_cfg})
endif
if executable('bash-language-server')
call add(servers, {'name': 'bashls', 'filetype': ['sh', 'bash'], 'path': 'bash-language-server', 'args': ['start']})
endif
if executable('nixd')
call add(servers, {'name': 'nixd', 'filetype': ['nix'], 'path': 'nixd', 'args': []})
endif
if executable('ansible-language-server')
var ansible_opts = {'ansible': {'validation': {'lint': {'enabled': v:true}}}}
call add(servers, {'name': 'ansiblels', 'filetype': ['yaml.ansible'], 'path': 'ansible-language-server', 'args': ['--stdio'], 'initializationOptions': ansible_opts})
endif
if executable('tofu-ls')
call add(servers, {'name': 'tofu-ls', 'filetype': ['terraform'], 'path': 'tofu-ls', 'args': ['serve']})
elseif executable('terraform-ls')
call add(servers, {'name': 'terraform-ls', 'filetype': ['terraform'], 'path': 'terraform-ls', 'args': ['serve']})
endif
if executable('nu')
call add(servers, {'name': 'nushell', 'filetype': ['nu'], 'path': 'nu', 'args': ['--lsp']})
endif
if executable('jsonnet-language-server')
call add(servers, {'name': 'jsonnet', 'filetype': ['jsonnet', 'libsonnet'], 'path': 'jsonnet-language-server', 'args': []})
endif
if executable('dhall-lsp-server')
call add(servers, {'name': 'dhall', 'filetype': ['dhall'], 'path': 'dhall-lsp-server', 'args': []})
endif
if executable('pwsh')
var pses_paths = [
\ expand('~/.local/share/powershell/Modules/PowerShellEditorServices/Start-EditorServices.ps1'),
\ expand('~/Documents/PowerShell/Modules/PowerShellEditorServices/Start-EditorServices.ps1'),
\ expand('~/.local/share/powershell/Modules/PowerShellEditorServices/PowerShellEditorServices/Start-EditorServices.ps1'),
\ expand('~/Documents/PowerShell/Modules/PowerShellEditorServices/PowerShellEditorServices/Start-EditorServices.ps1')]
var pses_found = null_string
for p in pses_paths
if filereadable(p)
pses_found = p
break
endif
endfor
if pses_found != ''
var pses_bundle = fnamemodify(pses_found, ':h')
add(servers, {
name: 'powershell-es',
filetype: ['ps1', 'powershell'],
path: 'pwsh',
args: ['-NoLogo', '-NoProfile', '-NonInteractive', '-Command', pses_found,
'-BundledModulesPath', pses_bundle, '-Stdio',
'-LogPath', expand('~/.cache/vim/pses.log'),
'-LogLevel', 'Warning', '-FeatureFlags', '@()'],
})
endif
endif
if executable('yaml-language-server')
var yaml_cfg = {'yaml': {'validate': v:true, 'completion': v:true, 'hover': v:true, 'yamlVersion': '1.2', 'schemaStore': {'enable': v:true}}}
call add(servers, {'name': 'yamlls', 'filetype': ['yaml', 'yml'], 'path': 'yaml-language-server', 'args': ['--stdio'], 'workspaceConfig': yaml_cfg})
endif
if executable('sqls')
call add(servers, {'name': 'sqls', 'filetype': ['sql', 'mysql', 'plsql', 'mssql'], 'path': 'sqls', 'args': []})
elseif executable('sql-language-server')
call add(servers, {'name': 'sqlls', 'filetype': ['sql', 'mysql', 'plsql', 'mssql'], 'path': 'sql-language-server', 'args': ['up', '--method', 'stdio']})
endif
if executable('gopls')
var gopls_cfg = {'gopls': {'staticcheck': v:true, 'usePlaceholders': v:true, 'completeUnimported': v:true}}
call add(servers, {'name': 'gopls', 'filetype': ['go', 'gomod', 'gowork', 'gohtmltmpl', 'gotexttmpl'], 'path': 'gopls', 'args': ['-remote=auto'], 'syncInit': v:true, 'workspaceConfig': gopls_cfg})
endif
if executable('rust-analyzer')
call add(servers, {'name': 'rust-analyzer', 'filetype': ['rust'], 'path': 'rust-analyzer', 'args': [], 'syncInit': v:true})
endif
if executable('typescript-language-server')
call add(servers, {'name': 'tsserver', 'filetype': ['javascript', 'typescript', 'typescriptreact', 'javascriptreact', 'typescript.tsx', 'javascript.jsx'], 'path': 'typescript-language-server', 'args': ['--stdio']})
endif
if executable('vscode-eslint-language-server')
call add(servers, {'name': 'eslint', 'filetype': ['javascript', 'typescript', 'typescriptreact', 'javascriptreact'], 'path': 'vscode-eslint-language-server', 'args': ['--stdio']})
endif
if executable('zls')
call add(servers, {'name': 'zls', 'filetype': ['zig'], 'path': 'zls', 'args': []})
endif
if executable('vscode-json-language-server')
call add(servers, {'name': 'jsonls', 'filetype': ['json', 'jsonc'], 'path': 'vscode-json-language-server', 'args': ['--stdio']})
endif
if executable('taplo')
call add(servers, {'name': 'taplo', 'filetype': ['toml'], 'path': 'taplo', 'args': ['lsp', 'stdio']})
endif
if executable('awk-language-server')
call add(servers, {'name': 'awkls', 'filetype': ['awk'], 'path': 'awk-language-server', 'args': []})
endif
if executable('csharp-ls')
call add(servers, {'name': 'csharp-ls', 'filetype': ['cs'], 'path': 'csharp-ls', 'args': []})
endif
if executable('clangd')
call add(servers, {'name': 'clangd', 'filetype': ['c', 'cpp', 'objc', 'objcpp', 'cuda'], 'path': 'clangd', 'args': ['--background-index']})
endif
if executable('promql-langserver')
call add(servers, {'name': 'promql', 'filetype': ['promql'], 'path': 'promql-langserver', 'args': ['--config-file', expand('~/.config/promql-langserver.yaml')]})
endif
if !empty(servers)
call g:LspAddServer(servers)
endif
enddef
augroup lsp_servers
au!
autocmd User LspSetup call RegisterLspServers()
augroup END
augroup lsp_filetypes
au!
au BufRead,BufNewFile *.nu setlocal filetype=nu
au BufRead,BufNewFile *.ps1,*.psm1,*.psd1 setlocal filetype=ps1
au BufRead,BufNewFile *.zig,*.zon setlocal filetype=zig
au BufRead,BufNewFile *.jsonc setlocal filetype=jsonc
au BufRead,BufNewFile *.hujson setlocal filetype=jsonc
au BufRead,BufNewFile *.jsonld setlocal filetype=json
au BufRead,BufNewFile *.toml,Cargo.lock setlocal filetype=toml
au BufRead,BufNewFile *.awk,*.gawk setlocal filetype=awk
au BufRead,BufNewFile *.csx setlocal filetype=cs
au BufRead,BufNewFile *.promql setlocal filetype=promql
au BufRead,BufNewFile *.hcl setlocal filetype=hcl
au BufRead,BufNewFile *.pkr.hcl setlocal filetype=hcl
au BufRead,BufNewFile *.pkr.json setlocal filetype=json
augroup END
augroup hcl_fmt
au!
if executable('packer')
autocmd FileType hcl setlocal formatprg=packer\ fmt\ -
endif
augroup END
if executable('ansible-language-server')
augroup lsp_ansible_detect
au!
au BufRead,BufNewFile */playbooks/*.yml,*/playbooks/*.yaml setlocal filetype=yaml.ansible
au BufRead,BufNewFile */roles/*.yml,*/roles/*.yaml setlocal filetype=yaml.ansible
au BufRead,BufNewFile */tasks/*.yml,*/tasks/*.yaml setlocal filetype=yaml.ansible
au BufRead,BufNewFile */handlers/*.yml,*/handlers/*.yaml setlocal filetype=yaml.ansible
au BufRead,BufNewFile *ansible*/*.yml,*ansible*/*.yaml setlocal filetype=yaml.ansible
augroup END
endif
if executable('rg')
set grepprg=rg\ --vimgrep\ --smart-case
set grepformat=%f:%l:%c:%m
endif
packadd! editorconfig
nnoremap <silent> <leader>gl :call ToggleGitLens()<CR>
g:gitgutter_sign_priority = 9
g:op_surround_maps = [
\ {'map': 'sa(', 'open_delim': '(', 'close_delim': ')', 'action': 'append'},
\ {'map': 'sd(', 'open_delim': '(', 'close_delim': ')', 'action': 'delete'},
\ {'map': 'sa[', 'open_delim': '[', 'close_delim': ']', 'action': 'append'},
\ {'map': 'sd[', 'open_delim': '[', 'close_delim': ']', 'action': 'delete'},
\ {'map': 'sa{', 'open_delim': '{', 'close_delim': '}', 'action': 'append'},
\ {'map': 'sd{', 'open_delim': '{', 'close_delim': '}', 'action': 'delete'},
\ {'map': 'sa"', 'open_delim': '"', 'close_delim': '"', 'action': 'append'},
\ {'map': 'sd"', 'open_delim': '"', 'close_delim': '"', 'action': 'delete'},
\ {'map': "sa'", 'open_delim': "'", 'close_delim': "'", 'action': 'append'},
\ {'map': "sd'", 'open_delim': "'", 'close_delim': "'", 'action': 'delete'},
\ {'map': 'sa`', 'open_delim': '`', 'close_delim': '`', 'action': 'append'},
\ {'map': 'sd`', 'open_delim': '`', 'close_delim': '`', 'action': 'delete'},
\ ]
nnoremap <silent> <leader>u :UndotreeToggle<CR>
xnoremap <silent> <leader>r :ReplicaSendLines<CR>
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
g:vimwiki_list = [{'path': '~/wiki/', 'syntax': 'markdown', 'ext': '.md'}]
g:vimwiki_autowriteall = 0
g:vimwiki_global_ext = 0
g:vim_markdown_conceal = 3
g:vim_markdown_edit_url_in = 'tab'
for i in ['follow_anchor', 'conceal_code_blocks', 'math',
'toml_frontmatter', 'frontmatter', 'strikethrough']
g:['vim_markdown_' .. i] = 1
endfor
@m3tti Not really perl, but a good introductory #git talk: https://www.youtube.com/watch?v=1ffBJ4sVUb4
Kestra: Ops automation beyond CI/CD
CI/CD pipelines are optimized for code deployments. Long-running operational processes and self-service workflows can be orchestrated more flexibly with Kestra.
#Automatisierung #ContinuousIntegration #DevOps #Docker #Git #IT #Kubernetes #OpenSource #news
"The ignore file lives in your machine’s home directory in ~/.config/git/ignore. Whatever filenames are added to this file are ignored globally at a machine-level. This file is not checked into Git and isn’t associated with any particular repository. It’s a great place to add files that you want to ignore in every git repository on your computer. For example, if you’re on macOS, adding .DS_Store here would be ideal."
https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/
What a great little .git tip. I had no clue I can make `.config/git/ignore` file to never again deal with annoying `.DS_Store` files.
Thanks so much for this tip @nelson
https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/
Handy Git related article on HN today: https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/
I had no idea about the user profile level gitignore file you can have in ~/.config/git/ignore
I’ll be adding that approach to my dotfiles as soon as I make it back to my desk.
Git conflicts are no longer painful! 🔥
🌳 **oyui** — A TUI merge editor and staging interface for Git & Jujutsu
💯 Syntax highlighting, command palette, binary support, fully scriptable configuration & more!
🦀 Written in Rust & built with @ratatui_rs
⭐ GitHub: https://github.com/emilien-jegou/oyui
@pamelafox I have been using them since last year and it really eases the burden of documenting the stashes (and remembering to use them later).
Three minutes is all it takes to learn how to add a package to #openSUSE Leap and Package Hub using the new #Git workflow. Fork, branch, submit a PR; it's that simple. #Linux https://youtu.be/wM9NbrpxT4Q?si=vPZoLDNMDJTQ3o-t
Wo befindet sich das Git-Repository von LibreOffice?
Das Repository befand sich früher hier: https://
cgit.freedesktop.org/libreoffice/, wird aber offenbar nicht mehr aktualisiert. Wo kann man es nun finden? Vielen Dank.
P.S. Ich weiß, dass https://
gerrit.libreoffice.org/q/status:open+-is:wip noch funktioniert, aber ich suche nach dem eigentlichen Repository.
#LibreOffice @libreoffice @LibreOfficeDE @libodesign @tdforg #gitlab #git #repository
Abbaye is a Static Site Generator (#SSG) for your #software releases, for those of us who can't or won't use a full-featured software forge.
This release simply fixes some minor issues and introduces #git branch/tag inclusion/exclusion when building the browsable repository as well as the https-cloneable one.
I had some work-in-progress branches on another project and wanted to publish a release for a small fix, and i saw that my work branches were still there, so… there you have it.
This release also includes an #AUR package but shhhhh! it's not 100% ready yet :D
Anyway, enjoy this release with abbaye self-update!
Here's Abbaye's 0.7.1 page, as built with Abbaye itself: https://vit.am/~ololduck/abbaye/0.7.1/
For the next release, i plan to add artifact categories so we can present artifacts in a more structured way. If you look at the "downloads" section, you'll see it's starting to be a bit crowded and unclear what does what.
I have a small git repo on a server I rent. Do I have to do anything to make sure that it can't be scraped/read by anyone else?
It's not in public_html, but I don't really know anything about security.
Thanks
🦇
Given these days you can't even expect #Gentoo contributors to be respectable, I'm working on adding a git hook that rejects commits with #LLM attribution. Could you help me find all the common patterns used to mark LLM-assisted #git commits?
So far I'm checking for author and Co-authored-by using the following e-mail patterns:
• copilot@github.com
• *@anthropic.com
• claude@users.noreply.github.com
• *+claude[bot]@users.noreply.github.com
• *@openai.com
• *+chatgpt-codex-connector[bot]@users.noreply.github.com
• *@cursor.com
• *@x.ai
• *@google.com
I think some people came up with some other tags to mark LLM commits but can't find that right now.
Es ist 3 Uhr nachts und ich debugge seit zwei Stunden ein Problem, das am Ende ein vergessenes Semikolon war. 🫠
Aber hey: Genau dafür gibt's `git blame` – nur um festzustellen, dass ich der Idiot war, der den Code geschrieben hat.
Kleiner Tipp am Rande: Schreibt eure Commit-Messages so, dass euer zukünftiges Ich um 3 Uhr nachts euch nicht verflucht. "fix stuff" ist KEINE Message. 😅