mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 20:45:31 +00:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 174bb842e9 | |||
| f6e7590118 | |||
| 498996a6e2 | |||
| 0961985fb4 | |||
| 293452604d | |||
|
|
9582f18c7d | ||
| 051e3604ee | |||
| 09d62dd159 | |||
| 8a3763e168 | |||
| c37793f649 | |||
| 7bc7230990 | |||
| 067df4e34b | |||
| 4d28499423 | |||
| b685af82fb | |||
|
|
b8a4b82431 |
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* @ivuorinen
|
||||
@@ -44,12 +44,12 @@ repos:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.5
|
||||
rev: v1.7.6
|
||||
hooks:
|
||||
- id: actionlint
|
||||
|
||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||
rev: 39.86.3
|
||||
rev: 39.91.0
|
||||
hooks:
|
||||
- id: renovate-config-validator
|
||||
|
||||
|
||||
43
config/alias
43
config/alias
@@ -16,12 +16,12 @@ alias ....="cd ../../.."
|
||||
alias cdgr='cd "$(git root)"'
|
||||
|
||||
# interesting folders, and shortcuts
|
||||
alias .="cd $HOME"
|
||||
alias .b="cd $XDG_BIN_HOME"
|
||||
alias .c="cd $HOME/Code"
|
||||
alias .d="cd $DOTFILES"
|
||||
alias .dx="cd $DOTFILES;ks"
|
||||
alias .l="cd $HOME/.local"
|
||||
alias .='cd $HOME'
|
||||
alias .b='cd $XDG_BIN_HOME'
|
||||
alias .c='cd $HOME/Code'
|
||||
alias .d='cd $DOTFILES'
|
||||
alias .dx='cd $DOTFILES;nvim'
|
||||
alias .l='cd $HOME/.local'
|
||||
|
||||
# Shortcuts for listing
|
||||
alias ll="ls -la"
|
||||
@@ -31,13 +31,10 @@ alias l="ls -a"
|
||||
alias cd..="cd .."
|
||||
alias sl="ls"
|
||||
|
||||
# List only directories
|
||||
alias lsd="ls -lF | grep '^d'"
|
||||
|
||||
# IP addresses
|
||||
alias x-ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
||||
alias localip="ipconfig getifaddr en1"
|
||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //'"
|
||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //' | sort"
|
||||
|
||||
# Show/hide hidden files in Finder
|
||||
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder"
|
||||
@@ -57,14 +54,7 @@ alias isodate="date +'%Y-%m-%d'"
|
||||
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
||||
alias x-timestamp="date +'%s'"
|
||||
|
||||
# tmux: automatically attach or create session with name 'main'
|
||||
alias tm='command tmux new-session -A -s main'
|
||||
# tmux: attach or create new session
|
||||
alias ta='command tmux attach || command tmux'
|
||||
|
||||
# nvim
|
||||
alias c='nvim'
|
||||
alias ks='nvim'
|
||||
# nvim aliases
|
||||
alias vi='nvim'
|
||||
alias vim='nvim'
|
||||
|
||||
@@ -79,8 +69,6 @@ alias zapds='find . -name ".DS_Store" -print -delete'
|
||||
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
|
||||
# Run all zaps
|
||||
alias zapall="zapds && zappyc"
|
||||
# tail with follow flag on
|
||||
alias t='tail -f'
|
||||
# directory usage, return only the total
|
||||
alias dn='du -chd1'
|
||||
# Mirror site with wget
|
||||
@@ -88,6 +76,7 @@ alias mirror_site='wget -m -k -K -E -e robots=off'
|
||||
# Mirror stdout to stderr, useful for seeing data going through a pipe
|
||||
alias peek='tee >(cat 1>&2)'
|
||||
|
||||
# Runs Gitlab code quality scanner
|
||||
alias code_scanner='docker run
|
||||
--env SOURCE_CODE="$PWD"
|
||||
--volume "${PWD}":/code
|
||||
@@ -95,14 +84,16 @@ alias code_scanner='docker run
|
||||
registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}"
|
||||
/code'
|
||||
|
||||
# Runs trivy container image scanner
|
||||
alias trivy_scan='docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy'
|
||||
|
||||
# Opens dotfiles with $EDITOR
|
||||
alias zedit='$EDITOR ~/.dotfiles'
|
||||
|
||||
alias irssi="irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi"
|
||||
|
||||
alias wget="wget --hsts-file=$XDG_DATA_HOME/wget-hsts"
|
||||
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
|
||||
# Open irssi with my configurations
|
||||
alias irssi='irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi'
|
||||
# Configures wget to use correct wget-hsts file
|
||||
alias wget='wget --hsts-file=$XDG_DATA_HOME/wget-hsts'
|
||||
# Configures svn to use correct config directory
|
||||
alias svn='svn --config-dir $XDG_CONFIG_HOME/subversion'
|
||||
|
||||
if [[ $(uname) == 'Darwin' ]]; then
|
||||
|
||||
|
||||
@@ -333,14 +333,6 @@ export ANTIDOTE_DIR="$DOTFILES/tools/antidote"
|
||||
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
||||
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
||||
|
||||
# Antigen configuration
|
||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||
msg "Setting up Antigen configuration"
|
||||
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
||||
export ANTIGEN_CACHE="$XDG_CACHE_HOME/antigen"
|
||||
export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate"
|
||||
export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
|
||||
|
||||
# Ansible configuration
|
||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||
msg "Setting up Ansible configuration"
|
||||
|
||||
@@ -14,6 +14,7 @@ tap "k8sgpt-ai/k8sgpt"
|
||||
tap "keith/formulae"
|
||||
tap "mongodb/brew"
|
||||
tap "nikitabobko/tap"
|
||||
tap "pantheon-systems/external"
|
||||
tap "reviewdog/tap"
|
||||
tap "shivammathur/extensions"
|
||||
tap "shivammathur/php"
|
||||
@@ -28,6 +29,8 @@ brew "age"
|
||||
brew "ca-certificates"
|
||||
# Mozilla CA bundle for Python
|
||||
brew "certifi"
|
||||
# Cryptography and SSL/TLS Toolkit
|
||||
brew "openssl@3"
|
||||
# Cryptographic recipes and primitives for Python
|
||||
brew "cryptography"
|
||||
# YAML Parser
|
||||
@@ -46,8 +49,6 @@ brew "highway"
|
||||
brew "imath"
|
||||
# JPEG image codec that aids compression and decompression
|
||||
brew "jpeg-turbo"
|
||||
# Library for manipulating PNG images
|
||||
brew "libpng"
|
||||
# Zstandard is a real-time compression algorithm
|
||||
brew "zstd"
|
||||
# New file format for still image compression
|
||||
@@ -148,10 +149,10 @@ brew "unbound"
|
||||
brew "gnutls"
|
||||
# GNU Pretty Good Privacy (PGP) package
|
||||
brew "gnupg"
|
||||
# Open source programming language to build simple/reliable/efficient software
|
||||
brew "go"
|
||||
# Library access to GnuPG
|
||||
brew "gpgme"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# Manage your GnuPG keys with ease!
|
||||
brew "gpg-tui"
|
||||
# Image manipulation
|
||||
@@ -198,8 +199,6 @@ brew "libressl"
|
||||
brew "libuv"
|
||||
# GNOME XML library
|
||||
brew "libxml2"
|
||||
# C library for reading, creating, and modifying zip archives
|
||||
brew "libzip"
|
||||
# Package manager for the Lua programming language
|
||||
brew "luarocks"
|
||||
# LZMA-based compression program similar to gzip or bzip2
|
||||
@@ -216,14 +215,18 @@ brew "nginx"
|
||||
brew "nmap"
|
||||
# Libraries for security-enabled client and server applications
|
||||
brew "nss"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# Cryptography and SSL/TLS Toolkit
|
||||
brew "openssl@1.1"
|
||||
# ISO-C API and CLI for generating UUIDs
|
||||
brew "ossp-uuid"
|
||||
# General-purpose scripting language
|
||||
brew "php"
|
||||
# General-purpose scripting language
|
||||
brew "php@8.2"
|
||||
# General-purpose scripting language
|
||||
brew "php@8.3", link: true
|
||||
brew "php@8.3"
|
||||
# Python version management
|
||||
brew "pyenv"
|
||||
# Migrate pip packages from one Python version to another
|
||||
@@ -272,8 +275,12 @@ brew "cormacrelf/tap/dark-notify"
|
||||
brew "doron-cohen/tap/antidot"
|
||||
# lets you quickly switch between multiple git user profiles
|
||||
brew "gesquive/tap/git-user"
|
||||
# Terminus is Pantheon's Command-line Interface (CLI)
|
||||
brew "pantheon-systems/external/terminus"
|
||||
# Automated code review tool integrated with any code analysis tools regardless of programming language.
|
||||
brew "reviewdog/tap/reviewdog"
|
||||
# Igbinary PHP extension
|
||||
brew "shivammathur/extensions/igbinary@8.3"
|
||||
# Imagick PHP extension
|
||||
brew "shivammathur/extensions/imagick@8.3"
|
||||
# Mcrypt PHP extension
|
||||
@@ -289,9 +296,11 @@ brew "shivammathur/extensions/uuid@8.3"
|
||||
# Yaml PHP extension
|
||||
brew "shivammathur/extensions/yaml@8.3"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php", link: false
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php-debug"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php@7.4"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php@8.0", link: true
|
||||
# Find & fix known vulnerabilities in open-source dependencies
|
||||
brew "snyk/tap/snyk"
|
||||
# Command-line interface for 1Password
|
||||
@@ -308,10 +317,7 @@ cask "dbngin"
|
||||
cask "docker"
|
||||
cask "font-jetbrains-mono"
|
||||
cask "font-jetbrains-mono-nerd-font"
|
||||
cask "font-lato"
|
||||
cask "font-open-sans"
|
||||
cask "font-roboto"
|
||||
cask "font-source-code-pro-for-powerline"
|
||||
# GIT client
|
||||
cask "fork"
|
||||
# HTTP and GraphQL Client
|
||||
|
||||
@@ -42,6 +42,18 @@ K.nl('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
|
||||
K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
|
||||
K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
|
||||
|
||||
-- ── ToggleTerm ──────────────────────────────────────────────────────
|
||||
K.d('<F1>', 'n', ':FloatermToggle<CR>', 'Toggle Floaterm')
|
||||
K.d('<F1>', 'i', '<Esc>:FloatermToggle<CR>', 'Toggle Floaterm')
|
||||
K.d('<F1>', 't', '<C-\\><C-n>:FloatermToggle<CR>', 'Toggle Floaterm')
|
||||
|
||||
-- ── Test operations ─────────────────────────────────────────────────
|
||||
K.nl('an', ':silent TestNearest<CR>', 'Test Nearest')
|
||||
K.nl('af', ':silent TestFile<CR>', 'Test File')
|
||||
K.nl('as', ':silent TestSuite<CR>', 'Test Suite')
|
||||
K.nl('al', ':silent TestLast<CR>', 'Test Last')
|
||||
K.nl('av', ':silent TestVisit<CR>', 'Test Visit')
|
||||
|
||||
-- ── Buffer operations ───────────────────────────────────────────────
|
||||
-- Mappings for buffer management operations like switching, deleting, etc.
|
||||
-- Convention: All mappings start with 'b' followed by the operation
|
||||
@@ -90,7 +102,7 @@ K.nl('cbt', '<Cmd>CBllline<CR>', 'CB: Titled Line')
|
||||
-- Mappings for Telescope operations like finding files, buffers, etc.
|
||||
-- Convention: All mappings start with 's' followed by the operation
|
||||
-- unless it's a generic operation like searching or finding buffers
|
||||
K.nl('f', ':Telescope find_files<cr>', 'Find Files')
|
||||
K.nl('f', ':Telescope fd --hidden=true<cr>', 'Find Files')
|
||||
K.nl(',', ':Telescope buffers<cr>', 'Find existing buffers')
|
||||
K.nl(
|
||||
'/',
|
||||
@@ -105,6 +117,11 @@ K.nl(
|
||||
'Fuzzily search in current buffer'
|
||||
)
|
||||
|
||||
K.nl('pm', ':PhpactorContextMenu<cr>', 'PHPactor: Context Menu')
|
||||
K.nl('pn', ':PhpactorClassNew<cr>', 'PHPactor: Class New')
|
||||
K.nl('ps', ':PhpactorClassSearch<cr>', 'PHPactor: Class Search')
|
||||
K.nl('pt', ':PhpactorTransform<cr>', 'PHPactor: Transform')
|
||||
|
||||
K.nl('sc', ':Telescope commands<cr>', 'Commands')
|
||||
K.nl('sd', ':Telescope diagnostics<cr>', 'Search Diagnostics')
|
||||
K.nl('sg', ':Telescope live_grep<cr>', 'Search by Grep')
|
||||
@@ -119,7 +136,6 @@ K.nl(
|
||||
)
|
||||
K.nl('sq', ':Telescope quickfix<cr>', 'Quickfix')
|
||||
K.nl('ss', ':Telescope treesitter<cr>', 'Treesitter')
|
||||
K.nl('st', ':TodoTelescope<cr>', 'Search Todos')
|
||||
K.nl('sw', ':Telescope grep_string<cr>', 'Grep String')
|
||||
K.nl('sx', ':Telescope import<cr>', 'Telescope: Import')
|
||||
|
||||
|
||||
@@ -24,13 +24,15 @@ g.loaded_java_provider = 0 -- Disable java provider
|
||||
-- vim.options
|
||||
-- Most of the good defaults are provided by `mini.basics`
|
||||
-- See: lua/plugins/mini.lua
|
||||
o.confirm = true -- Confirm before closing unsaved buffers
|
||||
o.ignorecase = true -- Ignore case in search patterns
|
||||
o.inccommand = 'split' -- Preview substitutions live, as you type!
|
||||
o.number = true -- Show line numbers
|
||||
o.numberwidth = 3 -- Set the width of the number column
|
||||
o.relativenumber = true -- Show relative line numbers
|
||||
o.scrolloff = 15 -- Show context around cursor
|
||||
o.signcolumn = 'yes:3' -- Keep signcolumn on by default
|
||||
o.scrolloff = 8 -- Show context around cursor
|
||||
o.sidescrolloff = 8 -- Show context around cursor
|
||||
o.signcolumn = 'yes' -- Keep signcolumn on by default
|
||||
o.spell = true -- Enable spell checking
|
||||
o.spelllang = 'en_us' -- Set the spell checking language
|
||||
o.splitbelow = true -- split to the bottom
|
||||
@@ -41,6 +43,8 @@ o.updatetime = 250 -- 250 ms = 2,5 seconds
|
||||
o.sessionoptions =
|
||||
'buffers,curdir,folds,tabpages,winsize,winpos,terminal,localoptions'
|
||||
|
||||
o.wildmode = 'longest:full,full' -- Command-line completion mode
|
||||
|
||||
-- Enable the colorcolumn
|
||||
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
||||
|
||||
|
||||
@@ -8,6 +8,47 @@ return {
|
||||
opts = { enabled = true, snippet_engine = 'luasnip' },
|
||||
},
|
||||
|
||||
-- Terminal manager for (neo)vim
|
||||
-- https://github.com/voldikss/vim-floaterm
|
||||
{
|
||||
'voldikss/vim-floaterm',
|
||||
cmd = { 'FloatermToggle' },
|
||||
init = function()
|
||||
vim.g.floaterm_width = 0.8
|
||||
vim.g.floaterm_height = 0.8
|
||||
end,
|
||||
},
|
||||
|
||||
-- Run your tests at the speed of thought
|
||||
-- https://github.com/vim-test/vim-test
|
||||
{
|
||||
'vim-test/vim-test',
|
||||
dependencies = { 'voldikss/vim-floaterm' },
|
||||
config = function()
|
||||
vim.cmd [[
|
||||
function! PhpUnitTransform(cmd) abort
|
||||
return join(map(split(a:cmd), 'v:val == "--colors" ? "--colors=always" : v:val'))
|
||||
endfunction
|
||||
|
||||
let g:test#custom_transformations = {'phpunit': function('PhpUnitTransform')}
|
||||
let g:test#transformation = 'phpunit'
|
||||
|
||||
" let test#php#phpunit#options = '--colors=always'
|
||||
let test#php#pest#options = '-v'
|
||||
let test#javascript#jest#options = '--color'
|
||||
|
||||
function! FloatermStrategy(cmd)
|
||||
execute 'silent FloatermSend q'
|
||||
execute 'silent FloatermKill'
|
||||
execute 'FloatermNew! '.a:cmd.' | less -X'
|
||||
endfunction
|
||||
|
||||
let g:test#custom_strategies = {'floaterm': function('FloatermStrategy')}
|
||||
let g:test#strategy = 'floaterm'
|
||||
]]
|
||||
end,
|
||||
},
|
||||
|
||||
-- Cloak allows you to overlay *'s over defined patterns in defined files.
|
||||
-- https://github.com/laytan/cloak.nvim
|
||||
{
|
||||
@@ -36,6 +77,81 @@ return {
|
||||
},
|
||||
},
|
||||
|
||||
-- projectionist.vim: Granular project configuration
|
||||
-- https://github.com/tpope/vim-projectionist
|
||||
{
|
||||
'tpope/vim-projectionist',
|
||||
dependencies = 'tpope/vim-dispatch',
|
||||
config = function()
|
||||
vim.g.projectionist_heuristics = {
|
||||
artisan = {
|
||||
['*'] = {
|
||||
start = 'php artisan serve',
|
||||
console = 'php artisan tinker',
|
||||
},
|
||||
['app/*.php'] = {
|
||||
type = 'source',
|
||||
alternate = {
|
||||
'tests/Unit/{}Test.php',
|
||||
'tests/Feature/{}Test.php',
|
||||
},
|
||||
},
|
||||
['tests/Feature/*Test.php'] = {
|
||||
type = 'test',
|
||||
alternate = 'app/{}.php',
|
||||
},
|
||||
['tests/Unit/*Test.php'] = {
|
||||
type = 'test',
|
||||
alternate = 'app/{}.php',
|
||||
},
|
||||
['app/Models/*.php'] = {
|
||||
type = 'model',
|
||||
},
|
||||
['app/Http/Controllers/*.php'] = {
|
||||
type = 'controller',
|
||||
},
|
||||
['routes/*.php'] = {
|
||||
type = 'route',
|
||||
},
|
||||
['database/migrations/*.php'] = {
|
||||
type = 'migration',
|
||||
},
|
||||
},
|
||||
['src/&composer.json'] = {
|
||||
['src/*.php'] = {
|
||||
type = 'source',
|
||||
alternate = {
|
||||
'tests/{}Test.php',
|
||||
},
|
||||
},
|
||||
['tests/*Test.php'] = {
|
||||
type = 'test',
|
||||
alternate = 'src/{}.php',
|
||||
},
|
||||
},
|
||||
['app/&composer.json'] = {
|
||||
['app/*.php'] = {
|
||||
type = 'source',
|
||||
alternate = {
|
||||
'tests/{}Test.php',
|
||||
},
|
||||
},
|
||||
['tests/*Test.php'] = {
|
||||
type = 'test',
|
||||
alternate = 'app/{}.php',
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- A vim text object for XML/HTML attributes.
|
||||
-- https://github.com/whatyouhide/vim-textobj-xmlattr
|
||||
{
|
||||
'whatyouhide/vim-textobj-xmlattr',
|
||||
dependencies = { 'kana/vim-textobj-user' },
|
||||
},
|
||||
|
||||
-- Describe the regexp under the cursor
|
||||
-- https://github.com/bennypowers/nvim-regexplainer
|
||||
{
|
||||
@@ -84,4 +200,12 @@ return {
|
||||
ft = { 'go', 'gomod' },
|
||||
build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries
|
||||
},
|
||||
|
||||
-- Mainly a PHP Language Server with more features than you can shake a stick at
|
||||
-- https://github.com/phpactor/phpactor
|
||||
{
|
||||
'phpactor/phpactor',
|
||||
build = 'composer install --no-dev --optimize-autoloader',
|
||||
ft = 'php',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -26,7 +26,15 @@ local lsp_servers = {
|
||||
},
|
||||
},
|
||||
html = {},
|
||||
intelephense = {},
|
||||
intelephense = {
|
||||
commands = {
|
||||
IntelephenseIndex = {
|
||||
function()
|
||||
vim.lsp.buf.execute_command { command = 'intelephense.index.workspace' }
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
jsonls = {},
|
||||
lua_ls = {
|
||||
settings = {
|
||||
@@ -236,12 +244,12 @@ return {
|
||||
config = function(_, opts)
|
||||
require('lazydev').setup()
|
||||
require('lsp-setup').setup(opts)
|
||||
local cmp = require 'blink.cmp'
|
||||
local lspconfig = require 'lspconfig'
|
||||
for server, config in pairs(opts.servers) do
|
||||
-- passing config.capabilities to blink.cmp merges with the capabilities in your
|
||||
-- `opts[server].capabilities, if you've defined it
|
||||
config.capabilities =
|
||||
require('blink.cmp').get_lsp_capabilities(config.capabilities)
|
||||
config.capabilities = cmp.get_lsp_capabilities(config.capabilities)
|
||||
lspconfig[server].setup(config)
|
||||
end
|
||||
|
||||
@@ -289,6 +297,32 @@ return {
|
||||
},
|
||||
}
|
||||
|
||||
-- Diagnostic configuration
|
||||
vim.diagnostic.config {
|
||||
virtual_text = false,
|
||||
float = {
|
||||
source = true,
|
||||
},
|
||||
}
|
||||
|
||||
-- Sign configuration
|
||||
vim.fn.sign_define(
|
||||
'DiagnosticSignError',
|
||||
{ text = '', texthl = 'DiagnosticSignError' }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
'DiagnosticSignWarn',
|
||||
{ text = '', texthl = 'DiagnosticSignWarn' }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
'DiagnosticSignInfo',
|
||||
{ text = '', texthl = 'DiagnosticSignInfo' }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
'DiagnosticSignHint',
|
||||
{ text = '', texthl = 'DiagnosticSignHint' }
|
||||
)
|
||||
|
||||
-- end of junnplus/lsp-setup config
|
||||
end,
|
||||
},
|
||||
|
||||
@@ -31,9 +31,43 @@ return {
|
||||
cmd = 'Neotree',
|
||||
opts = {
|
||||
close_if_last_window = true,
|
||||
hide_root_node = true,
|
||||
popup_border_style = 'rounded',
|
||||
enable_git_status = true,
|
||||
enable_diagnostics = true,
|
||||
sources = {
|
||||
'filesystem',
|
||||
'buffers',
|
||||
'document_symbols',
|
||||
},
|
||||
source_selector = {
|
||||
winbar = true,
|
||||
statusline = false,
|
||||
separator = { left = '', right = '' },
|
||||
show_separator_on_edge = true,
|
||||
highlight_tab = 'SidebarTabInactive',
|
||||
highlight_tab_active = 'SidebarTabActive',
|
||||
highlight_background = 'StatusLine',
|
||||
highlight_separator = 'SidebarTabInactiveSeparator',
|
||||
highlight_separator_active = 'SidebarTabActiveSeparator',
|
||||
},
|
||||
event_handlers = {
|
||||
{
|
||||
event = 'file_opened',
|
||||
handler = function(file_path)
|
||||
require('neo-tree.command').execute { action = 'close' }
|
||||
end,
|
||||
},
|
||||
},
|
||||
default_component_configs = {
|
||||
indent = {
|
||||
padding = 0,
|
||||
},
|
||||
name = {
|
||||
use_git_status_colors = true,
|
||||
highlight_opened_files = true,
|
||||
},
|
||||
},
|
||||
git_status = {
|
||||
symbols = {
|
||||
-- Change type
|
||||
@@ -54,59 +88,18 @@ return {
|
||||
mappings = {
|
||||
['<Esc>'] = 'close_window',
|
||||
['q'] = 'close_window',
|
||||
['<cr>'] = 'open_with_window_picker',
|
||||
},
|
||||
},
|
||||
filtered_items = {
|
||||
hide_dotfiles = true,
|
||||
hide_gitignored = true,
|
||||
hide_dotfiles = false,
|
||||
hide_hidden = true, -- only works on Windows for hidden files/directories
|
||||
never_show = {
|
||||
'.DS_Store',
|
||||
},
|
||||
hide_by_name = {
|
||||
'node_modules',
|
||||
},
|
||||
always_show = {
|
||||
'.actrc',
|
||||
'.browserslistrc',
|
||||
'.commitlintrc.json',
|
||||
'.editorconfig',
|
||||
'.env',
|
||||
'.env.example',
|
||||
'.envrc',
|
||||
'.eslintrc.json',
|
||||
'.github',
|
||||
'.gitignore',
|
||||
'.gitkeep',
|
||||
'.ignore',
|
||||
'.markdownlint.json',
|
||||
'.markdownlint.yaml',
|
||||
'.markdownlintignore',
|
||||
'.nvmrc',
|
||||
'.prettierignore',
|
||||
'.prettierrc.js',
|
||||
'.prettierrc.json',
|
||||
'.prettierrc.yaml',
|
||||
'.python-version',
|
||||
'.releaserc.json',
|
||||
'.shellcheckrc',
|
||||
'.simple-git-hooks.json',
|
||||
'.stylelintrc.json',
|
||||
'.stylua.toml',
|
||||
'.yamlignore',
|
||||
'.yamllint.yaml',
|
||||
},
|
||||
always_show_by_pattern = {
|
||||
'.*.json',
|
||||
'.*.toml',
|
||||
'.*.yaml',
|
||||
'.*.yml',
|
||||
'.*rc',
|
||||
'.*rc.*',
|
||||
'.env*',
|
||||
'.prettierrc*',
|
||||
'.markdownlint*',
|
||||
'.stylua.*',
|
||||
'.git',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -7,6 +7,121 @@ return {
|
||||
init = function() vim.cmd.colorscheme(vim.g.colors_theme) end,
|
||||
opts = {
|
||||
transparent = true,
|
||||
on_colors = function(colors)
|
||||
colors.gitSigns = {
|
||||
add = colors.teal,
|
||||
change = colors.purple,
|
||||
delete = colors.red,
|
||||
}
|
||||
end,
|
||||
on_highlights = function(hl, c)
|
||||
local util = require 'tokyonight.util'
|
||||
local prompt = '#2d3149'
|
||||
|
||||
hl.NeoTreeFileNameOpened = {
|
||||
fg = c.orange,
|
||||
}
|
||||
|
||||
hl.GitSignsCurrentLineBlame = {
|
||||
fg = c.fg_gutter,
|
||||
}
|
||||
|
||||
hl.StatusLine = {
|
||||
bg = util.darken(c.bg_dark, 0.98, '#000000'),
|
||||
fg = c.fg_dark,
|
||||
}
|
||||
hl.StatusLineComment = {
|
||||
bg = util.darken(c.bg_dark, 0.85, '#000000'),
|
||||
fg = c.comment,
|
||||
}
|
||||
|
||||
hl.LineNrAbove = {
|
||||
fg = c.fg_gutter,
|
||||
}
|
||||
hl.LineNr = {
|
||||
fg = util.lighten(c.fg_gutter, 0.7),
|
||||
}
|
||||
hl.LineNrBelow = {
|
||||
fg = c.fg_gutter,
|
||||
}
|
||||
|
||||
hl.MsgArea = {
|
||||
bg = util.darken(c.bg_dark, 0.85, '#000000'),
|
||||
}
|
||||
|
||||
-- Spelling
|
||||
hl.SpellBad = {
|
||||
undercurl = true,
|
||||
sp = '#7F3A43',
|
||||
}
|
||||
|
||||
-- Telescope
|
||||
hl.TelescopeNormal = {
|
||||
bg = c.bg_dark,
|
||||
fg = c.fg_dark,
|
||||
}
|
||||
hl.TelescopeBorder = {
|
||||
bg = c.bg_dark,
|
||||
fg = c.bg_dark,
|
||||
}
|
||||
hl.TelescopePromptNormal = {
|
||||
bg = prompt,
|
||||
}
|
||||
hl.TelescopePromptBorder = {
|
||||
bg = prompt,
|
||||
fg = prompt,
|
||||
}
|
||||
hl.TelescopePromptTitle = {
|
||||
bg = c.bg,
|
||||
fg = c.fg_dark,
|
||||
}
|
||||
hl.TelescopePreviewTitle = {
|
||||
bg = c.bg_dark,
|
||||
fg = c.bg_dark,
|
||||
}
|
||||
hl.TelescopeResultsTitle = {
|
||||
bg = c.bg_dark,
|
||||
fg = c.bg_dark,
|
||||
}
|
||||
|
||||
-- Indent
|
||||
hl.MiniIndentscopeSymbol = {
|
||||
fg = util.darken(c.bg_highlight, 0.30),
|
||||
}
|
||||
hl.IblScope = {
|
||||
fg = util.darken(c.bg_highlight, 0.80),
|
||||
}
|
||||
|
||||
-- Floaterm
|
||||
hl.Floaterm = {
|
||||
bg = prompt,
|
||||
}
|
||||
hl.FloatermBorder = {
|
||||
bg = prompt,
|
||||
fg = prompt,
|
||||
}
|
||||
|
||||
-- Copilot
|
||||
hl.CopilotSuggestion = {
|
||||
fg = c.comment,
|
||||
}
|
||||
|
||||
-- NeoTree
|
||||
hl.NeoTreeFileNameOpened = {
|
||||
fg = c.fg,
|
||||
bold = true,
|
||||
}
|
||||
hl.NvimTreeNormal = {
|
||||
bg = util.darken(c.bg_dark, 0.85, '#000000'),
|
||||
}
|
||||
hl.NvimTreeNormalNC = {
|
||||
bg = util.darken(c.bg_dark, 0.85, '#000000'),
|
||||
}
|
||||
hl.NvimTreeWinSeparator = {
|
||||
fg = util.darken(c.bg_dark, 0.85, '#000000'),
|
||||
bg = util.darken(c.bg_dark, 0.85, '#000000'),
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -27,6 +142,17 @@ return {
|
||||
},
|
||||
},
|
||||
|
||||
-- The fastest Neovim colorizer
|
||||
-- https://github.com/catgoose/nvim-colorizer.lua
|
||||
{
|
||||
'catgoose/nvim-colorizer.lua',
|
||||
opts = {
|
||||
user_default_options = {
|
||||
names = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- A neovim plugin that shows colorcolumn dynamically
|
||||
-- https://github.com/Bekaboo/deadcolumn.nvim
|
||||
{ 'Bekaboo/deadcolumn.nvim' },
|
||||
|
||||
@@ -7,35 +7,53 @@
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Bindings │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
# bind flags
|
||||
# -r = repeatable, only needs prefix once
|
||||
# -n = doesn't need prefix
|
||||
# -t = binds to a certain key-table (root, copy-mode, prefix, etc.)
|
||||
|
||||
# Set <prefix> to Control + Space, keeping the default of C-b intact.
|
||||
# C-Space send-prefix line doubles the prefix when in nested tmux session.
|
||||
# unbind C-b
|
||||
set -g prefix C-Space
|
||||
bind C-Space send-prefix
|
||||
|
||||
# Vim style pane selection
|
||||
bind h select-pane -L
|
||||
bind j select-pane -D
|
||||
bind k select-pane -U
|
||||
bind l select-pane -R
|
||||
|
||||
# Use Alt-arrow keys without prefix key to switch panes
|
||||
bind -n M-Left select-pane -L
|
||||
bind -n M-Right select-pane -R
|
||||
bind -n M-Up select-pane -U
|
||||
bind -n M-Down select-pane -D
|
||||
|
||||
# Smart pane switching with awareness of vim splits
|
||||
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'
|
||||
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
|
||||
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
|
||||
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
|
||||
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
|
||||
|
||||
# Reload tmux config with <prefix> + r
|
||||
unbind r
|
||||
bind r source-file ~/.dotfiles/config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
||||
|
||||
# Switch to next client with <prefix>( and previous with <prefix>)
|
||||
# Repeatable, only needs prefix once
|
||||
bind -r '(' switch-client -p\; refresh-client -S
|
||||
bind -r ')' switch-client -n\; refresh-client -S
|
||||
|
||||
# tms, https://github.com/jrmoulton/tmux-sessionizer
|
||||
bind C-h display-popup -E "tms"
|
||||
bind C-j display-popup -E "tms switch"
|
||||
bind C-k display-popup -E "tms windows"
|
||||
# Switch between previous and next windows with repeatable
|
||||
# <prefix> + n and <prefix> + p
|
||||
bind -r n next-window
|
||||
bind -r p previous-window
|
||||
|
||||
# Switch between two most recently used windows
|
||||
bind Space last-window
|
||||
|
||||
# Move the current window to the next window or previous window position
|
||||
bind -r N run-shell "tmux swap-window -t $(expr $(tmux list-windows | grep \"(active)\" | cut -d \":\" -f 1) + 1)"
|
||||
bind -r P run-shell "tmux swap-window -t $(expr $(tmux list-windows | grep \"(active)\" | cut -d \":\" -f 1) - 1)"
|
||||
|
||||
bind-key > swap-window -t +1 \; next
|
||||
bind-key < swap-window -t -1 \; prev
|
||||
|
||||
# Open a new window with <prefix> + N
|
||||
bind N new-window
|
||||
@@ -46,13 +64,18 @@ bind M-c attach-session -c "#{pane_current_path}"
|
||||
# Open a new window in the current directory
|
||||
bind C new-window -c "#{pane_current_path}"
|
||||
|
||||
# keybindings
|
||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
||||
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
||||
# Copy mode
|
||||
bind -T copy-mode-vi v send-keys -X begin-selection
|
||||
bind -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
||||
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
||||
|
||||
# Splits
|
||||
bind '"' split-window -v -c "#{pane_current_path}"
|
||||
bind '!' split-window -h -c "#{pane_current_path}"
|
||||
bind '^' switch-client -t'{marked}'
|
||||
|
||||
# .local/bin/t triggers
|
||||
bind -r T new-window ~/.local/bin/t
|
||||
bind -r D run-shell "t ~/Code/ivuorinen/dotfiles"
|
||||
|
||||
# synchronize all panes in a window
|
||||
bind y setw synchronize-panes
|
||||
@@ -69,13 +92,31 @@ bind p paste-buffer
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Settings │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
# set [flags] [command] [value]
|
||||
# Flags can be combined, e.g. -as
|
||||
# -a : Append the value to the existing setting.
|
||||
# -s : Apply the setting to the current session.
|
||||
# -g : Apply the setting globally to all sessions.
|
||||
# -o : Set the option only if it is not already set.
|
||||
# -u : Unset the specified option.
|
||||
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
# set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
|
||||
# Undercurl
|
||||
# set -g default-terminal "${TERM}"
|
||||
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support
|
||||
set -as terminal-overrides ',*:Setulc=\E[58::2::::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colors - needs tmux-3.0
|
||||
|
||||
# Enable hyperlinks
|
||||
set -as terminal-overrides ',*:Hls=\E]8;id=%p1%s;%p2%s\E\\:Hlr=\E]8;;\E\\''
|
||||
|
||||
# Setting status on
|
||||
set -g status "on"
|
||||
|
||||
# Allow tmux to set the terminal title
|
||||
set -g set-titles on
|
||||
|
||||
# Hide clock
|
||||
set -g display-time 0
|
||||
|
||||
@@ -84,6 +125,9 @@ set -g monitor-activity on
|
||||
set -g visual-activity off
|
||||
set -g visual-bell off
|
||||
|
||||
# A bell in another window should cause a bell in the current window
|
||||
set -g bell-action any
|
||||
|
||||
# Expose window title
|
||||
set-option -g set-titles on
|
||||
|
||||
@@ -108,6 +152,18 @@ set-option -g renumber-windows on
|
||||
# set vi-mode
|
||||
set-window-option -g mode-keys vi
|
||||
|
||||
# don't detach tmux when killing a session
|
||||
set -g detach-on-destroy off
|
||||
|
||||
# address vim mode switching delay (http://superuser.com/a/252717/65504)
|
||||
set -s escape-time 0
|
||||
|
||||
# Focus events enabled for terminals that support them
|
||||
set -g focus-events on
|
||||
|
||||
# Useful when using sharing a session with different size terminals
|
||||
setw -g aggressive-resize on
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Theme │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
@@ -121,7 +177,7 @@ set-option -g status-left ''
|
||||
set-option -g window-status-format ' #I:#W '
|
||||
set-option -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||
|
||||
set-option -g status-right "#{hostname_short}/#(tms sessions) #{tmux_mode_indicator}"
|
||||
set-option -g status-right "#S@#{hostname_short} #{tmux_mode_indicator}"
|
||||
|
||||
set -g pane-border-style "fg=#3b4261"
|
||||
set -g pane-active-border-style "fg=#7aa2f7"
|
||||
@@ -145,9 +201,9 @@ set -g @suspend_key 'F12'
|
||||
set -g @tmux_window_name_max_name_len "20"
|
||||
### Replace $HOME with ~ in window names
|
||||
set -g @tmux_window_name_use_tilde "True"
|
||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh']"
|
||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'oh-my-posh', 'antidot', 'antidote', 'direnv', 'md5']" # Default is []
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'antidote', 'direnv', 'md5']" # Default is []
|
||||
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
||||
|
||||
## https://github.com/tmux-plugins/tmux-continuum
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
{
|
||||
"assistant": {
|
||||
"default_model": {
|
||||
"provider": "copilot_chat",
|
||||
"model": "gpt-4o"
|
||||
},
|
||||
"version": "2"
|
||||
},
|
||||
"formatter": {
|
||||
"external": {
|
||||
"command": "node_modules/.bin/prettier",
|
||||
@@ -9,12 +16,23 @@
|
||||
}
|
||||
},
|
||||
"languages": {
|
||||
"JavaScript": {
|
||||
"enable_language_server": true,
|
||||
"code_actions_on_format": {
|
||||
"source.fixAll.eslint": true
|
||||
}
|
||||
},
|
||||
"Lua": {
|
||||
"enable_language_server": true,
|
||||
"tab_size": 2
|
||||
}
|
||||
},
|
||||
"lsp": {
|
||||
"eslint": {
|
||||
"settings": {
|
||||
"nodePath": "./node_modules/.bin"
|
||||
}
|
||||
},
|
||||
"gopls": {
|
||||
"initialization_options": {
|
||||
"hints": {
|
||||
|
||||
@@ -60,8 +60,6 @@ n <Space>sx * :Telescope import<CR>
|
||||
Telescope: Import
|
||||
n <Space>sw * :Telescope grep_string<CR>
|
||||
Grep String
|
||||
n <Space>st * :TodoTelescope<CR>
|
||||
Search Todos
|
||||
n <Space>ss * :Telescope treesitter<CR>
|
||||
Treesitter
|
||||
n <Space>sq * :Telescope quickfix<CR>
|
||||
@@ -82,11 +80,19 @@ n <Space>sd * :Telescope diagnostics<CR>
|
||||
Search Diagnostics
|
||||
n <Space>sc * :Telescope commands<CR>
|
||||
Commands
|
||||
n <Space>pt * :PhpactorTransform<CR>
|
||||
PHPactor: Transform
|
||||
n <Space>ps * :PhpactorClassSearch<CR>
|
||||
PHPactor: Class Search
|
||||
n <Space>pn * :PhpactorClassNew<CR>
|
||||
PHPactor: Class New
|
||||
n <Space>pm * :PhpactorContextMenu<CR>
|
||||
PHPactor: Context Menu
|
||||
n <Space>/ * ~/.config/nvim/lua/keymaps.lua
|
||||
Fuzzily search in current buffer
|
||||
n <Space>, * :Telescope buffers<CR>
|
||||
Find existing buffers
|
||||
n <Space>f * :Telescope find_files<CR>
|
||||
n <Space>f * :Telescope fd --hidden=true<CR>
|
||||
Find Files
|
||||
n <Space>cbt * <Cmd>CBllline<CR>
|
||||
CB: Titled Line
|
||||
@@ -144,6 +150,16 @@ n <Space>bd * :lua MiniBufremove.delete()<CR>
|
||||
Delete
|
||||
n <Space>ba * :%bd|e#|bd#<CR>
|
||||
Close all except current
|
||||
n <Space>av * :silent TestVisit<CR>
|
||||
Test Visit
|
||||
n <Space>al * :silent TestLast<CR>
|
||||
Test Last
|
||||
n <Space>as * :silent TestSuite<CR>
|
||||
Test Suite
|
||||
n <Space>af * :silent TestFile<CR>
|
||||
Test File
|
||||
n <Space>an * :silent TestNearest<CR>
|
||||
Test Nearest
|
||||
n <Space>o * ~/.config/nvim/lua/keymaps.lua
|
||||
Open repo in browser
|
||||
n <Space>tmw * <Cmd>setlocal wrap! wrap?<CR>
|
||||
@@ -177,6 +193,10 @@ x % <Plug>(MatchitVisualForward)
|
||||
n % <Plug>(MatchitNormalForward)
|
||||
n & * :&&<CR>
|
||||
:help &-default
|
||||
n '? & :<C-U>echo ":Start" dispatch#start_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||
n '! & <SNR>30_:.Start!
|
||||
n '<Space> & <SNR>30_:.Start<Space>
|
||||
n '<CR> & <SNR>30_:.Start<CR>
|
||||
x * * vim/_defaults.lua
|
||||
:help v_star-default
|
||||
o ; * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||
@@ -195,7 +215,7 @@ n > * >gv
|
||||
Indent Right
|
||||
n @ * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||
Execute macro without 'mini.clue' triggers
|
||||
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||
x @ * mode() ==# 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||
:help v_@-default
|
||||
o F * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||
Jump backward
|
||||
@@ -207,7 +227,7 @@ n K * :Lspsaga hover_doc<CR>
|
||||
Hover Documentation
|
||||
n Q * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||
Execute macro without 'mini.clue' triggers
|
||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||
x Q * mode() ==# 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||
:help v_Q-default
|
||||
o T * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||
Jump backward till
|
||||
@@ -269,7 +289,13 @@ n ]h * <Cmd>lua MiniDiff.goto_hunk('next')<CR>
|
||||
Next hunk
|
||||
n ]d * vim/_defaults.lua
|
||||
Jump to the next diagnostic
|
||||
n `? & <SNR>30_:.FocusDispatch<CR>
|
||||
n `! & <SNR>30_:.Dispatch!
|
||||
n `<Space> & <SNR>30_:.Dispatch<Space>
|
||||
n `<CR> & <SNR>30_:.Dispatch<CR>
|
||||
x a% <Plug>(MatchitVisualTextObject)
|
||||
o ax <Plug>(textobj-xmlattr-attr-a)
|
||||
x ax <Plug>(textobj-xmlattr-attr-a)
|
||||
o ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||
Object scope with border
|
||||
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||
@@ -285,6 +311,14 @@ n gR * :RegexplainerToggle<CR>
|
||||
o g% <Plug>(MatchitOperationBackward)
|
||||
x g% <Plug>(MatchitVisualBackward)
|
||||
n g% <Plug>(MatchitNormalBackward)
|
||||
n g`? & :<C-U>echo ":Spawn" dispatch#spawn_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||
n g`! & <SNR>30_:.Spawn!
|
||||
n g`<Space> & <SNR>30_:.Spawn<Space>
|
||||
n g`<CR> & <SNR>30_:.Spawn<CR>
|
||||
n g'? & :<C-U>echo ":Spawn" dispatch#spawn_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||
n g'! & <SNR>30_:.Spawn!
|
||||
n g'<Space> & <SNR>30_:.Spawn<Space>
|
||||
n g'<CR> & <SNR>30_:.Spawn<CR>
|
||||
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
|
||||
Toggle arguments
|
||||
n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
|
||||
@@ -353,6 +387,8 @@ x gx * <Cmd>lua MiniOperators.exchange('visual')<CR>
|
||||
Exchange selection
|
||||
n gx * v:lua.MiniOperators.exchange()
|
||||
Exchange operator
|
||||
o ix <Plug>(textobj-xmlattr-attr-i)
|
||||
x ix <Plug>(textobj-xmlattr-attr-i)
|
||||
o ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||
Object scope
|
||||
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||
@@ -363,6 +399,10 @@ n j * v:count == 0 ? 'gj' : 'j'
|
||||
x k * v:count == 0 ? 'gk' : 'k'
|
||||
n k * v:count == 0 ? 'gk' : 'k'
|
||||
Move up
|
||||
n m? & :<C-U>echo ":Dispatch" dispatch#make_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||
n m! & <SNR>30_:.Make!
|
||||
n m<Space> & <SNR>30_:.Make<Space>
|
||||
n m<CR> & <SNR>30_:.Make<CR>
|
||||
n shn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||
Highlight next surrounding
|
||||
n sFn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||
@@ -405,12 +445,14 @@ x t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
||||
Jump forward till
|
||||
n t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
||||
Jump forward till
|
||||
x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash
|
||||
o zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash
|
||||
x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash
|
||||
n zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||
Flash
|
||||
n <F1> * :FloatermToggle<CR>
|
||||
Toggle Floaterm
|
||||
v <C-J> * :m '>+1<CR>gv=gv
|
||||
Move Block Down
|
||||
n <C-J> * :m '>+1<CR>gv=gv
|
||||
@@ -450,6 +492,13 @@ x <Plug>(MatchitVisualBackward) * :<C-U>call matchit#Match_wrapper('',0,'v')<CR
|
||||
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
||||
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
||||
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
||||
n <SNR>30_:. & :<C-R>=getcmdline() =~ ',' ? "\0250" : ""<CR>
|
||||
o <Plug>(textobj-xmlattr-attr-i) & <SNR>26_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-i","o")<CR>
|
||||
v <Plug>(textobj-xmlattr-attr-i) & <SNR>26_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-i","v")<CR>
|
||||
o <Plug>(textobj-xmlattr-attr-a) & <SNR>26_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-a","o")<CR>
|
||||
v <Plug>(textobj-xmlattr-attr-a) & <SNR>26_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-a","v")<CR>
|
||||
n <SNR>26_ * <SNR>26_
|
||||
<SNR>26_(save-cursor-pos) * <SNR>26_save_cursor_pos()
|
||||
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
||||
n <M-k> * <Cmd>lua MiniMove.move_line('up')<CR>
|
||||
Move line up
|
||||
@@ -479,4 +528,4 @@ n <C-L> * :lua vim.lsp.buf.signature_help()<CR>
|
||||
Signature
|
||||
```
|
||||
|
||||
- Generated on Thu 2 Jan 2025 17:41:13 EET
|
||||
- Generated on Tue 7 Jan 2025 21:37:18 EET
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
Leader: `<ctrl><space>`
|
||||
|
||||
```txt
|
||||
Space Select next layout
|
||||
# List all paste buffers
|
||||
$ Rename current session
|
||||
% Split window horizontally
|
||||
& Kill current window
|
||||
@@ -27,7 +25,6 @@ Leader: `<ctrl><space>`
|
||||
; Move to the previously active pane
|
||||
= Choose a paste buffer from a list
|
||||
? List key bindings
|
||||
D Choose and detach a client from a list
|
||||
E Spread panes out evenly
|
||||
L Switch to the last client
|
||||
M Clear the marked pane
|
||||
@@ -37,7 +34,6 @@ Leader: `<ctrl><space>`
|
||||
f Search for a pane
|
||||
i Display window information
|
||||
m Toggle the marked pane
|
||||
n Select the next window
|
||||
o Select the next pane
|
||||
q Display pane numbers
|
||||
s Choose a session from a list
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
- include: 'tools/dotbot-defaults.yaml'
|
||||
- shell:
|
||||
- echo "Configuring air"
|
||||
- brewfile:
|
||||
- Brewfile
|
||||
- link:
|
||||
~/:
|
||||
force: true
|
||||
|
||||
45
local/bin/t
Executable file
45
local/bin/t
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Credit to ThePrimeagen, jessarcher
|
||||
# https://github.com/jessarcher/dotfiles/blob/master/scripts/t
|
||||
#
|
||||
# Tweaks by Ismo Vuorinen <https://github.com/ivuorinen> 2025
|
||||
|
||||
# Set environment variables for configuration with defaults
|
||||
T_ROOT="${T_ROOT:-$HOME/Code}"
|
||||
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
|
||||
|
||||
# Function to print an error message and exit
|
||||
error_exit()
|
||||
{
|
||||
echo "Error: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Select the directory
|
||||
if [[ $# -eq 1 ]]; then
|
||||
selected="$1"
|
||||
else
|
||||
items=$(find "$T_ROOT" -maxdepth 2 -mindepth 1 -type d)
|
||||
items+="$(printf "\n%s" "$DOTFILES")"
|
||||
items+="$(printf "\n/tmp")"
|
||||
selected=$(echo -e "$items" | fzf) || exit 0 # Exit if no selection is made
|
||||
fi
|
||||
|
||||
# Exit if no directory was selected
|
||||
[[ -z $selected ]] && error_exit "No directory selected."
|
||||
|
||||
# Sanitize the session name
|
||||
dirname=$(basename "$selected" | tr '.' '_')
|
||||
|
||||
# Try to switch to the tmux session
|
||||
if tmux switch-client -t "=$dirname" 2> /dev/null; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create a new tmux session or attach to an existing one
|
||||
if tmux new-session -c "$selected" -d -s "$dirname" 2> /dev/null; then
|
||||
tmux switch-client -t "$dirname"
|
||||
else
|
||||
tmux new -c "$selected" -A -s "$dirname"
|
||||
fi
|
||||
128
local/bin/x-localip
Executable file
128
local/bin/x-localip
Executable file
@@ -0,0 +1,128 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# x-localip: script to display the local IP addresses of the system
|
||||
#
|
||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
||||
# License: MIT
|
||||
|
||||
VERSION="1.0.0"
|
||||
|
||||
# Function to display usage
|
||||
usage()
|
||||
{
|
||||
echo "Usage: x-localip [options] [interface]"
|
||||
echo "Options:"
|
||||
echo " --help Show this help message"
|
||||
echo " --version Show version information"
|
||||
echo " --ipv4 Show only IPv4 addresses"
|
||||
echo " --ipv6 Show only IPv6 addresses"
|
||||
echo "If an interface is specified, only the IP address of that interface will be returned."
|
||||
}
|
||||
|
||||
# Initialize flags for filtering
|
||||
show_ipv4=true
|
||||
show_ipv6=true
|
||||
|
||||
# Check for arguments
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
--version)
|
||||
echo "x-localip version $VERSION"
|
||||
exit 0
|
||||
;;
|
||||
--ipv4)
|
||||
show_ipv6=false
|
||||
;;
|
||||
--ipv6)
|
||||
show_ipv4=false
|
||||
;;
|
||||
*)
|
||||
iface=$1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
declare -a interfaces
|
||||
|
||||
# Detect platform (macOS or Linux)
|
||||
platform="$(uname)"
|
||||
if [[ $platform == "Darwin" ]]; then
|
||||
read -r -a interfaces <<< "$(ifconfig -lu | grep -v '^bridge')"
|
||||
elif [[ $platform == "Linux" ]]; then
|
||||
read -r -a interfaces <<< "$(ip link show | awk -F: '/^[0-9]+:/{print $2}' | tr -d ' ' | grep -v '^bridge')"
|
||||
else
|
||||
echo "Error: Unsupported platform. Only macOS and Linux are supported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to fetch IP addresses for an interface
|
||||
fetch_ips()
|
||||
{
|
||||
iface="$1"
|
||||
local ipv4 ipv6
|
||||
if [[ $platform == "Darwin" ]]; then
|
||||
ipv4=$(ipconfig getifaddr "$iface" 2> /dev/null || echo "")
|
||||
ipv6=$(ipconfig getifaddr -v6 "$iface" 2> /dev/null || echo "")
|
||||
else
|
||||
ipv4=$(ip -4 addr show "$iface" 2> /dev/null | awk '/inet / {print $2}' || echo "")
|
||||
ipv6=$(ip -6 addr show "$iface" 2> /dev/null | awk '/inet6 / {print $2}' || echo "")
|
||||
fi
|
||||
if [[ -n $ipv4 || -n $ipv6 ]]; then
|
||||
echo "$iface:$ipv4:$ipv6"
|
||||
fi
|
||||
}
|
||||
|
||||
# Determine maximum lengths for formatting
|
||||
max_iface_length=9 # "Interface" length
|
||||
max_ipv4_length=11 # "IPv4 Address" length
|
||||
max_ipv6_length=11 # "IPv6 Address" length
|
||||
|
||||
interface_ip_list=()
|
||||
for iface in "${interfaces[@]}"; do
|
||||
result=$(fetch_ips "$iface")
|
||||
if [[ -n $result ]]; then
|
||||
interface_ip_list+=("$result")
|
||||
fi
|
||||
done
|
||||
|
||||
interface_ip_list_array=()
|
||||
for entry in "${interface_ip_list[@]}"; do
|
||||
IFS=: read -r iface ipv4 ipv6 <<< "$entry"
|
||||
[[ ${#iface} -gt $max_iface_length ]] && max_iface_length=${#iface}
|
||||
[[ ${#ipv4} -gt $max_ipv4_length ]] && max_ipv4_length=${#ipv4}
|
||||
[[ ${#ipv6} -gt $max_ipv6_length ]] && max_ipv6_length=${#ipv6}
|
||||
interface_ip_list_array+=("$iface:$ipv4:$ipv6")
|
||||
done
|
||||
|
||||
# Print headers
|
||||
printf "%-${max_iface_length}s : %-${max_ipv4_length}s : %-${max_ipv6_length}s\n" "Interface" "IPv4 Address" "IPv6 Address"
|
||||
printf "%0.s-" $(seq 1 $((max_iface_length + max_ipv4_length + max_ipv6_length + 6)))
|
||||
printf "\n"
|
||||
|
||||
# Print the results in a formatted table
|
||||
for entry in "${interface_ip_list_array[@]}"; do
|
||||
# Split the entry into interface, IPv4, and IPv6
|
||||
iface="${entry%%:*}"
|
||||
rest="${entry#*:}"
|
||||
ipv4="${rest%%:*}"
|
||||
ipv6="${rest#*:}"
|
||||
|
||||
# Skip IPv4 or IPv6 as per the flags
|
||||
ipv4_display=$([[ $show_ipv4 == true ]] && echo "$ipv4" || echo "")
|
||||
ipv6_display=$([[ $show_ipv6 == true ]] && echo "$ipv6" || echo "")
|
||||
|
||||
# Print the interface name, padded to max_iface_length, followed by the IPs
|
||||
printf "%-${max_iface_length}s" "$iface"
|
||||
if $show_ipv4; then
|
||||
printf " : %-${max_ipv4_length}s" "$ipv4_display"
|
||||
fi
|
||||
if $show_ipv6; then
|
||||
printf " : %-${max_ipv6_length}s" "$ipv6_display"
|
||||
fi
|
||||
printf "\n"
|
||||
done
|
||||
Reference in New Issue
Block a user