feat: refactor

This commit is contained in:
max_richter 2022-04-23 03:41:04 +02:00
parent 42db054021
commit 4bf6a46a85
35 changed files with 2167 additions and 500 deletions

View File

@ -22,6 +22,8 @@ eval `dircolors ~/.dircolors`
export FPATH=$FPATH:~/.dotfiles/completions
export NVIM_HOME=$HOME/.config/nvim
export NVIM_LISTEN_ADDRESS=/tmp/nvimsocket
export NVR_CMD=""
# Load oh my zsh
export ZSH=~/.oh-my-zsh
@ -78,6 +80,10 @@ if type rg &> /dev/null; then
export FZF_DEFAULT_OPTS='-m --height 50% --border'
fi
if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
export MOZ_ENABLE_WAYLAND=1
fi
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

View File

@ -0,0 +1,21 @@
background #000000
foreground #fffaf3
cursor #ffffff
selection_background #002a3a
color0 #222222
color8 #444444
color1 #ff000f
color9 #ff273f
color2 #8ce00a
color10 #abe05a
color3 #ffb900
color11 #ffd141
color4 #008df8
color12 #0092ff
color5 #6c43a5
color13 #9a5feb
color6 #00d7eb
color14 #67ffef
color7 #ffffff
color15 #ffffff
selection_foreground #0d0f18

View File

@ -1,7 +1,5 @@
# vim:fileencoding=utf-8:ft=conf:foldmethod=marker
include ./theme.conf
#: Fonts {{{
#: kitty has very powerful font management. You can configure
@ -627,9 +625,8 @@ window_padding_width 10
#: Color scheme {{{
#
foreground #dddddd
background #000000
# foreground #dddddd
# background #000000
#: The foreground and background colors
@ -793,7 +790,7 @@ background #000000
#: to yes means that any background processes still using the terminal
#: can fail silently because their stdout/stderr/stdin no longer work.
# allow_remote_control no
allow_remote_control yes
#: Allow other programs to control kitty. If you turn this on other
#: programs can control all aspects of kitty, including sending text
@ -806,7 +803,7 @@ background #000000
#: you want to prevent programs running on a remote computer over ssh
#: from controlling kitty.
# listen_on none
listen_on unix:/tmp/kitty-socket
#: Tell kitty to listen to the specified unix/tcp socket for remote
#: control connections. Note that this will apply to all kitty
@ -1314,3 +1311,9 @@ map kitty_mod+minus change_font_size all -2.0
#: }}}
# }}}
# BEGIN_KITTY_THEME
# Argonaut
include current-theme.conf
# END_KITTY_THEME

1319
configs/kitty/kitty.conf.bak Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +0,0 @@
background #000000
foreground #ffffff
cursor #e2bbef
selection_background #4d4d4d
color0 #3d352a
color8 #554444
color1 #cd5c5c
color9 #cc5533
color2 #86af80
color10 #88aa22
color3 #e8ae5b
color11 #ffa75d
color4 #6495ed
color12 #87ceeb
color5 #deb887
color13 #996600
color6 #b0c4de
color14 #b0c4de
color7 #bbaa99
color15 #ddccbb
selection_foreground #1c1c1c

View File

@ -0,0 +1,21 @@
background #000000
foreground #fffaf3
cursor #ffffff
selection_background #002a3a
color0 #222222
color8 #444444
color1 #ff000f
color9 #ff273f
color2 #8ce00a
color10 #abe05a
color3 #ffb900
color11 #ffd141
color4 #008df8
color12 #0092ff
color5 #6c43a5
color13 #9a5feb
color6 #00d7eb
color14 #67ffef
color7 #ffffff
color15 #ffffff
selection_foreground #0d0f18

View File

@ -0,0 +1,21 @@
background #f8f8f8
foreground #2a2b33
cursor #bbbbbb
selection_background #ececec
color0 #000000
color8 #000000
color1 #de3d35
color9 #de3d35
color2 #3e953a
color10 #3e953a
color3 #d2b67b
color11 #d2b67b
color4 #2f5af3
color12 #2f5af3
color5 #950095
color13 #a00095
color6 #3e953a
color14 #3e953a
color7 #bbbbbb
color15 #ffffff
selection_foreground #f8f8f8

View File

@ -1,228 +1,93 @@
require("install-packer")
require("utils.install-packer")
local u = require("utils")
require("core.plugins")
local o = vim.o
local g = vim.g
local cmd = vim.cmd
local opt = vim.opt
require("plugins")
if u.has_plugin("cmp") then
-- Global options
o.number = true -- show line number
o.showmatch = true -- show matching brackets
require "impatient"
-- Indentation options
vim.cmd [[
set autoindent
set expandtab
set shiftwidth=2
set softtabstop=2
set tabstop=1
]]
require "core.options"
require "core.autocommands"
require "core.keymappings"
g.hidden = true -- unload buffers when hidden
g.filetype = true -- execute autocommands based on filetype
opt.clipboard = {"unnamedplus"}
o.autoread = true
opt.termguicolors = true
local packer = require("packer")
-- Search
o.inccommand = "nosplit" -- show substitutions incrementally
o.ignorecase = true
o.smartcase = true
opt.wildignore:append(".git/*", "node_modules/*")
o.wildignorecase = true
o.lazyredraw = true
-- Have packer use a popup window
packer.init {
display = {
open_fn = function()
return require("packer.util").float { border = "rounded" }
end,
},
}
opt.listchars:append(
{
extends = "#",
eol = "",
space = "",
tab = ""
}
)
require "configs.command-center"
require "configs.notify"
require "configs.lsp"
require "configs.lspinstaller"
require "configs.telescope"
require "configs.tree"
-- Shortmess
cmd [[set shortmess+=F]]
g.loaded_netrw = 1
g.loaded_netrwPlugin = 1
g.loaded_zipPlugin = 1
g.loaded_zip = 1
g.languagetool_server_jar = "~/build/languagetool/languagetool-server.jar"
g.languagetool_lang = "de"
cmd [[set mouse=a]] -- enable mouse interaction
cmd [[set undofile]]
cmd [[set fcs=eob:\ ]] -- disable showing ~ in empty lines
cmd [[set noshowmode]] -- to get rid of thing like --INSERT--
cmd [[set noshowcmd]] -- to get rid of display of last command
cmd [[set shortmess+=F]] -- to get rid of the file name displayed in the command line bar
cmd [[set noruler]]
g.ale_fixers = {"prettier", "eslint"}
require("command-center-conf")
local notify = require("notify")
vim.notify = notify;
notify.setup(
{
stages = "fade_in_slide_out",
max_width = 50,
render = "minimal",
background_colour = "#000000",
icons = {
ERROR = "",
WARN = "",
INFO = "",
DEBUG = "",
TRACE = ""
}
}
)
vim.wo.foldmethod = "expr"
vim.wo.foldexpr = "nvim_treesitter#foldexpr()"
vim.cmd [[
set foldlevel=99
]]
require("telescope-conf").setup()
-- Enable Theming / Syntax
o.syntax = "enable"
o.termguicolors = true
cmd("colorscheme nightfox")
g.material_terminal_italics = 1
g.material_theme_style = "darker"
g.tokyonight_style = "night"
g.tokyonight_transparent_sidebar = true
require("nightfox").setup(
{
options = {
styles = {
comments = "italic",
keywords = "bold",
types = "italic,bold"
},
transparent = true
}
}
)
g.markdown_fenced_languages = {"html", "python", "bash=sh"}
-- Remove background color
cmd("highlight Normal guibg=none")
cmd("highlight NonText guibg=none")
-- Configure nvim-tree
g.nvim_tree_highlight_opened_files = 1
g.nvim_tree_group_empty = 1
g.nvim_tree_show_icons = {
folder_arrows = 0,
folders = 1,
files = 1,
git = 1
}
require("nvim-tree").setup {
auto_open = 1,
gitignore = 1,
group_empty = 1,
hijack_cursor = 1,
update_cwd = true,
update_focused_file = {
enable = false
},
renderer = {
indent_markers = {
enable = 0
}
},
diagnostics = {
enable = true,
icons = {
hint = "",
info = "",
warning = "",
error = ""
}
},
view = {
auto_resize = true,
hide_root_folder = true,
signcolumn = "no"
}
-- Enable Theming / Syntax
require("nightfox").setup({
options = {
transparent = true
}
})
cmd("colorscheme nightfox")
require "utils.theme-reloader"
require "configs.lualine"
-- Configure Wiki
g.wiki_root = "~/Notes"
g.wiki_filetypes = {"md"}
g.wiki_link_extension = ".md"
-- Configure Wiki
g.wiki_root = "~/Notes"
g.wiki_filetypes = { "md" }
g.wiki_link_extension = ".md"
-- KeyBindings
require "keymappings"
require "overlays"
require "overlays"
-- require "nvim-tmux-navigation".setup {
-- keybindings = {
-- left = "<C-h>",
-- down = "<C-j>",
-- up = "<C-k>",
-- right = "<C-l>",
-- last_active = "<C-\\>",
-- next = "<C-Space>"
-- }
-- }
require "nvim-tmux-navigation".setup {
keybindings = {
left = "<C-h>",
down = "<C-j>",
up = "<C-k>",
right = "<C-l>",
last_active = "<C-\\>",
next = "<C-Space>"
}
}
require "nvim-autopairs".setup()
require "nvim-autopairs".setup()
-- Treesitter config
require "configs.treesitter"
-- Treesitter config
require "treesitter-conf"
-- Autocompletion Setup
require "snippets"
require "configs.autocomplete"
-- Autocompletion Setup
require "snippets"
require "cmp-conf"
-- Setup rest.vim
-- require("rest-nvim").setup(
-- {
-- -- Open request results in a horizontal split
-- result_split_horizontal = false,
-- -- Skip SSL verification, useful for unknown certificates
-- skip_ssl_verification = false,
-- -- Highlight request on run
-- highlight = {
-- enabled = true,
-- timeout = 150
-- },
-- -- Jump to request line on run
-- jump_to_request = false
-- }
-- )
-- LSP Config
require "lspinstaller-conf"
-- Setup Command OVerlays
require "lazy-git"
require "autocommands"
-- Setup rest.vim
require("rest-nvim").setup(
{
-- Open request results in a horizontal split
result_split_horizontal = false,
-- Skip SSL verification, useful for unknown certificates
skip_ssl_verification = false,
-- Highlight request on run
highlight = {
enabled = true,
timeout = 150
},
-- Jump to request line on run
jump_to_request = false
}
)
-- LSP Config
require "lspinstaller-conf"
-- require "lsp-conf"
-- LSP Config
-- require "lsp-conf"
else
vim.cmd [[PackerSync]]
vim.cmd [[PackerSync]]
vim.cmd [[echo Installed -> Reload]]
end

View File

@ -1,24 +1,24 @@
-- luasnip setup
local luasnip = require "luasnip"
local lspkind = require "lspkind"
-- local lspkind = require "lspkind"
local cmp = require "cmp"
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
cmp.setup {
formatting = {
format = lspkind.cmp_format(
{
with_text = true,
menu = ({
buffer = "[Buffer]",
nvim_lsp = "[LSP]",
luasnip = "[LuaSnip]",
nvim_lua = "[Lua]",
latex_symbols = "[Latex]"
})
}
)
},
-- formatting = {
-- format = lspkind.cmp_format(
-- {
-- with_text = true,
-- menu = ({
-- buffer = "[Buffer]",
-- nvim_lsp = "[LSP]",
-- luasnip = "[LuaSnip]",
-- nvim_lua = "[Lua]",
-- latex_symbols = "[Latex]"
-- })
-- }
-- )
-- },
experimental = {
ghost_text = true
},

View File

@ -4,28 +4,28 @@ local noremap = {noremap = true}
command_center.add({
{
description = "Search inside current buffer",
command = "Telescope current_buffer_fuzzy_find",
cmd = "Telescope current_buffer_fuzzy_find",
keybindings = { "n", "<leader>fl", noremap },
}, {
-- If no descirption is specified, command is used to replace descirption by default
-- You can change this behavior in settigns
command = "Telescope find_files",
cmd = "Telescope find_files",
},
{
-- If no keybindings specified, no keybindings will be displayed or registered
description = "Find hidden files",
command = "Telescope find_files hidden=true",
cmd = "Telescope find_files hidden=true",
},
{
-- You can specify multiple keybindings for the same command ...
description = "Show document symbols",
command = "Telescope lsp_document_symbols",
cmd = "Telescope lsp_document_symbols",
},
{
description = "Show function signaure (hover)",
command = "lua vim.lsp.buf.hover()",
cmd = "lua vim.lsp.buf.hover()",
},{
description="(TS) Organize Imports",
command = "OrganizeImports"
cmd = "OrganizeImports"
}
})

View File

@ -1,6 +1,6 @@
local lsp = require "lspconfig"
local lsp_status = require("lsp-status")
local ts_utils = require("nvim-lsp-ts-utils")
-- local ts_utils = require("nvim-lsp-ts-utils")
require'nvim-lightbulb'.setup {
-- LSP client names to ignore

View File

@ -0,0 +1,239 @@
-----------------
-- Status Line --
-----------------
-- Eviline / Vimline config for lualine
-- Author: shadmansaleh
-- Credit: glepnir
-- Credit: Elai
local lualine = require "lualine"
-- Color table for highlights
-- stylua: ignore
local colors = {
bg = '#00000000',
fg = '#bbc2cf',
yellow = '#ECBE7B',
cyan = '#008080',
darkblue = '#081633',
green = '#B7BD82',
orange = '#8d6141',
violet = '#B294BB',
magenta = '#AE84BB',
blue = '#81A2BE',
red = '#CC8282',
}
local conditions = {
buffer_not_empty = function()
return vim.fn.empty(vim.fn.expand('%:t')) ~= 1
end,
hide_in_width = function()
return vim.fn.winwidth(0) > 80
end,
check_git_workspace = function()
local filepath = vim.fn.expand('%:p:h')
local gitdir = vim.fn.finddir('.git', filepath .. ';')
return gitdir and #gitdir > 0 and #gitdir < #filepath
end,
}
-- Config
local config = {
options = {
-- Disable sections and component separators
component_separators = '',
section_separators = '',
theme = {
-- We are going to use lualine_c an lualine_x as left and
-- right section. Both are highlighted by c theme . So we
-- are just setting default looks o statusline
normal = { c = { fg = colors.fg, bg = colors.bg } },
inactive = { c = { fg = colors.fg, bg = colors.bg } },
},
},
-- These are to remove the defaults
sections = {
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
-- These will be filled later
lualine_c = {},
lualine_x = {},
},
inactive_sections = {
-- these are to remove the defaults
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
lualine_c = {},
lualine_x = {},
},
}
-- Inserts a component in lualine_c at left section
local function ins_left(component)
table.insert(config.sections.lualine_c, component)
end
-- Inserts a component in lualine_x ot right section
local function ins_right(component)
table.insert(config.sections.lualine_x, component)
end
-- Begining Of The StatusLine
-- ins_left {
-- function()
-- return '|'
-- end,
-- color = { fg = colors.blue }, -- Sets highlighting of component
-- padding = { left = 0, right = 1 }, -- We don't need space before this
-- }
-- Icon Of Diffrent Mode: -- normal -- | -- insert -- | -- visual --
ins_left {
-- mode component
function()
return ''
end,
color = function()
-- auto change color according to neovims mode
local mode_color = {
n = colors.green,
i = colors.blue,
v = colors.magenta,
[''] = colors.blue,
V = colors.blue,
c = colors.red,
no = colors.red,
s = colors.orange,
S = colors.orange,
[''] = colors.orange,
ic = colors.yellow,
R = colors.violet,
Rv = colors.violet,
cv = colors.red,
ce = colors.red,
r = colors.cyan,
rm = colors.cyan,
['r?'] = colors.cyan,
['!'] = colors.red,
t = colors.red,
}
return { fg = mode_color[vim.fn.mode()] }
end,
padding = { right = 1 },
}
-- File Name
ins_left {
'filename',
file_status = true, -- Displays file status (readonly status, modified status)
path = 2, -- 0: Just the filename
-- 1: Relative path
-- 2: Absolute path
shorting_target = 100, -- Shortens path to leave 40 spaces in the window
-- for other components. (terrible name, any suggestions?)
symbols = {
modified = '', -- Text to show when the file is modified.
readonly = '', -- Text to show when the file is non-modifiable or readonly.
unnamed = '[No Name]', -- Text to show for unnamed buffers.
}
}
-- Git Diff
local function diff_source()
local gitsigns = vim.b.gitsigns_status_dict
if gitsigns then
return {
added = gitsigns.added,
modified = gitsigns.changed,
removed = gitsigns.removed
}
end
end
ins_right { 'diff', source = diff_source }
-- Git Branch
ins_right {
'branch',
icon = '',
-- icon = '',
-- color = { fg = colors.green },
-- padding = { right = 1 },
-- padding = { left = 1 },
}
-- File Type
ins_right {
'filetype',
icon_only = true,
padding = { right = 2, left = 1 }
}
-- File Encoding
ins_right {
'o:encoding', -- option component same as &encoding in viml
fmt = string.upper, -- I'm not sure why it's upper case either ;)
cond = conditions.hide_in_width,
padding = { right = 2 },
-- color = { fg = colors.green, gui = 'bold' },
-- Add components to right sections
}
-- File Format
-- ins_right {
-- 'fileformat',
-- -- fmt = string.upper,
-- -- icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
-- padding = { right = 2 },
-- symbols = { unix = 'NIX '},
-- -- color = { fg = colors.green, gui = 'bold' },
-- }
-- File Size
ins_right {
-- filesize component
'filesize',
padding = { right = 2 },
cond = conditions.buffer_not_empty,
}
-- Text Progress
ins_right {
'progress',
padding = { right = 1 },
-- padding = { left = 1 },
}
-- File Location
ins_right {
'location',
padding = { right = 0 },
}
-- Insert mid section. You can make any number of sections in neovim :)
-- for lualine it's any number greater then 2
ins_left {
function()
return '%='
end,
}
-- End Of The Status Bar
-- ins_right {
-- function()
-- return ''
-- end,
-- color = { fg = colors.blue }, -- Sets highlighting of component
-- padding = { left = 1, right = 0 }, -- We don't need space before this
-- }
-- Now don't forget to initialize lualine
lualine.setup(config)

View File

@ -0,0 +1,17 @@
local notify = require("notify")
notify.setup(
{
stages = "fade_in_slide_out",
max_width = 50,
render = "minimal",
background_colour = "#000000",
icons = {
ERROR = "",
WARN = "",
INFO = "",
DEBUG = "",
TRACE = ""
}
}
)
vim.notify = notify;

View File

@ -49,11 +49,7 @@ local default = {
}
}
local M = {}
M.setup = function()
telescope.setup(default)
-- telescope.load_extension("themes");
telescope.load_extension("command_center");
end
return M
telescope.setup(default)
-- telescope.load_extension("themes");
telescope.load_extension("command_center");
telescope.load_extension("notify");

View File

@ -0,0 +1,40 @@
local g = vim.g
-- Configure nvim-tree
g.nvim_tree_highlight_opened_files = 1
g.nvim_tree_group_empty = 1
g.nvim_tree_show_icons = {
folder_arrows = 0,
folders = 1,
files = 1,
git = 1
}
require("nvim-tree").setup {
auto_open = 1,
gitignore = 1,
group_empty = 1,
hijack_cursor = 1,
update_cwd = true,
update_focused_file = {
enable = false
},
renderer = {
indent_markers = {
enable = 0
}
},
diagnostics = {
enable = true,
icons = {
hint = "",
info = "",
warning = "",
error = ""
}
},
view = {
auto_resize = true,
hide_root_folder = true,
signcolumn = "no"
}
}

View File

@ -7,11 +7,6 @@ cmd [[
augroup END
]]
cmd [[
au ColorScheme * hi Normal ctermbg=none guibg=none
au ColorScheme myspecialcolors hi Normal ctermbg=red guibg=red
]]
cmd [[
augroup filetypedetect
au BufNewFile,BufRead *.frag setl ft=glsl
@ -27,6 +22,9 @@ augroup SaveManualFolds
augroup END
]]
vim.api.nvim_create_autocmd("BufWritePre",{
callback = function()
vim.lsp.buf.formatting_sync();

View File

@ -1,6 +1,5 @@
local map = vim.api.nvim_set_keymap
local g = vim.g
local cmd = vim.cmd
local options = {noremap = true}
local remap = {noremap = false}
@ -21,7 +20,7 @@ map("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>", options)
map("n", "<Leader>e", "<cmd>lua vim.diagnostic.open_float()<CR>", options)
map("n", "<Leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", options)
map("n", "<Leader>c", "<cmd>lua vim.lsp.buf.code_action()<CR>", options)
map("n", "<Leader><C-f>", ":Neoformat<CR>", options)
-- map("n", "<Leader><C-f>", ":Neoformat<CR>", options)
map("n", "[d", "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>", options)
map("n", "]d", "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>", options)
map("n", "<leader>t", ":TroubleToggle<CR>", remap)
@ -36,6 +35,9 @@ map("n", "<C-l>", "<C-w>l", options)
map("n", "<A-Left>", ":bprevious<CR>",options);
map("n", "<A-Right>", ":bnext<CR>",options);
-- Backspace Delete like Browser
map('i', '<C-H>', '<Esc>caw', options)
map("n", "Y", "yy", options)
map("n", "<Leader>k", "{", options)
map("n", "<Leader>j", "}", options)

View File

@ -0,0 +1,63 @@
-------------
-- General --
-------------
local set = vim.opt
set.swapfile = false -- Don't use swapfile
set.updatetime = 0 -- Faster completion
set.encoding="utf-8" -- The encoding displayed
set.fileencoding="utf-8" -- The encoding written to file
set.smartindent = true -- Makes indenting smart
set.iskeyword:append("-") -- treat dash separated words as a word text object"
set.clipboard = "unnamedplus" -- Copy paste between vim and everything else
set.smarttab = true -- Makes tabbing smarter will realize you have 2 vs 4
set.expandtab = true -- Converts tabs to spaces
set.autoindent = true -- Good auto indent
set.autochdir = true -- Your working directory will always be the same as your working directory
set.incsearch = true -- sets incremental search
set.shell = "/bin/zsh" -- Set your shell to bash or zsh
set.shortmess:append "sI" -- Disable nvim intro
vim.cmd [[set nobackup]] -- creates a backup file
vim.cmd [[set nowritebackup]] -- creates a backup file i guess
vim.cmd [[set formatoptions-=cro]] -- Stop newline continution of comments
vim.cmd [[set complete+=kspell]] -- auto complete with spellcheck
vim.cmd [[set completeopt=menuone,longest]] -- auto complete menu (It's pretty great)
vim.cmd [[set nocompatible]] -- Disable compatibility to old-time vi
set.mouse = 'a' -- Enable mouse support
---------------
-- Neovim UI --
---------------
set.pumheight = 15 -- Makes popup menu smaller
set.ruler = true -- Show the cursor position all the time
set.splitbelow = true -- Horizontal splits will automatically be below
set.splitright = true -- Vertical splits will automatically be to the right
set.conceallevel = 0 -- So that I can see `` in markdown files
set.tabstop = 2 -- Insert 2 spaces for a tab
set.number = true -- Line numbers
set.background = "dark" -- tell vim what the background color looks like
set.virtualedit = "onemore" -- With This option you can move the cursor one character over the end
set.ignorecase = true -- ignores case when searching
set.smartcase = true -- turns on case sensitive search when letters are capitalized
set.termguicolors = true -- set term gui colors (most terminals support this)
set.laststatus=2 -- Always display the status line
set.title = true -- Show current txt that you editing
set.relativenumber = false -- Vims absolute, relative and hybrid line numbers
set.cursorline = false -- Enable highlighting of the current line
set.shiftwidth = 2 -- Change the number of space characters inserted for indentation
set.showtabline = 1 -- Always show tabs
set.cmdheight = 1 -- More space for displaying messages
vim.cmd [[set nowrap]] -- Display long lines as just one line
vim.cmd [[set noshowmode]] -- We don't need to see things like -- INSERT -- anymore
vim.cmd [[syntax enable]] -- Enables syntax highlighing
vim.cmd [[set t_Co=256]] -- Support 256 colors
-- vim.cmd "set whichwrap+=<,>,[,],h,l" -- Breaks Space-Time Continuum
-----------------
-- Memory, CPU --
-----------------
set.hidden = true -- Required to keep multiple buffers open multiple buffers
set.timeoutlen = 500 -- By default timeoutlen is 1000 ms
set.lazyredraw = true -- Disable lazyredraw
set.synmaxcol = 240 -- Max column for syntax highlight
set.updatetime = 700 -- ms to wait for trigger an event

View File

@ -3,15 +3,18 @@ return require("packer").startup(
-- Let packer manage itself
use "wbthomason/packer.nvim"
use 'lewis6991/impatient.nvim'
-- General Helper Functions
use "nvim-lua/plenary.nvim"
-- Filetype Detection
use "nathom/filetype.nvim"
-- use "nathom/filetype.nvim"
-- Theming Section
-- use 'folke/tokyonight.nvim'
use "EdenEast/nightfox.nvim"
use "nvim-lualine/lualine.nvim"
-- use "xiyaowong/nvim-transparent"
-- Layout Plugins
@ -19,22 +22,22 @@ return require("packer").startup(
use "kyazdani42/nvim-tree.lua"
use "nvim-lua/popup.nvim"
use "mhinz/vim-startify"
use "tpope/vim-fugitive"
-- use "tpope/vim-fugitive"
use "tpope/vim-commentary"
use "tpope/vim-surround"
use "lambdalisue/suda.vim"
-- use "tpope/vim-surround"
-- use "lambdalisue/suda.vim"
use "windwp/nvim-autopairs"
-- Code Navigation
use "alexghergh/nvim-tmux-navigation"
use "dense-analysis/ale"
use "nathanmsmith/nvim-ale-diagnostic"
-- use "alexghergh/nvim-tmux-navigation"
-- use "dense-analysis/ale"
-- use "nathanmsmith/nvim-ale-diagnostic"
use "junegunn/fzf"
use "nvim-telescope/telescope.nvim"
use "gfeiyou/command-center.nvim"
-- Postman like features
use "NTBBloodbath/rest.nvim"
-- use "NTBBloodbath/rest.nvim"
-- Obsidian / Roam like features
-- use "lervag/wiki.vim"
@ -44,7 +47,7 @@ return require("packer").startup(
-- Lsp Errors
use "folke/lsp-colors.nvim"
use "kosayoda/nvim-lightbulb"
use "onsails/lspkind-nvim"
-- use "onsails/lspkind-nvim"
use {
"folke/trouble.nvim",
requires = "kyazdani42/nvim-web-devicons",
@ -54,7 +57,7 @@ return require("packer").startup(
}
-- Syntax / Autocomplete
use "terminalnode/sway-vim-syntax" --sway config syntax
-- use "terminalnode/sway-vim-syntax" --sway config syntax
use "neovim/nvim-lspconfig"
use "hrsh7th/nvim-cmp"
use "hrsh7th/cmp-nvim-lsp"
@ -68,8 +71,8 @@ return require("packer").startup(
use "saadparwaiz1/cmp_luasnip"
use "williamboman/nvim-lsp-installer"
use "nvim-lua/lsp-status.nvim"
use "jose-elias-alvarez/nvim-lsp-ts-utils"
use "neoclide/jsonc.vim"
-- use "jose-elias-alvarez/nvim-lsp-ts-utils"
-- use "neoclide/jsonc.vim"
use "brymer-meneses/grammar-guard.nvim"
use {
"nvim-treesitter/nvim-treesitter",
@ -84,6 +87,8 @@ return require("packer").startup(
-- General Popup Window
use "akinsho/nvim-toggleterm.lua"
use "rktjmp/fwatch.nvim"
-- Database Feature
use "tpope/vim-dadbod"
use "kristijanhusak/vim-dadbod-ui"

View File

@ -1,57 +0,0 @@
local cmd = vim.cmd
local g = vim.g
local function tablelength(T)
local count = 0
for _ in pairs(T) do
count = count + 1
end
return count
end
local function select_client(method)
local all_clients = vim.tbl_values(vim.lsp.buf_get_clients())
local supported_client
local found_client = false
for _, client in ipairs(all_clients) do
local supports = client.supports_method(method)
if supports then
found_client = true
supported_client = client
end
end
if not found_client then
return nil
end
return supported_client
end
g.neoformat_enabled_glsl = {}
function FormattingSync()
vim.cmd("Neoformat")
-- local client = select_client("textDocument/formatting")
-- if client == nil then
-- vim.notify("No LSP Client with formatting connected")
-- end
-- vim.notify("Formatting with LSP")
-- local params = util.make_formatting_params({})
-- local result, err = client.request_sync("textDocument/formatting", params, 500, vim.api.nvim_get_current_buf())
-- if result and result.result then
-- util.apply_text_edits(result.result)
-- elseif err then
-- vim.notify("vim.lsp.buf.formatting_sync: " .. err, vim.log.levels.WARN)
-- end
end
vim.cmd [[command! Format lua FormattingSync()]]
cmd [[
augroup auto_format
au!
au BufWritePre * lua FormattingSync()
augroup END
]]

View File

@ -1,68 +0,0 @@
local Terminal = require("toggleterm.terminal").Terminal
local u = require("utils")
local lazygit =
Terminal:new(
{
cmd = "lazygit",
dir = "git_dir",
direction = "float",
float_opts = {
winblend = 0,
border = "shadow"
},
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", {noremap = true, silent = true})
end,
on_close = function(term)
Terminal:close()
end
}
)
function _lazygit_toggle()
lazygit:toggle()
end
vim.api.nvim_set_keymap("n", "<C-g>", "<cmd>lua _lazygit_toggle()<CR>", {noremap = true, silent = true})
local pnpm =
Terminal:new(
{
cmd = "pnpm dev",
dir = "git_dir",
size = 5,
direction = "vertical",
on_close = function(term)
Terminal:close()
end
}
)
function _pnpm_toggle()
pnpm:toggle()
end
vim.api.nvim_set_keymap("n", "<Leader>d", "<cmd>lua _pnpm_toggle()<CR>", {noremap = true, silent = true})
local nvimConfig =
Terminal:new(
{
cmd = "cd $HOME/.dotfiles && nvim configs/init.lua && cd -",
direction = "float",
on_close = function(term)
Terminal:close()
u.ReloadConfig()
end
}
)
function _nvimConfig_toggle()
nvimConfig:toggle()
end
vim.api.nvim_set_keymap("n", "<Leader><C-i>", "<cmd>lua _nvimConfig_toggle()<CR>", {noremap = true, silent = true})
require("toggleterm").setup {
shade_terminals = true
}

View File

@ -1,85 +0,0 @@
local lorem = {}
local WORDS_IN_SENTENCE = {min = 5, max = 15}
local SENTENCES_IN_PARAGRAPH = {min = 2, max = 7 }
local PARAGRAPHS_IN_TEXT = {min = 2, max = 7 }
local function random_int(min, max)
return math.random(min, max)
end
local BASE_PHRASE = [[
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse rutrum accumsan elit vel auctor.
Praesent sit amet aliquam turpis.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.
Maecenas non erat ut elit sodales commodo.
Nam gravida ipsum quis nulla tempus, quis pulvinar augue tristique.
Nulla massa odio, imperdiet non ultricies tincidunt, viverra sed lorem.
Nulla elementum sapien ut commodo aliquet.
Pellentesque iaculis turpis tellus, eget laoreet augue condimentum vel.
Quisque at risus rhoncus, facilisis tellus nec, tristique dolor.
Maecenas cursus magna eget imperdiet laoreet.
]]
local function get_words(phrase)
local list = {}
for word in phrase:gmatch('%a+') do
table.insert(list, word:lower())
end
return list
end
lorem.__index = lorem
lorem._dict = get_words(BASE_PHRASE)
function lorem:generator(phrase)
if type(phrase) ~= 'string' then
error('First argument of lorem.generator should be a string', 2)
end
local g = {_dict = {}}
for word in phrase:gmatch('%a+') do
table.insert(g._dict, word:lower())
end
if #(g._dict) == 0 then
error('String argument of lorem.generator should contain words', 2)
end
setmetatable(g, self)
return g
end
function lorem:word()
return self._dict[random_int(1, #(self._dict))]
end
function lorem:sentence()
local n = random_int(WORDS_IN_SENTENCE.min, WORDS_IN_SENTENCE.max)
local words = {}
for i = 1, n do
words[i] = self:word()
end
local s = table.concat(words, ' ')
s = s .. "."
s = s:sub(1, 1):upper() .. s:sub(2)
return s
end
function lorem:paragraph()
local n = random_int(SENTENCES_IN_PARAGRAPH.min, SENTENCES_IN_PARAGRAPH.max)
local sentences = {}
for i = 1, n do
sentences[i] = self:sentence()
end
return table.concat(sentences, ' ')
end
function lorem:text()
local n = random_int(PARAGRAPHS_IN_TEXT.min, PARAGRAPHS_IN_TEXT.max)
local paragraphs = {}
for i = 1, n do
paragraphs[i] = self:paragraph()
end
return table.concat(paragraphs, '\n')
end
return lorem

View File

@ -0,0 +1,35 @@
-- see if the file exists
local function file_exists(file)
local f = io.open(file, "rb")
if f then f:close() end
return f ~= nil
end
-- get all lines from a file, returns an empty
-- list/table if the file does not exist
local function line_from(file)
if not file_exists(file) then return {} end
local f = io.open(file) -- 'r' is unnecessary because it's a default value.
local line = f:read() -- '*l' is unnecessary because it's a default value.
f:close()
return line;
end
local filePath = os.getenv("HOME").."/.cache/dark-mode";
local function updateTheme()
local line = line_from(filePath);
if line then
local dark = string.find(line, "dark");
if dark then
vim.cmd("colorscheme nightfox")
else
vim.cmd("colorscheme dayfox")
end
end
end
updateTheme()
local w = vim.loop.new_fs_event()
w:start(filePath, {}, vim.schedule_wrap(updateTheme))

View File

@ -86,9 +86,12 @@ output * bg `find $wallpapers_path -type f | shuf -n 1` fill
#
exec swayidle -w \
timeout 300 '~/.config/sway/lock_screen.sh' \
timeout 600 'swaymsg "output \* dpms off"' \
timeout 600 'swaymsg "output * dpms off"' \
timeout 660 'systemctl suspend' \
resume 'swaymsg "output \* dpms on"'
resume 'swaymsg "output * dpms on"' \
before-sleep '~/.config/sway/lock_screen.sh'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when

View File

@ -7,7 +7,7 @@
"hidden_state": "show",
"modules-left": ["custom/clock", "custom/waybar-mpris"],
"modules-center": ["sway/workspaces", "sway/mode"],
"modules-right": ["pulseaudio", "network", "custom/cpu_speed", "memory", "battery"],
"modules-right": ["custom/theme","pulseaudio", "network", "battery"],
"sway/workspaces": {
"disable-scroll": true,
"all-outputs": false,
@ -27,6 +27,11 @@
"unlocked": ""
}
},
"custom/theme":{
"exec": "~/.config/waybar/theme.sh",
"on-click": "~/.config/waybar/theme.sh --toggle",
"restart-interval": 1,
},
"custom/spotify": {
"exec": "/usr/bin/python3 /home/jim/.config/waybar/mediaplayer.py --player spotify",
"format": "{} ",

215
configs/waybar/dark-mode.sh Executable file
View File

@ -0,0 +1,215 @@
#!/usr/bin/env bash
# https://gitlab.com/wef/dotfiles/-/blob/master/bin/dark-mode
TIME_STAMP="20220227.144601"
# dark-mode [light|dark|refresh]
# sets dark mode on or off
# Copyright (C) 2021 Bob Hepple < bob dot hepple at gmail dot com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# I like to have this called by my
# ~/.config/i3blocks/i3blocks/weather script which runs every 10m and
# knows about sunset and sunrise times.
PROG=$( basename $0 )
KITTY_ONLY=""
[[ "$1" == "--kitty-only" ]] && {
KITTY_ONLY="true"
shift
}
CMD="$1"
DARK_MODE_STATUS_FILE=~/.cache/dark-mode
CURRENT_DARK_MODE=$( cat $DARK_MODE_STATUS_FILE )
case $CMD in
-h|--help)
echo "Usage: $PROG <[on|start|dark]|refresh|[off|stop|light]>"
echo
echo "toggles or refreshes dark-mode for emacs, kitty, gtk and qt"
exit 0
;;
on|start|dark)
CMD="dark"
;;
re*)
CMD="refresh"
;;
*) # off|stop|light
CMD="light"
;;
esac
if [[ "$CMD" == "refresh" ]]; then
CMD="$CURRENT_DARK_MODE"
else
[[ "$CURRENT_DARK_MODE" == "$CMD" ]] && exit 0
fi
# for emacs, these themes can be chosen from the standard ones (in
# custom-theme-load-path) or they can be installed in
# custom-theme-directory (usually ~/.emacs.d)
# They must have a filename of $THEMENAME-theme.el
case "$CMD" in
light)
# light mode
# new_emacs_theme="dichromacy-bh"
# new_emacs_theme="modus-operandi"
#new_emacs_theme="Adwaita" # text background is #ededed !!!
#new_emacs_theme="solarized-light"
# new_emacs_modeline_theme="smart-mode-line-light"
# new_gtk_theme='WhiteSur'
new_gtk_theme='Pop'
#new_gtk_theme='Solarized-Light'
#new_gtk_theme='Crux'
new_icon_theme='WhiteSur'
new_cursor_theme='WhiteSur-cursors'
# new_kitty_theme="$HOME/.config/kitty/Adwaita.conf"
# new_nvim_theme="dayfox"
new_kitty_theme="Atom One Light"
# new_fg='black'
# new_fg='00/00/00'
# new_bg='white'
# new_bg='ff/ff/ff'
BRIGHTNESS=100
TERM_BACKGROUND=light
;;
*)
# dark mode
# new_emacs_theme="dichromacy-dark-bh"
# new_emacs_theme="modus-vivendi"
# new_emacs_theme="manoj-dark-bh"
# new_emacs_theme="solarized-dark"
# new_emacs_modeline_theme="smart-mode-line-dark"
new_gtk_theme='Pop-dark'
#new_gtk_theme='Solarized-Dark'
#new_gtk_theme='Crux-dark'
# 'Breeze' icons are too dark for Adwaita-dark:
new_icon_theme='WhiteSur-dark'
new_cursor_theme='WhiteSur-cursors'
#new_kitty_theme="$HOME/.config/kitty/Adwaita-dark.conf"
new_kitty_theme="Argonaut"
# new_nvim_theme="nightfox"
# new_fg='white'
# new_fg='ff/ff/ff'
# new_bg='#232729'
# new_bg='black'
# new_bg='00/00/00'
BRIGHTNESS=20
TERM_BACKGROUND=dark
;;
esac
(
[[ -z "$KITTY_ONLY" ]] && {
# brightnessctl set $BRIGHTNESS
## look for an emacs running as this user:
#emacs_pid=$(pgrep -u $USER emacs | head -n 1)
#[[ "$emacs_pid" ]] && emacsclient --eval "
# (progn
# (mapcar 'disable-theme custom-enabled-themes)
# (load-theme '$new_emacs_theme t))"
##(load-theme '$new_emacs_modeline_theme))"
f=~/.gtkrc-2.0
[[ -w $f ]] && {
sed -i "s/^gtk-theme-name=.*/gtk-theme-name=\"$new_gtk_theme\"/" $f
sed -i "s/^gtk-icon-theme-name=.*/gtk-icon-theme-name=\"$new_icon_theme\"/" $f
sed -i "s/^gtk-cursor-theme-name=.*/gtk-cursor-theme-name=\"$new_cursor_theme\"/" $f
}
# gtkreload # gtk2 only!
# if ! command -v nvr &> /dev/null
# then
# echo "nvr not installed"
# elif [ "$(pgrep nvim)" != "" ]; then
# echo "new theme $new_nvim_theme"
# nvr --nostart --remote-send ":colorscheme $new_nvim_theme<CR>"
# exit
# fi
f=~/.config/gtk-3.0/settings.ini
[[ -w $f ]] && {
sed -i "s/^gtk-theme-name=.*/gtk-theme-name=$new_gtk_theme/" $f
sed -i "s/^gtk-icon-theme-name=.*/gtk-icon-theme-name=$new_icon_theme/" $f
sed -i "s/^gtk-cursor-theme-name=.*/gtk-cursor-theme-name=$new_cursor_theme/" $f
}
# /usr/libexec/gsd-xsettings notifies gtk3 clients - start it in sway
# these two appear to be completely equivalent:
dconf write /org/gnome/desktop/interface/gtk-theme "'$new_gtk_theme'"
#gsettings set org.gnome.desktop.interface gtk-theme $new_gtk_theme
dconf write /org/gnome/desktop/interface/icon-theme "'$new_icon_theme'"
dconf write /org/gnome/desktop/interface/cursor-theme "'$new_cursor_theme'"
f=~/.config/qt5ct/qt5ct.conf
[[ -w $f ]] && {
sed -i "s/^style=.*/style=$new_gtk_theme/" $f
sed -i "s/^icon-theme=.*/style=$new_icon_theme/" $f
# cursor?
}
}
# requires this in ~/.config/kitty/kitty.conf:
# allow_remote_control yes
# listen_on unix:/tmp/kitty-socket
kitty +kitten themes --reload-in=all $new_kitty_theme
# for SOCK in /tmp/kitty-socket-*; do
# if [[ -r $new_kitty_theme ]]; then
# else
# # this should work for all terms:
# for TERM in /dev/pts/[0-9]*; do
# if [[ -O $TERM ]]; then
# {
# printf "\\033]10;rgb:$new_fg\\033\\\\"
# printf "\\033]11;rgb:$new_bg\\033\\\\"
# } >$TERM
# fi
# done
# # kitty @ --to=unix:$SOCK set_colors --all foreground=$new_fg background=$new_bg
# fi
# done
# for 'low-power' script:
echo $TERM_BACKGROUND > $DARK_MODE_STATUS_FILE
) >/dev/null
# echo "TERM_BACKGROUND=$TERM_BACKGROUND; setup_prompt"
# Local Variables:
# mode: shell-script
# time-stamp-pattern: "4/TIME_STAMP=\"%:y%02m%02d.%02H%02M%02S\""
# eval: (add-hook 'before-save-hook 'time-stamp)
# End:

View File

@ -13,8 +13,8 @@ window#waybar {
window > box {
margin: 6px;
margin-bottom: 0px;
background: #2b303b;
background: black;
background: #2b303b;
background: @theme_bg_color;
padding: 5px 8px;
border-radius: 4px;
/*border-bottom: 3px solid rgba(100, 114, 125, 0.5);*/
@ -23,7 +23,7 @@ window > box {
#workspaces button {
padding: 0px 7px;
padding-left: 4px;
color: white;
color: @theme_fg_color;
background: transparent;
border-radius: 2px;
}
@ -33,8 +33,8 @@ window > box {
}
#workspaces button.focused {
background-color: white;
color: #2b303b;
background-color: @theme_fg_color;
color: @theme_bg_color;
}
#battery, #network, #pulseaudio, #clock, #custom-power, #custom-qbitstats {

24
configs/waybar/theme.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
DARK_MODE_STATUS_FILE=~/.cache/dark-mode
CURRENT_DARK_MODE=$( cat $DARK_MODE_STATUS_FILE )
LIGHT="☀️"
DARK="🌙"
echo "\$1 $1"
echo "MODE: $CURRENT_DARK_MODE"
if [ "$1" == "--toggle" ]; then
if [ $CURRENT_DARK_MODE == "light" ]; then
~/.config/waybar/dark-mode.sh dark
else
~/.config/waybar/dark-mode.sh light
fi
fi
if [ $CURRENT_DARK_MODE != "light" ]; then
echo $DARK
else
echo $LIGHT
fi