diff --git a/install.conf.yaml b/install.conf.yaml index e65d4f2..16f20d6 100644 --- a/install.conf.yaml +++ b/install.conf.yaml @@ -26,9 +26,12 @@ - link: ~/.config/zsh/.zshrc: zsh/zshrc - ~/.config/nvim/init.lua: nvim/init.lua - ~/.config/nvim/lua: nvim/lua - ~/.config/nvim/UltiSnips: nvim/ultisnips +# ~/.config/nvim/init.lua: nvim/init.lua +# ~/.config/nvim/lua: nvim/lua +# ~/.config/nvim/UltiSnips: nvim/ultisnips + ~/.config/nvim/init.lua: nvim-lazy-profile/init.lua + ~/.config/nvim/lua: nvim-lazy-profile/lua + ~/.config/nvim/UltiSnips: nvim-lazy-profile/ultisnips ~/.config/gtk-3.0/gtk.css: gtk/gtk.css ~/.config/gtk-3.0/settings.ini: gtk/settings.ini ~/.config/gtk-3.0/gnome-applications.css: gtk/gnome-applications.css diff --git a/nvim-lazy-profile/init.lua b/nvim-lazy-profile/init.lua new file mode 100644 index 0000000..8826f9c --- /dev/null +++ b/nvim-lazy-profile/init.lua @@ -0,0 +1,21 @@ +-- bootstrap lazy.nvim +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", + lazypath, + }) +end + +vim.opt.rtp:prepend(lazypath) + +require("pre") + +require("lazy").setup("plugins") + +require("options") diff --git a/nvim-lazy-profile/lua/lsp.lua b/nvim-lazy-profile/lua/lsp.lua new file mode 100644 index 0000000..ffadc76 --- /dev/null +++ b/nvim-lazy-profile/lua/lsp.lua @@ -0,0 +1,286 @@ +local lspconfig = vim.lsp.config +local util = vim.lsp.config.util + +local lspstatus = require('lsp-status') +lspstatus.register_progress() + +local function find_repo_root(names) + local config = names.configfiles + local function matcher(filename, _bufnr) + local gitroot = util.root_pattern('.git')(filename) + if gitroot then + for _, file in ipairs(config) do + if util.path.is_file(util.path.join(gitroot, file)) then + return gitroot + end + end + end + return util.root_pattern(unpack(config))(filename) + end + + return matcher +end + +local lsp_confs = { + lua_ls = { + settings = { + Lua = { + -- Settings for working with nvim (copied from https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#sumneko_lua) + runtime = { + version = 'LuaJIT', + path = runtime_path, + }, + diagnostics = { + globals = { 'vim' }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + }, + }, + }, + solidity_ls = {}, + coq_lsp = {}, + racket_langserver = {}, + ocamllsp = {}, + rust_analyzer = { + cmd_env = { + CARGO_TARGET_DIR = "/tmp/rust-analyzer" + }, + settings = { + ["rust-analyzer"] = { + checkOnSave = true, + -- checkOnSave = { + -- command = "clippy", + -- allTargets = false, + -- }, + cargo = { + features = "all", + }, + + }, + }, + }, + ccls = {}, + jedi_language_server = { + filetypes = { "python", "sage.python" }, + }, + gopls = {}, + dartls = {}, + ts_ls = { + root_dir = find_repo_root({ + configfiles = { "tsconfig.json", "jsconfig.json", "package.json" } + }), + }, + denols = { + root_dir = find_repo_root({ + configfiles = { "deno.json", "deno.jsonc" } + }), + }, + astro = { + root_dir = find_repo_root({ + configfiles = { "astro.config.mjs" } + }), + }, + -- nargo = { + -- root_dir = find_repo_root({ + -- configfiles = { "Nargo.toml" } + -- }), + -- }, + eslint = { + root_dir = find_repo_root({ + configfiles = { ".eslintrc", ".eslintrc.js", "package.json" } + }), + on_new_config = function(config, new_root_dir) + local default_config = vim.lsp.config.eslint.default_config + default_config.on_new_config(config, new_root_dir) + + local pnp_cjs = util.path.join(new_root_dir, '.pnp.cjs') + local pnp_js = util.path.join(new_root_dir, '.pnp.js') + if util.path.exists(pnp_cjs) or util.path.exists(pnp_js) then + config.cmd = { 'yarn', 'exec', unpack(default_config.cmd) } + end + end + }, + svelte = {}, + svls = {}, +} + +local lsp_special_setup = { +} + +local function on_attach(client, _bufnr) + lspstatus.on_attach(client) +end + + +for server, conf in pairs(lsp_confs) do + local source_on_attach = conf.on_attach + if source_on_attach == nil then + conf.on_attach = on_attach + else + conf.on_attach = function(client, bufnr) + on_attach(client, bufnr) + source_on_attach(client, bufnr) + end + end + + conf.capabilities = vim.tbl_deep_extend( + "keep", + conf.capabilities or {}, + lspstatus.capabilities + ) + + local final_config = coq.lsp_ensure_capabilities(conf) + -- local final_config = conf + + local special_setup = lsp_special_setup[server] + if special_setup then + special_setup(final_config) + else + -- lspconfig[server].setup(final_config) + vim.lsp.config[server] = final_config + vim.lsp.enable(server) + -- lspconfig(server, final_config) + -- vim.lsp.enable(server) + end +end + +-- local null_ls = require('null-ls') +-- null_ls.setup({ +-- sources = { +-- -- null_ls.builtins.diagnostics.chktex, +-- null_ls.builtins.diagnostics.cppcheck, +-- null_ls.builtins.diagnostics.shellcheck, +-- +-- null_ls.builtins.code_actions.gitsigns, +-- }, +-- }) + +vim.diagnostic.config({ + severity_sort = true, + update_in_insert = true, + float = { + source = true, + }, +}) + +do -- signs + local signs = { + { 'DiagnosticSignError', text = '×', texthl = 'DiagnosticSignError' }, + { 'DiagnosticSignWarn', text = '>', texthl = 'DiagnosticSignWarn' }, + { 'DiagnosticSignInfo', text = 'I', texthl = 'DiagnosticSignInfo' }, + { 'DiagnosticSignHint', text = 'H', texthl = 'DiagnosticSignHint' }, + } + for _, sign in pairs(signs) do + local name = sign[1] + local opts = sign + opts[1] = nil + vim.fn.sign_define(name, opts) + end +end + +local map = vim.api.nvim_set_keymap +map( + 'n', + 'K', + [[luaeval('next(vim.lsp.buf_get_clients()) == nil') ? 'K' : 'lua vim.lsp.buf.hover()']], + { noremap = true, expr = true } +) +map( + 'n', + '', + [[luaeval('next(vim.lsp.buf_get_clients()) == nil') ? '' : 'lua vim.lsp.buf.definition()']], + { noremap = true, expr = true } +) + +local M = {} + +-- enables formatting on save +M.format_on_save_hook = function() + local enabled = vim.b.format_on_save + if enabled == nil then + enabled = true + end + if enabled ~= 0 and enabled ~= false then + if vim.bo.filetype ~= "plaintex" and vim.bo.filetype ~= "tex" and vim.bo.filetype ~= "latex" and + vim.bo.filetype ~= "qf" and vim.bo.filetype ~= "bib" and vim.bo.filetype ~= "" and vim.bo.filetype ~= "pdf" + and vim.bo.filetype ~= "conf" and vim.bo.filetype ~= "TelescopePrompt" and vim.bo.filetype ~= "lazy" and vim.bo.filetype ~= "lazy_backdrop" and vim.bo.filetype ~= "TelescopeResults" then + vim.lsp.buf.format({ async = false }) + end + end +end + +vim.cmd [[ + augroup hoverlspconfig + au! + " diagnostic on hover + au BufWritePre * lua require'lsp'.format_on_save_hook() + au CursorHold * lua vim.diagnostic.open_float({focus = false}) + augroup END +]] + +-- enables coq +vim.api.nvim_create_autocmd( + { 'FileType', + }, { + pattern = "*", + callback = function() + if vim.bo.filetype ~= "plaintex" and vim.bo.filetype ~= "tex" and vim.bo.filetype ~= "latex" and + vim.bo.filetype ~= "qf" and vim.bo.filetype ~= "bib" and vim.bo.filetype ~= "" and vim.bo.filetype ~= "pdf" + and vim.bo.filetype ~= "conf" and vim.bo.filetype ~= "TelescopePrompt" and vim.bo.filetype ~= "lazy" and vim.bo.filetype ~= "lazy_backdrop" and vim.bo.filetype ~= "TelescopeResults" then + vim.cmd([[ :COQnow -s ]]) + end + end + }) + + +-- toggles folds +map('n', 'pc', 'za', { noremap = true }) + +-- folds and treesitter +vim.api.nvim_create_autocmd('FileType', { + pattern = { '*' }, + callback = function() + if vim.bo.filetype ~= "plaintex" and vim.bo.filetype ~= "tex" and vim.bo.filetype ~= "latex" and + vim.bo.filetype ~= "qf" and vim.bo.filetype ~= "bib" and vim.bo.filetype ~= "" and vim.bo.filetype ~= "pdf" + and vim.bo.filetype ~= "conf" and vim.bo.filetype ~= "TelescopePrompt" and vim.bo.filetype ~= "lazy" and vim.bo.filetype ~= "lazy_backdrop" and vim.bo.filetype ~= "TelescopeResults" then + vim.treesitter.start() + vim.wo[0][0].foldexpr = 'v:lua.vim.treesitter.foldexpr()' + vim.wo[0][0].foldmethod = 'expr' + vim.wo[0][0].foldenable = true + vim.wo[0][0].foldlevel = 99 + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end + end +}) + + +for _, method in ipairs({ 'textDocument/diagnostic', 'workspace/diagnostic' }) do + local default_diagnostic_handler = vim.lsp.handlers[method] + vim.lsp.handlers[method] = function(err, result, context, config) + if err ~= nil and err.code == -32802 then + return + end + return default_diagnostic_handler(err, result, context, config) + end +end + +-- vim.api.nvim_create_autocmd({ 'FileType', 'BufRead', 'BufReadPre', 'BufReadPost', 'BufWrite', 'BufWritePre', +-- 'BufWritePost' }, { +-- pattern = "*", +-- callback = function() +-- if vim.bo.filetype ~= "plaintex" and vim.bo.filetype ~= "tex" and vim.bo.filetype ~= "latex" then +-- vim.cmd [[ :COQnow -s ]] +-- end +-- end +-- }) + +-- vim.cmd [[ +-- augroup disabletexlsp +-- autocmd! +-- autocmd FileType tex :COQstop +-- augroup END +-- ]] + +return M diff --git a/nvim-lazy-profile/lua/markdownStyle.css b/nvim-lazy-profile/lua/markdownStyle.css new file mode 100644 index 0000000..1e4a602 --- /dev/null +++ b/nvim-lazy-profile/lua/markdownStyle.css @@ -0,0 +1,417 @@ +/* weird look: plantuml, mermaid + * flowchart looks ok ok + * Code highlights (highlight.js / hljs) incorrect, not base16 + */ + +body { background-color: var(--background); } + +.markdown-body ol ol, +.markdown-body ul ol, +.markdown-body ol ul, +.markdown-body ul ul, +.markdown-body ol ul ol, +.markdown-body ul ul ol, +.markdown-body ol ul ul, +.markdown-body ul ul ul { + margin-top: 0; + margin-bottom: 0; +} +.markdown-body { + font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 16px; + color: var(--foreground); + line-height: 1.6; + word-wrap: break-word; + padding: 45px; + background: var(--background); + border: 0px solid var(--foreground); + -webkit-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; +} +.markdown-body > *:first-child { + margin-top: 0 !important; +} +.markdown-body > *:last-child { + margin-bottom: 0 !important; +} +.markdown-body .table-of-contents ol { + list-style: none; +} +.markdown-body .table-of-contents > ol { + padding-left: 0; +} +.markdown-body * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 1em; + margin-bottom: 16px; + font-weight: bold; + line-height: 1.4; +} +.markdown-body h1 .anchor, +.markdown-body h2 .anchor, +.markdown-body h3 .anchor, +.markdown-body h4 .anchor, +.markdown-body h5 .anchor, +.markdown-body h6 .anchor { + margin-left: -24px; + visibility: hidden; +} +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + visibility: visible; +} +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre { + margin-top: 0; + margin-bottom: 16px; + background-color: var(--background) !important; /* Changes background of code block */ +} +.markdown-body h1 { + margin: 0.67em 0; + padding-bottom: 0.3em; + font-size: 2.25em; + line-height: 1.2; + border-bottom: 1px solid var(--color4); + color: var(--color13) !important; +} +.markdown-body h2 { + padding-bottom: 0.3em; + font-size: 1.75em; + line-height: 1.225; + border-bottom: 1px solid var(--color4); + color: var(--color12) !important; +} +.markdown-body h3 { + font-size: 1.5em; + line-height: 1.43; +} +.markdown-body h4 { + font-size: 1.25em; +} +.markdown-body h5 { + font-size: 1em; +} +.markdown-body h6 { + font-size: 1em; + color: var(--color8) !important; +} +.markdown-body hr { + margin-top: 20px; + margin-bottom: 20px; + height: 0; + border: 0; + border-top: 1px solid var(--color4); +} +.markdown-body ol, +.markdown-body ul { + padding-left: 2em; +} +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} +.markdown-body ol ul, +.markdown-body ul ul { + list-style-type: circle; +} +.markdown-body ol ul ul, +.markdown-body ul ul ul { + list-style-type: square; +} +.markdown-body ol { + list-style-type: decimal; +} +.markdown-body ul { + list-style-type: disc; + /* color: var(--color9) !important; */ /* changes color of all bullet lists */ +} +li::marker { + color: var(--color14) !important; /* changes color of bullet points */ +} +.markdown-body dl { + margin-bottom: 1.3em +} +.markdown-body dl dt { + font-weight: 700; +} +.markdown-body dl dd { + margin-left: 0; +} +.markdown-body dl dd p { + margin-bottom: 0.8em; +} +.markdown-body blockquote { + margin-left: 0; + margin-right: 0; + padding: 0 15px; + color: var(--color8) !important; + border-left: 4px solid var(--color3) !important; /* border denoting block quote */ +} +.markdown-body table { + display: block; + width: 100%; + overflow: auto; + word-break: normal; + word-break: keep-all; + border-collapse: collapse; + border-spacing: 0; +} +.markdown-body table tr { + background-color: var(--background) !important; /* Changes bacground color of tables */ + border-top: 1px solid var(--color4); +} +.markdown-body table tr:nth-child(2n) { + background-color: #f8f8f8; +} +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid var(--color4); /* color of table cells/border */ +} +.markdown-body pre { + word-wrap: normal; + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f7f7f7; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.markdown-body pre code { + display: inline; + max-width: initial; + padding: 0; + margin: 0; + overflow: initial; + font-size: 100%; + line-height: inherit; + word-wrap: normal; + white-space: pre; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color: transparent; +} +.markdown-body pre code:before, +.markdown-body pre code:after { + content: normal; +} +.markdown-body code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + padding: 0; + padding-top: 0.2em; + padding-bottom: 0.2em; + margin: 0; + font-size: 85%; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.markdown-body code:before, +.markdown-body code:after { + letter-spacing: -0.2em; + content: "\00a0"; +} +.markdown-body a { + color: var(--color2) !important; /* Change style of hyperlinks */ + text-decoration: underline; + background: transparent; +} +.markdown-body img { + max-width: 100%; + max-height: 100%; +} +.markdown-body strong { + font-weight: bold; +} +.markdown-body em { + font-style: italic; +} +.markdown-body del { + text-decoration: line-through; +} +.task-list-item { + list-style-type: none; +} +.task-list-item input { + font: 13px/1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + margin: 0 0.35em 0.25em -1.6em; + vertical-align: middle; +} +.task-list-item input[disabled] { + cursor: default; +} +.task-list-item input[type="checkbox"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +.task-list-item input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + + +/* Below are the page settings */ + +#page-ctn { + margin: 0 auto; + max-width: 900px; +} + +#page-header { + padding: 8px; + background-color: var(--background) !important; + border-color: var(--foreground) !important; + border-style: solid; + border-width: 1px 1px 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +#page-header svg { + display: inline-block; + margin-right: 5px; + overflow: hidden; + fill: var(--foreground) !important; +} + +#page-header h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + padding-right: 16px; + font-size: 14px; + font-weight: 600; + color: var(--foreground) !important; + + +} + + + + +/* Highlight settings */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + /* color: #333; */ + color: var(--color7) !important; + background: var(--background) !important; +} + +.hljs-comment, +.hljs-quote { + color: var(--color8) !important; /* color of comments */ + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: var(--color4) !important; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: var(--color5) !important; +} + +.hljs-string, +.hljs-doctag { + color: var(--color1) !important; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: var(--color3) !important; /* Color of function title */ + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: var(--color2) !important; /* Color of class title */ + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + font-weight: normal; + color: var(--color6) !important; /* Color of XML/HTML tags */ +} + +.hljs-regexp, +.hljs-link { + /* color: #009926; */ + color: var(--color9) !important; +} + +.hljs-symbol, +.hljs-bullet { + /* color: #990073; */ + color: var(--color10) !important; +} + +.hljs-built_in, +.hljs-builtin-name { + /* color: #0086b3; */ + color: var(--color12) !important; +} + +.hljs-meta { + color: var(--color8) !important; /* Color of meta tags */ + font-weight: bold; +} + +.hljs-deletion { + background: var(--color3); +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.katex-html { + color: var(--color7); +} diff --git a/nvim-lazy-profile/lua/options.lua b/nvim-lazy-profile/lua/options.lua new file mode 100644 index 0000000..1d10da2 --- /dev/null +++ b/nvim-lazy-profile/lua/options.lua @@ -0,0 +1,73 @@ +local o = vim.opt +local map = vim.api.nvim_set_keymap + +o.expandtab = true +o.tabstop = 4 +o.shiftwidth = 0 +o.viminfo = '' +vim.g.base16colorspace = 256 +vim.g.vimtex_view_method = "zathura" +o.termguicolors = true + +vim.b.coqtail_coq_prog = "coqidetop" + +vim.cmd [[ + augroup spellcheck + au! + au FileType markdown setlocal spell + au FileType plaintex setlocal spell + au FileType tex setlocal spell + au FileType latex setlocal spell + au BufRead,BufNewFile *.md setlocal spell + au BufRead,BufNewFile *.tex setlocal spell + augroup END +]] + +o.spelllang = "en_us" +map('i', '', 'u[s1z=`]au', { noremap = true }) + +vim.cmd('colorscheme theme-nvim') +vim.g.airline_theme = 'theme' +vim.cmd("AirlineTheme theme") + +-- stupid fix for stupid problems i guess +vim.g["airline#extensions#whitespace#enabled"] = false + +local color = require('base16-colorscheme').colors.base02 + +vim.api.nvim_set_hl(0, 'LineNr', { fg = color, bg = "none" }) + +map('n', 's', ':%s//g', {}) +map('n', 'e', ':make!', { noremap = true }) +map('n', '', ':cclose', { noremap = true }) +map('n', '', ':nohlsearch', { noremap = true, silent = true }) +map('n', ';', ':', { noremap = true }) +map('v', ';', ':', { noremap = true }) + +for i = 1, 9, 1 do + map('', '' .. tostring(i), tostring(i) .. 'gt', { noremap = true }) +end + +map('n', '', ':tabprevious', { noremap = true }) +map('n', '', ':tabnext', { noremap = true }) +map('', '0', ':tablast', { noremap = true }) +map('n', 'ZX', 'q', { noremap = true, silent = true }) + +map('t', '', '', { noremap = true }) + +o.list = true +o.listchars = { + tab = '▸ ', + eol = '¬', + trail = '·', + extends = '›' +} + + +vim.cmd [[ + augroup options_guicursor + au! + " Reset to vertical cursor for terminal nvim (https://github.com/neovim/neovim/issues/4867#issuecomment-291249173) + au VimLeave * set guicursor=a:ver90 + augroup END +]] diff --git a/nvim-lazy-profile/lua/plugins/init.lua b/nvim-lazy-profile/lua/plugins/init.lua new file mode 100644 index 0000000..57d78e1 --- /dev/null +++ b/nvim-lazy-profile/lua/plugins/init.lua @@ -0,0 +1,385 @@ +local function import(name) + return function() + require(name) + end +end + +return { + + { + "RRethy/base16-nvim", + }, + + { + "vim-airline/vim-airline", + dependencies = { + "ryanoasis/vim-devicons", + }, + }, + + { + "mustache/vim-mustache-handlebars", + }, + + { + "whonore/Coqtail", + }, + + { + "Julian/lean.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + }, + config = function() + require("lean").setup({ + opts = { mappings = true } + }) + end, + }, + + { + "noir-lang/noir-nvim", + }, + + { + "nvim-treesitter/nvim-treesitter", + lazy = false, + version = false, + build = function() + vim.cmd(":TSUpdate") + end, + opts = { + highlight = { + enable = true, + disable = { "ipkg", "markdown", "md" } + }, + indent = { + enable = true, + disable = { "markdown", "md" } + }, + ensure_installed = "all", + ignore_install = { "ipkg", "markdown", "md" }, + }, + }, + + { + "petRUShka/vim-sage", + }, + + { + "evanleck/vim-svelte", + }, + + { + "wuelnerdotexe/vim-astro", + }, + + { + "tpope/vim-fugitive", + config = function() + local map = vim.api.nvim_set_keymap + map('n', 'g', 'Git', { noremap = true }) + end, + }, + + { + "tpope/vim-surround", + }, + + { + "tpope/vim-repeat", + }, + + { + "nvim-lua/plenary.nvim", + }, + + { + "lewis6991/gitsigns.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + }, + config = function() + require('gitsigns').setup { + signs = { + add = { + text = '│', + }, + change = { + text = '│', + }, + delete = { + text = '_', + }, + topdelete = { + text = '‾', + }, + changedelete = { + text = '~', + }, + }, + } + end, + }, + + { + "akinsho/flutter-tools.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + }, + config = function() + require('flutter-tools').setup { + -- lsp = { + -- color = { + -- enabled = false + -- } + -- } + } + end, + }, + + { + "numToStr/Comment.nvim", + config = function() + local map = vim.api.nvim_set_keymap + + require('Comment').setup({}) + + map( + 'n', + '', + 'lua require("Comment.api").toggle_linewise_op(vim.fn.visualmode())', + { noremap = true, silent = true } + ) + end, + }, + + { + "nvim-telescope/telescope.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + + { + "nvim-telescope/telescope-fzf-native.nvim", + build = "make", + }, + + "nvim-telescope/telescope-symbols.nvim", + }, + config = import("tel"), + }, + + { + "stevearc/dressing.nvim", + config = function() + require('dressing').setup({ + input = { + default_prompt = '❯', + win_options = { + winhighlight = 'NormalFloat:Normal', + }, + }, + }) + + vim.cmd [[highlight link FloatTitle NonText]] + vim.cmd [[highlight link DressingInputText Normal]] + end, + }, + + { + "antoinemadec/FixCursorHold.nvim", + config = function() + vim.g.cursorhold_updatetime = 500 + end, + }, + + { + "sirver/ultisnips", + ft = { 'latex', 'plaintex', 'tex' }, + + config = function() + vim.g.UltiSnipsExpandTrigger = '' + vim.g.UltiSnipsJumpForwardTrigger = '' + vim.g.UltiSnipsJumpBackwardTrigger = '' + end, + }, + + { + "ms-jpq/coq.artifacts", + branch = "artifacts", + lazy = false + }, + + { + "ms-jpq/coq_nvim", + branch = "coq", + lazy = false, + dependencies = { + { + "ms-jpq/coq.artifacts", + branch = "artifacts", + lazy = false, + }, + { + "ms-jpq/coq.thirdparty", + branch = "3p", + lazy = false, + }, + }, + init = function() + vim.g.coq_settings = { + -- auto_start = 'shut-up', + keymap = { + eval_snips = "se", + }, + -- match = { + -- look_ahead = 1, + -- }, + clients = { + snippets = { + always_on_top = true, + enabled = true, + weight_adjust = 100, + }, + buffers = { + enabled = true, + weight_adjust = -2.0, + }, + tree_sitter = { + enabled = true, + weight_adjust = -1.5, + }, + lsp = { + enabled = true, + weight_adjust = -100, + }, + third_party = { + enabled = true, + weight_adjust = -1.5, + } + } + } + + require('coq_3p') { + { src = 'vimtex', short_name = 'TEX' }, + { src = 'nvimlua', short_name = 'NLUA', conf_only = true }, + { src = 'bc', short_name = 'CALC', precision = 8 }, + } + + end, + build = function() + require("coq") + vim.cmd(":COQdeps") + end, + config = function() + + require('coq_3p') { + { src = 'vimtex', short_name = 'TEX' }, + { src = 'nvimlua', short_name = 'NLUA', conf_only = true }, + { src = 'bc', short_name = 'CALC', precision = 8 }, + } + + end + }, + + { + "ms-jpq/coq.thirdparty", + branch = "3p", + lazy = false, + }, + + { + "nvim-lua/lsp-status.nvim", + lazy = false, + }, + + { + "neovim/nvim-lspconfig", + lazy = false, + + dependencies = { + { + "nvim-lua/lsp-status.nvim", + lazy = false, + }, + + { + "ms-jpq/coq.thirdparty", + branch = "3p", + lazy = false, + }, + + { + "ms-jpq/coq.artifacts", + branch = "artifacts", + lazy = false, + }, + + { + "ms-jpq/coq_nvim", + branch = "coq", + lazy = false, + + dependencies = { + { + "ms-jpq/coq.artifacts", + branch = "artifacts", + lazy = false, + }, + }, + }, + }, + + config = function() + local capabilities = require("coq").lsp_ensure_capabilities() + -- extend coq completion capabilities all lsps + vim.lsp.config('*', { + capabilities = capabilities, + }) + vim.lsp.enable("lua_ls") + require("lsp") + end, + }, + + { + "lervag/vimtex", + + config = function() + vim.g.vimtex_view_general_viewer = 'zathura' + vim.g.vimtex_compiler_method = "latexmk" + + -- vim.g.vimtex_view_general_options = = '-x nvim -n -c "Vimtex' + -- 'file:@pdf\\#src:@line@tex' + -- vim.g.vimtex_quickfix_enabled = 0 + -- vim.g.Tex_GotoError = 0 + -- vim.g.Tex_ShowErrorContext = 0 + end, + }, + + { + "iamcco/markdown-preview.nvim", + + ft = { "markdown" }, + + init = function() + vim.g.mkdp_filetypes = { "markdown" } + end, + + build = function() + vim.fn.system("cd app && npm install") + end, + + config = function() + local map = vim.api.nvim_set_keymap + + map('n', '', 'MarkdownPreviewToggle', {}) + map('n', 'm', 'MarkdownPreviewToggle', {}) + + vim.g.mkdp_markdown_css = + os.getenv("HOME") .. "/.config/nvim/lua/markdownStyle.css" + + vim.g.mkdp_highlight_css = + os.getenv("HOME") .. "/.cache/wal/colors.css" + end, + }, +} diff --git a/nvim-lazy-profile/lua/pre.lua b/nvim-lazy-profile/lua/pre.lua new file mode 100644 index 0000000..7971688 --- /dev/null +++ b/nvim-lazy-profile/lua/pre.lua @@ -0,0 +1,11 @@ +local o = vim.opt +local map = vim.api.nvim_set_keymap + +vim.g.mapleader = "," +vim.g.maplocalleader = " " +vim.g.coq_v1 = true +o.modeline = true +o.number = true +o.relativenumber = true +o.clipboard = "unnamedplus" +o.viminfo = "" diff --git a/nvim-lazy-profile/lua/tel.lua b/nvim-lazy-profile/lua/tel.lua new file mode 100644 index 0000000..886422d --- /dev/null +++ b/nvim-lazy-profile/lua/tel.lua @@ -0,0 +1,208 @@ +local telescope = require('telescope') + +telescope.setup({ + defaults = { + file_ignore_patterns = { '.git' }, + mappings = { + i = { + [''] = { '', type = 'command' }, + [''] = 'close', + [''] = 'select_horizontal', + }, + n = { + q = 'close', + [''] = { '', type = 'command' }, + [''] = 'select_horizontal', + }, + }, + sorting_strategy = 'ascending', + layout_config = { + prompt_position = 'top', + }, + prompt_prefix = '❯ ', + selection_caret = '❯ ', + multi_icon = '●', + }, + pickers = { + buffers = { + mappings = { + n = { + dd = 'delete_buffer', + }, + }, + }, + find_files = { + hidden = true, + }, + lsp_code_actions = { + initial_mode = 'normal', + }, + lsp_range_code_actions = { + initial_mode = 'normal', + }, + }, +}) + +telescope.load_extension('fzf') + +-- taken from https://github.com/nvim-telescope/telescope-ui-select.nvim for code actions +telescope.register_extension { + setup = function(topts) + local specific_opts = vim.F.if_nil(topts.specific_opts, {}) + topts.specific_opts = nil + + if #topts == 1 and topts[1] ~= nil then + topts = topts[1] + end + + local pickers = require "telescope.pickers" + local finders = require "telescope.finders" + local conf = require("telescope.config").values + local actions = require "telescope.actions" + local action_state = require "telescope.actions.state" + local strings = require "plenary.strings" + local entry_display = require "telescope.pickers.entry_display" + local utils = require "telescope.utils" + + __TelescopeUISelectSpecificOpts = vim.F.if_nil( + __TelescopeUISelectSpecificOpts, + vim.tbl_extend("keep", specific_opts, { + ["codeaction"] = { + make_indexed = function(items) + local indexed_items = {} + local widths = { + idx = 0, + command_title = 0, + client_name = 0, + } + for idx, item in ipairs(items) do + local client = vim.lsp.get_client_by_id(item[1]) + local entry = { + idx = idx, + ["add"] = { + command_title = item[2].title:gsub("\r\n", "\\r\\n"):gsub("\n", "\\n"), + client_name = client and client.name or "", + }, + text = item, + } + table.insert(indexed_items, entry) + widths.idx = math.max(widths.idx, strings.strdisplaywidth(entry.idx)) + widths.command_title = math.max(widths.command_title, + strings.strdisplaywidth(entry.add.command_title)) + widths.client_name = math.max(widths.client_name, + strings.strdisplaywidth(entry.add.client_name)) + end + return indexed_items, widths + end, + make_displayer = function(widths) + return entry_display.create { + separator = " ", + items = { + { width = widths.idx + 1 }, -- +1 for ":" suffix + { width = widths.command_title }, + { width = widths.client_name }, + }, + } + end, + make_display = function(displayer) + return function(e) + return displayer { + { e.value.idx .. ":", "TelescopePromptPrefix" }, + { e.value.add.command_title }, + { e.value.add.client_name, "TelescopeResultsComment" }, + } + end + end, + make_ordinal = function(e) + return e.idx .. e.add["command_title"] + end, + }, + }) + ) + + vim.ui.select = function(items, opts, on_choice) + opts = opts or {} + local prompt = vim.F.if_nil(opts.prompt, "Select one of") + if prompt:sub(-1, -1) == ":" then + prompt = prompt:sub(1, -2) + end + opts.format_item = vim.F.if_nil(opts.format_item, function(e) + return tostring(e) + end) + + -- We want or here because __TelescopeUISelectSpecificOpts[x] can be either nil or even false -> {} + local sopts = __TelescopeUISelectSpecificOpts[vim.F.if_nil(opts.kind, "")] or {} + local indexed_items, widths = vim.F.if_nil(sopts.make_indexed, function(items_) + local indexed_items = {} + for idx, item in ipairs(items_) do + table.insert(indexed_items, { idx = idx, text = item }) + end + return indexed_items + end)(items) + local displayer = vim.F.if_nil(sopts.make_displayer, function() + end)(widths) + local make_display = vim.F.if_nil(sopts.make_display, function(_) + return function(e) + local x, _ = opts.format_item(e.value.text) + return x + end + end)(displayer) + local make_ordinal = vim.F.if_nil(sopts.make_ordinal, function(e) + return opts.format_item(e.text) + end) + pickers.new(topts, { + prompt_title = prompt, + finder = finders.new_table { + results = indexed_items, + entry_maker = function(e) + return { + value = e, + display = make_display, + ordinal = make_ordinal(e), + } + end, + }, + attach_mappings = function(prompt_bufnr) + actions.select_default:replace(function() + local selection = action_state.get_selected_entry() + if selection == nil then + utils.__warn_no_selection "ui-select" + return + end + actions.close(prompt_bufnr) + on_choice(selection.value.text, selection.value.idx) + end) + return true + end, + sorter = conf.generic_sorter(topts), + }):find() + end + end, +} + +local map = vim.api.nvim_set_keymap + +map('n', 'pf', 'Telescope find_files', { noremap = true }) +map('n', 'pb', 'Telescope buffers', { noremap = true }) +map('n', 'po', 'Telescope lsp_document_symbols', { noremap = true }) +map('n', 'ps', 'Telescope lsp_workspace_symbols', { noremap = true }) +map('n', 'pd', 'Telescope lsp_definitions', { noremap = true }) +map('n', 'pr', 'Telescope lsp_references', { noremap = true }) +map('n', 'pp', '', { noremap = true }) +map('n', 'p', ':Telescope ', { noremap = true }) +map('n', 'p ', ':Telescope ', { noremap = true }) + +map('n', '.', ':lua vim.lsp.buf.code_action()', { noremap = true }) +map('n', 'pn', 'lua vim.lsp.buf.rename()', { noremap = true }) + +-- vim.cmd [[ +-- function! s:telescope_hlsetup() abort +-- highlight link TelescopeBorder NonText +-- highlight link TelescopeTitle NonText +-- endfunction +-- call s:telescope_hlsetup() +-- augroup telescope_hlsetup +-- au! +-- au ColorScheme * call s:telescope_hlsetup() +-- augroup END +-- ]] diff --git a/nvim-lazy-profile/ultisnips/tex.snippets b/nvim-lazy-profile/ultisnips/tex.snippets new file mode 100644 index 0000000..ae8ca50 --- /dev/null +++ b/nvim-lazy-profile/ultisnips/tex.snippets @@ -0,0 +1,873 @@ +global !p + +# thanks to gilles castel + +def math(): + return vim.eval('vimtex#syntax#in_mathzone()') == '1' + +def env(name): + [x,y] = vim.eval("vimtex#env#is_inside('" + name + "')") + return x != '0' and y != '0' +endglobal + +# General + +snippet beg "Begin / End" bA +\\begin{$1} + $2 +\\end{$1}$0 +endsnippet + +snippet pac "Package" b +\usepackage[$1]{$2}$0 +endsnippet + +snippet template "Basic template" b +\documentclass[$1]{$2} + +$3 + +\begin{document} + $0 +\end{document} +endsnippet + +snippet item "Itemize" bA +\begin{itemize} + \item $0 +\end{itemize} +endsnippet + +snippet enum "Enumerate" bA +\begin{enumerate} + \item $0 +\end{enumerate} +endsnippet + +snippet alph "Alphabet Enumerate" bA +\begin{enumerate}[label= (\alph*)] + \item $1 +\end{enumerate} $0 +endsnippet + +snippet desc "Description" bA +\begin{description} + \item[$1] $2 +\end{description} $0 +endsnippet + +snippet table "Table" b +\begin{table}[${1:htpb}] + \centering + \caption{$2} + \label{tab:$3} + \begin{tabular}{${5:c}} + $6${5/((?<=.)c|l|r)|./(?1: & )/g} + \end{tabular} +\end{table} $0 +endsnippet + +snippet algorithm "Algorithm" b +\begin{algorithm}[${1:H}] + \caption{$2}\label{tab:$3} + \begin{algorithmic}[${4:1}] + $5 + \end{algorithmic} +\end{algorithm} $0 +endsnippet + +priority 100 +snippet ... "Ldots" iA +\ldots +endsnippet + +snippet ~~ "Sim" iA +\sim +endsnippet + +snippet section "Section" bA +\sect{$1}$0 +endsnippet + +snippet subsection "Subsection" bA +\subsect{$1}$0 +endsnippet + +snippet chapter "Chapter" bA +\chapter{$1}$0 +endsnippet + +snippet ppart "Part" bA +\part{$1}$0 +endsnippet + +snippet theorem "Theorem" bA +\begin{theorem}[$1] + $2 +\end{theorem} $0 +endsnippet + +snippet definition "Definition" bA +\begin{definition}[$1] + $2 +\end{definition} $0 +endsnippet + +snippet example "Example" bA +\begin{eg}[$1] + $2 +\end{eg} $0 +endsnippet + +# Math + +snippet sm "Math" wA +$${1}$`!p +if t[2] and t[2][0] not in [',', '.', '?', '-', ' ']: + snip.rv = ' ' +else: + snip.rv = '' +`$2 +endsnippet + +snippet dm "Display Math" wA + +\[ + $1 +\] $0 +endsnippet + +snippet ali "Align" bA +\begin{align*} + ${1:${VISUAL}} +\end{align*} $0 +endsnippet + +context "math()" +snippet => "Implies" Ai +\implies +endsnippet + +context "math()" +snippet =< "Implied by" Ai +\impliedby +endsnippet + +context "math()" +snippet iff "Iff" Ai +\iff +endsnippet + +context "math()" +snippet `(? "To" iA +\to +endsnippet + +priority 100 +context "math()" +snippet -< "Gets" iA +\gets +endsnippet + +priority 200 +context "math()" +snippet <-> "Leftrightarrow" iA +\leftrightarrow +endsnippet + +context "math()" +snippet !> "Maps to" iA +\mapsto +endsnippet + +context "math()" +snippet set "Set" wA +\left\\{ $1 \right\\} $0 +endsnippet + +context "math()" +snippet || "Mid" iA +\mid +endsnippet + +context "math()" +snippet cc "Subset" wA +\subset +endsnippet + +context "math()" +snippet notin "Not in" iA +\not\in +endsnippet + +priority 10 +context "math()" +snippet inn "In" iA +\in +endsnippet + +context "math()" +snippet NN "Natural" iA +\N +endsnippet + +context "math()" +snippet Nn "Cap" iA +\cap +endsnippet + +context "math()" +snippet isect "Cap" iA +\cap +endsnippet + +context "math()" +snippet UU "Cup" iA +\cup +endsnippet + +context "math()" +snippet union "Cup" iA +\cup +endsnippet + +context "math()" +snippet uuu "Big cup" iA +\bigcup_{${1:i \in ${2: I}}} $0 +endsnippet + +context "math()" +snippet nnn "Big cap" iA +\bigcap_{${1:i \in ${2: I}}} $0 +endsnippet + +context "math()" +snippet OO "Empty Set" iA +\varnothing +endsnippet + +context "math()" +snippet RR "Real" iA +\R +endsnippet + +context "math()" +snippet QQ "Rational" iA +\Q +endsnippet + +context "math()" +snippet ZZ "Integer" iA +\Z +endsnippet + +context "math()" +snippet HH "H" iA +\mathbb{H} +endsnippet + +context "math()" +snippet DD "D" iA +\mathbb{D} +endsnippet + +context "math()" +snippet "Diamond" iA +\diamond +endsnippet + +context "math()" +snippet '(?$0 +endsnippet + +context "math()" +snippet conj "Conjugate" iA +\overline{$1}$0 +endsnippet + +context "math()" +snippet sr "Square" iA +^2 +endsnippet + +context "math()" +snippet cb "Cube" iA +^3 +endsnippet + +context "math()" +snippet invs "Inverse" iA +^{-1} +endsnippet + +context "math()" +snippet compl "Complement" iA +^{c} +endsnippet + +context "math()" +snippet tp "To the power" iA +^{$1}$0 +endsnippet + +context "math()" +snippet bp "Paren to the power" iA +^{($1)}$0 +endsnippet + +context "math()" +snippet sum "Bounded Sum" w +\sum_{${1:n=${2:1}}}^{${3:\infty}} $4 +endsnippet + +context "math()" +snippet prod "Product" w +\prod_{${1:n=${2:1}}}^{${3:\infty}} $4 +endsnippet + +context "math()" +snippet ssum "Sum Symbol" w +\sum $1 +endsnippet + +context "math()" +snippet lim "Limit" w +\lim_{${1:n} \to ${2:\infty}} $0 +endsnippet + +context "math()" +snippet ooo "Infinity" iA +\infty +endsnippet + +context "math()" +snippet limsup "Limit Supremum" w +\limsup_{${1:n} \to ${2:\infty}} $0 +endsnippet + +context "math()" +snippet part "Partial Derivative" w +\pdv[$1]{${2:v}}{${3:x}} $0 +endsnippet + +context "math()" +snippet `(?= "Greater than or equal" iA +\ge +endsnippet + +context "math()" +snippet >> "Greater greater" iA +\gg +endsnippet + +context "math()" +snippet << "Less less" iA +\ll +endsnippet + +context "math()" +snippet EE "There exists" iA +\exists +endsnippet + +context "math()" +snippet AA "For all" iA +\forall +endsnippet + +context "math()" +snippet "such that" "Such that" iA +\suchthat +endsnippet + +context "math()" +snippet "suchthat" "Suchthat" iA +\suchthat +endsnippet + +snippet image "Image" wA +\begin{figure}[${1:h}] + \includegraphics[width=${2:0.5}\textwidth]{$3} +\end{figure} $0 +endsnippet + +snippet tikzfig "Tikz Figure" wA +\begin{figure}[${1:H}] + \begin{center} + \begin{tikzpicture} + $2 + \end{tikzpicture} + \end{center} +\end{figure} $0 +endsnippet + +snippet plot "Plot" w +\begin{figure}[$1] + \centering + \begin{tikzpicture} + \begin{axis}[ + xmin= ${2:-10}, xmax= ${3:10}, + ymin= ${4:-10}, ymax = ${5:10}, + axis lines = middle, + ] + \addplot[domain=$2:$3, samples=${6:100}]{$7}; + \end{axis} + \end{tikzpicture} + \caption{$8}\label{plot:$9} +\end{figure} $0 +endsnippet + +snippet nn "Tikz node" w +\node[$5] (${1/[^0-9a-zA-Z]//g}${2}) ${3:at (${4:0,0}) }{$${1}$}; +$0 +endsnippet + +snippet problem "Problem" biA +\pbl{$1} + $0 +endsnippet + +# English + +snippet ltable "Long table" b +\begin{longtable}{${1:|p{5cm}|p{10cm}|}} + \hline + $2 + \hline +\end{longtable} $0 +endsnippet + +snippet '(? 0 then + vim.cmd([[ :COQnow -s ]]) + end + end, 10) end end }) diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index 85036de..404eef7 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -6,23 +6,27 @@ end return require('packer').startup({ function(use) - use 'wbthomason/packer.nvim' + use { + 'wbthomason/packer.nvim' + } - use 'RRethy/base16-nvim' + use { + 'RRethy/base16-nvim', + } use { 'vim-airline/vim-airline', requires = { 'ryanoasis/vim-devicons', - } + }, } use { - 'mustache/vim-mustache-handlebars' + 'mustache/vim-mustache-handlebars', } use { - 'whonore/Coqtail' + 'whonore/Coqtail', } use { @@ -38,7 +42,7 @@ return require('packer').startup({ } use { - 'noir-lang/noir-nvim' + 'noir-lang/noir-nvim', } use { @@ -56,15 +60,15 @@ return require('packer').startup({ } use { - 'petRUShka/vim-sage' + 'petRUShka/vim-sage', } use { - 'evanleck/vim-svelte' + 'evanleck/vim-svelte', } use { - 'wuelnerdotexe/vim-astro' + 'wuelnerdotexe/vim-astro', } use { @@ -83,6 +87,10 @@ return require('packer').startup({ 'tpope/vim-repeat', } + use { + 'nvim-lua/plenary.nvim', + } + use { 'lewis6991/gitsigns.nvim', requires = { @@ -118,11 +126,11 @@ return require('packer').startup({ }, config = function() require('flutter-tools').setup { - lsp = { - color = { - enabled = false - } - } + -- lsp = { + -- color = { + -- enabled = false + -- } + -- } } end } @@ -186,6 +194,7 @@ return require('packer').startup({ use { 'neovim/nvim-lspconfig', + disable = true, -- commit = "607ff48b970b89c3e4e3825b88d9cfd05b7aaea5", requires = { 'nvim-lua/lsp-status.nvim', diff --git a/themectl/schemes/durian.yaml b/themectl/schemes/durian.yaml new file mode 100644 index 0000000..84606f7 --- /dev/null +++ b/themectl/schemes/durian.yaml @@ -0,0 +1,17 @@ +scheme: "Passionfruit" +base00: "282828" # ---- +base01: "3c3836" # --- +base02: "504945" # -- +base03: "665c54" # - +base04: "bdae93" # + +base05: "d5c4a1" # ++ +base06: "ebdbb2" # +++ +base07: "fbf1c7" # ++++ +base08: "f66655" # red +base09: "e59e70" # orange +base0A: "d4bb6f" # yellow +base0B: "89b843" # green +base0C: "8ec07c" # aqua/cyan +base0D: "83a598" # blue +base0E: "7f7d88" # purple +base0F: "b5835a" # brown diff --git a/themectl/schemes/forest.yaml b/themectl/schemes/forest.yaml new file mode 100644 index 0000000..e37ce9a --- /dev/null +++ b/themectl/schemes/forest.yaml @@ -0,0 +1,19 @@ +scheme: "Everforest dark, medium" +author: "Sainnhe Park (sainnhe@gmail.com)" + +base00: "232a2e" # Default Background +base01: "343f44" # Lighter Background (Used for status bars, line number and folding marks) +base02: "3d484d" # Selection Background +base03: "475258" # Comments, Invisibles, Line Highlighting +base04: "4f585e" # Dark Foreground (Used for status bars) +base05: "859289" # Default Foreground, Caret, Delimiters, Operators +base06: "9da9a0" # Light Foreground (Not often used) +base07: "d3c6aa" # Light Background (Not often used) +base08: "e67e80" # Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09: "e69875" # Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A: "dbbc7f" # Classes, Markup Bold, Search Text Background +base0B: "a7c080" # Strings, Inherited Class, Markup Code, Diff Inserted +base0C: "7fbbb3" # Support, Regular Expressions, Escape Characters, Markup Quotes +base0D: "83c092" # Functions, Methods, Attribute IDs, Headings +base0E: "d699b6" # Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F: "543a48" # Deprecated, Opening/Closing Embedded Language Tags, e.g. diff --git a/themectl/schemes/monotone.yaml b/themectl/schemes/monotone.yaml new file mode 100644 index 0000000..4ad6934 --- /dev/null +++ b/themectl/schemes/monotone.yaml @@ -0,0 +1,19 @@ +scheme: "Grayscale" +author: "Chris Kempson" + +base00: "101010" +base01: "252525" +base02: "464646" +base03: "525252" +base04: "ababab" +base05: "b9b9b9" +base06: "e3e3e3" +base07: "f7f7f7" +base08: "7c7c7c" +base09: "999999" +base0A: "a0a0a0" +base0B: "8e8e8e" +base0C: "868686" +base0D: "686868" +base0E: "747474" +base0F: "5e5e5e" diff --git a/themectl/templates/airline.mustache b/themectl/templates/airline.mustache index ef895f6..95a91b8 100644 --- a/themectl/templates/airline.mustache +++ b/themectl/templates/airline.mustache @@ -50,35 +50,53 @@ else let s:cterm0F = "14" endif -let g:airline#themes#theme#palette.normal = airline#themes#generate_color_map( - \ [ s:gui01, s:gui04, s:cterm01, s:cterm04 ], - \ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ], - \ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ]) -let g:airline#themes#theme#palette.normal_modified = { - \ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]} +let s:N1 = [ s:gui01, s:gui0B, s:cterm01, s:cterm0B ] +let s:N2 = [ s:gui06, s:gui03, s:cterm06, s:cterm03 ] +let s:N3 = [ s:gui09, s:gui02, s:cterm09, s:cterm02 ] +let g:airline#themes#theme#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3) +let g:airline#themes#theme#palette.normal_modified = { 'airline_c': [ s:gui0A, '', s:cterm0A, '' ] } -let g:airline#themes#theme#palette.insert = airline#themes#generate_color_map( - \ [ s:gui01, s:gui0B, s:cterm01, s:cterm0B ], - \ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ], - \ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ]) -let g:airline#themes#theme#palette.insert_modified = { - \ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]} -let g:airline#themes#theme#palette.replace = airline#themes#generate_color_map( - \ [ s:gui01, s:gui0E, s:cterm01, s:cterm0E ], - \ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ], - \ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ]) -let g:airline#themes#theme#palette.replace_modified = { - \ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]} +let s:I1 = [ s:gui01, s:gui0D, s:cterm01, s:cterm0D ] +let s:I2 = [ s:gui06, s:gui03, s:cterm06, s:cterm03 ] +let s:I3 = [ s:gui09, s:gui02, s:cterm09, s:cterm02 ] +let g:airline#themes#theme#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3) +let g:airline#themes#theme#palette.insert_modified = g:airline#themes#theme#palette.normal_modified +let g:airline#themes#theme#palette.insert_paste = { 'airline_a': s:I3 } -let g:airline#themes#theme#palette.visual = airline#themes#generate_color_map( - \ [ s:gui01, s:gui09, s:cterm01, s:cterm09 ], - \ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ], - \ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ]) -let g:airline#themes#theme#palette.visual_modified = { - \ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]} -let g:airline#themes#theme#palette.inactive = airline#themes#generate_color_map( - \ [ s:gui01, s:gui01, s:cterm01, s:cterm01 ], - \ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ], - \ [ s:gui05, s:gui01, s:cterm05, s:cterm01 ]) +let s:R1 = [ s:gui01, s:gui08, s:cterm01, s:cterm08 ] +let s:R2 = [ s:gui06, s:gui03, s:cterm06, s:cterm03 ] +let s:R3 = [ s:gui09, s:gui02, s:cterm09, s:cterm02 ] +let g:airline#themes#theme#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3) +let g:airline#themes#theme#palette.replace_modified = g:airline#themes#theme#palette.normal_modified + + +let s:V1 = [ s:gui01, s:gui0E, s:cterm01, s:cterm0E ] +let s:V2 = [ s:gui06, s:gui03, s:cterm06, s:cterm03 ] +let s:V3 = [ s:gui09, s:gui02, s:cterm09, s:cterm02 ] +let g:airline#themes#theme#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3) +let g:airline#themes#theme#palette.visual_modified = g:airline#themes#theme#palette.normal_modified + + +let s:IA1 = [ s:gui05, s:gui02, s:cterm05, s:cterm02 ] +let s:IA2 = [ s:gui05, s:gui02, s:cterm05, s:cterm02 ] +let s:IA3 = [ s:gui05, s:gui02, s:cterm05, s:cterm02 ] +let g:airline#themes#theme#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3) +let g:airline#themes#theme#palette.inactive_modified = g:airline#themes#theme#palette.normal_modified + +" g Here we define the color map for ctrlp. We check for the g:loaded_ctrlp +" variable so that related functionality is loaded iff the user is using +" ctrlp. Note that this is optional, and if you do not define ctrlp colors +" they will be chosen automatically from the existing palette. +if !get(g:, 'loaded_ctrlp', 0) + finish +endif +let g:airline#themes#theme#palette.ctrlp = airline#extensions#ctrlp#generate_color_map( + \ [ s:gui07, s:gui02, s:cterm07, s:cterm02, '' ], + \ [ s:gui07, s:gui04, s:cterm07, s:cterm04, '' ], + \ [ s:gui05, s:gui01, s:cterm05, s:cterm01, 'bold' ]) + +" Remove color variables +unlet s:gui00 s:gui01 s:gui02 s:gui03 s:gui04 s:gui05 s:gui06 s:gui07 s:gui08 s:gui09 s:gui0A s:gui0B s:gui0C s:gui0D s:gui0E s:gui0F +unlet s:cterm00 s:cterm01 s:cterm02 s:cterm03 s:cterm04 s:cterm05 s:cterm06 s:cterm07 s:cterm08 s:cterm09 s:cterm0A s:cterm0B s:cterm0C s:cterm0D s:cterm0E s:cterm0F diff --git a/zsh/zshrc b/zsh/zshrc index b04ceb1..30380d4 100644 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -1,6 +1,6 @@ -export PATH=$HOME/.config/bin/$(cat /etc/hostname):$HOME/.config/bin:$HOME/.local/bin:$HOME/.local/share/texlive/2025/bin/x86_64-linux:$HOME/.local/share/cargo/bin:/home/emh/.local/share/solana/install/active_release/bin:$HOME/.local/share/npm/bin:$HOME/.nargo:$PATH -export MANPATH=$MANPATH:$HOME/.local/share/texlive/2025/texmf-dist/doc/man -export INFOPATH=$INFOPATH:$HOME/.local/share/texlive/2025/texmf-dist/doc/info +export PATH=$HOME/.config/bin/$(cat /etc/hostname):$HOME/.config/bin:$HOME/.local/bin:$HOME/.local/share/texlive/2026/bin/x86_64-linux:$HOME/.local/share/cargo/bin:/home/emh/.local/share/solana/install/active_release/bin:$HOME/.local/share/npm/bin:$HOME/.nargo:$PATH +export MANPATH=$MANPATH:$HOME/.local/share/texlive/2026/texmf-dist/doc/man +export INFOPATH=$INFOPATH:$HOME/.local/share/texlive/2026/texmf-dist/doc/info export PATH="$PATH:/home/emh/.config/.foundry/bin" . "$HOME"/.cache/theme/colors.sh