aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/colorschemes.lua153
-rw-r--r--core/globals.lua75
-rw-r--r--core/mappings.lua245
3 files changed, 0 insertions, 473 deletions
diff --git a/core/colorschemes.lua b/core/colorschemes.lua
deleted file mode 100644
index 46545b3..0000000
--- a/core/colorschemes.lua
+++ /dev/null
@@ -1,153 +0,0 @@
---- This module will load a random colorscheme on nvim startup process.
-
-local utils = require("utils")
-
-local M = {}
-
--- Colorscheme to its directory name mapping, because colorscheme repo name is not necessarily
--- the same as the colorscheme name itself.
-M.colorscheme2dir = {
- onedark = "onedark.nvim",
- edge = "edge",
- sonokai = "sonokai",
- gruvbox_material = "gruvbox-material",
- nord = "nord.nvim",
- everforest = "everforest",
- nightfox = "nightfox.nvim",
- kanagawa = "kanagawa.nvim",
- catppuccin = "catppuccin",
- rose_pine = "rose-pine",
- onedarkpro = "onedarkpro.nvim",
- monokai = "monokai.nvim",
- material = "material.nvim",
-}
-
-M.gruvbox8 = function()
- -- Italic options should be put before colorscheme setting,
- -- see https://github.com/morhetz/gruvbox/wiki/Terminal-specific#1-italics-is-disabled
- vim.g.gruvbox_italics = 1
- vim.g.gruvbox_italicize_strings = 1
- vim.g.gruvbox_filetype_hi_groups = 1
- vim.g.gruvbox_plugin_hi_groups = 1
-
- vim.cmd([[colorscheme gruvbox8_hard]])
-end
-
-M.onedark = function()
- vim.cmd([[colorscheme onedark]])
-end
-
-M.edge = function()
- vim.g.edge_enable_italic = 1
- vim.g.edge_better_performance = 1
-
- vim.cmd([[colorscheme edge]])
-end
-
-M.sonokai = function()
- vim.g.sonokai_enable_italic = 1
- vim.g.sonokai_better_performance = 1
-
- vim.cmd([[colorscheme sonokai]])
-end
-
-M.gruvbox_material = function()
- -- foreground option can be material, mix, or original
- vim.g.gruvbox_material_foreground = "material"
- --background option can be hard, medium, soft
- vim.g.gruvbox_material_background = "soft"
- vim.g.gruvbox_material_enable_italic = 1
- vim.g.gruvbox_material_better_performance = 1
-
- vim.cmd([[colorscheme gruvbox-material]])
-end
-
-M.nord = function()
- vim.cmd([[colorscheme nord]])
-end
-
-M.doom_one = function()
- vim.cmd([[colorscheme doom-one]])
-end
-
-M.everforest = function()
- vim.g.everforest_enable_italic = 1
- vim.g.everforest_better_performance = 1
-
- vim.cmd([[colorscheme everforest]])
-end
-
-M.nightfox = function()
- vim.cmd([[colorscheme nordfox]])
-end
-
-M.kanagawa = function()
- vim.cmd([[colorscheme kanagawa]])
-end
-
-M.catppuccin = function()
- -- available option: latte, frappe, macchiato, mocha
- vim.g.catppuccin_flavour = "frappe"
-
- require("catppuccin").setup()
-
- vim.cmd([[colorscheme catppuccin]])
-end
-
-M.rose_pine = function()
- require('rose-pine').setup({
- --- @usage 'main' | 'moon'
- dark_variant = 'moon',
- })
-
- -- set colorscheme after options
- vim.cmd('colorscheme rose-pine')
-end
-
-M.onedarkpro = function()
- -- set colorscheme after options
- vim.cmd('colorscheme onedark_vivid')
-end
-
-M.monokai = function()
- vim.cmd('colorscheme monokai_pro')
-end
-
-M.material = function ()
- vim.g.material_style = "oceanic"
- vim.cmd('colorscheme material')
-end
-
---- Use a random colorscheme from the pre-defined list of colorschemes.
-M.rand_colorscheme = function()
- local colorscheme = utils.rand_element(vim.tbl_keys(M.colorscheme2dir))
-
- if not vim.tbl_contains(vim.tbl_keys(M), colorscheme) then
- local msg = "Invalid colorscheme: " .. colorscheme
- vim.notify(msg, vim.log.levels.ERROR, { title = "nvim-config" })
-
- return
- end
-
- -- Load the colorscheme, because all the colorschemes are declared as opt plugins, so the colorscheme isn't loaded yet.
- local status = utils.add_pack(M.colorscheme2dir[colorscheme])
-
- if not status then
- local msg = string.format("Colorscheme %s is not installed. Run PackerSync to install.", colorscheme)
- vim.notify(msg, vim.log.levels.ERROR, { title = "nvim-config" })
-
- return
- end
-
- -- Load the colorscheme and its settings
- M[colorscheme]()
-
- if vim.g.logging_level == "debug" then
- local msg = "Colorscheme: " .. colorscheme
-
- vim.notify(msg, vim.log.levels.DEBUG, { title = "nvim-config" })
- end
-end
-
--- Load a random colorscheme
-M.rand_colorscheme()
diff --git a/core/globals.lua b/core/globals.lua
deleted file mode 100644
index b0af26e..0000000
--- a/core/globals.lua
+++ /dev/null
@@ -1,75 +0,0 @@
-local fn = vim.fn
-local api = vim.api
-
-local utils = require('utils')
-
--- Inspect something
-function _G.inspect(item)
- vim.print(item)
-end
-
-------------------------------------------------------------------------
--- custom variables --
-------------------------------------------------------------------------
-vim.g.is_win = (utils.has("win32") or utils.has("win64")) and true or false
-vim.g.is_linux = (utils.has("unix") and (not utils.has("macunix"))) and true or false
-vim.g.is_mac = utils.has("macunix") and true or false
-
-vim.g.logging_level = "info"
-
-------------------------------------------------------------------------
--- builtin variables --
-------------------------------------------------------------------------
-vim.g.loaded_perl_provider = 0 -- Disable perl provider
-vim.g.loaded_ruby_provider = 0 -- Disable ruby provider
-vim.g.loaded_node_provider = 0 -- Disable node provider
-vim.g.did_install_default_menus = 1 -- do not load menu
-
-if utils.executable('python3') then
- if vim.g.is_win then
- vim.g.python3_host_prog = fn.substitute(fn.exepath("python3"), ".exe$", '', 'g')
- else
- vim.g.python3_host_prog = fn.exepath("python3")
- end
-else
- api.nvim_err_writeln("Python3 executable not found! You must install Python3 and set its PATH correctly!")
- return
-end
-
--- Custom mapping <leader> (see `:h mapleader` for more info)
-vim.g.mapleader = ','
-
--- Enable highlighting for lua HERE doc inside vim script
-vim.g.vimsyn_embed = 'l'
-
--- Use English as main language
-vim.cmd [[language en_US.UTF-8]]
-
--- Disable loading certain plugins
-
--- Whether to load netrw by default, see https://github.com/bling/dotvim/issues/4
-vim.g.loaded_netrw = 1
-vim.g.loaded_netrwPlugin = 1
-vim.g.netrw_liststyle = 3
-if vim.g.is_win then
- vim.g.netrw_http_cmd = "curl --ssl-no-revoke -Lo"
-end
-
--- Do not load tohtml.vim
-vim.g.loaded_2html_plugin = 1
-
--- Do not load zipPlugin.vim, gzip.vim and tarPlugin.vim (all these plugins are
--- related to checking files inside compressed files)
-vim.g.loaded_zipPlugin = 1
-vim.g.loaded_gzip = 1
-vim.g.loaded_tarPlugin = 1
-
--- Do not load the tutor plugin
-vim.g.loaded_tutor_mode_plugin = 1
-
--- Do not use builtin matchit.vim and matchparen.vim since we use vim-matchup
-vim.g.loaded_matchit = 1
-vim.g.loaded_matchparen = 1
-
--- Disable sql omni completion, it is broken.
-vim.g.loaded_sql_completion = 1
diff --git a/core/mappings.lua b/core/mappings.lua
deleted file mode 100644
index 8a1e2e6..0000000
--- a/core/mappings.lua
+++ /dev/null
@@ -1,245 +0,0 @@
-local keymap = vim.keymap
-local api = vim.api
-local uv = vim.loop
-
--- Save key strokes (now we do not need to press shift to enter command mode).
-keymap.set({ "n", "x" }, ";", ":")
-
--- Turn the word under cursor to upper case
-keymap.set("i", "<c-u>", "<Esc>viwUea")
-
--- Turn the current word into title case
-keymap.set("i", "<c-t>", "<Esc>b~lea")
-
--- Paste non-linewise text above or below current line, see https://stackoverflow.com/a/1346777/6064933
-keymap.set("n", "<leader>p", "m`o<ESC>p``", { desc = "paste below current line" })
-keymap.set("n", "<leader>P", "m`O<ESC>p``", { desc = "paste above current line" })
-
--- Shortcut for faster save and quit
-keymap.set("n", "<leader>w", "<cmd>update<cr>", { silent = true, desc = "save buffer" })
-
--- Saves the file if modified and quit
-keymap.set("n", "<leader>q", "<cmd>x<cr>", { silent = true, desc = "quit current window" })
-
--- Quit all opened buffers
-keymap.set("n", "<leader>Q", "<cmd>qa!<cr>", { silent = true, desc = "quit nvim" })
-
--- Navigation in the location and quickfix list
-keymap.set("n", "[l", "<cmd>lprevious<cr>zv", { silent = true, desc = "previous location item" })
-keymap.set("n", "]l", "<cmd>lnext<cr>zv", { silent = true, desc = "next location item" })
-
-keymap.set("n", "[L", "<cmd>lfirst<cr>zv", { silent = true, desc = "first location item" })
-keymap.set("n", "]L", "<cmd>llast<cr>zv", { silent = true, desc = "last location item" })
-
-keymap.set("n", "[q", "<cmd>cprevious<cr>zv", { silent = true, desc = "previous qf item" })
-keymap.set("n", "]q", "<cmd>cnext<cr>zv", { silent = true, desc = "next qf item" })
-
-keymap.set("n", "[Q", "<cmd>cfirst<cr>zv", { silent = true, desc = "first qf item" })
-keymap.set("n", "]Q", "<cmd>clast<cr>zv", { silent = true, desc = "last qf item" })
-
--- Close location list or quickfix list if they are present, see https://superuser.com/q/355325/736190
-keymap.set("n", [[\x]], "<cmd>windo lclose <bar> cclose <cr>", {
- silent = true,
- desc = "close qf and location list",
-})
-
--- Delete a buffer, without closing the window, see https://stackoverflow.com/q/4465095/6064933
-keymap.set("n", [[\d]], "<cmd>bprevious <bar> bdelete #<cr>", {
- silent = true,
- desc = "delete buffer",
-})
-
--- Insert a blank line below or above current line (do not move the cursor),
--- see https://stackoverflow.com/a/16136133/6064933
-keymap.set("n", "<space>o", "printf('m`%so<ESC>``', v:count1)", {
- expr = true,
- desc = "insert line below",
-})
-
-keymap.set("n", "<space>O", "printf('m`%sO<ESC>``', v:count1)", {
- expr = true,
- desc = "insert line above",
-})
-
--- Move the cursor based on physical lines, not the actual lines.
-keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true })
-keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true })
-keymap.set("n", "^", "g^")
-keymap.set("n", "0", "g0")
-
--- Do not include white space characters when using $ in visual mode,
--- see https://vi.stackexchange.com/q/12607/15292
-keymap.set("x", "$", "g_")
-
--- Go to start or end of line easier
-keymap.set({ "n", "x" }, "H", "^")
-keymap.set({ "n", "x" }, "L", "g_")
-
--- Continuous visual shifting (does not exit Visual mode), `gv` means
--- to reselect previous visual area, see https://superuser.com/q/310417/736190
-keymap.set("x", "<", "<gv")
-keymap.set("x", ">", ">gv")
-
--- Edit and reload nvim config file quickly
-keymap.set("n", "<leader>ev", "<cmd>tabnew $MYVIMRC <bar> tcd %:h<cr>", {
- silent = true,
- desc = "open init.lua",
-})
-
-keymap.set("n", "<leader>sv", function()
- vim.cmd([[
- update $MYVIMRC
- source $MYVIMRC
- ]])
- vim.notify("Nvim config successfully reloaded!", vim.log.levels.INFO, { title = "nvim-config" })
-end, {
- silent = true,
- desc = "reload init.lua",
-})
-
--- Reselect the text that has just been pasted, see also https://stackoverflow.com/a/4317090/6064933.
-keymap.set("n", "<leader>v", "printf('`[%s`]', getregtype()[0])", {
- expr = true,
- desc = "reselect last pasted area",
-})
-
--- Always use very magic mode for searching
-keymap.set("n", "/", [[/\v]])
-
--- Search in selected region
--- xnoremap / :<C-U>call feedkeys('/\%>'.(line("'<")-1).'l\%<'.(line("'>")+1)."l")<CR>
-
--- Change current working directory locally and print cwd after that,
--- see https://vim.fandom.com/wiki/Set_working_directory_to_the_current_file
-keymap.set("n", "<leader>cd", "<cmd>lcd %:p:h<cr><cmd>pwd<cr>", { desc = "change cwd" })
-
--- Use Esc to quit builtin terminal
-keymap.set("t", "<Esc>", [[<c-\><c-n>]])
-
--- Toggle spell checking
-keymap.set("n", "<F11>", "<cmd>set spell!<cr>", { desc = "toggle spell" })
-keymap.set("i", "<F11>", "<c-o><cmd>set spell!<cr>", { desc = "toggle spell" })
-
--- Change text without putting it into the vim register,
--- see https://stackoverflow.com/q/54255/6064933
-keymap.set("n", "c", '"_c')
-keymap.set("n", "C", '"_C')
-keymap.set("n", "cc", '"_cc')
-keymap.set("x", "c", '"_c')
-
--- Remove trailing whitespace characters
-keymap.set("n", "<leader><space>", "<cmd>StripTrailingWhitespace<cr>", { desc = "remove trailing space" })
-
--- check the syntax group of current cursor position
-keymap.set("n", "<leader>st", "<cmd>call utils#SynGroup()<cr>", { desc = "check syntax group" })
-
--- Copy entire buffer.
-keymap.set("n", "<leader>y", "<cmd>%yank<cr>", { desc = "yank entire buffer" })
-
--- Toggle cursor column
-keymap.set("n", "<leader>cl", "<cmd>call utils#ToggleCursorCol()<cr>", { desc = "toggle cursor column" })
-
--- Move current line up and down
-keymap.set("n", "<A-k>", '<cmd>call utils#SwitchLine(line("."), "up")<cr>', { desc = "move line up" })
-keymap.set("n", "<A-j>", '<cmd>call utils#SwitchLine(line("."), "down")<cr>', { desc = "move line down" })
-
--- Move current visual-line selection up and down
-keymap.set("x", "<A-k>", '<cmd>call utils#MoveSelection("up")<cr>', { desc = "move selection up" })
-
-keymap.set("x", "<A-j>", '<cmd>call utils#MoveSelection("down")<cr>', { desc = "move selection down" })
-
--- Replace visual selection with text in register, but not contaminate the register,
--- see also https://stackoverflow.com/q/10723700/6064933.
-keymap.set("x", "p", '"_c<Esc>p')
-
--- Go to a certain buffer
-keymap.set("n", "gb", '<cmd>call buf_utils#GoToBuffer(v:count, "forward")<cr>', {
- desc = "go to buffer (forward)",
-})
-keymap.set("n", "gB", '<cmd>call buf_utils#GoToBuffer(v:count, "backward")<cr>', {
- desc = "go to buffer (backward)",
-})
-
--- Switch windows
-keymap.set("n", "<left>", "<c-w>h")
-keymap.set("n", "<Right>", "<C-W>l")
-keymap.set("n", "<Up>", "<C-W>k")
-keymap.set("n", "<Down>", "<C-W>j")
-
--- Text objects for URL
-keymap.set({ "x", "o" }, "iu", "<cmd>call text_obj#URL()<cr>", { desc = "URL text object" })
-
--- Text objects for entire buffer
-keymap.set({ "x", "o" }, "iB", "<cmd>call text_obj#Buffer()<cr>", { desc = "buffer text object" })
-
--- Do not move my cursor when joining lines.
-keymap.set("n", "J", function()
- vim.cmd([[
- normal! mzJ`z
- delmarks z
- ]])
-end, {
- desc = "join line",
-})
-
-keymap.set("n", "gJ", function()
- -- we must use `normal!`, otherwise it will trigger recursive mapping
- vim.cmd([[
- normal! zmgJ`z
- delmarks z
- ]])
-end, {
- desc = "join visual lines",
-})
-
--- Break inserted text into smaller undo units when we insert some punctuation chars.
-local undo_ch = { ",", ".", "!", "?", ";", ":" }
-for _, ch in ipairs(undo_ch) do
- keymap.set("i", ch, ch .. "<c-g>u")
-end
-
--- insert semicolon in the end
-keymap.set("i", "<A-;>", "<Esc>miA;<Esc>`ii")
-
--- Keep cursor position after yanking
-keymap.set("n", "y", "myy")
-
-api.nvim_create_autocmd("TextYankPost", {
- pattern = "*",
- group = api.nvim_create_augroup("restore_after_yank", { clear = true }),
- callback = function()
- vim.cmd([[
- silent! normal! `y
- silent! delmarks y
- ]])
- end,
-})
-
--- Go to the beginning and end of current line in insert mode quickly
-keymap.set("i", "<C-A>", "<HOME>")
-keymap.set("i", "<C-E>", "<END>")
-
--- Go to beginning of command in command-line mode
-keymap.set("c", "<C-A>", "<HOME>")
-
--- Delete the character to the right of the cursor
-keymap.set("i", "<C-D>", "<DEL>")
-
-keymap.set("n", "<leader>cb", function()
- local cnt = 0
- local blink_times = 7
- local timer = uv.new_timer()
-
- timer:start(0, 100, vim.schedule_wrap(function()
- vim.cmd[[
- set cursorcolumn!
- set cursorline!
- ]]
-
- if cnt == blink_times then
- timer:close()
- end
-
- cnt = cnt + 1
- end))
-end)