Configuring cool nvim stuff and magit as a standalone app
This commit is contained in:
parent
84a221def0
commit
8c5caf3c05
@ -38,7 +38,7 @@ scrollback_pager bash -c "exec nvim 63<&0 0</dev/null -u NONE -c 'map <silent> q
|
||||
enabled_layouts tall,stack,fat,grid
|
||||
|
||||
|
||||
kitty_mod alt
|
||||
kitty_mod ctrl+alt
|
||||
|
||||
map alt+f no_op
|
||||
map alt+b no_op
|
||||
|
45
.config/magit/early-init.el
Normal file
45
.config/magit/early-init.el
Normal file
@ -0,0 +1,45 @@
|
||||
;; -*- lexical-binding: t -*-
|
||||
(defvar default-file-name-handler-alist file-name-handler-alist)
|
||||
(setq file-name-handler-alist nil)
|
||||
(setq gc-cons-threshold (expt 2 32))
|
||||
|
||||
(add-hook 'emacs-startup-hook
|
||||
(lambda ()
|
||||
"Restore defalut values after init."
|
||||
(setq file-name-handler-alist default-file-name-handler-alist)
|
||||
(if (boundp 'after-focus-change-function)
|
||||
(add-function :after after-focus-change-function
|
||||
(lambda ()
|
||||
(unless (frame-focus-state)
|
||||
(garbage-collect))))
|
||||
(add-hook 'focus-out-hook 'garbage-collect))))
|
||||
|
||||
(setq native-comp-async-report-warnings-errors nil)
|
||||
(setq native-comp-deferred-compilation t)
|
||||
(setq max-specpdl-size 1200)
|
||||
(setq max-lisp-eval-depth 800)
|
||||
|
||||
(scroll-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(menu-bar-mode -1)
|
||||
(tooltip-mode -1)
|
||||
(setq package-enable-at-startup nil)
|
||||
|
||||
(setq load-prefer-newer nil)
|
||||
|
||||
(setq safe-local-variable-values
|
||||
'((org-src-preserve-indentation . t)
|
||||
(eval add-hook 'after-save-hook
|
||||
'(lambda nil
|
||||
(org-babel-tangle))
|
||||
nil t)))
|
||||
|
||||
(setq default-input-method nil)
|
||||
(setq utf-translate-cjk-mode nil) ; disable CJK coding/encoding (Chinese/Japanese/Korean characters)
|
||||
(set-language-environment 'utf-8)
|
||||
(set-keyboard-coding-system 'utf-8-mac) ; For old Carbon emacs on OS X only
|
||||
(setq locale-coding-system 'utf-8)
|
||||
(set-default-coding-systems 'utf-8)
|
||||
(set-terminal-coding-system 'utf-8)
|
||||
(set-selection-coding-system 'utf-8)
|
||||
(prefer-coding-system 'utf-8)
|
147
.config/magit/init.el
Normal file
147
.config/magit/init.el
Normal file
@ -0,0 +1,147 @@
|
||||
;; -*- lexical-binding: t -*-
|
||||
|
||||
(defvar bootstrap-version)
|
||||
(let ((bootstrap-file
|
||||
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
||||
(bootstrap-version 6))
|
||||
(unless (file-exists-p bootstrap-file)
|
||||
(with-current-buffer
|
||||
(url-retrieve-synchronously
|
||||
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
|
||||
'silent 'inhibit-cookies)
|
||||
(goto-char (point-max))
|
||||
(eval-print-last-sexp)))
|
||||
(load bootstrap-file nil 'nomessage))
|
||||
|
||||
(straight-use-package 'doom-themes)
|
||||
(setq custom-safe-themes t)
|
||||
|
||||
(custom-set-variables
|
||||
'(custom-enabled-themes '(doom-palenight)))
|
||||
(custom-set-faces
|
||||
'(dashboard-items-face ((t (:inherit widget-button :weight normal)))))
|
||||
|
||||
|
||||
(set-face-attribute 'default nil :family "Fira Code Nerd Font Mono" :height 120)
|
||||
|
||||
(setq-default c-basic-offset 4) ;; This is annoying
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq-default tab-width 4)
|
||||
(setq-default line-spacing 5)
|
||||
(setq indent-line-function #'indent-relative)
|
||||
|
||||
(set-default 'truncate-lines t)
|
||||
(set-default 'truncate-partial-width-windows nil)
|
||||
|
||||
(setq evil-want-keybinding nil)
|
||||
(setq evil-want-C-u-scroll t)
|
||||
(setq evil-want-Y-yank-to-eol t)
|
||||
(setq evil-disable-insert-state-bindings t)
|
||||
(setq evil-echo-state nil)
|
||||
(straight-use-package 'evil)
|
||||
(straight-use-package 'evil-collection)
|
||||
|
||||
(evil-mode t)
|
||||
(evil-collection-init)
|
||||
|
||||
;; TODO: We need 3 bindings; 1.) close buffer 2.) close window 3.) close buffer and window
|
||||
;; To disable a keybinding just bind it to nil
|
||||
(evil-set-leader nil (kbd "C-SPC"))
|
||||
(evil-set-leader 'normal (kbd "SPC"))
|
||||
|
||||
(evil-global-set-key 'insert (kbd "C-w") #'evil-delete-backward-word)
|
||||
(evil-global-set-key 'normal (kbd "C-s") #'save-buffer)
|
||||
|
||||
(straight-use-package 'all-the-icons-completion)
|
||||
(straight-use-package '(vertico :files (:defaults "extensions/*")
|
||||
:includes (vertico-indexed
|
||||
vertico-repeat
|
||||
vertico-directory)))
|
||||
|
||||
(vertico-mode)
|
||||
|
||||
(define-key vertico-map (kbd "C-w") #'vertico-directory-delete-word)
|
||||
(vertico-indexed-mode)
|
||||
|
||||
(setq vertico-count 17
|
||||
vertico-resize nil
|
||||
vertico-cycle t)
|
||||
|
||||
(require 'savehist)
|
||||
(savehist-mode)
|
||||
(add-hook 'minibuffer-setup-hook #'vertico-repeat-save)
|
||||
(add-to-list 'savehist-additional-variables 'vertico-repeat-history)
|
||||
|
||||
(straight-use-package 'vertico-directory)
|
||||
|
||||
(defun embark-which-key-indicator ()
|
||||
"An embark indicator that displays keymaps using which-key.
|
||||
The which-key help message will show the type and value of the
|
||||
current target followed by an ellipsis if there are further
|
||||
targets."
|
||||
(lambda (&optional keymap targets prefix)
|
||||
(if (null keymap)
|
||||
(which-key--hide-popup-ignore-command)
|
||||
(which-key--show-keymap
|
||||
(if (eq (plist-get (car targets) :type) 'embark-become)
|
||||
"Become"
|
||||
(format "Act on %s '%s'%s"
|
||||
(plist-get (car targets) :type)
|
||||
(embark--truncate-target (plist-get (car targets) :target))
|
||||
(if (cdr targets) "…" "")))
|
||||
(if prefix
|
||||
(pcase (lookup-key keymap prefix 'accept-default)
|
||||
((and (pred keymapp) km) km)
|
||||
(_ (key-binding prefix 'accept-default)))
|
||||
keymap)
|
||||
nil nil t (lambda (binding)
|
||||
(not (string-suffix-p "-argument" (cdr binding))))))))
|
||||
|
||||
(setq embark-indicators
|
||||
'(embark-which-key-indicator
|
||||
embark-highlight-indicator
|
||||
embark-isearch-highlight-indicator))
|
||||
|
||||
(defun embark-hide-which-key-indicator (fn &rest args)
|
||||
"Hide the which-key indicator immediately when using the completing-read prompter."
|
||||
(which-key--hide-popup-ignore-command)
|
||||
(let ((embark-indicators
|
||||
(remq #'embark-which-key-indicator embark-indicators)))
|
||||
(apply fn args)))
|
||||
|
||||
(advice-add #'embark-completing-read-prompter
|
||||
:around #'embark-hide-which-key-indicator)
|
||||
|
||||
(global-set-key (kbd "C-'") #'embark-act)
|
||||
|
||||
(straight-use-package 'embark-consult)
|
||||
|
||||
(straight-use-package 'marginalia)
|
||||
(setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil))
|
||||
(setq marginalia-align 'right)
|
||||
(setq marginalia-max-relative-age most-positive-fixnum)
|
||||
(marginalia-mode)
|
||||
(define-key minibuffer-local-map (kbd "M-A") #'marginalia-cycle)
|
||||
(require 'all-the-icons-completion)
|
||||
(all-the-icons-completion-mode)
|
||||
(all-the-icons-completion-marginalia-setup)
|
||||
|
||||
(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup)
|
||||
|
||||
(straight-use-package 'orderless)
|
||||
(setq completion-styles '(orderless basic)
|
||||
completion-category-overrides '((file (styles basic partial-completion))))
|
||||
|
||||
|
||||
(straight-use-package 'magit)
|
||||
|
||||
(defun joe/magit-kill-buffers (param)
|
||||
"Restore window configuration and kill all Magit buffers."
|
||||
(let ((buffers (magit-mode-get-buffers)))
|
||||
(magit-restore-window-configuration)
|
||||
(mapc #'kill-buffer buffers))
|
||||
(kill-emacs))
|
||||
|
||||
(setq magit-bury-buffer-function #'joe/magit-kill-buffers)
|
||||
(setq magit-clone-set-remote.pushDefault t)
|
||||
(setq magit-clone-default-directory "~/Development/")
|
@ -1,30 +1,102 @@
|
||||
-- This file can be loaded by calling `lua require('plugins')` from your init.vim
|
||||
|
||||
require('plugins')
|
||||
local map = vim.keymap.set
|
||||
local set = vim.opt
|
||||
|
||||
vim.o.clipboard = 'unnamedplus'
|
||||
vim.o.wrap = false
|
||||
vim.o.hlsearch = false
|
||||
vim.wo.number = true
|
||||
vim.wo.relativenumber = true
|
||||
vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
vim.o.termguicolors = true
|
||||
|
||||
set.clipboard = 'unnamedplus'
|
||||
set.wrap = false
|
||||
set.number = true
|
||||
set.relativenumber = true
|
||||
set.ignorecase = true
|
||||
set.smartcase = true
|
||||
set.termguicolors = true
|
||||
set.swapfile = false
|
||||
set.backup = false
|
||||
set.undodir = os.getenv("XDG_CACHE_HOME") .. "/nvim/undo"
|
||||
set.undofile = true
|
||||
set.hlsearch = false
|
||||
set.incsearch = true
|
||||
set.cursorline = true
|
||||
set.cmdheight = 0
|
||||
set.mouse = 'a'
|
||||
set.splitright = true
|
||||
set.splitbelow = true
|
||||
set.updatetime = 600
|
||||
set.signcolumn = "yes"
|
||||
set.tabstop = 4
|
||||
set.softtabstop = 4
|
||||
set.shiftwidth = 4
|
||||
set.expandtab = true
|
||||
vim.g.mapleader = " "
|
||||
|
||||
map("v", "J", ":m '>+1<CR>gv=gv")
|
||||
map("v", "K", ":m '<-2<CR>gv=gv")
|
||||
map("x", "J", ":m '>+1<CR>gv-gv", opts)
|
||||
map("x", "K", ":m '<-2<CR>gv-gv", opts)
|
||||
|
||||
map("v", "<", "<gv", opts)
|
||||
map("v", ">", ">gv", opts)
|
||||
|
||||
map("n", "J", "mzJ`z")
|
||||
|
||||
map("n", "<C-s>", vim.cmd.w)
|
||||
map("n", "<C-q>", vim.cmd.wq)
|
||||
map("n", "<C-r>", vim.cmd.source)
|
||||
|
||||
map("n", "vv", "^vg_", { noremap = true })
|
||||
|
||||
local telescope = require('telescope.builtin')
|
||||
map('n', '<leader><leader>f', telescope.find_files, {})
|
||||
map('n', '<leader><leader>g', telescope.live_grep, {})
|
||||
map('n', '<leader><leader>b', telescope.buffers, {})
|
||||
map('n', '<leader><leader>t', telescope.help_tags, {})
|
||||
map("n", "-", vim.cmd.Ex, {})
|
||||
map('n', 'U', vim.cmd.redo)
|
||||
|
||||
local ts = require('telescope.builtin')
|
||||
|
||||
map('n', '<leader><leader>f', ts.find_files, {})
|
||||
map('n', '<leader><leader>g', ts.live_grep, {})
|
||||
map('n', '<leader><leader>b', ts.buffers, {})
|
||||
map('n', '<leader><leader>t', ts.help_tags, {})
|
||||
map('n', '<leader><leader>c', ts.commands, {})
|
||||
|
||||
-- TODO If we use this one a lot, might be better to bind it to something easier
|
||||
map('n', '<leader>bb', ':b#<CR>')
|
||||
map('n', '<leader>bn', vim.cmd.bnext)
|
||||
map('n', '<leader>bk', vim.cmd.bdelete)
|
||||
|
||||
-- Window management
|
||||
|
||||
map('n', '<leader>wo', '<C-w>o')
|
||||
map('n', '<leader>wc', '<C-w>c')
|
||||
map('n', '<leader>wv', '<C-w>v')
|
||||
map('n', '<leader>ws', '<C-w>s')
|
||||
map('n', '<leader>ww', '<C-w>p')
|
||||
map('n', '<leader>wr', '<C-w>r')
|
||||
map('n', '<leader>wx', '<C-w>x')
|
||||
map('n', '<leader>wt', '<C-w>T')
|
||||
map('n', '<leader>wh', '<C-w>H')
|
||||
map('n', '<leader>wj', '<C-w>J')
|
||||
map('n', '<leader>wk', '<C-w>K')
|
||||
map('n', '<leader>wl', '<C-w>L')
|
||||
|
||||
map("n", "<C-Up>", ":resize -2<CR>", opts)
|
||||
map("n", "<C-Down>", ":resize +2<CR>", opts)
|
||||
map("n", "<C-Left>", ":vertical resize -2<CR>", opts)
|
||||
map("n", "<C-Right>", ":vertical resize +2<CR>", opts)
|
||||
|
||||
map('n', '<C-h>', '<C-w>h', {})
|
||||
map('n', '<C-j>', '<C-w>j', {})
|
||||
map('n', '<C-k>', '<C-w>k', {})
|
||||
map('n', '<C-l>', '<C-w>l', {})
|
||||
|
||||
-- local neogit = require('neogit')
|
||||
--
|
||||
-- neogit.setup {}
|
||||
|
||||
function ToggleInlayHints()
|
||||
local rt = require("rust-tools")
|
||||
if _G.inlay_hints_toggle == true then
|
||||
rt.inlay_hints.enable()
|
||||
else
|
||||
rt.inlay_hints.disable()
|
||||
end
|
||||
_G.inlay_hints_toggle = not _G.inlay_hints_toggle
|
||||
end
|
||||
vim.keymap.set('n', '<leader>li', ':lua ToggleInlayHints()<CR>')
|
||||
|
||||
|
@ -10,53 +10,107 @@ local ensure_packer = function()
|
||||
end
|
||||
|
||||
local packer_bootstrap = ensure_packer()
|
||||
local packer = require('packer')
|
||||
|
||||
-- Use a protected call so we don't error out on first use
|
||||
local status_ok, packer = pcall(require, "packer")
|
||||
if not status_ok then
|
||||
return
|
||||
end
|
||||
|
||||
-- Have packer use a popup window
|
||||
packer.init({
|
||||
display = {
|
||||
open_fn = function()
|
||||
return require("packer.util").float({ border = "rounded" })
|
||||
end,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
packer.startup(function(use)
|
||||
-- Packer can manage itself
|
||||
use 'wbthomason/packer.nvim'
|
||||
use 'nvim-lua/plenary.nvim'
|
||||
use {
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
run = 'make',
|
||||
cond = vim.fn.executable 'make' == 1
|
||||
}
|
||||
use {
|
||||
'marko-cerovac/material.nvim',
|
||||
config = function()
|
||||
vim.g.material_style = "palenight"
|
||||
vim.cmd [[colorscheme material]]
|
||||
end
|
||||
}
|
||||
use {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
run = function()
|
||||
local ts_update = require('nvim-treesitter.install').update({ with_sync = true })
|
||||
ts_update()
|
||||
end
|
||||
}
|
||||
use { -- Additional text objects via treesitter
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
after = 'nvim-treesitter',
|
||||
}
|
||||
use {
|
||||
'nvim-telescope/telescope.nvim', tag = '0.1.0',
|
||||
requires = { {'nvim-lua/plenary.nvim'} }
|
||||
}
|
||||
use {
|
||||
'numToStr/Comment.nvim',
|
||||
config = function()
|
||||
require('Comment').setup()
|
||||
end
|
||||
}
|
||||
use {
|
||||
"kylechui/nvim-surround",
|
||||
tag = "*", -- Use for stability; omit to use `main` branch for the latest features
|
||||
config = function()
|
||||
require("nvim-surround").setup({})
|
||||
-- Packer can manage itself
|
||||
use 'wbthomason/packer.nvim'
|
||||
use 'nvim-lua/plenary.nvim'
|
||||
use {
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
run = 'make',
|
||||
cond = vim.fn.executable 'make' == 1
|
||||
}
|
||||
use {
|
||||
'marko-cerovac/material.nvim',
|
||||
config = function()
|
||||
vim.g.material_style = "palenight"
|
||||
vim.cmd [[colorscheme material]]
|
||||
end
|
||||
}
|
||||
-- use { 'TimUntersberger/neogit', requires = 'nvim-lua/plenary.nvim' }
|
||||
}
|
||||
use {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
run = function()
|
||||
local ts_update = require('nvim-treesitter.install').update({ with_sync = true })
|
||||
ts_update()
|
||||
end
|
||||
}
|
||||
use { -- Additional text objects via treesitter
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
after = 'nvim-treesitter',
|
||||
}
|
||||
use 'neovim/nvim-lspconfig'
|
||||
use {
|
||||
'simrat39/rust-tools.nvim',
|
||||
config = function()
|
||||
local rt = require("rust-tools")
|
||||
rt.setup({
|
||||
server = {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Hover actions
|
||||
vim.keymap.set("n", "<C-space>", rt.hover_actions.hover_actions, { buffer = bufnr })
|
||||
-- Code action groups
|
||||
vim.keymap.set("n", "<Leader>a", rt.code_action_group.code_action_group, { buffer = bufnr })
|
||||
end,
|
||||
},
|
||||
})
|
||||
end
|
||||
}
|
||||
use {
|
||||
'WhoIsSethDaniel/toggle-lsp-diagnostics.nvim',
|
||||
config = function()
|
||||
require'toggle_lsp_diagnostics'.init()
|
||||
vim.keymap.set('n', '<Leader>e', vim.cmd.ToggleDiag)
|
||||
end
|
||||
}
|
||||
use {
|
||||
'nvim-telescope/telescope.nvim', tag = '0.1.0',
|
||||
requires = { {'nvim-lua/plenary.nvim'} }
|
||||
}
|
||||
use 'mfussenegger/nvim-dap'
|
||||
use {
|
||||
"rcarriga/nvim-dap-ui",
|
||||
requires = {"mfussenegger/nvim-dap"},
|
||||
config = function()
|
||||
require("dapui").setup()
|
||||
end,
|
||||
}
|
||||
use 'mbbill/undotree'
|
||||
use {
|
||||
'numToStr/Comment.nvim',
|
||||
config = function()
|
||||
require('Comment').setup()
|
||||
end
|
||||
}
|
||||
use {
|
||||
"kylechui/nvim-surround",
|
||||
tag = "*", -- Use for stability; omit to use `main` branch for the latest features
|
||||
config = function()
|
||||
require("nvim-surround").setup({})
|
||||
end
|
||||
}
|
||||
use {
|
||||
'm4xshen/autoclose.nvim',
|
||||
config = function()
|
||||
require("autoclose").setup({})
|
||||
end
|
||||
}
|
||||
-- use { 'TimUntersberger/neogit', requires = 'nvim-lua/plenary.nvim' }
|
||||
end)
|
||||
|
||||
if packer_bootstrap then
|
||||
@ -68,75 +122,154 @@ local augroup = vim.api.nvim_create_augroup
|
||||
|
||||
|
||||
autocmd(('BufWritePost'), {
|
||||
group = augroup('packer_user_config', { clear = true }),
|
||||
pattern = "plugins.lua",
|
||||
once = true,
|
||||
callback = function()
|
||||
vim.cmd('source ~/.config/nvim/lua/plugins.lua')
|
||||
packer.compile()
|
||||
end
|
||||
group = augroup('packer_user_config', { clear = true }),
|
||||
pattern = "plugins.lua",
|
||||
once = true,
|
||||
callback = function()
|
||||
vim.cmd('source ~/.config/nvim/lua/plugins.lua')
|
||||
packer.compile()
|
||||
end
|
||||
})
|
||||
|
||||
require('nvim-treesitter.configs').setup {
|
||||
-- Add languages to be installed here that you want installed for treesitter
|
||||
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'bash', 'rust', 'go', 'help', 'haskell', 'ocaml' },
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false
|
||||
},
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<c-space>',
|
||||
node_incremental = '<c-space>',
|
||||
scope_incremental = '<c-s>',
|
||||
node_decremental = '<c-backspace>',
|
||||
-- Add languages to be installed here that you want installed for treesitter
|
||||
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'bash', 'rust', 'go', 'help', 'haskell', 'ocaml' },
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
['aa'] = '@parameter.outer',
|
||||
['ia'] = '@parameter.inner',
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
},
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<c-space>',
|
||||
node_incremental = '<c-space>',
|
||||
scope_incremental = '<c-s>',
|
||||
node_decremental = '<c-backspace>',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
[')'] = '@function.outer',
|
||||
[']]'] = '@class.outer',
|
||||
},
|
||||
goto_next_end = {
|
||||
[']M'] = '@function.outer',
|
||||
[']['] = '@class.outer',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['('] = '@function.outer',
|
||||
['[['] = '@class.outer',
|
||||
},
|
||||
goto_previous_end = {
|
||||
['[M'] = '@function.outer',
|
||||
['[]'] = '@class.outer',
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
['aa'] = '@parameter.outer',
|
||||
['ia'] = '@parameter.inner',
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
[')'] = '@function.outer',
|
||||
[']]'] = '@class.outer',
|
||||
},
|
||||
goto_next_end = {
|
||||
[']M'] = '@function.outer',
|
||||
[']['] = '@class.outer',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['('] = '@function.outer',
|
||||
['[['] = '@class.outer',
|
||||
},
|
||||
goto_previous_end = {
|
||||
['[M'] = '@function.outer',
|
||||
['[]'] = '@class.outer',
|
||||
},
|
||||
},
|
||||
-- TODO: Fix this
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
['<leader>a'] = '@parameter.inner',
|
||||
},
|
||||
swap_previous = {
|
||||
['<leader>A'] = '@parameter.inner',
|
||||
},
|
||||
},
|
||||
},
|
||||
-- TODO: Fix this
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
['<leader>a'] = '@parameter.inner',
|
||||
},
|
||||
swap_previous = {
|
||||
['<leader>A'] = '@parameter.inner',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
local dap = require('dap')
|
||||
dap.adapters.lldb = {
|
||||
type = 'executable',
|
||||
command = '/usr/bin/lldb-vscode', -- adjust as needed, must be absolute path
|
||||
name = 'lldb'
|
||||
}
|
||||
|
||||
dap.configurations.rust = {
|
||||
{
|
||||
name = 'Launch',
|
||||
type = 'lldb',
|
||||
request = 'launch',
|
||||
program = function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
||||
end,
|
||||
cwd = '${workspaceFolder}',
|
||||
stopOnEntry = false,
|
||||
args = {},
|
||||
},
|
||||
}
|
||||
|
||||
-- If you want to use this for Rust and C, add something like this:
|
||||
|
||||
dap.configurations.c = dap.configurations.rust
|
||||
dap.configurations.cpp = dap.configurations.rust
|
||||
|
||||
local on_attach = function(client, bufnr)
|
||||
-- Enable completion triggered by <c-x><c-o>
|
||||
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||
vim.diagnostic.config({
|
||||
virtual_text = true,
|
||||
signs = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
severity_sort = false,
|
||||
})
|
||||
-- Mappings.
|
||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||
local bufopts = { noremap=true, silent=true, buffer=bufnr }
|
||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
||||
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
||||
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
||||
vim.keymap.set('n', '<space>wl', function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end, bufopts)
|
||||
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
||||
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
||||
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
||||
vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts)
|
||||
end
|
||||
|
||||
require('lspconfig')['rust_analyzer'].setup{
|
||||
on_attach = on_attach,
|
||||
flags = lsp_flags,
|
||||
settings = {
|
||||
["rust-analyzer"] = {}
|
||||
}
|
||||
}
|
||||
local hints = false
|
||||
|
||||
show_hints = false
|
||||
|
||||
toggle_hints = function()
|
||||
local hints = require("rust-tools").inlay_hints
|
||||
if show_hints then
|
||||
hints.enable()
|
||||
else
|
||||
hints.disable()
|
||||
end
|
||||
show_hints = not show_hints
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<leader>li", toggle_hints)
|
||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,6 @@
|
||||
.config/emacs/*
|
||||
!.config/emacs/init.org
|
||||
/.config/nvim/plugin/
|
||||
.config/magit/*
|
||||
!.config/magit/init.el
|
||||
!.config/magit/early-init.el
|
||||
|
Loading…
x
Reference in New Issue
Block a user