1vim.opt.number = true23-- Emacs-style case sensitivity for searching.4vim.opt.ignorecase = true5vim.opt.smartcase = true67vim.opt.tabstop = 88vim.opt.softtabstop = 49vim.opt.shiftwidth = 410vim.opt.expandtab = true11vim.opt.smarttab = true1213vim.cmd('autocmd FileType go setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4')1415vim.opt.wrap = false1617vim.opt.background = 'light'18vim.opt.termguicolors = true1920vim.g.mapleader = ' '2122vim.opt.splitbelow = true23vim.opt.splitright = true2425-- Set terminal title26vim.opt.title = true2728-- More quickly react to nothing happening/hover/etc.29vim.opt.updatetime = 3003031vim.pack.add({32 { src = 'https://github.com/neovim/nvim-lspconfig' },33 { src = 'https://github.com/nvim-mini/mini.nvim' },34})3536local fuchsia_dir37if vim.env.FUCHSIA_DIR ~= nil then38 fuchsia_dir = vim.env.FUCHSIA_DIR .. '/'39end4041local cwd = vim.fn.getcwd() .. '/'42if fuchsia_dir ~= nil and cwd:sub(1, #fuchsia_dir) == fuchsia_dir then43 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 })47end4849vim.lsp.enable('pyrefly')50vim.lsp.enable('rust_analyzer')51vim.lsp.enable('gopls')5253require('vim._core.ui2').enable()5455require('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>' },6768 { mode = 'n', keys = '[' },69 { mode = 'n', keys = ']' },7071 { mode = 'i', keys = '<C-x>' },7273 { mode = { 'n', 'x' }, keys = 'g' },7475 { mode = { 'n', 'x' }, keys = "'" },76 { mode = { 'n', 'x' }, keys = '`' },7778 { mode = { 'n', 'x' }, keys = '"' },79 { mode = { 'i', 'c' }, keys = '<C-r>' },8081 { mode = 'n', keys = '<C-w>' },8283 { mode = { 'n', 'x' }, keys = 'z' },84 },8586 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 },9596 window = {97 delay = 20098 }99})100101vim.keymap.set('', '<Leader>s', '<Cmd>set spell!<CR>', { silent = true, desc = "Toggle spell check"})102103-- 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' })