Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save EralpCelebi/a86823f46a88e99608a08059afb3206d to your computer and use it in GitHub Desktop.

Select an option

Save EralpCelebi/a86823f46a88e99608a08059afb3206d to your computer and use it in GitHub Desktop.
neovim configuration
--
-- Options.
--
-- Looks.
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.wrap = false
vim.opt.termguicolors = true
vim.opt.showmode = false
vim.opt.signcolumn = "yes"
vim.opt.cursorline = true
vim.opt.laststatus = 0
-- Indentation.
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.autoindent = true
vim.opt.smartindent = true
-- Navigation.
vim.opt.splitright = true
vim.opt.splitbelow = true
vim.opt.mouse = "a"
vim.opt.backspace = "indent,eol,start"
vim.opt.winborder = "rounded"
-- Searching.
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.incsearch = true
vim.opt.hlsearch = false
-- History.
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undofile = true
vim.opt.undodir = os.getenv("HOME") .. "/.local/share/nvim/undotree"
-- Wrapping.
vim.opt.textwidth = 80
-- Endings.
vim.opt.fileformat = "unix"
vim.opt.fileformats = "unix"
vim.opt.fixendofline = true
-- Folding.
vim.opt.foldenable = false
-- Keys.
vim.g.mapleader = "§"
vim.g.maplocalleader = "§"
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
--
-- Packages.
--
vim.pack.add({
{ src = "https://github.com/stevearc/oil.nvim" },
{ src = "https://github.com/refractalize/oil-git-status.nvim" },
{ src = "https://github.com/lewis6991/gitsigns.nvim" },
{ src = "https://github.com/nvim-treesitter/nvim-treesitter" },
{ src = "https://github.com/neovim/nvim-lspconfig" },
{ src = "https://github.com/nvim-tree/nvim-web-devicons" },
{ src = "https://github.com/saghen/blink.cmp" },
{ src = "https://github.com/ibhagwan/fzf-lua" },
{ src = "https://github.com/danymat/neogen" },
{ src = "https://github.com/xzbdmw/colorful-menu.nvim" }
})
--
-- Configuration.
--
require("oil").setup({
use_default_keymaps = true,
win_options = {
signcolumn = "yes:2",
},
})
require("colorful-menu").setup()
require("blink.cmp").setup({
keymap = {
preset = "none",
["<C-b>"] = { "scroll_documentation_up", "fallback" },
["<C-f>"] = { "scroll_documentation_down", "fallback" },
["<Up>"] = { "select_prev", "fallback" },
["<Down>"] = { "select_next", "fallback" },
["<Tab>"] = { "select_and_accept", "snippet_forward", "fallback" },
},
appearance = {
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = "mono",
},
cmdline = {
completion = {
menu = {
auto_show = false,
},
},
},
-- (Default) Only show the documentation popup when manually triggered
completion = {
ghost_text = { enabled = true },
documentation = { auto_show = false },
list = {
selection = {
auto_insert = false,
},
},
menu = {
draw = {
--column = { { "kind_icon" }, { "label", gap = 1 } },
components = {
label = {
text = function(ctx)
return require("colorful-menu").blink_components_text(ctx)
end,
highlight = function(ctx)
return require("colorful-menu").blink_components_highlight(ctx)
end,
}
}
}
}
},
-- Default list of enabled providers defined so that you can extend it
-- elsewhere in your config, without redefining it, due to `opts_extend`
sources = {
default = {--[[ "snippets", ]]
"buffer",
"lsp",
"path",
},
},
signature = {
enabled = true,
},
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
--
-- See the fuzzy documentation for more information
fuzzy = { implementation = "prefer_rust" },
})
require("neogen").setup({
snippet_engine = "nvim",
})
require("oil-git-status").setup()
fzf = require("fzf-lua")
fzf.setup()
fzf.register_ui_select()
--
-- LSP.
--
vim.lsp.config.clangd = {
cmd = {
"clangd",
"--clang-tidy",
"--background-index",
},
filetypes = { "c", "cpp" },
}
vim.lsp.config.julials = {
cmd = {
"julia",
"--startup-file=no",
"--history-file=no",
"--project=@languageserver",
"-J/Users/eralpcelebi/.local/share/julia/environments/languageserver/sys_languageserver",
"/Users/eralpcelebi/.local/share/julia/environments/languageserver/precompile_languageserver.jl"
},
filetypes = { "julia" },
}
vim.lsp.enable("rust_analyzer")
vim.lsp.enable("clangd")
vim.lsp.enable("julials")
vim.lsp.enable("cmake")
vim.lsp.enable("tinymist")
vim.lsp.enable("texlab")
vim.lsp.enable("gopls")
--
-- Tree-sitter. + Theme
--
vim.diagnostic.config({
signs = {
text = {
[vim.diagnostic.severity.ERROR] = "•",
[vim.diagnostic.severity.WARN] = "•",
[vim.diagnostic.severity.HINT] = "•",
[vim.diagnostic.severity.INFO] = "•",
},
},
})
vim.cmd("colorscheme quiet")
vim.api.nvim_set_hl(0, "@keyword", { fg = "#EE6C4D" })
vim.api.nvim_set_hl(0, "@keyword.conditional", { link = "@keyword" })
vim.api.nvim_set_hl(0, "@keyword.import", { link = "@keyword" })
vim.api.nvim_set_hl(0, "@keyword.type", { link = "@keyword" })
vim.api.nvim_set_hl(0, "@keyword.directive", { fg = "#B48EDE" })
vim.api.nvim_set_hl(0, "@type", { fg = "#C6B89E", bold = true })
vim.api.nvim_set_hl(0, "@type.builtin", { link = "@type", bold = true })
vim.api.nvim_set_hl(0, "@type.definition", { link = "@type" })
vim.api.nvim_set_hl(0, "@variable", { fg = "#FFD972" })
vim.api.nvim_set_hl(0, "@variable.member", { fg = "#EE8C6D" })
vim.api.nvim_set_hl(0, "@variable.builtin", { fg = "#A79BD9", bold = true })
vim.api.nvim_set_hl(0, "@function", { fg = "#F7A360" })
vim.api.nvim_set_hl(0, "@function.builtin", { link = "@keyword" })
vim.api.nvim_set_hl(0, "@function.macro", { fg = "#D0BCEE" })
vim.api.nvim_set_hl(0, "@attribute", { link = "@function.macro", bold = true })
vim.api.nvim_set_hl(0, "@string", { fg = "#D3E198" })
vim.api.nvim_set_hl(0, "@string.special", { fg = "#D8C7F1" })
vim.api.nvim_set_hl(0, "@string.escape", { link = "@string.special" })
vim.api.nvim_set_hl(0, "@number", { fg = "#F7B3A4" })
vim.api.nvim_set_hl(0, "@number.float", { link = "@number" })
vim.api.nvim_set_hl(0, "@operator", { fg = "#A9B96B" })
vim.api.nvim_set_hl(0, "@punctuation", { fg = "#7A7470" })
vim.api.nvim_set_hl(0, "@punctuation.special", { link = "@function.macro" })
vim.api.nvim_set_hl(0, "@property", { link = "@variable.member" })
vim.api.nvim_set_hl(0, "@boolean", { link = "@number" })
vim.api.nvim_set_hl(0, "@constant", { link = "@string.special" })
vim.api.nvim_set_hl(0, "@constant.builtin", { link = "@constant", bold = true })
vim.api.nvim_set_hl(0, "@lsp.type.enumMember", { fg = "#A6B5D6" })
vim.api.nvim_set_hl(0, "@lsp.type.macro", { fg = "#6F83AA" })
vim.api.nvim_set_hl(0, "@lsp.type.function", { link = "@function" })
vim.api.nvim_set_hl(0, "@lsp.type.method", { link = "@function", bold = true })
vim.api.nvim_set_hl(0, "@lsp.type.property", { link = "@property" })
vim.api.nvim_set_hl(0, "Normal", { bg = "#100F0F" })
vim.api.nvim_set_hl(0, "Identifier", { link = "@variable" })
vim.api.nvim_set_hl(0, "Type", { link = "@type" })
vim.api.nvim_set_hl(0, "Statement", { link = "@keyword" })
vim.api.nvim_set_hl(0, "MatchParen", { fg = "#BAB4B0", bold = true})
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "#FFFFFF", bg = none })
vim.api.nvim_set_hl(0, "Pmenu", { fg = "#FFFFFF", bg = none })
vim.api.nvim_set_hl(0, "PmenuExtra", { fg = "#FFFFFF", bg = none })
vim.api.nvim_set_hl(0, "PmenuKind", { bg = none })
--
-- Keymaps.
--
vim.keymap.set("n", "<leader>cc", function() vim.cmd("edit $MYVIMRC") end)
vim.keymap.set("n", "<leader>q", function() vim.cmd("bdelete") end)
vim.keymap.set("n", "<leader>w", function() vim.cmd("Oil") end)
vim.keymap.set("n", "<leader>e", function() vim.cmd("Neogen") end)
vim.keymap.set("n", "<leader><leader>", function() vim.cmd("term") end)
vim.keymap.set("t", "<leader><leader>", [[<C-\><C-d>]])
vim.keymap.set("n", "<leader><space>", function() vim.cmd("FzfLua") end)
--
-- Auto-commands.
--
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
vim.keymap.set("n", "<leader>s", vim.lsp.buf.signature_help, { buffer = args.buf })
vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, { buffer = args.buf })
vim.keymap.set("n", "<leader>f", vim.lsp.buf.format, { buffer = args.buf })
vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, { buffer = args.buf })
vim.keymap.set("n", "<leader>a", fzf.lsp_code_actions)
vim.keymap.set("n", "<leader>i", fzf.lsp_implementations)
vim.keymap.set("n", "<leader>t", fzf.lsp_definitions)
vim.keymap.set("n", "<leader>d", fzf.lsp_declarations)
vim.keymap.set("n", "<leader>x", fzf.lsp_document_diagnostics)
end,
})
vim.api.nvim_create_autocmd('FileType', {
pattern = { 'c,cpp,julia,lua,rust,latex' },
callback = function() vim.treesitter.start() end,
})
--
-- Filetypes.
--
vim.filetype.add({
extension = {
h = "c",
},
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment