diff --git a/eww/eww.scss b/eww/eww.scss index ef09a5a..49f50e4 100644 --- a/eww/eww.scss +++ b/eww/eww.scss @@ -62,7 +62,7 @@ $winter_blue: #252535; } .bar_section { - background: rgba($background, 1); + background: rgba($background, 0.8); padding: 5px 10px; border-radius: 10px; } diff --git a/nvim/after/plugin/blankline.lua b/nvim/after/plugin/blankline.lua new file mode 100644 index 0000000..2d52c09 --- /dev/null +++ b/nvim/after/plugin/blankline.lua @@ -0,0 +1,2 @@ +vim.opt.listchars:append "space:⋅" + diff --git a/nvim/after/plugin/coc.lua b/nvim/after/plugin/coc.lua new file mode 100644 index 0000000..a70bfc7 --- /dev/null +++ b/nvim/after/plugin/coc.lua @@ -0,0 +1,188 @@ +-- Some servers have issues with backup files, see #649 +vim.opt.backup = false +vim.opt.writebackup = false + +-- Having longer updatetime (default is 4000 ms = 4s) leads to noticeable +-- delays and poor user experience +vim.opt.updatetime = 300 + +-- Always show the signcolumn, otherwise it would shift the text each time +-- diagnostics appeared/became resolved +vim.opt.signcolumn = "yes" + +local keyset = vim.keymap.set +-- Autocomplete +function _G.check_back_space() + local col = vim.fn.col('.') - 1 + return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil +end + +-- Use Tab for trigger completion with characters ahead and navigate +-- NOTE: There's always a completion item selected by default, you may want to enable +-- no select by setting `"suggest.noselect": true` in your configuration file +-- NOTE: Use command ':verbose imap ' to make sure Tab is not mapped by +-- If you do not like the sequence you can set your own using g:vimwiki_listsyms for example + +--let +-- other plugins before putting this into your config +local opts = {silent = true, noremap = true, expr = true, replace_keycodes = false} +keyset("i", "", 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "" : coc#refresh()', opts) +keyset("i", "", [[coc#pum#visible() ? coc#pum#prev(1) : "\"]], opts) + +-- Make to accept selected completion item or notify coc.nvim to format +-- u breaks current undo, please make your own choice + +keyset("i", "", [[coc#pum#visible() ? coc#pum#confirm() : "\u\\=coc#on_enter()\"]], opts) + +-- Use to trigger snippets +keyset("i", "", "(coc-snippets-expand-jump)") +-- Use to trigger completion +keyset("i", "", "coc#refresh()", {silent = true, expr = true}) + +-- Use `[g` and `]g` to navigate diagnostics +-- Use `:CocDiagnostics` to get all diagnostics of current buffer in location list +keyset("n", "[g", "(coc-diagnostic-prev)", {silent = true}) +keyset("n", "]g", "(coc-diagnostic-next)", {silent = true}) + +-- GoTo code navigation +keyset("n", "gd", "(coc-definition)", {silent = true}) +keyset("n", "gy", "(coc-type-definition)", {silent = true}) +keyset("n", "gi", "(coc-implementation)", {silent = true}) +keyset("n", "gr", "(coc-references)", {silent = true}) + + +-- Use K to show documentation in preview window +function _G.show_docs() + local cw = vim.fn.expand('') + if vim.fn.index({'vim', 'help'}, vim.bo.filetype) >= 0 then + vim.api.nvim_command('h ' .. cw) + elseif vim.api.nvim_eval('coc#rpc#ready()') then + vim.fn.CocActionAsync('doHover') + else + vim.api.nvim_command('!' .. vim.o.keywordprg .. ' ' .. cw) + end +end +keyset("n", "K", 'lua _G.show_docs()', {silent = true}) + + +-- Highlight the symbol and its references on a CursorHold event(cursor is idle) +vim.api.nvim_create_augroup("CocGroup", {}) +vim.api.nvim_create_autocmd("CursorHold", { + group = "CocGroup", + command = "silent call CocActionAsync('highlight')", + desc = "Highlight symbol under cursor on CursorHold" +}) + + +-- Symbol renaming +keyset("n", "rn", "(coc-rename)", {silent = true}) + + +-- Formatting selected code +keyset("x", "f", "(coc-format-selected)", {silent = true}) +keyset("n", "f", "(coc-format-selected)", {silent = true}) + + +-- Setup formatexpr specified filetype(s) +vim.api.nvim_create_autocmd("FileType", { + group = "CocGroup", + pattern = "typescript,json", + command = "setl formatexpr=CocAction('formatSelected')", + desc = "Setup formatexpr specified filetype(s)." +}) + +-- Update signature help on jump placeholder +vim.api.nvim_create_autocmd("User", { + group = "CocGroup", + pattern = "CocJumpPlaceholder", + command = "call CocActionAsync('showSignatureHelp')", + desc = "Update signature help on jump placeholder" +}) + +-- Apply codeAction to the selected region +-- Example: `aap` for current paragraph +local opts = {silent = true, nowait = true} +keyset("x", "a", "(coc-codeaction-selected)", opts) +keyset("n", "a", "(coc-codeaction-selected)", opts) + +-- Remap keys for apply code actions at the cursor position. +keyset("n", "ac", "(coc-codeaction-cursor)", opts) +-- Remap keys for apply source code actions for current file. +keyset("n", "as", "(coc-codeaction-source)", opts) +-- Apply the most preferred quickfix action on the current line. +keyset("n", "qf", "(coc-fix-current)", opts) + +-- Remap keys for apply refactor code actions. +keyset("n", "re", "(coc-codeaction-refactor)", { silent = true }) +keyset("x", "r", "(coc-codeaction-refactor-selected)", { silent = true }) +keyset("n", "r", "(coc-codeaction-refactor-selected)", { silent = true }) + +-- Run the Code Lens actions on the current line +keyset("n", "cl", "(coc-codelens-action)", opts) + + +-- Map function and class text objects +-- NOTE: Requires 'textDocument.documentSymbol' support from the language server +keyset("x", "if", "(coc-funcobj-i)", opts) +keyset("o", "if", "(coc-funcobj-i)", opts) +keyset("x", "af", "(coc-funcobj-a)", opts) +keyset("o", "af", "(coc-funcobj-a)", opts) +keyset("x", "ic", "(coc-classobj-i)", opts) +keyset("o", "ic", "(coc-classobj-i)", opts) +keyset("x", "ac", "(coc-classobj-a)", opts) +keyset("o", "ac", "(coc-classobj-a)", opts) + + +-- Remap and to scroll float windows/popups +---@diagnostic disable-next-line: redefined-local +local opts = {silent = true, nowait = true, expr = true} +keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) +keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) +keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(1)" : ""', opts) +keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(0)" : ""', opts) +keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) +keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) + + +-- Use CTRL-S for selections ranges +-- Requires 'textDocument/selectionRange' support of language server +keyset("n", "", "(coc-range-select)", {silent = true}) +keyset("x", "", "(coc-range-select)", {silent = true}) + + +-- Add `:Format` command to format current buffer +vim.api.nvim_create_user_command("Format", "call CocAction('format')", {}) + +-- " Add `:Fold` command to fold current buffer +vim.api.nvim_create_user_command("Fold", "call CocAction('fold', )", {nargs = '?'}) + +-- Add `:OR` command for organize imports of the current buffer +vim.api.nvim_create_user_command("OR", "call CocActionAsync('runCommand', 'editor.action.organizeImport')", {}) + +-- Add (Neo)Vim's native statusline support +-- NOTE: Please see `:h coc-status` for integrations with external plugins that +-- provide custom statusline: lightline.vim, vim-airline +vim.opt.statusline:prepend("%{coc#status()}%{get(b:,'coc_current_function','')}") + +-- Mappings for CoCList +-- code actions and coc stuff +---@diagnostic disable-next-line: redefined-local +local opts = {silent = true, nowait = true} +-- Show all diagnostics +keyset("n", "a", ":CocList diagnostics", opts) +-- Manage extensions +-- keyset("n", "e", ":CocList extensions", opts) +-- Show commands +keyset("n", "c", ":CocList commands", opts) +-- Find symbol of current document +keyset("n", "o", ":CocList outline", opts) +-- Search workspace symbols +keyset("n", "s", ":CocList -I symbols", opts) +-- Do default action for next item +keyset("n", "j", ":CocNext", opts) +-- Do default action for previous item +keyset("n", "k", ":CocPrev", opts) +-- Resume latest coc list +keyset("n", "p", ":CocListResume", opts) diff --git a/nvim/after/plugin/colorizer.lua b/nvim/after/plugin/colorizer.lua new file mode 100644 index 0000000..9ec28bd --- /dev/null +++ b/nvim/after/plugin/colorizer.lua @@ -0,0 +1,2 @@ +vim.opt.termguicolors = true +require 'colorizer'.setup() diff --git a/nvim/after/plugin/colors.lua b/nvim/after/plugin/colors.lua new file mode 100644 index 0000000..97a0f27 --- /dev/null +++ b/nvim/after/plugin/colors.lua @@ -0,0 +1,6 @@ +function ColorMyPencils(color) + color = color or "kanagawa" + vim.cmd.colorscheme(color) +end + +ColorMyPencils() diff --git a/nvim/after/plugin/lualine.lua b/nvim/after/plugin/lualine.lua new file mode 100644 index 0000000..1d2cdd7 --- /dev/null +++ b/nvim/after/plugin/lualine.lua @@ -0,0 +1,3 @@ +require("lualine").setup { + options = { theme = "auto"} +} diff --git a/nvim/after/plugin/nvim-tree.lua b/nvim/after/plugin/nvim-tree.lua new file mode 100644 index 0000000..2670d37 --- /dev/null +++ b/nvim/after/plugin/nvim-tree.lua @@ -0,0 +1,28 @@ +-- disable netrw at the very start of your init.lua +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +-- set termguicolors to enable highlight groups +vim.opt.termguicolors = true + +-- setup with some options +require("nvim-tree").setup({ + sort_by = "case_sensitive", + view = { + width = 30, + relativenumber = true, + }, + renderer = { + group_empty = true, + }, + filters = { + dotfiles = true, + }, + actions = { + open_file = { + quit_on_open = true, + }, + }, +}) + +-- vim.cmd.NvimTreeOpen() diff --git a/nvim/after/plugin/telescope.lua b/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..0bfa841 --- /dev/null +++ b/nvim/after/plugin/telescope.lua @@ -0,0 +1,3 @@ +local builtin = require('telescope.builtin') +vim.keymap.set('n', 'ff', builtin.find_files, {}) +vim.keymap.set('n', 'fg', builtin.git_files, {}) diff --git a/nvim/after/plugin/treesitter.lua b/nvim/after/plugin/treesitter.lua new file mode 100644 index 0000000..e95c216 --- /dev/null +++ b/nvim/after/plugin/treesitter.lua @@ -0,0 +1,24 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "python", "bash", "c_sharp", "bibtex", "css", "html", "json", "latex", "rust", "rasi", "ini", "verilog", "yaml", "zig", "rust", "cpp", "java"}, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + + ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) + -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! + + highlight = { + enable = true, + + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, +} diff --git a/nvim/after/plugin/vimtex.lua b/nvim/after/plugin/vimtex.lua new file mode 100644 index 0000000..e69de29 diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..6c3b22c --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,2 @@ +require("sharpe.remaps") +require("sharpe.set") diff --git a/nvim/lua/sharpe/init.lua b/nvim/lua/sharpe/init.lua new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/nvim/lua/sharpe/init.lua @@ -0,0 +1 @@ + diff --git a/nvim/lua/sharpe/packer.lua b/nvim/lua/sharpe/packer.lua new file mode 100644 index 0000000..3d37eb3 --- /dev/null +++ b/nvim/lua/sharpe/packer.lua @@ -0,0 +1,37 @@ +vim.cmd [[packadd packer.nvim]] + +return require('packer').startup(function(use) + -- Packer can manage itself + use 'wbthomason/packer.nvim' + -- use { "ellisonleao/gruvbox.nvim" } + use { "rebelot/kanagawa.nvim" } + use { + 'nvim-lualine/lualine.nvim', + requires = { 'nvim-tree/nvim-web-devicons', opt = true } + } + use { + 'nvim-telescope/telescope.nvim', tag = '0.1.1', + -- or , branch = '0.1.x', + requires = { {'nvim-lua/plenary.nvim'} } + } + use { "norcalli/nvim-colorizer.lua" } + use { "nvim-tree/nvim-tree.lua" } + use { "nvim-tree/nvim-web-devicons" } + use { "frazrepo/vim-rainbow" } + use { "hrsh7th/nvim-cmp" } + use "lukas-reineke/indent-blankline.nvim" + use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'}) + use {'neoclide/coc.nvim', branch = 'release'} + + -- install without yarn or npm + use({ + "iamcco/markdown-preview.nvim", + run = function() vim.fn["mkdp#util#install"]() end, + }) + + use({'vimwiki/vimwiki'}) + + use({'lervag/vimtex'}) + + use({ "iamcco/markdown-preview.nvim", run = "cd app && npm install", setup = function() vim.g.mkdp_filetypes = { "markdown" } end, ft = { "markdown" }, }) +end) diff --git a/nvim/lua/sharpe/remaps.lua b/nvim/lua/sharpe/remaps.lua new file mode 100644 index 0000000..7f07e50 --- /dev/null +++ b/nvim/lua/sharpe/remaps.lua @@ -0,0 +1,61 @@ +vim.g.mapleader = " " + +------ FILE EXPLORER ------- +vim.keymap.set("n", "e", vim.cmd.NvimTreeToggle) + +------ TEXT WRAPPING ------- +vim.keymap.set("n", "wr", function () vim.opt.wrap = not vim.opt.wrap:get() end) + +------- LINE NUMBERS ------- +vim.keymap.set("n", "n", function () vim.opt.nu = not vim.opt.nu:get() end) +vim.keymap.set("n", "rn", function () vim.opt.relativenumber = not vim.opt.relativenumber:get() end) + +------ FIND & REPLACE ------ +vim.keymap.set("n", "rl", function () + vim.cmd("s/" .. vim.fn.input("Find & replace on line > ") .. "/g") +end) + +vim.keymap.set("n", "rf", function () + vim.cmd("%s/" .. vim.fn.input("Find & replace in file > ") .. "/g") +end) + +------ SPLIT WINDOWS ------- +vim.keymap.set("n", "vs", vim.cmd.vsplit) +vim.keymap.set("n", "hs", vim.cmd.split) + +vim.keymap.set("n", "q", vim.cmd.q) + +------- TAB BUFFERS -------- +vim.keymap.set("n", "t", vim.cmd.tabnew) + +vim.keymap.set("n", "", vim.cmd.tabn) + +vim.keymap.set("n", "", vim.cmd.tabp) + +------- VIEW WHITESPACE ------ +vim.keymap.set("n", "ws", function() vim.opt.list = not vim.opt.list:get() end) + +-------- NVIM TERMINAL ------- +vim.keymap.set("n", "vt", function() + vim.cmd.vsplit() + vim.cmd.wincmd('l') + vim.cmd.terminal() + vim.cmd.startinsert() +end) + +vim.keymap.set("n", "ht", function() + vim.cmd.split() + vim.cmd.wincmd('j') + vim.cmd.terminal() + vim.cmd.startinsert() +end) + +vim.keymap.set("t", "", "") + +------- PLAINTEXT RENDERING ----------- +vim.keymap.set("n", "md", vim.cmd.MarkdownPreviewToggle) + + + +------ SPELL CHECK -------- +vim.keymap.set("n", "sp", function() vim.opt.spell = not vim.opt.spell:get() end) diff --git a/nvim/lua/sharpe/set.lua b/nvim/lua/sharpe/set.lua new file mode 100644 index 0000000..cb82727 --- /dev/null +++ b/nvim/lua/sharpe/set.lua @@ -0,0 +1,11 @@ +vim.opt.nu = true +vim.opt.relativenumber = true + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.expandtab = false + +vim.opt.smartindent = true + +vim.opt.spelllang = 'en'