configs

Personal configs for applications and hosts

git clone https://code.pdelong.com/configs.git

  1vim.opt.number = true
  2
  3-- Emacs-style case sensitivity for searching.
  4vim.opt.ignorecase = true
  5vim.opt.smartcase = true
  6
  7vim.opt.tabstop = 8
  8vim.opt.softtabstop = 4
  9vim.opt.shiftwidth = 4
 10vim.opt.expandtab = true
 11vim.opt.smarttab = true
 12
 13vim.cmd('autocmd FileType go setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4')
 14
 15vim.opt.wrap = false
 16
 17vim.opt.background = 'light'
 18vim.opt.termguicolors = true
 19
 20vim.g.mapleader = ' '
 21
 22vim.opt.splitbelow = true
 23vim.opt.splitright = true
 24
 25-- Set terminal title
 26vim.opt.title = true
 27
 28-- More quickly react to nothing happening/hover/etc.
 29vim.opt.updatetime = 300
 30
 31vim.pack.add({
 32    { src = 'https://github.com/neovim/nvim-lspconfig' },
 33    { src = 'https://github.com/nvim-mini/mini.nvim' },
 34})
 35
 36local fuchsia_dir
 37if vim.env.FUCHSIA_DIR ~= nil then
 38    fuchsia_dir = vim.env.FUCHSIA_DIR .. '/'
 39end
 40
 41local cwd = vim.fn.getcwd() .. '/'
 42if fuchsia_dir ~= nil and cwd:sub(1, #fuchsia_dir) == fuchsia_dir then
 43    vim.lsp.config('rust_analyzer', {
 44        cmd = { fuchsia_dir .. 'prebuilt/third_party/rust-analyzer/rust-analyzer' },
 45        cargo = { sysroot = fuchsia_dir .. 'prebuild/third_party/rust/linux-x64' },
 46    })
 47end
 48
 49vim.lsp.enable('pyrefly')
 50vim.lsp.enable('rust_analyzer')
 51vim.lsp.enable('gopls')
 52
 53require('vim._core.ui2').enable()
 54
 55require('mini.jump').setup()
 56require('mini.jump2d').setup({
 57    view = {
 58        n_steps_ahead = 4,
 59    },
 60})
 61require('mini.pick').setup()
 62require('mini.extra').setup()
 63local miniclue = require('mini.clue')
 64miniclue.setup({
 65  triggers = {
 66    { mode = { 'n', 'x' }, keys = '<Leader>' },
 67
 68    { mode = 'n', keys = '[' },
 69    { mode = 'n', keys = ']' },
 70
 71    { mode = 'i', keys = '<C-x>' },
 72
 73    { mode = { 'n', 'x' }, keys = 'g' },
 74
 75    { mode = { 'n', 'x' }, keys = "'" },
 76    { mode = { 'n', 'x' }, keys = '`' },
 77
 78    { mode = { 'n', 'x' }, keys = '"' },
 79    { mode = { 'i', 'c' }, keys = '<C-r>' },
 80
 81    { mode = 'n', keys = '<C-w>' },
 82
 83    { mode = { 'n', 'x' }, keys = 'z' },
 84  },
 85
 86  clues = {
 87    miniclue.gen_clues.square_brackets(),
 88    miniclue.gen_clues.builtin_completion(),
 89    miniclue.gen_clues.g(),
 90    miniclue.gen_clues.marks(),
 91    miniclue.gen_clues.registers(),
 92    miniclue.gen_clues.windows(),
 93    miniclue.gen_clues.z(),
 94  },
 95
 96  window = {
 97      delay = 200
 98  }
 99})
100
101vim.keymap.set('', '<Leader>s', '<Cmd>set spell!<CR>', { silent = true, desc = "Toggle spell check"})
102
103-- Based on the Helix bindings.
104vim.keymap.set('n', '<Leader>pf', '<Cmd>Pick files<CR>', { desc = 'Open file picker' })
105vim.keymap.set('n', '<Leader>pb', '<Cmd>Pick buffers<CR>', { desc = 'Open buffer picker' })
106vim.keymap.set('n', '<Leader>ps', '<Cmd>Pick lsp scope="document_symbol"<CR>', { desc = 'Open buffer symbols picker' })
107vim.keymap.set('n', '<Leader>pS', '<Cmd>Pick lsp scope="workspace_symbol_live"<CR>', { desc = 'Open workspace symbols picker' })
108vim.keymap.set('n', '<Leader>pd', '<Cmd>Pick diagnostic scope="current"<CR>', { desc = 'Open buffer diagnostics picker' })
109vim.keymap.set('n', '<Leader>pD', '<Cmd>Pick diagnostic scope="all"<CR>', { desc = 'Open workspace diagnostics picker' })