Last active
November 28, 2022 10:52
-
-
Save s-mage/6339144 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
vim.o.background = "light" | |
vim.o.termguicolors = true | |
if vim.g.colors_name then vim.cmd("hi clear") end | |
vim.cmd("syntax reset") | |
vim.g.colors_name = "Boring Tomorrow" | |
-- Default GUI Colours | |
local foreground = "#000000" | |
local background = "#ffffff" | |
local selection = "#efefef" | |
local red = "#ffc1bf" | |
local orange = "#f5871f" | |
local yellow = "#fee2ae" | |
local aqua = "#3e999f" | |
local purple = "#8959a8" | |
local window = "#efefef" | |
-- github diff colors | |
local diffadd = "#e6ffeb" | |
local diffrm = "#ffebe9" | |
local diffupdateadd = "#aaf2bb" | |
local diffupdaterm = "#ffc1bf" | |
local hl = function(group, params) return vim.api.nvim_set_hl(0, group, params) end | |
-- Interface Highlighting | |
hl("LineNr", { fg = "darkGrey" }) | |
hl("Normal", { fg = foreground, bg = background }) | |
hl("NonText", { fg = selection }) | |
hl("SpecialKey", { fg = selection }) | |
hl("Search", { bg = yellow }) | |
hl("TabLine", { bg = window, fg = foreground, reverse = true }) | |
hl("TabLineFill", { bg = window, fg = foreground, reverse = true }) | |
hl("StatusLine", { bg = window, fg = window, reverse = true }) | |
hl("StatusLineNC", { bg = window, fg = foreground, reverse = true }) | |
hl("VertSplit", { bg = window, fg = window }) | |
hl("Visual", { bg = selection }) | |
hl("Directory", { fg = foreground }) | |
hl("ModeMsg", { bg = background }) | |
hl("MoreMsg", { bg = background }) | |
hl("Question", { bg = background }) | |
hl("WarningMsg", { bg = red }) | |
hl("ErrorMsg", { fg = foreground, bg = diffupdaterm }) | |
hl("NvimInternalError", { bg = red }) | |
hl("MatchParen", { bg = yellow }) | |
hl("Folded", { bg = background, fg = foreground }) | |
hl("FoldColumn", { bg = background }) | |
hl("CursorLine", { bg = window }) | |
hl("CursorColumn", { bg = window }) | |
hl("Cursor", { bg = foreground, fg = background }) | |
hl("PMenu", { fg = foreground, bg = selection }) | |
hl("PMenuSel", { fg = foreground, bg = selection, reverse = true }) | |
hl("PMenuThumb", { fg = foreground, bg = selection, reverse = true }) | |
hl("SignColumn", { bg = background }) | |
hl("ColorColumn", { bg = window }) | |
hl("Conceal", { fg = foreground, bg = "LightGrey" }) | |
-- comments are important, make them stand out | |
hl("Comment", { bold = true }) | |
hl("Todo", { link = "Comment" }) | |
-- normalize the rest to be black on white | |
hl("Title", {}) | |
hl("Identifier", {}) | |
hl("Statement", {}) | |
hl("Conditional", {}) | |
hl("Repeat", {}) | |
hl("Structure", {}) | |
hl("Function", {}) | |
hl("Constant", {}) | |
hl("Keyword", {}) | |
hl("String", {}) | |
hl("Special", {}) | |
hl("PreProc", {}) | |
hl("Operator", {}) | |
hl("Type", {}) | |
hl("Define", {}) | |
hl("Include", {}) | |
hl("vimCommand", {}) | |
-- git | |
hl("gitcommitSummary", { bold = true }) | |
hl("diffAdded", { bg = diffadd }) | |
hl("diffRemoved", { bg = diffrm }) | |
hl("DiffAdd", { bg = diffupdateadd }) | |
hl("DiffChange", {}) | |
hl("DiffDelete", { bg = diffrm }) | |
hl("DiffText", { bg = diffupdateadd }) | |
hl("CocGitChangedSign", { bg = background }) | |
hl("CocGitAddedSign", { bg = background }) | |
hl("CocGitRemovedSign", { bg = background }) | |
hl("CocGitChangeRemovedSign", { bg = background }) | |
-- ShowMarks Highlighting | |
hl("ShowMarksHLl", { fg = orange, bg = background }) | |
hl("ShowMarksHLo", { fg = purple, bg = background }) | |
hl("ShowMarksHLu", { fg = yellow, bg = background }) | |
hl("ShowMarksHLm", { fg = aqua, bg = background }) | |
-- misc | |
hl("Underlined", { fg = foreground }) | |
hl("CocMenuSel", { bold = true }) | |
hl("CocSearch", { fg = foreground, bg = yellow }) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"diagnostic.messageTarget": "echo", | |
"diagnostic.virtualText": true, | |
"diagnostic.virtualTextPrefix": " |> ", | |
"diagnostic.infoSign": "|>", | |
"diagnostic.hintSign": "|>", | |
"diagnostic.warningSign": "->", | |
"diagnostic.errorSign": "=>", | |
"suggest.minTriggerInputLength": 2, | |
"solargraph.useBundler": true, | |
"solargraph.bundlerPath": "/Users/rm/.rbenv/shims/bundle", | |
"solargraph.diagnostics": true, | |
"solargraph.completion": true, | |
"solargraph.definitions": true, | |
"solargraph.checkGemVersion": false, | |
"eslint.packageManager": "yarn", | |
"vetur.ignoreProjectWarning": true | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- https://github.com/nanotee/nvim-lua-guide | |
-- | |
local Plug = vim.fn['plug#'] | |
vim.call('plug#begin', '~/.vim/plugged') | |
Plug('/opt/homebrew/opt/fzf') -- tag search | |
Plug('junegunn/fzf.vim') | |
Plug('itchyny/lightline.vim') -- bottom line | |
Plug('zhaocai/GoldenView.Vim') -- open windows in golden proportion | |
Plug('neoclide/coc.nvim', { branch = 'release' }) -- lang servers; help coc-configuration | |
Plug('tpope/vim-fugitive') -- git wrapper | |
Plug('tpope/vim-rhubarb') -- fugitive addon for github | |
Plug('junegunn/gv.vim') -- commit browser | |
Plug('justinmk/vim-dirvish') -- file tree | |
Plug('nvim-treesitter/nvim-treesitter', { ["do"] = vim.fn["TSUpdate"] }) -- syntax highlighting | |
Plug('nvim-lua/plenary.nvim') | |
Plug('sindrets/diffview.nvim') | |
Plug('cappyzawa/trim.nvim') | |
Plug('ziglang/zig.vim') | |
Plug('Pocco81/auto-save.nvim') | |
vim.call('plug#end') | |
function _G.custom_fold_text() | |
local line = vim.fn.getline(vim.v.foldstart) | |
local line_count = vim.v.foldend - vim.v.foldstart + 1 | |
return "⋮⋮⋮ " .. line .. " <- " .. line_count .. " lines ⋮⋮⋮" | |
end | |
---------------------------------- | |
-- Options: used to be set in viml | |
---------------------------------- | |
local opt = vim.opt | |
opt.encoding = "utf-8" | |
opt.foldmethod = "expr" | |
opt.foldexpr = "nvim_treesitter#foldexpr()" | |
opt.foldlevel = 20 | |
opt.foldtext = "v:lua.custom_fold_text()" | |
opt.fillchars = { eob = "-", fold = " " } | |
-- Tabs should be converted to a group of 2 spaces. | |
opt.shiftwidth = 2 | |
opt.tabstop = 2 | |
opt.expandtab = true | |
opt.smarttab = true | |
opt.scrolloff=999 -- Cursor is always in the center of the screen | |
opt.ruler = true -- Show line number, cursor position | |
opt.showcmd = true -- Display incomplete commands | |
opt.ignorecase = true -- Ignore case when searching | |
opt.smartcase = true -- Become case sensitive when an uppercase letter entered | |
-- Relative line number | |
opt.relativenumber = true | |
opt.numberwidth = 2 | |
-- gui colors instead of 256 | |
opt.termguicolors = true | |
-- Copy to system clipboard | |
opt.clipboard = "unnamedplus" | |
--------------- | |
-- Key mappings | |
--------------- | |
local map = vim.api.nvim_set_keymap | |
local nnoremap = function(key, command) return map('n', key, command, { noremap = true }) end | |
local vnoremap = function(key, command) return map('v', key, command, { noremap = true }) end | |
local cnoremap = function(key, command) return map('c', key, command, { noremap = true }) end | |
local tnoremap = function(key, command) return map('t', key, command, { noremap = true }) end | |
vim.g.mapleader = "," | |
-- Full-text search | |
nnoremap("<leader>a", ":Rg<Space>") | |
nnoremap("<leader>*", ":Rg <c-r>=expand('<cword>')<cr><cr>") | |
vnoremap("<leader>*", "y:Rg<Space><c-r>+<cr>") | |
-- Search the word under cursor | |
vnoremap("*", "y/<c-r>+<cr>") | |
-- Split string on cursor position | |
nnoremap("s", "i<cr><esc>") | |
-- Backspace moves back in jumps | |
nnoremap("<BS>", "<C-o>") | |
-- Next error/warning | |
nnoremap("<leader><space>", "<Plug>(coc-diagnostic-next)") | |
-- Next in file list | |
nnoremap("<space>", ":cn<cr>") | |
-- Allows to save a file we don't have permission to save *after* we have already opened it | |
cnoremap("w!!", "w !sudo tee % >/dev/null") | |
-- g as in go somewhere | |
nnoremap("gd", "<Plug>(coc-definition)") | |
nnoremap("gb", ":Git blame<cr>") | |
vnoremap("gh", ":'<,'>GBrowse<cr>") | |
-- Disable opening command line window when I try to exit. `q?` still does that | |
nnoremap("q:", ":q") | |
nnoremap("<c-t>", ":tabnew<cr>") | |
-- Search through files | |
nnoremap("<leader>m", ":Files<cr>") | |
nnoremap("<leader>g", ":GFiles<cr>") | |
nnoremap("<leader>h", ":History<cr>") | |
nnoremap("<leader>/", ":BLines<cr>") | |
-- Show current path | |
nnoremap("<leader>ff", ":file<cr>") | |
-- current file and dir | |
-- help map-expression | |
-- help expand | |
map("c", "%f", "expand('%:f')", { noremap = true, expr = true }) | |
map("c", "%%", "expand('%:h') . '/'", { noremap = true, expr = true }) | |
map("n", "<leader>fm", ":!mv % %f", {}) | |
map("n", "<leader>fc", ":!cp % %%", {}) | |
map("n", "<leader>fa", ":e %%", {}) | |
nnoremap("<leader>t", ":40vsplit +Dirvish<cr>") | |
nnoremap("<leader>r", ":40vsplit<cr>:Dirvish %<cr>") | |
-- Accept selected completion on tab & enter | |
map("i", "<TAB>", | |
'coc#pum#visible() ? coc#pum#confirm() : "<TAB>"', | |
{ noremap = true, silent = true, expr = true } | |
) | |
map("i", "<CR>", | |
'coc#pum#visible() ? coc#pum#confirm() : "<CR>"', | |
{ noremap = true, silent = true, expr = true } | |
) | |
vim.cmd("cabbrev help tab help") | |
-- :help nvim_replace_termcodes() | |
local t = function(s) return vim.api.nvim_replace_termcodes(s, true, true, true) end | |
function setBreakpoint() | |
local command = "debugger" | |
if vim.bo.filetype == "haml" then command = "- debugger" end | |
return vim.cmd(t([[execute "normal! o]] .. command .. [[<esc>"]])) | |
end | |
nnoremap("<leader>b", ":lua setBreakpoint()<cr>") | |
tnoremap("<Esc>", [[<C-\><C-n>]]) | |
------------- | |
-- Autogroups | |
------------- | |
local api = vim.api | |
local setFtAutogroup = vim.api.nvim_create_augroup("setFt", { clear = true }) | |
api.nvim_create_autocmd( | |
{ "BufNewFile", "BufRead" }, | |
{ command = 'set filetype=html', pattern = { "*.ejs" }, group = setFtAutogroup } | |
) | |
-- when opening a file, open it on the same line you left | |
-- help mark-motions | |
local keepLineAutogroup = vim.api.nvim_create_augroup("keepLine" , { clear = true }) | |
api.nvim_create_autocmd( "BufReadPost", { | |
command = [[if line("'\"") > 0 && line ("'\"") <= line("$") | execute "normal! g'\"" | endif]], | |
pattern = { "*" }, | |
group = keepLineAutogroup, | |
}) | |
----------- | |
-- Plugins | |
----------- | |
vim.api.nvim_command("colors boring-tomorrow") | |
-- remove unwanted spaces and blank lines | |
require('trim').setup({}) | |
require'nvim-treesitter.configs'.setup { | |
ensure_installed = "all", | |
ignore_install = { "phpdoc" }, | |
highlight = { enable = true }, | |
indent = { enable = true }, | |
} | |
require'diffview'.setup { | |
use_icons = false, | |
enhanced_diff_hl = true, | |
file_panel = { win_config = { position = "bottom" }, listing_style = "list" } | |
} | |
require("auto-save").setup { | |
execution_message = { | |
message = function() | |
return (vim.fn.expand('%:p')) | |
end, | |
dim = 0, | |
cleaning_interval = 10000, | |
}, | |
} | |
-- https://github.com/junegunn/fzf/blob/master/README-VIM.md#explanation-of-gfzf_colors | |
vim.g.fzf_layout = { window = { width = 1.0, height = 0.4, yoffset = 1.0, border = 'top' } } | |
vim.g.fzf_colors = { | |
fg = {'fg', 'Normal'}, | |
bg = {'bg', 'Normal'}, | |
hl = {'fg', 'Normal'}, | |
['fg+'] = {'fg', 'Normal'}, | |
['bg+'] = {'bg', 'Visual' }, | |
['hl+'] = {'fg', 'Normal'}, | |
info = {'fg', 'Normal'}, | |
border = {'bg', 'Normal'}, | |
prompt = {'fg', 'Normal'}, | |
pointer = {'fg', 'Exception'}, | |
marker = {'fg', 'Normal'}, | |
spinner = {'fg', 'Normal'}, | |
header = {'fg', 'Normal'} | |
} | |
vim.g.lightline = { | |
colorscheme = 'smagin', | |
active = { | |
left = { | |
{ 'mode', 'paste' }, | |
{ 'cocstatus', 'readonly', 'filename', 'modified' }, | |
}, | |
}, | |
component_function = { cocstatus = 'coc#status' }, | |
} | |
vim.g.lightline.tabline = { left = { { 'tabs' } } } | |
vim.g.lightline.enable = { statusline = 1, tabline = 1 } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" ============================================================================= | |
" Filename: autoload/lightline/colorscheme/smagin.vim | |
" Based on one.vim | |
" ============================================================================= | |
" Common colors | |
let s:blue = [ '#61afef', 75 ] | |
let s:green = [ '#98c379', 76 ] | |
let s:purple = [ '#c678dd', 175 ] | |
let s:red1 = [ '#e06c75', 168 ] | |
let s:red2 = [ '#be5046', 168 ] | |
let s:yellow = [ '#e5c07b', 180 ] | |
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} | |
if lightline#colorscheme#background() ==# 'light' | |
" Light variant | |
let s:fg = [ '#000000', 0 ] | |
let s:bg = [ '#fafafa', 255 ] | |
let s:gray1 = [ '#494b53', 238 ] | |
let s:gray2 = [ '#f0f0f0', 255 ] | |
let s:gray3 = [ '#d0d0d0', 250 ] | |
let s:green = [ '#98c379', 35 ] | |
let s:p.inactive.left = [ [ s:bg, s:gray3 ], [ s:bg, s:gray3 ] ] | |
let s:p.inactive.middle = [ [ s:gray3, s:gray2 ] ] | |
let s:p.inactive.right = [ [ s:bg, s:gray3 ] ] | |
else | |
" Dark variant | |
let s:fg = [ '#abb2bf', 145 ] | |
let s:bg = [ '#282c34', 235 ] | |
let s:gray1 = [ '#5c6370', 241 ] | |
let s:gray2 = [ '#2c323d', 235 ] | |
let s:gray3 = [ '#3e4452', 240 ] | |
let s:p.inactive.left = [ [ s:gray1, s:bg ], [ s:gray1, s:bg ] ] | |
let s:p.inactive.middle = [ [ s:gray1, s:gray2 ] ] | |
let s:p.inactive.right = [ [ s:gray1, s:bg ] ] | |
endif | |
" Common | |
let s:p.normal.left = [ [ s:bg, s:green, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.normal.middle = [ [ s:fg, s:gray2 ] ] | |
let s:p.normal.right = [ [ s:bg, s:green, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.normal.error = [ [ s:red2, s:bg ] ] | |
let s:p.normal.warning = [ [ s:yellow, s:bg ] ] | |
let s:p.insert.right = [ [ s:bg, s:blue, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.insert.left = [ [ s:bg, s:blue, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.replace.right = [ [ s:bg, s:red1, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.replace.left = [ [ s:bg, s:red1, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.visual.right = [ [ s:bg, s:purple, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.visual.left = [ [ s:bg, s:purple, 'bold' ], [ s:fg, s:gray3 ] ] | |
let s:p.tabline.left = [ [ s:fg, s:gray2 ] ] | |
let s:p.tabline.tabsel = [ [ s:fg, s:gray3 ] ] | |
let s:p.tabline.middle = [ [ s:gray3, s:gray2 ] ] | |
let s:p.tabline.right = copy(s:p.normal.right) | |
let g:lightline#colorscheme#smagin#palette = lightline#colorscheme#flatten(s:p) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment