2023-08-27 02:19:24 +00:00
|
|
|
-- Install Lazy package
|
|
|
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
|
|
if not vim.loop.fs_stat(lazypath) then
|
|
|
|
vim.fn.system({
|
|
|
|
"git",
|
|
|
|
"clone",
|
|
|
|
"--filter=blob:none",
|
|
|
|
"https://github.com/folke/lazy.nvim.git",
|
|
|
|
"--branch=stable", -- latest stable release
|
|
|
|
lazypath,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
vim.opt.rtp:prepend(lazypath)
|
|
|
|
|
|
|
|
-- Lazy setup
|
|
|
|
require("lazy").setup({
|
|
|
|
-- Config
|
|
|
|
defaults = {
|
|
|
|
lazy = true
|
|
|
|
},
|
|
|
|
|
|
|
|
-- Packages
|
|
|
|
"asolkar/vim-color-molokini",
|
2023-08-27 03:39:29 +00:00
|
|
|
"navarasu/onedark.nvim",
|
2023-08-27 02:19:24 +00:00
|
|
|
"kyazdani42/nvim-web-devicons",
|
|
|
|
"nvim-lualine/lualine.nvim",
|
|
|
|
"preservim/nerdtree",
|
|
|
|
"tpope/vim-fugitive",
|
|
|
|
"mhinz/vim-signify",
|
|
|
|
"lewis6991/gitsigns.nvim",
|
|
|
|
"mg979/vim-visual-multi",
|
|
|
|
"jiangmiao/auto-pairs",
|
|
|
|
"luochen1990/rainbow",
|
|
|
|
"tpope/vim-surround",
|
|
|
|
"nathanaelkane/vim-indent-guides",
|
2023-08-27 03:39:29 +00:00
|
|
|
-- "https://github.com/intel-sandbox/vim-iosf.git", -- intel
|
|
|
|
-- "https://github.com/intel-sandbox/vim-pcietrk", -- intel
|
2023-12-25 19:33:13 +00:00
|
|
|
"vhda/verilog_systemverilog.vim",
|
|
|
|
{
|
|
|
|
'nvim-telescope/telescope.nvim', tag = '0.1.2',
|
|
|
|
dependencies = { 'nvim-lua/plenary.nvim' }
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'nvim-telescope/telescope-fzf-native.nvim',
|
2023-12-25 19:38:04 +00:00
|
|
|
-- build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build'
|
2023-09-11 00:09:17 +00:00
|
|
|
build = 'make'
|
2023-12-25 19:33:13 +00:00
|
|
|
}
|
2023-08-27 02:19:24 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
-- LuaLine
|
|
|
|
require('lualine').setup {
|
|
|
|
options = {
|
|
|
|
icons_enabled = false,
|
|
|
|
theme = 'nightfly',
|
|
|
|
section_separators = { left = '', right = '' },
|
|
|
|
component_separators = { left = '', right = '' }
|
|
|
|
},
|
|
|
|
sections = {
|
|
|
|
lualine_c = {
|
|
|
|
{
|
|
|
|
'filename',
|
|
|
|
path = 2,
|
|
|
|
symbols = {
|
|
|
|
modified = ' ●', -- Text to show when the buffer is modified
|
|
|
|
alternate_file = ' ↻', -- Text to show to identify the alternate file
|
|
|
|
directory = ' ▶', -- Text to show when the buffer is a directory
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
tabline = {
|
|
|
|
lualine_a = {
|
|
|
|
{
|
|
|
|
'buffers',
|
|
|
|
show_filename_only = true, -- Shows shortened relative path when set to false.
|
|
|
|
hide_filename_extension = false, -- Hide filename extension when set to true.
|
|
|
|
show_modified_status = true, -- Shows indicator when the buffer is modified.
|
|
|
|
|
|
|
|
mode = 4, -- 0: Shows buffer name
|
|
|
|
-- 1: Shows buffer index
|
|
|
|
-- 2: Shows buffer name + buffer index
|
|
|
|
-- 3: Shows buffer number
|
|
|
|
-- 4: Shows buffer name + buffer number
|
|
|
|
|
|
|
|
max_length = vim.o.columns * 2 / 3, -- Maximum width of buffers component,
|
|
|
|
-- it can also be a function that returns
|
|
|
|
-- the value of `max_length` dynamically.
|
|
|
|
|
|
|
|
symbols = {
|
|
|
|
modified = ' ●', -- Text to show when the buffer is modified
|
|
|
|
alternate_file = ' ↻', -- Text to show to identify the alternate file
|
|
|
|
directory = ' ▶', -- Text to show when the buffer is a directory
|
|
|
|
},
|
|
|
|
}}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-12-25 19:33:13 +00:00
|
|
|
-- -- Gitsigns
|
|
|
|
-- -- See `:help gitsigns.txt`
|
|
|
|
-- require('gitsigns').setup {
|
|
|
|
-- signs = {
|
|
|
|
-- add = { text = '+' },
|
|
|
|
-- change = { text = '~' },
|
|
|
|
-- delete = { text = '_' },
|
|
|
|
-- topdelete = { text = '‾' },
|
|
|
|
-- changedelete = { text = '~' },
|
|
|
|
-- },
|
|
|
|
-- }
|
2023-08-27 02:19:24 +00:00
|
|
|
|
2023-08-27 03:39:29 +00:00
|
|
|
-- Onedark theme
|
|
|
|
require('onedark').setup {
|
|
|
|
style = 'deep'
|
|
|
|
}
|
|
|
|
require('onedark').load()
|
|
|
|
|
2023-08-27 02:19:24 +00:00
|
|
|
-- [[ Setting options ]]
|
|
|
|
-- See `:help vim.o`
|
|
|
|
|
2023-08-27 03:39:29 +00:00
|
|
|
if vim.g.neovide then
|
2023-08-27 18:40:10 +00:00
|
|
|
vim.o.guifont = "Iosevka Term:h12"
|
|
|
|
vim.g.neovide_scale_factor = 1.0
|
2023-08-27 03:39:29 +00:00
|
|
|
end
|
|
|
|
|
2023-08-27 02:19:24 +00:00
|
|
|
-- Set highlight on search
|
|
|
|
vim.o.hlsearch = true
|
|
|
|
|
|
|
|
-- Highlight problematic whitespace
|
|
|
|
vim.o.list = true
|
|
|
|
vim.opt.listchars = { tab = '▶ ', trail = '●', extends = '#', nbsp = '.' }
|
|
|
|
|
|
|
|
-- Whitespace/tab management
|
|
|
|
vim.opt.expandtab = true
|
|
|
|
vim.opt.tabstop = 4
|
|
|
|
vim.opt.softtabstop = 4
|
|
|
|
vim.opt.shiftwidth = 4
|
|
|
|
vim.opt.colorcolumn = '120'
|
|
|
|
|
|
|
|
-- Make line numbers default
|
|
|
|
vim.wo.number = true
|
|
|
|
|
|
|
|
-- Enable mouse mode
|
|
|
|
vim.o.mouse = 'a'
|
|
|
|
|
|
|
|
-- Enable break indent
|
|
|
|
vim.o.breakindent = true
|
|
|
|
vim.o.wrap = false
|
|
|
|
|
|
|
|
-- Save undo history
|
|
|
|
vim.o.undofile = true
|
|
|
|
|
|
|
|
-- Case insensitive searching UNLESS /C or capital in search
|
|
|
|
vim.o.ignorecase = true
|
|
|
|
vim.o.smartcase = true
|
|
|
|
|
|
|
|
-- Decrease update time
|
|
|
|
vim.o.updatetime = 250
|
|
|
|
vim.wo.signcolumn = 'yes'
|
|
|
|
|
|
|
|
-- Set colorscheme
|
|
|
|
vim.o.termguicolors = true
|
|
|
|
-- vim.cmd [[colorscheme molokini]]
|
2023-08-27 03:39:29 +00:00
|
|
|
-- vim.cmd.colorscheme('molokini')
|
|
|
|
vim.cmd.colorscheme('onedark')
|
2023-08-27 02:19:24 +00:00
|
|
|
|
|
|
|
-- Set completeopt to have a better completion experience
|
|
|
|
vim.o.completeopt = 'menuone,noselect'
|
|
|
|
|
|
|
|
-- Do not auto read file when in focus
|
|
|
|
vim.o.autoread = false
|
|
|
|
|
|
|
|
-- [[ Basic Keymaps ]]
|
|
|
|
-- Set <space> as the leader key
|
|
|
|
-- See `:help mapleader`
|
|
|
|
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used)
|
|
|
|
vim.g.mapleader = ','
|
|
|
|
vim.g.maplocalleader = ','
|
|
|
|
|
|
|
|
-- Keymaps for better default experience
|
|
|
|
-- See `:help vim.keymap.set()`
|
|
|
|
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
|
|
|
|
|
|
|
-- Remap for dealing with word wrap
|
|
|
|
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
|
|
|
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
|
|
|
|
|
|
|
vim.api.nvim_set_keymap('n', '<c-z>', ':bn<CR>', { noremap = 1 })
|
|
|
|
vim.api.nvim_set_keymap('v', '<c-z>', ':bn<CR>', { noremap = 1 })
|
|
|
|
vim.api.nvim_set_keymap('n', '<c-x>', ':bp<CR>', { noremap = 1 })
|
|
|
|
vim.api.nvim_set_keymap('n', '<F5>', ':e<CR>', { noremap = 1 })
|
|
|
|
vim.api.nvim_set_keymap('n', '<F6>', '<C-W>w', { noremap = 1 })
|
|
|
|
vim.api.nvim_set_keymap('n', '<F18>', '<C-W>W', { noremap = 1 }) -- S-F6 (F18 defined in ST's config.h)
|
|
|
|
vim.api.nvim_set_keymap('n', '<F7>', '<C-W>o', { noremap = 1 })
|
|
|
|
vim.api.nvim_set_keymap('n', '<F8>', '<C-W>v', { noremap = 1 })
|
|
|
|
vim.api.nvim_set_keymap('n', '<F20>', '<C-W>s', { noremap = 1 }) -- S-F8 (F20 defined in ST's config.h)
|
|
|
|
vim.api.nvim_set_keymap('n', '<F35>', ':confirm bd<CR>', { noremap = 1 }) -- C-F11 (F35 defined in ST's config.h)
|
|
|
|
vim.api.nvim_set_keymap('v', '<LeftRelease>','"*ygv', { noremap = 1 }) -- Copy selection to clipboard
|
|
|
|
vim.api.nvim_set_keymap('v', '<2-LeftRelease>','"*ygv', { noremap = 1 }) -- Copy word selection to clipboard
|
|
|
|
vim.api.nvim_set_keymap('v', '<3-LeftRelease>','"*ygv', { noremap = 1 }) -- Copy line selection to clipboard
|
|
|
|
vim.api.nvim_set_keymap('v', '<4-LeftRelease>','"*ygv', { noremap = 1 }) -- Copy column selection to clipboard
|
|
|
|
vim.api.nvim_set_keymap('v', '<c-r>', '"hy/<C-r>h<cr>', { noremap = 1 }) -- Search selected text
|
|
|
|
vim.api.nvim_set_keymap('n', '<c-Space>', 'za', { noremap = 1 }) -- Toggle fold
|
|
|
|
vim.api.nvim_set_keymap('v', '<', '<gv', { noremap = 1 }) -- Preserve selection after left indent
|
|
|
|
vim.api.nvim_set_keymap('v', '>', '>gv', { noremap = 1 }) -- Preserve selection after right indent
|
|
|
|
vim.api.nvim_set_keymap('v', 'Q', 'gqa', { noremap = 1 }) -- Reflow visually highlighted lines with Q
|
|
|
|
vim.api.nvim_set_keymap('n', 'Q', 'gq', { noremap = 1 }) -- Reflow text
|
|
|
|
|
|
|
|
-- Insert time/date stamps
|
|
|
|
vim.api.nvim_set_keymap('n', '<leader>td', 'i<C-R>=strftime(\'%Y/%m/%d\')<CR><Esc>', { noremap = 1 }) -- 'Insert [T]imestamp - [d]ate'
|
|
|
|
vim.api.nvim_set_keymap('n', '<leader>tt', 'i<C-R>=strftime(\'%Y/%m/%d %H:%M:%S\')<CR><Esc>', { noremap = 1 }) -- 'Insert [T]imestamp - date[t]ime'
|
|
|
|
|
|
|
|
vim.g.rainbow_active = 1 -- 0 if you want to enable it later via :RainbowToggle
|
|
|
|
|
2023-08-27 03:39:29 +00:00
|
|
|
-- vim.g.iosftrk_folddisable = 1 -- intel
|
|
|
|
-- vim.g.iosfsbtrk_folddisable = 1 -- intel
|
|
|
|
-- vim.g.pcietrk_folddisable = 1 -- intel
|
2023-08-27 02:19:24 +00:00
|
|
|
|
|
|
|
-- [[ Highlight on yank ]]
|
|
|
|
-- See `:help vim.highlight.on_yank()`
|
|
|
|
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
|
|
|
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
|
|
|
callback = function()
|
|
|
|
vim.highlight.on_yank()
|
|
|
|
end,
|
|
|
|
group = highlight_group,
|
|
|
|
pattern = '*',
|
|
|
|
})
|
|
|
|
|
|
|
|
-- NERDTree
|
|
|
|
vim.api.nvim_set_keymap('n', '<c-t>', ':NERDTreeToggle %<CR>', { noremap = 1 })
|
|
|
|
vim.g.NERDTreeShowBookmarks = 1
|
|
|
|
vim.g.NERDTreeIgnore = {'\\.py[cd]$', '\\~$', '\\.swo$', '\\.swp$',
|
|
|
|
'^\\.git$', '^\\.hg$', '^\\.svn$', '\\.bzr$'}
|
|
|
|
vim.g.NERDTreeChDirMode = 3
|
|
|
|
vim.g.NERDTreeQuitOnOpen = 1
|
|
|
|
vim.g.NERDTreeMouseMode = 2
|
|
|
|
vim.g.NERDTreeShowHidden = 1
|
|
|
|
vim.g.NERDTreeKeepTreeInNewTab = 1
|
|
|
|
vim.g.nerdtree_tabs_open_on_gui_startup = 0
|
|
|
|
|
|
|
|
-- Filetype assignments - TODO: Is there an automatic way for this?
|
|
|
|
vim.cmd("au! BufRead,BufNewFile *.sv,*.svh set filetype=verilog_systemverilog")
|
|
|
|
vim.cmd("au! BufRead,BufNewFile *iosfsb_trk.out set filetype=iosfsbtrk")
|
|
|
|
vim.cmd("au! BufRead,BufNewFile *iosf_trk.out set filetype=iosftrk")
|
|
|
|
|
2023-12-25 19:33:13 +00:00
|
|
|
-- [[ Configure Telescope ]]
|
|
|
|
-- See `:help telescope` and `:help telescope.setup()`
|
|
|
|
require('telescope').setup {
|
|
|
|
defaults = {
|
|
|
|
mappings = {
|
|
|
|
i = {
|
|
|
|
['<C-u>'] = false,
|
|
|
|
['<C-d>'] = false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
-- Enable telescope fzf native, if installed
|
|
|
|
pcall(require('telescope').load_extension, 'fzf')
|
|
|
|
|
|
|
|
-- See `:help telescope.builtin`
|
|
|
|
vim.keymap.set('n', '<ldeader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
|
|
|
|
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
|
|
|
|
vim.keymap.set('n', '<leader>/', function()
|
|
|
|
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
|
|
|
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
|
|
|
|
winblend = 10,
|
|
|
|
previewer = false,
|
|
|
|
})
|
|
|
|
end, { desc = '[/] Fuzzily search in current buffer]' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
|
|
|
|
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
|
|
|
|
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
|
|
|
|
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
|
|
|
|
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
|
2023-09-11 00:09:17 +00:00
|
|
|
|
2023-08-27 02:19:24 +00:00
|
|
|
-- The line beneath this is called `modeline`. See `:help modeline`
|
|
|
|
-- vim: ft=lua ts=4 sts=4 sw=4 et
|