summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rwxr-xr-xbin/common/ask38
-rwxr-xr-xbin/extra/aivpn6
-rwxr-xr-xbin/extra/supd14
-rwxr-xr-xbin/guiscripts/clipo8
-rwxr-xr-xbin/guiscripts/clipp8
-rwxr-xr-xbin/guiscripts/clipswap4
-rwxr-xr-xbin/guiscripts/cliptype2
-rwxr-xr-xconfig/X/x11/xinitrc1
-rw-r--r--config/common/mpv/input.conf3
-rw-r--r--config/essentials/nvim/after/plugin/colorizer.lua.disabled (renamed from config/essentials/nvim/after/plugin/colorizer.lua)0
-rw-r--r--config/essentials/nvim/after/plugin/telescope.lua1
-rw-r--r--config/essentials/nvim/after/plugin/treesitter.lua11
-rw-r--r--config/essentials/nvim/lua/user/init.lua3
-rw-r--r--config/essentials/nvim/lua/user/lazy.lua98
-rw-r--r--config/essentials/nvim/lua/user/packer.lua49
-rw-r--r--config/essentials/nvim/lua/user/remap.lua9
-rw-r--r--config/essentials/nvim/lua/user/treesitter.lua44
-rw-r--r--config/essentials/zsh/aliases.sh4
-rw-r--r--config/essentials/zsh/functions.zsh5
-rw-r--r--config/extra/emacs/config.org873
-rw-r--r--config/extra/emacs/early-init.el1
-rw-r--r--config/extra/emacs/init.el24
-rw-r--r--config/extra/emacs/themes/nord-theme.el727
-rw-r--r--config/extra/emacs/themes/tlast-theme.el306
-rw-r--r--config/extra/kitty/kitty.conf2
-rwxr-xr-xconfig/wayland/dwl/startup.sh1
-rw-r--r--config/wayland/hypr/binds.conf21
-rw-r--r--config/wayland/waybar/configs/hyprland.jsonc2
l---------config/wayland/waybar/style.css2
-rw-r--r--config/wayland/waybar/styles/base16.css4
l---------config/wayland/waybar/styles/colors/colors.css2
-rw-r--r--config/wayland/waybar/styles/nord.css7
33 files changed, 2161 insertions, 124 deletions
diff --git a/.gitignore b/.gitignore
index 11392b4..adf0262 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,8 @@ config/hyprland/waybar/colors.css
config/old/vim/plugged/
config/old/vim/viminfo*
config/theme/gtk-3.0/bookmarks
+config/extra/emacs/auto-save-list/
+config/extra/emacs/config.el
+config/extra/emacs/elpaca/
+config/extra/emacs/projectile-bookmarks.eld
+config/extra/emacs/recentf
diff --git a/bin/common/ask b/bin/common/ask
index 9fb04ce..95530f5 100755
--- a/bin/common/ask
+++ b/bin/common/ask
@@ -1,36 +1,4 @@
#!/bin/sh
-
-# requirements
-which pass jq > /dev/null ||
- exit 1
-
-# input
-test -z "${inp:=$@}" &&
- inp="$(cat /dev/stdin)"
-
-# \n\t -> ' ' && "->'
-prompt="$(echo "$inp" | tr "\n\t\"" " '")"
-test -z "$prompt" && exit 1
-
-API_KEY="$(pass tokens/openai-api)"
-model="text-davinci-003"
-tokens="1024"
-temperature=0
-
-data=$(echo \
-'{
- "prompt": "'"$prompt"'",
- "model": "'"$model"'",
- "max_tokens": '$tokens',
- "temperature": '$temperature'
-}')
-
-output=$(curl -s -X POST \
- -H 'Content-Type: application/json' \
- -H "Authorization: Bearer $API_KEY" \
- -d "$data" \
- https://api.openai.com/v1/completions \
- | jq -r '.choices[0].text')
-
-# remove newline
-echo "${output:1}"
+which tgpt >/dev/null || exit 1
+[ "${inp:=$@}" ] || inp="$(cat /dev/stdin)"
+tgpt "$inp"
diff --git a/bin/extra/aivpn b/bin/extra/aivpn
index fd72ffb..3c87ce8 100755
--- a/bin/extra/aivpn
+++ b/bin/extra/aivpn
@@ -33,9 +33,3 @@ ssh vm "rasdial \"vpn.student.ehb.be\""
ssh -f -N \
-L 2222:10.2.160.41:22 \
vm
-
-ssh -t \
- -L 8188:localhost:8188 \
- vm \
- ssh -N -L 8188:localhost:8188 luca@10.2.160.41
-logn "[8188], [2222]"
diff --git a/bin/extra/supd b/bin/extra/supd
index c7e4e8c..9a5ce0c 100755
--- a/bin/extra/supd
+++ b/bin/extra/supd
@@ -20,19 +20,19 @@ do
(
cd "$dir" || return
# is git dir
- git rev-parse > /dev/null 2>&1 || return
- printf '%s: ' "$dir" | >&2 sed "s#$HOME#~#"
- if git "${1:-fetch}" > /dev/null 2>&1
+ if ! git rev-parse > /dev/null 2>&1
then
- printf 'o'
- else
printf 'x\n'
- return
+ exit
fi
+ printf '%s: ' "$dir" | >&2 sed "s#$HOME#~#"
+ git "${1:-fetch}" > /dev/null 2>&1 &&
+ printf 'o' ||
+ printf 'x'
# Show remote state
printf ' %s%s\n' "$(git status --short 2> /dev/null |
awk 'NR==1 {print "(" $1 ")"}')" "$(git branch -v 2>/dev/null |
awk -F '[][]' '/^\*/ {print $2}' |
- sed 's/ahead/↑ /;s/behind/↓ /;s/[^↓↑]*/ /g')"
+ sed 's/ahead/↑ /;s/behind/↓ /;s/[^↓↑]*//g')"
)
done
diff --git a/bin/guiscripts/clipo b/bin/guiscripts/clipo
index e3ae714..39994f9 100755
--- a/bin/guiscripts/clipo
+++ b/bin/guiscripts/clipo
@@ -1,4 +1,6 @@
#!/bin/sh
-[ "$WAYLAND_DISPLAY" ] &&
- wl-paste -n ||
- xclip -o -selection clipboard -r
+[ "$1" = "-p" ] && arg='primary'
+if [ "$WAYLAND_DISPLAY" ]
+then wl-paste -n ${1}
+else xclip -o -selection "${arg:-clipboard}" -r
+fi
diff --git a/bin/guiscripts/clipp b/bin/guiscripts/clipp
index 538f69b..c9e4f51 100755
--- a/bin/guiscripts/clipp
+++ b/bin/guiscripts/clipp
@@ -1,4 +1,6 @@
#!/bin/sh
-[ "$WAYLAND_DISPLAY" ] &&
- wl-copy -n ||
- xclip -selection clipboard -r
+[ "$1" = "-p" ] && arg='primary'
+if [ "$WAYLAND_DISPLAY" ]
+then wl-copy -n $1
+else xclip -selection "${arg:-clipboard}" -r
+fi
diff --git a/bin/guiscripts/clipswap b/bin/guiscripts/clipswap
new file mode 100755
index 0000000..1cae135
--- /dev/null
+++ b/bin/guiscripts/clipswap
@@ -0,0 +1,4 @@
+#!/bin/sh
+paste="$(clipo)"
+clipo -p | clipp
+printf '%s' "$paste" | clipp -p
diff --git a/bin/guiscripts/cliptype b/bin/guiscripts/cliptype
new file mode 100755
index 0000000..e6ac093
--- /dev/null
+++ b/bin/guiscripts/cliptype
@@ -0,0 +1,2 @@
+#!/bin/sh
+clipo | ydotool type -f -
diff --git a/config/X/x11/xinitrc b/config/X/x11/xinitrc
index 4eb34ed..beb33f2 100755
--- a/config/X/x11/xinitrc
+++ b/config/X/x11/xinitrc
@@ -27,6 +27,7 @@ xmodmap -e "keycode 135 = Super_L"
xautolock -time 5 -locker slock &
gammastep -m randr &
slstatus &
+emacs --daemon &
eval "$(keychain --dir "$XDG_CONFIG_HOME/keychain" --eval --quiet --agents gpg,ssh)"
unclutter --timeout 3 --jitter 50 -b
exec startdwm
diff --git a/config/common/mpv/input.conf b/config/common/mpv/input.conf
index 295dd4d..dd2674f 100644
--- a/config/common/mpv/input.conf
+++ b/config/common/mpv/input.conf
@@ -204,3 +204,6 @@ Alt+c cycle sub-visibility # Toggle subtitles
v cycle audio # switch audio track
V cycle audio # switch audio track
ctrl+l cycle-values loop-file "inf" "no" # toggle infinite looping
+
+# Keep open after exit
+P cycle keep-open up
diff --git a/config/essentials/nvim/after/plugin/colorizer.lua b/config/essentials/nvim/after/plugin/colorizer.lua.disabled
index 6ca374f..6ca374f 100644
--- a/config/essentials/nvim/after/plugin/colorizer.lua
+++ b/config/essentials/nvim/after/plugin/colorizer.lua.disabled
diff --git a/config/essentials/nvim/after/plugin/telescope.lua b/config/essentials/nvim/after/plugin/telescope.lua
index 06c5a03..7a2ef34 100644
--- a/config/essentials/nvim/after/plugin/telescope.lua
+++ b/config/essentials/nvim/after/plugin/telescope.lua
@@ -1,4 +1,3 @@
-require('telescope').load_extension('fzf')
require('telescope').load_extension('media_files')
require('telescope').setup({
diff --git a/config/essentials/nvim/after/plugin/treesitter.lua b/config/essentials/nvim/after/plugin/treesitter.lua
deleted file mode 100644
index e18368e..0000000
--- a/config/essentials/nvim/after/plugin/treesitter.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-require'nvim-treesitter.configs'.setup {
- ensure_installed = { "c", "lua", "vim", "diff"},
-
- sync_install = false,
- auto_install = true,
-
- highlight = {
- enable = true,
- additional_vim_regex_highlighting = false,
- }
-}
diff --git a/config/essentials/nvim/lua/user/init.lua b/config/essentials/nvim/lua/user/init.lua
index 2f29b87..f195e4f 100644
--- a/config/essentials/nvim/lua/user/init.lua
+++ b/config/essentials/nvim/lua/user/init.lua
@@ -1,5 +1,6 @@
-require("user.packer")
+require("user.lazy")
require("user.remap")
+require("user.treesitter")
require("user.set")
require("user.cmp")
require("user.zk")
diff --git a/config/essentials/nvim/lua/user/lazy.lua b/config/essentials/nvim/lua/user/lazy.lua
new file mode 100644
index 0000000..5c3148c
--- /dev/null
+++ b/config/essentials/nvim/lua/user/lazy.lua
@@ -0,0 +1,98 @@
+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", -- latest stable release
+ lazypath,
+ })
+end
+vim.opt.rtp:prepend(lazypath)
+
+require("lazy").setup({
+ -- Example using a list of specs with the default options
+ "folke/which-key.nvim",
+
+ -- telescope
+ {
+ 'nvim-telescope/telescope.nvim',
+ tag = '0.1.4',
+ dependencies = { 'nvim-lua/plenary.nvim' }
+ },
+ "nvim-telescope/telescope-ui-select.nvim",
+ "nvim-telescope/telescope-media-files.nvim",
+
+ "nvim-telescope/telescope-symbols.nvim",
+ "theprimeagen/harpoon",
+
+ -- colors
+ "shaunsingh/nord.nvim",
+ { 'uZer/pywal16.nvim', name = 'pywal16' },
+ "norcalli/nvim-colorizer.lua",
+
+ { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' },
+ "nvim-treesitter/playground",
+
+ -- syntax
+ "sheerun/vim-polyglot",
+ "theRealCarneiro/hyprland-vim-syntax",
+
+ "mbbill/undotree",
+
+ "tpope/vim-capslock",
+ "tpope/vim-commentary",
+ -- "tpope/vim-endwise",
+ "tpope/vim-fugitive",
+ "lewis6991/gitsigns.nvim",
+ "tpope/vim-repeat",
+ "tpope/vim-surround",
+ "tpope/vim-vinegar",
+ "m4xshen/autoclose.nvim",
+
+ "christoomey/vim-tmux-navigator",
+
+ -- utils
+ "godlygeek/tabular",
+ "renerocksai/calendar-vim",
+ "ojroques/vim-oscyank",
+ "potamides/pantran.nvim",
+ "alx741/vinfo",
+
+ -- "github/copilot.vim",
+ --
+ {
+ 'https://gitlab.com/itaranto/plantuml.nvim',
+ config = function() require('plantuml').setup() end
+ },
+
+ -- objects
+ "michaeljsmith/vim-indent-object",
+
+ -- completion
+ "neovim/nvim-lspconfig",
+ "hrsh7th/nvim-cmp",
+ "hrsh7th/cmp-nvim-lua",
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ "hrsh7th/cmp-cmdline",
+ "hrsh7th/cmp-nvim-lsp-signature-help",
+ "alvan/vim-closetag",
+
+ -- debugging
+ "mfussenegger/nvim-dap",
+ { "rcarriga/nvim-dap-ui", dependencies = { "mfussenegger/nvim-dap" } },
+
+ -- java
+ "mfussenegger/nvim-jdtls",
+
+ -- snippets
+ "L3MON4D3/LuaSnip",
+ "saadparwaiz1/cmp_luasnip",
+
+ -- notes
+ "renerocksai/telekasten.nvim",
+
+})
diff --git a/config/essentials/nvim/lua/user/packer.lua b/config/essentials/nvim/lua/user/packer.lua
index ed2bbf1..8091d85 100644
--- a/config/essentials/nvim/lua/user/packer.lua
+++ b/config/essentials/nvim/lua/user/packer.lua
@@ -4,11 +4,11 @@ return require('packer').startup(function(use)
-- files
use {
'nvim-telescope/telescope.nvim', tag = '0.1.2',
- requires = { {'nvim-lua/plenary.nvim'} }
+ requires = { { 'nvim-lua/plenary.nvim' } }
}
- use {'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }
- use {'nvim-telescope/telescope-ui-select.nvim' }
- use {'nvim-telescope/telescope-media-files.nvim'}
+ use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }
+ use { 'nvim-telescope/telescope-ui-select.nvim' }
+ use { 'nvim-telescope/telescope-media-files.nvim' }
use('nvim-telescope/telescope-symbols.nvim')
use('theprimeagen/harpoon')
@@ -18,20 +18,11 @@ return require('packer').startup(function(use)
use { 'uZer/pywal16.nvim', as = 'pywal16' }
use('norcalli/nvim-colorizer.lua')
- use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'})
+ use('nvim-treesitter/nvim-treesitter', { run = ':TSUpdate' })
use('nvim-treesitter/playground')
use('theRealCarneiro/hyprland-vim-syntax')
use('mbbill/undotree')
- use {
- "nvim-neo-tree/neo-tree.nvim",
- branch = "v3.x",
- requires = {
- "nvim-lua/plenary.nvim",
- "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
- "MunifTanjim/nui.nvim",
- }
- }
use('tpope/vim-capslock')
use('tpope/vim-commentary')
@@ -45,20 +36,20 @@ return require('packer').startup(function(use)
use('christoomey/vim-tmux-navigator')
- -- utils
- use('godlygeek/tabular')
- use('renerocksai/calendar-vim')
- use('ojroques/vim-oscyank', {branch = "main"})
- use("potamides/pantran.nvim")
- use('alx741/vinfo')
- use('sheerun/vim-polyglot')
- -- use('github/copilot.vim')
- --
- use {
- 'https://gitlab.com/itaranto/plantuml.nvim',
- tag = '*',
- config = function() require('plantuml').setup() end
- }
+ -- utils
+ use('godlygeek/tabular')
+ use('renerocksai/calendar-vim')
+ use('ojroques/vim-oscyank', { branch = "main" })
+ use("potamides/pantran.nvim")
+ use('alx741/vinfo')
+ use('sheerun/vim-polyglot')
+ -- use('github/copilot.vim')
+ --
+ use {
+ 'https://gitlab.com/itaranto/plantuml.nvim',
+ tag = '*',
+ config = function() require('plantuml').setup() end
+ }
-- objects
use('michaeljsmith/vim-indent-object')
@@ -76,7 +67,7 @@ return require('packer').startup(function(use)
-- debugging
use('mfussenegger/nvim-dap')
- use { "rcarriga/nvim-dap-ui", requires = {"mfussenegger/nvim-dap"} }
+ use { "rcarriga/nvim-dap-ui", requires = { "mfussenegger/nvim-dap" } }
-- java
use('mfussenegger/nvim-jdtls')
diff --git a/config/essentials/nvim/lua/user/remap.lua b/config/essentials/nvim/lua/user/remap.lua
index fadca21..0c3d9a6 100644
--- a/config/essentials/nvim/lua/user/remap.lua
+++ b/config/essentials/nvim/lua/user/remap.lua
@@ -54,9 +54,14 @@ end, { noremap = true })
-- utils
vim.keymap.set("i", "<LocalLeader>r", "<cmd>r!echo -n $RANDOM<cr><esc>kJA", { noremap = true })
+
+-- FORMATTING
-- ordered list
vim.keymap.set("n", "<LocalLeader>n", "<C-v>I0. <esc>gvg<C-a>", { noremap = true })
vim.keymap.set("v", "<Leader>u", "<cmd>'<,'>s/^[0-9]\\+\\. //<cr><esc>", { noremap = true })
+-- table
+vim.keymap.set("v", "<LocalLeader>t", "!column -t -s '|' -o '|'<cr>", { noremap = true })
+
-- scripts
vim.keymap.set("n", "<Leader>x", "<cmd>!chmod +x %<cr>", { noremap = true, silent = true})
-- replace
@@ -73,8 +78,8 @@ vim.keymap.set("n", "<LocalLeader>s", function ()
print("sourced.")
end, { noremap = true })
--- Packer
-vim.keymap.set("n", "<Leader>P", "<cmd>PackerSync<cr>", { noremap = true })
+-- Lazy
+vim.keymap.set("n", "<Leader>P", "<cmd>Lazy<cr>", { noremap = true })
-- spelling
vim.keymap.set("n", "<C-s>s", "<cmd>setlocal spell!<cr>", { noremap = true })
diff --git a/config/essentials/nvim/lua/user/treesitter.lua b/config/essentials/nvim/lua/user/treesitter.lua
new file mode 100644
index 0000000..5b1fc5e
--- /dev/null
+++ b/config/essentials/nvim/lua/user/treesitter.lua
@@ -0,0 +1,44 @@
+require'nvim-treesitter.configs'.setup {
+ -- A list of parser names, or "all" (the five listed parsers should always be installed)
+ ensure_installed = { "c", "lua", "vim", "vimdoc", "query" },
+
+ -- Install parsers synchronously (only applied to `ensure_installed`)
+ sync_install = false,
+
+ -- Automatically install missing parsers when entering buffer
+ -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
+ auto_install = true,
+
+ -- List of parsers to ignore installing (or "all")
+ ignore_install = { "javascript" },
+
+ ---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
+ -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
+ indent = {
+ enable = on
+ },
+
+ highlight = {
+ enable = true,
+
+ -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
+ -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
+ -- the name of the parser)
+ -- list of language that will be disabled
+ disable = { "c", "rust" },
+ -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
+ disable = function(lang, buf)
+ local max_filesize = 100 * 1024 -- 100 KB
+ local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
+ if ok and stats and stats.size > max_filesize then
+ return true
+ end
+ end,
+
+ -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
+ -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
+ -- Using this option may slow down your editor, and you may see some duplicate highlights.
+ -- Instead of true it can also be a list of languages
+ additional_vim_regex_highlighting = false,
+ },
+}
diff --git a/config/essentials/zsh/aliases.sh b/config/essentials/zsh/aliases.sh
index 3250021..10e6c23 100644
--- a/config/essentials/zsh/aliases.sh
+++ b/config/essentials/zsh/aliases.sh
@@ -265,6 +265,7 @@ alias czo='cd ~/zot/'
alias cdpw='cd ${PASSWORD_STORE_DIR:-~/.password-store}'
alias cdng='cd /etc/nginx'
alias cdrs='cd /srv/'
+alias cdv='cd ~/vids'
alias god='cd "$(find . -mindepth 1 -maxdepth 1 -type d | fzf)"'
# fzf aliases
@@ -272,7 +273,6 @@ alias ppj='cd ~/proj/personal/"$(find ~/proj/personal -mindepth 1 -maxdepth 1 -t
alias ppjs='cd ~/proj/personal/scripts/"$(find ~/proj/personal/scripts -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | fzf)"'
alias scr='edit_in_dir ~/proj/personal/scripts/'
alias fil='edit_in_dir ~/docs/filios/'
-alias cfg='edit_in_dir ~/src/dotfiles'
alias fzps='ps aux | tail +2 | fzf | tee /dev/stderr | awk '\''{print $2}'\'' | clipp'
alias asf='alias | fzf'
alias fzh="tac $HISTFILE | fzf | tee /dev/stderr | clipp"
@@ -300,6 +300,7 @@ alias dbsmu='rsync -aPz db:/media/basilisk/music/ /media/kilimanjaro/music'
# oh-my-zsh git aliases
alias config='GIT_WORK_TREE=~/src/dotfiles/ GIT_DIR=~/src/dotfiles/.git'
+alias cfg='$EDITOR ~/src/dotfiles/"$(config git ls-files | fzf || exit)"'
alias gmod='git status --short | sed '\''/^\s*M/!d;s/^\s*M\s*//'\'' | fzf | xargs $EDITOR'
alias g='git'
alias ga='git add'
@@ -339,6 +340,7 @@ alias gcasm='git commit --all --signoff --message'
alias gcb='git checkout -b'
alias gcf='git config --list'
alias gcl='git clone'
+alias gclc='git clone "$(clipo)"'
alias gclr='git clone --recurse-submodules'
alias gc1='git clone --depth 1'
alias gclean='git clean --interactive -d'
diff --git a/config/essentials/zsh/functions.zsh b/config/essentials/zsh/functions.zsh
index f498f9e..4145813 100644
--- a/config/essentials/zsh/functions.zsh
+++ b/config/essentials/zsh/functions.zsh
@@ -273,13 +273,10 @@ muttmail()
local config
local mail
config="$HOME/.config/mutt"
-
mail="$(find "$config"/configs -type f -printf '%f\n' | fzf)"
[ "$mail" ] || return 1
- logn "$mail"
ln -sf "$config/configs/$mail" "$config"/muttrc
- log 'Press [Enter] to login.'
- head -n 1 && mutt
+ mutt
}
resize()
diff --git a/config/extra/emacs/config.org b/config/extra/emacs/config.org
new file mode 100644
index 0000000..50d6af6
--- /dev/null
+++ b/config/extra/emacs/config.org
@@ -0,0 +1,873 @@
+#+TITLE: Emacs Configuration
+#+AUTHOR: TlasT
+#+STARTUP: showeverything
+#+OPTIONS: toc:3
+
+* TABLE OF CONTENTS :toc:
+- [[#startup][Startup]]
+ - [[#elpaca-package-manager][Elpaca (Package Manager)]]
+ - [[#evil-mode][Evil Mode]]
+ - [[#keybindings][Keybindings]]
+- [[#helper-functions][Helper functions]]
+ - [[#buffer-move][buffer-move]]
+ - [[#reload-emacs][Reload Emacs]]
+- [[#graphical-tweaks][Graphical tweaks]]
+ - [[#disable-ui-elements][Disable UI elements]]
+ - [[#display-line-numbers-and-truncated-lines][Display Line Numbers and Truncated Lines]]
+ - [[#blinking-cursor][blinking cursor]]
+ - [[#fonts][Fonts]]
+ - [[#setting-the-font-face][Setting the Font Face]]
+ - [[#theme][Theme]]
+ - [[#transparency][Transparency]]
+ - [[#highlight-todo][Highlight TODO]]
+- [[#misc-options][Misc. options]]
+- [[#org-mode][ORG Mode]]
+ - [[#enabling-table-of-contents][Enabling Table of Contents]]
+ - [[#enabling-org-bullets][Enabling Org Bullets]]
+- [[#big-ass-header][Big ass header]]
+- [[#shell][Shell]]
+ - [[#default-shell][Default shell]]
+ - [[#eshell][Eshell]]
+- [[#language-support][Language Support]]
+- [[#packages][Packages]]
+ - [[#dashboard][Dashboard]]
+ - [[#diminish][Diminish]]
+ - [[#dired][Dired]]
+ - [[#git][Git]]
+ - [[#ivy-counsel][Ivy (Counsel)]]
+ - [[#language-support-1][Language Support]]
+ - [[#modeline][Modeline]]
+ - [[#perspective][Perspective]]
+ - [[#projectile][Projectile]]
+ - [[#rainbow-mode][Rainbow Mode]]
+ - [[#rainbow-delimiters][Rainbow Delimiters]]
+ - [[#sudo-edit][Sudo edit]]
+ - [[#tldr][TLDR]]
+ - [[#which-key][Which-Key]]
+
+* Startup
+** Elpaca (Package Manager)
+#+begin_src emacs-lisp
+(defvar elpaca-installer-version 0.6)
+(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
+(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
+(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
+(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
+ :ref nil
+ :files (:defaults (:exclude "extensions"))
+ :build (:not elpaca--activate-package)))
+(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
+ (build (expand-file-name "elpaca/" elpaca-builds-directory))
+ (order (cdr elpaca-order))
+ (default-directory repo))
+ (add-to-list 'load-path (if (file-exists-p build) build repo))
+ (unless (file-exists-p repo)
+ (make-directory repo t)
+ (when (< emacs-major-version 28) (require 'subr-x))
+ (condition-case-unless-debug err
+ (if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
+ ((zerop (call-process "git" nil buffer t "clone"
+ (plist-get order :repo) repo)))
+ ((zerop (call-process "git" nil buffer t "checkout"
+ (or (plist-get order :ref) "--"))))
+ (emacs (concat invocation-directory invocation-name))
+ ((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
+ "--eval" "(byte-recompile-directory \".\" 0 'force)")))
+ ((require 'elpaca))
+ ((elpaca-generate-autoloads "elpaca" repo)))
+ (kill-buffer buffer)
+ (error "%s" (with-current-buffer buffer (buffer-string))))
+((error) (warn "%s" err) (delete-directory repo 'recursive))))
+ (unless (require 'elpaca-autoloads nil t)
+ (require 'elpaca)
+ (elpaca-generate-autoloads "elpaca" repo)
+ (load "./elpaca-autoloads")))
+(add-hook 'after-init-hook #'elpaca-process-queues)
+(elpaca `(,@elpaca-order))
+
+;; Install use-package support
+(elpaca elpaca-use-package
+ ;; Enable :elpaca use-package keyword.
+ (elpaca-use-package-mode)
+ ;; Assume :elpaca t unless otherwise specified.
+ (setq elpaca-use-package-by-default t))
+
+;; Block until current queue processed.
+(elpaca-wait)
+
+;;When installing a package which modifies a form used at the top-level
+;;(e.g. a package which adds a use-package key word),
+;;use `elpaca-wait' to block until that package has been installed/configured.
+;;For example:
+;;(use-package general :demand t)
+;;(elpaca-wait)
+
+;;Turns off elpaca-use-package-mode current declartion
+;;Note this will cause the declaration to be interpreted immediately (not deferred).
+;;Useful for configuring built-in emacs features.
+;;(use-package emacs :elpaca nil :config (setq ring-bell-function #'ignore))
+
+;; Don't install anything. Defer execution of BODY
+;;(elpaca nil (message "deferred"))
+#+end_src
+
+** Evil Mode
+
+#+begin_src emacs-lisp
+ ;; Expands to: (elpaca evil (use-package evil :demand t))
+ (use-package evil
+ :init ;; tweak evil's configuration before loading it
+ (setq evil-want-integration t) ;; This is optional since it's already set to t by default.
+ (setq evil-want-keybinding nil)
+ (setq evil-vsplit-window-right t)
+ (setq evil-split-window-below t)
+ (evil-mode))
+ (use-package evil-collection
+ :after evil
+ :config
+ (setq evil-collection-mode-list '(dashboard dired ibuffer))
+ (evil-collection-init))
+ (use-package evil-tutor)
+ ;; Using RETURN to follow links in Org/Evil
+ ;; Unmap keys in 'evil-maps if not done, (setq org-return-follows-link t) will not work
+ (with-eval-after-load 'evil-maps
+ (define-key evil-motion-state-map (kbd "SPC") nil)
+ (define-key evil-motion-state-map (kbd "RET") nil)
+ (define-key evil-motion-state-map (kbd "TAB") nil))
+ ;; Setting RETURN key in org-mode to follow links
+ (setq org-return-follows-link t)
+
+#+end_src
+
+** Keybindings
+#+begin_src emacs-lisp
+ (use-package general
+ :config
+ (general-evil-setup)
+
+ ;; set up 'SPC' as the global leader key
+ (general-create-definer user/leader-keys
+ :states '(normal insert visual emacs)
+ :keymaps 'override
+ :prefix "SPC" ;; set leader
+ :global-prefix "M-SPC") ;; access leader in insert mode
+
+ (user/leader-keys
+ "SPC" '(counsel-M-x :wk "Counsel M-x")
+ "." '(find-file :wk "Find file")
+ "=" '(perspective-map :wk "Perspective") ;; Lists all the perspective keybindings
+ "TAB TAB" '(comment-line :wk "Comment lines")
+ "u" '(universal-argument :wk "Univeral argument")
+ "s" '(universal-argument :wk "say I want to type somet")
+ "q" '(evil-quit :wk "quit emacs"))
+
+ (user/leader-keys
+ "b" '(:ignore t :wk "Bookmarks/Buffers")
+ "b c" '(clone-indirect-buffer :wk "Create indirect buffer copy in a split")
+ "b C" '(clone-indirect-buffer-other-window :wk "Clone indirect buffer in new window")
+ "b d" '(bookmark-delete :wk "Delete bookmark")
+ "b i" '(ibuffer :wk "Ibuffer")
+ "b k" '(kill-this-buffer :wk "Kill this buffer")
+ "b K" '(kill-some-buffers :wk "Kill multiple buffers")
+ "b l" '(list-bookmarks :wk "List bookmarks")
+ "b m" '(bookmark-set :wk "Set bookmark")
+ "b n" '(next-buffer :wk "Next buffer")
+ "b p" '(previous-buffer :wk "Previous buffer")
+ "b r" '(revert-buffer :wk "Reload buffer")
+ "b R" '(rename-buffer :wk "Rename buffer")
+ "b s" '(basic-save-buffer :wk "Save buffer")
+ "b S" '(save-some-buffers :wk "Save multiple buffers")
+ "b w" '(bookmark-save :wk "Save current bookmarks to bookmark file"))
+
+ (user/leader-keys
+ "d" '(:ignore t :wk "Dired")
+ "d d" '(dired :wk "Open dired")
+ "d j" '(dired-jump :wk "Dired jump to current")
+ "d p" '(peep-dired :wk "Peep-dired"))
+
+ (user/leader-keys
+ "e" '(:ignore t :wk "Eshell/Evaluate/EWW")
+ "e b" '(eval-buffer :wk "Evaluate elisp in buffer")
+ "e d" '(eval-defun :wk "Evaluate defun containing or after point")
+ "e e" '(eval-expression :wk "Evaluate and elisp expression")
+ "e h" '(counsel-esh-history :which-key "Eshell history")
+ "e l" '(eval-last-sexp :wk "Evaluate elisp expression before point")
+ "e r" '(eval-region :wk "Evaluate elisp in region")
+ "e R" '(eww-reload :which-key "Reload current page in EWW")
+ "e s" '(eshell :which-key "Eshell")
+ "e w" '(eww :which-key "EWW emacs web wowser"))
+
+ (user/leader-keys
+ "f" '(:ignore t :wk "Files")
+ "f c" '((lambda () (interactive)
+ (find-file (expand-file-name "config.org" user-emacs-directory)))
+ :wk "Open emacs config")
+ "f d" '(find-grep-dired :wk "Search for string in files in DIR")
+ "f e" '((lambda () (interactive)
+ (dired user-emacs-directory))
+ :wk "Open user-emacs-directory in dired")
+ "f i" '((lambda () (interactive)
+ (find-file (expand-file-name "init.el" user-emacs-directory)))
+ :wk "Open emacs init.el")
+ "f g" '(counsel-grep-or-swiper :wk "Search for string current file")
+ "f j" '(counsel-file-jump :wk "Jump to a file below current directory")
+ "f l" '(counsel-locate :wk "Locate a file")
+ "f r" '(counsel-recentf :wk "Find recent files")
+ "f w" '(evil-write :wk "Write current buffer"))
+
+ (user/leader-keys
+ "g" '(:ignore t :wk "Git")
+ "g /" '(magit-displatch :wk "Magit dispatch")
+ "g ." '(magit-file-displatch :wk "Magit file dispatch")
+ "g b" '(magit-branch-checkout :wk "Switch branch")
+ "g c" '(:ignore t :wk "Create")
+ "g c b" '(magit-branch-and-checkout :wk "Create branch and checkout")
+ "g c c" '(magit-commit-create :wk "Create commit")
+ "g c f" '(magit-commit-fixup :wk "Create fixup commit")
+ "g C" '(magit-clone :wk "Clone repo")
+ "g f" '(:ignore t :wk "Find")
+ "g f c" '(magit-show-commit :wk "Show commit")
+ "g f f" '(magit-find-file :wk "Magit find file")
+ "g f g" '(magit-find-git-config-file :wk "Find gitconfig file")
+ "g F" '(magit-fetch :wk "Git fetch")
+ "g g" '(magit-status :wk "Magit status")
+ "g i" '(magit-init :wk "Initialize git repo")
+ "g l" '(magit-log-buffer-file :wk "Magit buffer log")
+ "g r" '(vc-revert :wk "Git revert file")
+ "g s" '(magit-stage-file :wk "Git stage file")
+ "g t" '(git-timemachine :wk "Git time machine")
+ "g u" '(magit-stage-file :wk "Git unstage file"))
+
+ (user/leader-keys
+ "h" '(:ignore t :wk "Help")
+ "h a" '(counsel-apropos :wk "Apropos")
+ "h b" '(describe-bindings :wk "Describe bindings")
+ "h c" '(describe-char :wk "Describe character under cursor")
+ "h d" '(:ignore t :wk "Emacs documentation")
+ "h d a" '(about-emacs :wk "About Emacs")
+ "h d d" '(view-emacs-debugging :wk "View Emacs debugging")
+ "h d f" '(view-emacs-FAQ :wk "View Emacs FAQ")
+ "h d m" '(info-emacs-manual :wk "The Emacs manual")
+ "h d n" '(view-emacs-news :wk "View Emacs news")
+ "h d o" '(describe-distribution :wk "How to obtain Emacs")
+ "h d p" '(view-emacs-problems :wk "View Emacs problems")
+ "h d t" '(view-emacs-todo :wk "View Emacs todo")
+ "h d w" '(describe-no-warranty :wk "Describe no warranty")
+ "h e" '(view-echo-area-messages :wk "View echo area messages")
+ "h f" '(describe-function :wk "Describe function")
+ "h F" '(describe-face :wk "Describe face")
+ "h g" '(describe-gnu-project :wk "Describe GNU Project")
+ "h i" '(info :wk "Info")
+ "h I" '(describe-input-method :wk "Describe input method")
+ "h k" '(describe-key :wk "Describe key")
+ "h l" '(view-lossage :wk "Display recent keystrokes and the commands run")
+ "h L" '(describe-language-environment :wk "Describe language environment")
+ "h m" '(describe-mode :wk "Describe mode")
+ "h r" '(:ignore t :wk "Reload")
+ "h r r" '((lambda () (interactive)
+ (load-file (expand-file-name "init.el" user-emacs-directory))
+ (ignore (elpaca-process-queues)))
+ :wk "Reload emacs config")
+ "h t" '(load-theme :wk "Load theme")
+ "h v" '(describe-variable :wk "Describe variable")
+ "h w" '(where-is :wk "Prints keybinding for command if set")
+ "h x" '(describe-command :wk "Display full documentation for command"))
+
+ (user/leader-keys
+ "l" '(:ignore t :wk "load")
+ "l t" '(load-theme :wk "load theme"))
+
+ ;; org mode
+ (user/leader-keys
+ "m" '(:ignore t :wk "Org")
+ "m a" '(org-agenda :wk "Org agenda")
+ "m e" '(org-export-dispatch :wk "Org export dispatch")
+ "m i" '(org-toggle-item :wk "Org toggle item")
+ "m t" '(org-todo :wk "Org todo")
+ "m B" '(org-babel-tangle :wk "Org babel tangle")
+ "m T" '(org-todo-list :wk "Org todo list"))
+ (user/leader-keys
+ "m b" '(:ignore t :wk "Tables")
+ "m b -" '(org-table-insert-hline :wk "Insert hline in table"))
+ (user/leader-keys
+ "m d" '(:ignore t :wk "Date/deadline")
+ "m d t" '(org-time-stamp :wk "Org time stamp"))
+
+ (user/leader-keys
+ "o" '(:ignore t :wk "Open")
+ "o d" '(dashboard-open :wk "Dashboard")
+ ;; "o e" '(elfeed :wk "Elfeed RSS")
+ "o f" '(make-frame :wk "Open buffer in new frame")
+ "o F" '(select-frame-by-name :wk "Select frame by name")
+ "o s" '(shell :wk "open shell"))
+
+ (user/leader-keys
+ "p" '(projectile-command-map :wk "Projectile"))
+
+ ;; FIXME: fix the error here
+ ;; (user/leader-keys
+ ;; "s" '(:ignore t :wk "Search")
+ ;; "s d" '(dictionary-search :wk "Search dictionary")
+ ;; "s m" '(man :wk "Man pages")
+ ;; "s t" '(tldr :wk "Lookup TLDR docs for a command")
+ ;; "s w" '(woman :wk "Similar to man but doesn't require man")
+ ;; )
+
+ (user/leader-keys
+ "t" '(:ignore t :wk "Toggle")
+ "t l" '(display-line-numbers-mode :wk "Toggle line numbers")
+ "t t" '(visual-line-mode :wk "Toggle truncated lines")
+ "t" '(:ignore t :wk "Toggle")
+ "t e" '(eshell-toggle :wk "Toggle eshell")
+ ;; "t f" '(flycheck-mode :wk "Toggle flycheck")
+ "t o" '(org-mode :wk "Toggle org mode")
+ "t r" '(rainbow-mode :wk "Toggle rainbow mode")
+ "t t" '(visual-line-mode :wk "Toggle truncated lines"))
+
+ (user/leader-keys
+ "w" '(:ignore t :wk "Windows")
+ ;; Window splits
+ "w c" '(evil-window-delete :wk "Close window")
+ "w n" '(evil-window-new :wk "New window")
+ "w s" '(evil-window-split :wk "Horizontal split window")
+ "w v" '(evil-window-vsplit :wk "Vertical split window")
+ ;; Window motions
+ "w h" '(evil-window-left :wk "Window left")
+ "w j" '(evil-window-down :wk "Window down")
+ "w k" '(evil-window-up :wk "Window up")
+ "w l" '(evil-window-right :wk "Window right")
+ "w w" '(evil-window-next :wk "Goto next window")
+ ;; Move Windows
+ "w H" '(buf-move-left :wk "Buffer move left")
+ "w J" '(buf-move-down :wk "Buffer move down")
+ "w K" '(buf-move-up :wk "Buffer move up")
+ "w L" '(buf-move-right :wk "Buffer move right"))
+ )
+
+#+end_src
+
+Zooming in and out
+#+begin_src emacs-lisp
+(global-set-key (kbd "C-=") 'text-scale-increase)
+(global-set-key (kbd "C--") 'text-scale-decrease)
+(global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
+(global-set-key (kbd "<C-wheel-down>") 'text-scale-decrease)
+#+end_src
+
+
+* Helper functions
+** buffer-move
+Creating some functions to allow us to easily move windows (splits) around. The following block of code was taken from buffer-move.el found on the EmacsWiki:
+https://www.emacswiki.org/emacs/buffer-move.el
+
+#+begin_src emacs-lisp
+(require 'windmove)
+
+;;;###autoload
+(defun buf-move-up ()
+ "Swap the current buffer and the buffer above the split.
+If there is no split, ie now window above the current one, an
+error is signaled."
+;; "Switches between the current buffer, and the buffer above the
+;; split, if possible."
+ (interactive)
+ (let* ((other-win (windmove-find-other-window 'up))
+ (buf-this-buf (window-buffer (selected-window))))
+ (if (null other-win)
+ (error "No window above this one")
+ ;; swap top with this one
+ (set-window-buffer (selected-window) (window-buffer other-win))
+ ;; move this one to top
+ (set-window-buffer other-win buf-this-buf)
+ (select-window other-win))))
+
+;;;###autoload
+(defun buf-move-down ()
+"Swap the current buffer and the buffer under the split.
+If there is no split, ie now window under the current one, an
+error is signaled."
+ (interactive)
+ (let* ((other-win (windmove-find-other-window 'down))
+ (buf-this-buf (window-buffer (selected-window))))
+ (if (or (null other-win)
+ (string-match "^ \\*Minibuf" (buffer-name (window-buffer other-win))))
+ (error "No window under this one")
+ ;; swap top with this one
+ (set-window-buffer (selected-window) (window-buffer other-win))
+ ;; move this one to top
+ (set-window-buffer other-win buf-this-buf)
+ (select-window other-win))))
+
+;;;###autoload
+(defun buf-move-left ()
+"Swap the current buffer and the buffer on the left of the split.
+If there is no split, ie now window on the left of the current
+one, an error is signaled."
+ (interactive)
+ (let* ((other-win (windmove-find-other-window 'left))
+ (buf-this-buf (window-buffer (selected-window))))
+ (if (null other-win)
+ (error "No left split")
+ ;; swap top with this one
+ (set-window-buffer (selected-window) (window-buffer other-win))
+ ;; move this one to top
+ (set-window-buffer other-win buf-this-buf)
+ (select-window other-win))))
+
+;;;###autoload
+(defun buf-move-right ()
+"Swap the current buffer and the buffer on the right of the split.
+If there is no split, ie now window on the right of the current
+one, an error is signaled."
+ (interactive)
+ (let* ((other-win (windmove-find-other-window 'right))
+ (buf-this-buf (window-buffer (selected-window))))
+ (if (null other-win)
+ (error "No right split")
+ ;; swap top with this one
+ (set-window-buffer (selected-window) (window-buffer other-win))
+ ;; move this one to top
+ (set-window-buffer other-win buf-this-buf)
+ (select-window other-win))))
+#+end_src
+
+** Reload Emacs
+This is just an example of how to create a simple function in Emacs. Use this function to reload Emacs after adding changes to the config. Yes, I am loading the user-init-file twice in this function, which is a hack because for some reason, just loading the user-init-file once does not work properly.
+
+#+begin_src emacs-lisp
+(defun reload-init-file ()
+ (interactive)
+ (load-file user-init-file)
+ (load-file user-init-file))
+#+end_src
+
+
+* Graphical tweaks
+** Disable UI elements
+#+begin_src emacs-lisp
+(menu-bar-mode -1)
+(tool-bar-mode -1)
+(scroll-bar-mode -1)
+#+end_src
+
+** Display Line Numbers and Truncated Lines
+#+begin_src emacs-lisp
+(global-display-line-numbers-mode 1)
+(global-visual-line-mode t)
+#+end_src
+** blinking cursor
+#+begin_src emacs-lisp
+ (setq blink-cursor-mode nil)
+#+end_src
+
+** Fonts
+Defining the various fonts that Emacs will use.
+
+** Setting the Font Face
+#+begin_src emacs-lisp
+ (set-face-attribute 'default nil
+ :font "JetBrains Mono"
+ :height 105
+ :weight 'medium)
+ (set-face-attribute 'variable-pitch nil
+ :font "Ubuntu"
+ :height 115
+ :weight 'medium)
+ (set-face-attribute 'fixed-pitch nil
+ :font "JetBrains Mono"
+ :height 105
+ :weight 'medium)
+ ;; Makes commented text and keywords italics.
+ ;; This is working in emacsclient but not emacs.
+ ;; Your font must have an italic face available.
+ (set-face-attribute 'font-lock-comment-face nil
+ :slant 'italic)
+ (set-face-attribute 'font-lock-keyword-face nil
+ :slant 'italic)
+
+ ;; This sets the default font on all graphical frames created after restarting Emacs.
+ ;; Does the same thing as 'set-face-attribute default' above, but emacsclient fonts
+ ;; are not right unless I also add this method of setting the default font.
+ (add-to-list 'default-frame-alist '(font . "JetBrains Mono-11"))
+
+ ;; Uncomment the following line if line spacing needs adjusting.
+ (setq-default line-spacing 0.12)
+
+#+end_src
+
+** Theme
+
+How to make thet theme work even in daemon mode: (https://stackoverflow.com/questions/18904529/after-emacs-deamon-i-can-not-see-new-theme-in-emacsclient-frame-it-works-fr)
+#+begin_src emacs-lisp :noeval
+ (add-to-list 'custom-theme-load-path (expand-file-name "themes/" user-emacs-directory))
+ (use-package doom-themes
+ :config
+ (setq doom-themes-enable-bold t
+ doom-themes-enable-italic t)
+ (load-theme 'doom-nord t)
+ (doom-themes-org-config))
+#+end_src
+
+** Transparency
+
+#+begin_src emacs-lisp
+ (add-to-list 'default-frame-alist '(alpha-background . 96))
+#+end_src
+
+** Highlight TODO
+Adding highlights to TODO and related words.
+
+#+begin_src emacs-lisp
+(use-package hl-todo
+ :hook ((org-mode . hl-todo-mode)
+ (prog-mode . hl-todo-mode))
+ :config
+ (setq hl-todo-highlight-punctuation ":"
+ hl-todo-keyword-faces
+ `(("TODO" warning bold)
+ ("FIXME" error bold)
+ ("HACK" font-lock-constant-face bold)
+ ("REVIEW" font-lock-keyword-face bold)
+ ("NOTE" success bold)
+ ("DEPRECATED" font-lock-doc-face bold))))
+
+#+end_src
+
+
+* Misc. options
+
+#+begin_src emacs-lisp
+
+ ;; move backup files to trash instead of same directory
+ (setq backup-directory-alist '((".*" . "~/.local/share/Trash/files")))
+
+ ;; escape minibuffer with one [escape]
+ (global-set-key [escape] 'keyboard-escape-quit)
+
+
+ ;; Automatically show changes if the file has changed
+ (global-auto-revert-mode t)
+
+ ;; You can select text and delete it by typing.
+ (delete-selection-mode 1)
+
+ ;; Turns on automatic parens pairing
+ (electric-pair-mode 1)
+ ;; The following prevents <> from auto-pairing when electric-pair-mode is on.
+ ;; Otherwise, org-tempo is broken when you try to <s TAB...
+ (add-hook 'org-mode-hook (lambda ()
+ (setq-local electric-pair-inhibit-predicate
+ `(lambda (c)
+ (if (char-equal c ?<) t (,electric-pair-inhibit-predicate c))))))
+
+ ;; display new page when scrolline 1 line from the bottom
+ (setq scroll-margin 1)
+#+end_src
+
+* ORG Mode
+** Enabling Table of Contents
+#+begin_src emacs-lisp
+ (use-package toc-org
+ :commands toc-org-enable
+ :init (add-hook 'org-mode-hook 'toc-org-enable))
+#+end_src
+
+** Enabling Org Bullets
+Org-bullets gives us attractive bullets rather than asterisks.
+
+#+begin_src emacs-lisp
+ (add-hook 'org-mode-hook 'org-indent-mode)
+ (use-package org-bullets)
+ (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
+#+end_src
+
+** Org Level Headers
+#+begin_src emacs-lisp
+ (custom-set-faces
+ '(org-level-1 ((t (:inherit outline-1 :height 1.25))))
+ '(org-level-2 ((t (:inherit outline-2 :height 1.15))))
+ '(org-level-3 ((t (:inherit outline-3 :height 1.10))))
+ '(org-level-4 ((t (:inherit outline-4 :height 1.05))))
+ '(org-level-5 ((t (:inherit outline-5 :height 1.00))))
+ '(org-level-6 ((t (:inherit outline-5 :height 1.00))))
+ '(org-level-7 ((t (:inherit outline-5 :height 1.00)))))
+#+end_src
+
+| Typing the below + TAB | Expands to ... |
+|------------------------+-----------------------------------------|
+| <a | '#+BEGIN_EXPORT ascii' … '#+END_EXPORT |
+| <c | '#+BEGIN_CENTER' … '#+END_CENTER' |
+| <C | '#+BEGIN_COMMENT' … '#+END_COMMENT' |
+| <e | '#+BEGIN_EXAMPLE' … '#+END_EXAMPLE' |
+| <E | '#+BEGIN_EXPORT' … '#+END_EXPORT' |
+| <h | '#+BEGIN_EXPORT html' … '#+END_EXPORT' |
+| <l | '#+BEGIN_EXPORT latex' … '#+END_EXPORT' |
+| <q | '#+BEGIN_QUOTE' … '#+END_QUOTE' |
+| <s | '#+BEGIN_SRC' … '#+END_SRC' |
+| <v | '#+BEGIN_VERSE' … '#+END_VERSE' |
+
+
+#+begin_src emacs-lisp
+(require 'org-tempo)
+#+end_src
+
+
+* Shell
+
+** Default shell
+#+begin_src emacs-lisp
+ (setq explicit-shell-file-name "/usr/bin/bash")
+ (setq shell-file-name "bash")
+#+end_src
+
+** Eshell
+Eshell is an Emacs 'shell' that is written in Elisp.
+
+#+begin_src emacs-lisp
+(use-package eshell-syntax-highlighting
+ :after esh-mode
+ :config
+ (eshell-syntax-highlighting-global-mode +1))
+
+;; eshell-syntax-highlighting -- adds fish/zsh-like syntax highlighting.
+;; eshell-rc-script -- your profile for eshell; like a bashrc for eshell.
+;; eshell-aliases-file -- sets an aliases file for the eshell.
+
+(setq eshell-rc-script (concat user-emacs-directory "eshell/profile")
+ eshell-aliases-file (concat user-emacs-directory "eshell/aliases")
+ eshell-history-size 5000
+ eshell-buffer-maximum-lines 5000
+ eshell-hist-ignoredups t
+ eshell-scroll-to-bottom-on-input t
+ eshell-destroy-buffer-when-process-dies t
+ eshell-visual-commands'("bash" "fish" "htop" "ssh" "top" "zsh"))
+#+end_src
+
+
+* Language Support
+#+begin_src emacs-lisp
+ (use-package php-mode)
+
+#+end_src
+
+
+* Packages
+
+** Dashboard
+Emacs Dashboard is an extensible startup screen showing you recent files, bookmarks, agenda items and an Emacs banner.
+
+#+begin_src emacs-lisp
+ (use-package dashboard
+ :ensure t
+ :init
+ (setq initial-buffer-choice 'dashboard-open)
+ (setq dashboard-set-heading-icons nil)
+ (setq dashboard-set-file-icons nil)
+ (setq dashboard-banner-logo-title "Emacs Is More Than A Text Editor!")
+ (setq dashboard-startup-banner 'logo) ;; use standard emacs logo as banner
+ ;; (setq dashboard-startup-banner "/home/aluc/.config/emacs/images/emacs-dash.png") ;; use custom image as banner
+ (setq dashboard-center-content nil) ;; set to 't' for centered content
+ (setq dashboard-items '((recents . 5)
+ (agenda . 5 )
+ (bookmarks . 3)
+ (projects . 3)
+ (registers . 3)))
+ :config
+ (dashboard-setup-startup-hook))
+#+end_src
+
+** Diminish
+This package implements hiding or abbreviation of the modeline displays (lighters) of minor-modes. With this package installed, you can add ':diminish' to any use-package block to hide that particular mode in the modeline.
+
+#+begin_src emacs-lisp
+(use-package diminish)
+
+#+end_src
+
+** Dired
+*** dired-open
+#+begin_src emacs-lisp
+ (use-package dired-open
+ :config
+ (setq dired-open-extensions '(("gif" . "imv")
+ ("jpg" . "imv")
+ ("png" . "imv")
+ ("mkv" . "mpv")
+ ("mp4" . "mpv"))))
+
+#+end_src
+*** peep-dired
+#+begin_src emacs-lisp
+ (use-package peep-dired
+ :after dired
+ :hook (evil-normalize-keymaps . peep-dired-hook)
+ :config
+ (evil-define-key 'normal dired-mode-map (kbd "h") 'dired-up-directory)
+ (evil-define-key 'normal dired-mode-map (kbd "l") 'dired-open-file) ; use dired-find-file instead if not using dired-open package
+ (evil-define-key 'normal peep-dired-mode-map (kbd "j") 'peep-dired-next-file)
+ (evil-define-key 'normal peep-dired-mode-map (kbd "k") 'peep-dired-prev-file))
+#+end_src
+
+** Git
+*** Git Time Machine
+[[https://github.com/emacsmirror/git-timemachine][git-timemachine]] is a program that allows you to move backwards and forwards through a file's commits. 'SPC g t' will open the time machine on a file if it is in a git repo. Then, while in normal mode, you can use 'CTRL-j' and 'CTRL-k' to move backwards and forwards through the commits.
+
+
+#+begin_src emacs-lisp
+(use-package git-timemachine
+ :after git-timemachine
+ :hook (evil-normalize-keymaps . git-timemachine-hook)
+ :config
+ (evil-define-key 'normal git-timemachine-mode-map (kbd "C-j") 'git-timemachine-show-previous-revision)
+ (evil-define-key 'normal git-timemachine-mode-map (kbd "C-k") 'git-timemachine-show-next-revision)
+)
+#+end_src
+
+*** Magit
+[[https://magit.vc/manual/][Magit]] is a full-featured git client for Emacs.
+
+#+begin_src emacs-lisp
+(use-package magit)
+
+#+end_src
+
+** Ivy (Counsel)
++ Ivy, a generic completion mechanism for Emacs.
++ Counsel, a collection of Ivy-enhanced versions of common Emacs commands.
++ Ivy-rich allows us to add descriptions alongside the commands in M-x.
+#+begin_src emacs-lisp
+ (use-package counsel
+ :diminish
+ :after ivy
+ :config (counsel-mode))
+
+ (use-package ivy
+ :diminish
+ :custom
+ (setq ivy-use-virtual-buffers t)
+ (setq ivy-count-format "(%d/%d) ")
+ (setq enable-recursive-minibuffers t)
+ :config
+ (ivy-mode))
+
+ (use-package ivy-rich
+ :after ivy
+ :ensure t
+ :init (ivy-rich-mode 1) ;; this gets us descriptions in M-x.
+ :custom
+ (ivy-virtual-abbreviate 'full
+ ivy-rich-switch-buffer-align-virtual-buffer t
+ ivy-rich-path-style 'abbrev)
+ :config
+ (ivy-set-display-transformer 'ivy-switch-buffer
+ 'ivy-rich-switch-buffer-transformer))
+
+#+end_src
+
+** Language Support
+** Modeline
+The modeline is the bottom status bar that appears in Emacs windows. While you can create your own custom modeline, why go to the trouble when Doom Emacs already has a nice modeline package available. For more information on what is available to configure in the Doom modeline, check out: [[https://github.com/seagle0128/doom-modeline][Doom Modeline]]
+
+#+begin_src emacs-lisp
+(use-package doom-modeline
+ :ensure t
+ :init (doom-modeline-mode 1)
+ :config
+ (setq doom-modeline-height 24 ;; sets modeline height
+ doom-modeline-bar-width 3 ;; sets right bar width
+ doom-modeline-persp-name t ;; adds perspective name to modeline
+ doom-modeline-persp-icon nil)) ;; remove folder icon next to persp name
+
+#+end_src
+
+** Perspective
+[[https://github.com/nex3/perspective-el][Perspective]] provides multiple named workspaces (or "perspectives") in Emacs, similar to multiple desktops in window managers. Each perspective has its own buffer list and its own window layout, along with some other isolated niceties, like the [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref.html][xref]] ring.
+
+#+begin_src emacs-lisp
+ (use-package perspective
+ :custom
+ ;; helps suppress an annoying warning message.
+ (persp-mode-prefix-key (kbd "C-c M-p"))
+ :init
+ (persp-mode)
+ :config
+ ;; Sets a file to write to when we save states
+ (setq persp-state-default-file (expand-file-name "sessions" user-emacs-directory)))
+
+ ;; This will group buffers by persp-name in ibuffer.
+ (add-hook 'ibuffer-hook
+ (lambda ()
+ (persp-ibuffer-set-filter-groups)
+ (unless (eq ibuffer-sorting-mode 'alphabetic)
+ (ibuffer-do-sort-by-alphabetic))))
+
+ ;; Automatically save perspective states to file when Emacs exits.
+ (add-hook 'kill-emacs-hook #'persp-state-save)
+
+#+end_src
+
+** Projectile
+#+begin_src emacs-lisp
+(use-package projectile
+ :config
+ (projectile-mode 1))
+#+end_src
+
+** Rainbow Mode
+Display the actual color as a background for any hex color value (ex. #ffffff). The code block below enables rainbow-mode in all programming modes (prog-mode) as well as org-mode, which is why rainbow works in this document.
+
+#+begin_src emacs-lisp
+ (use-package rainbow-mode
+ :diminish
+ :hook
+ ((org-mode prog-mode) . rainbow-mode))
+#+end_src
+
+** Rainbow Delimiters
+Adding rainbow coloring to parentheses.
+
+#+begin_src emacs-lisp
+(use-package rainbow-delimiters
+ :hook ((emacs-lisp-mode . rainbow-delimiters-mode)
+ (clojure-mode . rainbow-delimiters-mode)))
+
+#+end_src
+
+** Sudo edit
+[[https://github.com/nflath/sudo-edit][sudo-edit]] gives us the ability to open files with sudo privileges or switch over to editing with sudo privileges if we initially opened the file without such privileges.
+
+#+begin_src emacs-lisp
+(use-package sudo-edit
+ :config
+ (user/leader-keys
+ "fu" '(sudo-edit-find-file :wk "Sudo find file")
+ "fU" '(sudo-edit :wk "Sudo edit file")))
+#+end_src
+
+** TLDR
+
+#+begin_src emacs-lisp
+(use-package tldr)
+
+#+end_src
+
+** Which-Key
+#+begin_src emacs-lisp
+ (use-package which-key
+ :init
+ (which-key-mode 1)
+ :config
+ (setq which-key-side-window-location 'bottom
+ which-key-sort-order #'which-key-key-order-alpha
+ which-key-sort-uppercase-first nil
+ which-key-add-column-padding 1
+ which-key-max-display-columns nil
+ which-key-min-display-lines 6
+ which-key-side-window-slot -10
+ which-key-side-window-max-height 0.25
+ which-key-idle-delay 0.8
+ which-key-max-description-length 25
+ which-key-allow-imprecise-window-fit nil
+ which-key-separator " → " ))
+#+end_src
+
diff --git a/config/extra/emacs/early-init.el b/config/extra/emacs/early-init.el
new file mode 100644
index 0000000..512068a
--- /dev/null
+++ b/config/extra/emacs/early-init.el
@@ -0,0 +1 @@
+(setq package-enable-at-startup nil)
diff --git a/config/extra/emacs/init.el b/config/extra/emacs/init.el
new file mode 100644
index 0000000..537edcf
--- /dev/null
+++ b/config/extra/emacs/init.el
@@ -0,0 +1,24 @@
+(org-babel-load-file
+ (expand-file-name
+ "config.org"
+ user-emacs-directory))
+(custom-set-variables
+ ;; custom-set-variables was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(custom-safe-themes
+ '("88f7ee5594021c60a4a6a1c275614103de8c1435d6d08cc58882f920e0cec65e" "4c7228157ba3a48c288ad8ef83c490b94cb29ef01236205e360c2c4db200bb18" default))
+ '(package-selected-packages '(doom-modeline)))
+(custom-set-faces
+ ;; custom-set-faces was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(org-level-1 ((t (:inherit outline-1 :height 1.25))))
+ '(org-level-2 ((t (:inherit outline-2 :height 1.15))))
+ '(org-level-3 ((t (:inherit outline-3 :height 1.1))))
+ '(org-level-4 ((t (:inherit outline-4 :height 1.0))))
+ '(org-level-5 ((t (:inherit outline-5 :height 1.0))))
+ '(org-level-6 ((t (:inherit outline-5 :height 1.0))))
+ '(org-level-7 ((t (:inherit outline-5 :height 1.0)))))
diff --git a/config/extra/emacs/themes/nord-theme.el b/config/extra/emacs/themes/nord-theme.el
new file mode 100644
index 0000000..2e2d84d
--- /dev/null
+++ b/config/extra/emacs/themes/nord-theme.el
@@ -0,0 +1,727 @@
+;;; nord-theme.el --- An arctic, north-bluish clean and elegant theme
+
+;; Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
+
+;; Title: Nord Theme
+;; Project: nord-emacs
+;; Version: 0.5.0
+;; URL: https://github.com/nordtheme/emacs
+;; Author: Sven Greb <development@svengreb.de>
+;; Package-Requires: ((emacs "24"))
+;; License: MIT
+
+;;; Commentary:
+
+;; Nord is a 16 colorspace theme build to run in GUI- and terminal
+;; mode with support for many third-party syntax- and UI packages.
+
+;;; References:
+;; Awesome Emacs
+;; https://github.com/emacs-tw/awesome-emacs
+;; GNU ELPA
+;; https://elpa.gnu.org
+;; GNU Emacs
+;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Custom-Themes.html
+;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Creating-Custom-Themes.html
+;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Faces.html
+;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Standard-Faces.html
+;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Face-Customization.html
+;; https://www.gnu.org/software/emacs/manual/html_node/elisp/Face-Attributes.html
+;; https://www.gnu.org/software/emacs/manual/html_node/elisp/Faces-for-Font-Lock.html
+;; https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Feature-Testing.html
+;; marmalade repo
+;; https://marmalade-repo.org
+;; MELPA
+;; https://melpa.org
+;; https://stable.melpa.org
+
+;;; Code:
+
+(unless (>= emacs-major-version 24)
+ (error "Nord theme requires Emacs 24 or later!"))
+
+(deftheme nord "An arctic, north-bluish clean and elegant theme")
+
+(defgroup nord nil
+ "Nord theme customizations.
+ The theme has to be reloaded after changing anything in this group."
+ :group 'faces)
+
+(defcustom nord-comment-brightness 10
+ "Allows to define a custom comment color brightness with percentage adjustments from 0% - 20%.
+ As of version 0.4.0, this variable is obsolete/deprecated and has no effect anymore and will be removed in version 1.0.0!
+ The comment color brightness has been increased by 10% by default.
+ Please see https://github.com/nordtheme/emacs/issues/73 for more details."
+ :type 'integer
+ :group 'nord)
+
+(make-obsolete-variable
+ 'nord-comment-brightness
+ "The custom color brightness feature has been deprecated and will be removed in version 1.0.0!
+ The comment color brightness has been increased by 10% by default.
+ Please see https://github.com/nordtheme/emacs/issues/73 for more details."
+ "0.4.0")
+
+(defcustom nord-region-highlight nil
+ "Allows to set a region highlight style based on the Nord components.
+ Valid styles are
+ - 'snowstorm' - Uses 'nord0' as foreground- and 'nord4' as background color
+ - 'frost' - Uses 'nord0' as foreground- and 'nord8' as background color"
+ :type 'string
+ :group 'nord)
+
+(defcustom nord-uniform-mode-lines nil
+ "Enables uniform activate- and inactive mode lines using 'nord3' as background."
+ :type 'boolean
+ :group 'nord)
+
+(setq nord-theme--brightened-comments '("#4c566a" "#4e586d" "#505b70" "#525d73" "#556076" "#576279" "#59647c" "#5b677f" "#5d6982" "#5f6c85" "#616e88" "#63718b" "#66738e" "#687591" "#6a7894" "#6d7a96" "#6f7d98" "#72809a" "#75829c" "#78859e" "#7b88a1"))
+
+(defun nord-theme--brightened-comment-color (percent)
+ "Returns the brightened comment color for the given percent.
+ The value must be greater or equal to 0 and less or equal to 20, otherwise the default 'nord3' color is used.
+ As of version 0.4.0, this function is obsolete/deprecated and has no effect anymore and will be removed in version 1.0.0!
+ The comment color brightness has been increased by 10% by default.
+ Please see https://github.com/nordtheme/emacs/issues/73 for more details."
+ (nth 10 nord-theme--brightened-comments))
+
+(make-obsolete
+ 'nord-theme--brightened-comment-color
+ "The custom color brightness feature has been deprecated and will be removed in version 1.0.0!\
+ The comment color brightness has been increased by 10% by default.\
+ Please see https://github.com/nordtheme/emacs/issues/73 for more details."
+ "0.4.0")
+
+(defun nord-display-truecolor-or-graphic-p ()
+ "Returns whether the display can display nord colors"
+ (or (= (display-color-cells) 16777216) (display-graphic-p)))
+
+;;;; Color Constants
+(let ((class '((class color) (min-colors 89)))
+ (nord0 (if (nord-display-truecolor-or-graphic-p) "#2E3440" nil))
+ (nord1 (if (nord-display-truecolor-or-graphic-p) "#3B4252" "black"))
+ (nord2 (if (nord-display-truecolor-or-graphic-p) "#434C5E" "#434C5E"))
+ (nord3 (if (nord-display-truecolor-or-graphic-p) "#4C566A" "brightblack"))
+ (nord4 (if (nord-display-truecolor-or-graphic-p) "#D8DEE9" "#D8DEE9"))
+ (nord5 (if (nord-display-truecolor-or-graphic-p) "#E5E9F0" "white"))
+ (nord6 (if (nord-display-truecolor-or-graphic-p) "#ECEFF4" "brightwhite"))
+ (nord7 (if (nord-display-truecolor-or-graphic-p) "#8FBCBB" "cyan"))
+ (nord8 (if (nord-display-truecolor-or-graphic-p) "#88C0D0" "brightcyan"))
+ (nord9 (if (nord-display-truecolor-or-graphic-p) "#81A1C1" "blue"))
+ (nord10 (if (nord-display-truecolor-or-graphic-p) "#5E81AC" "brightblue"))
+ (nord11 (if (nord-display-truecolor-or-graphic-p) "#BF616A" "red"))
+ (nord12 (if (nord-display-truecolor-or-graphic-p) "#D08770" "brightyellow"))
+ (nord13 (if (nord-display-truecolor-or-graphic-p) "#EBCB8B" "yellow"))
+ (nord14 (if (nord-display-truecolor-or-graphic-p) "#A3BE8C" "green"))
+ (nord15 (if (nord-display-truecolor-or-graphic-p) "#B48EAD" "magenta"))
+ (nord-annotation (if (nord-display-truecolor-or-graphic-p) "#D08770" "brightyellow"))
+ (nord-attribute (if (nord-display-truecolor-or-graphic-p) "#8FBCBB" "cyan"))
+ (nord-class (if (nord-display-truecolor-or-graphic-p) "#8FBCBB" "cyan"))
+ (nord-comment (if (nord-display-truecolor-or-graphic-p) (nord-theme--brightened-comment-color nord-comment-brightness) "brightblack"))
+ (nord-escape (if (nord-display-truecolor-or-graphic-p) "#D08770" "brightyellow"))
+ (nord-method (if (nord-display-truecolor-or-graphic-p) "#88C0D0" "brightcyan"))
+ (nord-keyword (if (nord-display-truecolor-or-graphic-p) "#81A1C1" "blue"))
+ (nord-numeric (if (nord-display-truecolor-or-graphic-p) "#B48EAD" "magenta"))
+ (nord-operator (if (nord-display-truecolor-or-graphic-p) "#81A1C1" "blue"))
+ (nord-preprocessor (if (nord-display-truecolor-or-graphic-p) "#5E81AC" "brightblue"))
+ (nord-punctuation (if (nord-display-truecolor-or-graphic-p) "#D8DEE9" "#D8DEE9"))
+ (nord-regexp (if (nord-display-truecolor-or-graphic-p) "#EBCB8B" "yellow"))
+ (nord-string (if (nord-display-truecolor-or-graphic-p) "#A3BE8C" "green"))
+ (nord-tag (if (nord-display-truecolor-or-graphic-p) "#81A1C1" "blue"))
+ (nord-variable (if (nord-display-truecolor-or-graphic-p) "#D8DEE9" "#D8DEE9"))
+ (nord-region-highlight-foreground (if (or
+ (string= nord-region-highlight "frost")
+ (string= nord-region-highlight "snowstorm")) "#2E3440" nil))
+ (nord-region-highlight-background (if
+ (string= nord-region-highlight "frost") "#88C0D0"
+ (if (string= nord-region-highlight "snowstorm") "#D8DEE9" "#434C5E")))
+ (nord-uniform-mode-lines-background (if nord-uniform-mode-lines "#4C566A" "#3B4252")))
+
+;;;; +------------+
+;;;; + Core Faces +
+;;;; +------------+
+ (custom-theme-set-faces
+ 'nord
+ ;; +--- Base ---+
+ `(bold ((,class (:weight bold))))
+ `(bold-italic ((,class (:weight bold :slant italic))))
+ `(default ((,class (:foreground ,nord4 :background ,nord0))))
+ `(error ((,class (:foreground ,nord11 :weight bold))))
+ `(escape-glyph ((,class (:foreground ,nord12))))
+ `(font-lock-builtin-face ((,class (:foreground ,nord9))))
+ `(font-lock-comment-face ((,class (:foreground ,nord-comment))))
+ `(font-lock-comment-delimiter-face ((,class (:foreground ,nord-comment))))
+ `(font-lock-constant-face ((,class (:foreground ,nord9))))
+ `(font-lock-doc-face ((,class (:foreground ,nord-comment))))
+ `(font-lock-function-name-face ((,class (:foreground ,nord8))))
+ `(font-lock-keyword-face ((,class (:foreground ,nord9))))
+ `(font-lock-negation-char-face ((,class (:foreground ,nord9))))
+ `(font-lock-preprocessor-face ((,class (:foreground ,nord10 :weight bold))))
+ `(font-lock-reference-face ((,class (:foreground ,nord9))))
+ `(font-lock-regexp-grouping-backslash ((,class (:foreground ,nord13))))
+ `(font-lock-regexp-grouping-construct ((,class (:foreground ,nord13))))
+ `(font-lock-string-face ((,class (:foreground ,nord14))))
+ `(font-lock-type-face ((,class (:foreground ,nord7))))
+ `(font-lock-variable-name-face ((,class (:foreground ,nord4))))
+ `(font-lock-warning-face ((,class (:foreground ,nord13))))
+ `(italic ((,class (:slant italic))))
+ `(shadow ((,class (:foreground ,nord3))))
+ `(underline ((,class (:underline t))))
+ `(warning ((,class (:foreground ,nord13 :weight bold))))
+
+ ;; +--- Syntax ---+
+ ;; > C
+ `(c-annotation-face ((,class (:foreground ,nord-annotation))))
+
+ ;; > diff
+ `(diff-added ((,class (:foreground ,nord14))))
+ `(diff-changed ((,class (:foreground ,nord13))))
+ `(diff-context ((,class (:inherit default))))
+ `(diff-file-header ((,class (:foreground ,nord8))))
+ `(diff-function ((,class (:foreground ,nord7))))
+ `(diff-header ((,class (:foreground ,nord9 :weight bold))))
+ `(diff-hunk-header ((,class (:foreground ,nord9 :background ,nord0))))
+ `(diff-indicator-added ((,class (:foreground ,nord14))))
+ `(diff-indicator-changed ((,class (:foreground ,nord13))))
+ `(diff-indicator-removed ((,class (:foreground ,nord11))))
+ `(diff-nonexistent ((,class (:foreground ,nord11))))
+ `(diff-refine-added ((,class (:foreground ,nord14))))
+ `(diff-refine-changed ((,class (:foreground ,nord13))))
+ `(diff-refine-removed ((,class (:foreground ,nord11))))
+ `(diff-removed ((,class (:foreground ,nord11))))
+
+ ;; +--- UI ---+
+ `(border ((,class (:foreground ,nord4))))
+ `(buffer-menu-buffer ((,class (:foreground ,nord4 :weight bold))))
+ `(button ((,class (:background ,nord0 :foreground ,nord8 :box (:line-width 2 :color ,nord4 :style sunken-button)))))
+ `(completions-annotations ((,class (:foreground ,nord9))))
+ `(completions-common-part ((,class (:foreground ,nord8 :weight bold))))
+ `(completions-first-difference ((,class (:foreground ,nord11))))
+ `(custom-button ((,class (:background ,nord0 :foreground ,nord8 :box (:line-width 2 :color ,nord4 :style sunken-button)))))
+ `(custom-button-mouse ((,class (:background ,nord4 :foreground ,nord0 :box (:line-width 2 :color ,nord4 :style sunken-button)))))
+ `(custom-button-pressed ((,class (:background ,nord6 :foreground ,nord0 :box (:line-width 2 :color ,nord4 :style sunken-button)))))
+ `(custom-button-pressed-unraised ((,class (:background ,nord4 :foreground ,nord0 :box (:line-width 2 :color ,nord4 :style sunken-button)))))
+ `(custom-button-unraised ((,class (:background ,nord0 :foreground ,nord8 :box (:line-width 2 :color ,nord4 :style sunken-button)))))
+ `(custom-changed ((,class (:foreground ,nord13))))
+ `(custom-comment ((,class (:foreground ,nord-comment))))
+ `(custom-comment-tag ((,class (:foreground ,nord7))))
+ `(custom-documentation ((,class (:foreground ,nord4))))
+ `(custom-group-tag ((,class (:foreground ,nord8 :weight bold))))
+ `(custom-group-tag-1 ((,class (:foreground ,nord8 :weight bold))))
+ `(custom-invalid ((,class (:foreground ,nord11))))
+ `(custom-modified ((,class (:foreground ,nord13))))
+ `(custom-rogue ((,class (:foreground ,nord12 :background ,nord2))))
+ `(custom-saved ((,class (:foreground ,nord14))))
+ `(custom-set ((,class (:foreground ,nord8))))
+ `(custom-state ((,class (:foreground ,nord14))))
+ `(custom-themed ((,class (:foreground ,nord8 :background ,nord2))))
+ `(cursor ((,class (:background ,nord4))))
+ `(fringe ((,class (:foreground ,nord4 :background ,nord0))))
+ `(file-name-shadow ((,class (:inherit shadow))))
+ `(header-line ((,class (:foreground ,nord4 :background ,nord2))))
+ `(help-argument-name ((,class (:foreground ,nord8))))
+ `(highlight ((,class (:foreground ,nord8 :background ,nord2))))
+ `(hl-line ((,class (:background ,nord1))))
+ `(info-menu-star ((,class (:foreground ,nord9))))
+ `(isearch ((,class (:foreground ,nord0 :background ,nord8))))
+ `(isearch-fail ((,class (:foreground ,nord11))))
+ `(link ((,class (:underline t))))
+ `(link-visited ((,class (:underline t))))
+ `(linum ((,class (:foreground ,nord3 :background ,nord0))))
+ `(linum-relative-current-face ((,class (:foreground ,nord3 :background ,nord0))))
+ `(match ((,class (:inherit isearch))))
+ `(message-cited-text ((,class (:foreground ,nord4))))
+ `(message-header-cc ((,class (:foreground ,nord9))))
+ `(message-header-name ((,class (:foreground ,nord7))))
+ `(message-header-newsgroup ((,class (:foreground ,nord14))))
+ `(message-header-other ((,class (:foreground ,nord4))))
+ `(message-header-subject ((,class (:foreground ,nord8))))
+ `(message-header-to ((,class (:foreground ,nord9))))
+ `(message-header-xheader ((,class (:foreground ,nord13))))
+ `(message-mml ((,class (:foreground ,nord10))))
+ `(message-separator ((,class (:inherit shadow))))
+ `(minibuffer-prompt ((,class (:foreground ,nord8 :weight bold))))
+ `(mm-command-output ((,class (:foreground ,nord8))))
+ `(mode-line ((,class (:foreground ,nord8 :background ,nord3))))
+ `(mode-line-buffer-id ((,class (:weight bold))))
+ `(mode-line-highlight ((,class (:inherit highlight))))
+ `(mode-line-inactive ((,class (:foreground ,nord4 :background ,nord-uniform-mode-lines-background))))
+ `(next-error ((,class (:inherit error))))
+ `(nobreak-space ((,class (:foreground ,nord3))))
+ `(outline-1 ((,class (:foreground ,nord8 :weight bold))))
+ `(outline-2 ((,class (:inherit outline-1))))
+ `(outline-3 ((,class (:inherit outline-1))))
+ `(outline-4 ((,class (:inherit outline-1))))
+ `(outline-5 ((,class (:inherit outline-1))))
+ `(outline-6 ((,class (:inherit outline-1))))
+ `(outline-7 ((,class (:inherit outline-1))))
+ `(outline-8 ((,class (:inherit outline-1))))
+ `(package-description ((,class (:foreground ,nord4))))
+ `(package-help-section-name ((,class (:foreground ,nord8 :weight bold))))
+ `(package-name ((,class (:foreground ,nord8))))
+ `(package-status-available ((,class (:foreground ,nord7))))
+ `(package-status-avail-obso ((,class (:foreground ,nord7 :slant italic))))
+ `(package-status-built-in ((,class (:foreground ,nord9))))
+ `(package-status-dependency ((,class (:foreground ,nord8 :slant italic))))
+ `(package-status-disabled ((,class (:foreground ,nord3))))
+ `(package-status-external ((,class (:foreground ,nord12 :slant italic))))
+ `(package-status-held ((,class (:foreground ,nord4 :weight bold))))
+ `(package-status-new ((,class (:foreground ,nord14))))
+ `(package-status-incompat ((,class (:foreground ,nord11))))
+ `(package-status-installed ((,class (:foreground ,nord7 :weight bold))))
+ `(package-status-unsigned ((,class (:underline ,nord13))))
+ `(query-replace ((,class (:foreground ,nord8 :background ,nord2))))
+ `(region ((,class (:foreground ,nord-region-highlight-foreground :background ,nord-region-highlight-background))))
+ `(scroll-bar ((,class (:background ,nord3))))
+ `(secondary-selection ((,class (:background ,nord2))))
+
+ ;; `show-paren-match-face` and `show-paren-mismatch-face` are deprecated since Emacs version 22.1 and were
+ ;; removed in Emacs 25.
+ ;; https://github.com/nordtheme/emacs/issues/75
+ ;; http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=c430f7e23fc2c22f251ace4254e37dea1452dfc3
+ ;; https://github.com/emacs-mirror/emacs/commit/c430f7e23fc2c22f251ace4254e37dea1452dfc3
+ `(show-paren-match-face ((,class (:foreground ,nord0 :background ,nord8))))
+ `(show-paren-mismatch-face ((,class (:background ,nord11))))
+
+ `(show-paren-match ((,class (:foreground ,nord0 :background ,nord8))))
+ `(show-paren-mismatch ((,class (:background ,nord11))))
+ `(success ((,class (:foreground ,nord14))))
+ `(term ((,class (:foreground ,nord4 :background ,nord0))))
+ `(term-color-black ((,class (:foreground ,nord1 :background ,nord1))))
+ `(term-color-white ((,class (:foreground ,nord5 :background ,nord5))))
+ `(term-color-cyan ((,class (:foreground ,nord7 :background ,nord7))))
+ `(term-color-blue ((,class (:foreground ,nord8 :background ,nord8))))
+ `(term-color-red ((,class (:foreground ,nord11 :background ,nord11))))
+ `(term-color-yellow ((,class (:foreground ,nord13 :background ,nord13))))
+ `(term-color-green ((,class (:foreground ,nord14 :background ,nord14))))
+ `(term-color-magenta ((,class (:foreground ,nord15 :background ,nord15))))
+ `(tool-bar ((,class (:foreground ,nord4 :background ,nord3))))
+ `(tooltip ((,class (:foreground ,nord0 :background ,nord4))))
+ `(trailing-whitespace ((,class (:foreground ,nord3))))
+ `(tty-menu-disabled-face ((,class (:foreground ,nord1))))
+ `(tty-menu-enabled-face ((,class (:background ,nord2 foreground ,nord4))))
+ `(tty-menu-selected-face ((,class (:foreground ,nord8 :underline t))))
+ `(undo-tree-visualizer-current-face ((,class (:foreground ,nord8))))
+ `(undo-tree-visualizer-default-face ((,class (:foreground ,nord4))))
+ `(undo-tree-visualizer-unmodified-face ((,class (:foreground ,nord4))))
+ `(undo-tree-visualizer-register-face ((,class (:foreground ,nord9))))
+ `(vc-conflict-state ((,class (:foreground ,nord12))))
+ `(vc-edited-state ((,class (:foreground ,nord13))))
+ `(vc-locally-added-state ((,class (:underline ,nord14))))
+ `(vc-locked-state ((,class (:foreground ,nord10))))
+ `(vc-missing-state ((,class (:foreground ,nord11))))
+ `(vc-needs-update-state ((,class (:foreground ,nord12))))
+ `(vc-removed-state ((,class (:foreground ,nord11))))
+ `(vc-state-base ((,class (:foreground ,nord4))))
+ `(vc-up-to-date-state ((,class (:foreground ,nord8))))
+ `(vertical-border ((,class (:foreground ,nord2))))
+ `(which-func ((,class (:foreground ,nord8))))
+ `(whitespace-big-indent ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-empty ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-hspace ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-indentation ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-line ((,class (:background ,nord0))))
+ `(whitespace-newline ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-space ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-space-after-tab ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-space-before-tab ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-tab ((,class (:foreground ,nord3 :background ,nord0))))
+ `(whitespace-trailing ((,class (:inherit trailing-whitespace))))
+ `(widget-button-pressed ((,class (:foreground ,nord9 :background ,nord1))))
+ `(widget-documentation ((,class (:foreground ,nord4))))
+ `(widget-field ((,class (:background ,nord2 :foreground ,nord4))))
+ `(widget-single-line-field ((,class (:background ,nord2 :foreground ,nord4))))
+ `(window-divider ((,class (:background ,nord3))))
+ `(window-divider-first-pixel ((,class (:background ,nord3))))
+ `(window-divider-last-pixel ((,class (:background ,nord3))))
+
+ ;;;; +-----------------+
+ ;;;; + Package Support +
+ ;;;; +-----------------+
+ ;; +--- Syntax ---+
+ ;; > Auctex
+ `(font-latex-bold-face ((,class (:inherit bold))))
+ `(font-latex-italic-face ((,class (:inherit italic))))
+ `(font-latex-math-face ((,class (:foreground ,nord8))))
+ `(font-latex-sectioning-0-face ((,class (:foreground ,nord8 :weight bold))))
+ `(font-latex-sectioning-1-face ((,class (:inherit font-latex-sectioning-0-face))))
+ `(font-latex-sectioning-2-face ((,class (:inherit font-latex-sectioning-0-face))))
+ `(font-latex-sectioning-3-face ((,class (:inherit font-latex-sectioning-0-face))))
+ `(font-latex-sectioning-4-face ((,class (:inherit font-latex-sectioning-0-face))))
+ `(font-latex-sectioning-5-face ((,class (:inherit font-latex-sectioning-0-face))))
+ `(font-latex-script-char-face ((,class (:inherit font-lock-warning-face))))
+ `(font-latex-string-face ((,class (:inherit font-lock-string-face))))
+ `(font-latex-warning-face ((,class (:inherit font-lock-warning-face))))
+
+ ;; > Elixir
+ `(elixir-attribute-face ((,class (:foreground ,nord-annotation))))
+ `(elixir-atom-face ((,class (:foreground ,nord4 :weight bold))))
+
+ ;; > Enhanced Ruby
+ `(enh-ruby-heredoc-delimiter-face ((,class (:foreground ,nord14))))
+ `(enh-ruby-op-face ((,class (:foreground ,nord9))))
+ `(enh-ruby-regexp-delimiter-face ((,class (:foreground ,nord13))))
+ `(enh-ruby-regexp-face ((,class (:foreground ,nord13))))
+ `(enh-ruby-string-delimiter-face ((,class (:foreground ,nord14))))
+ `(erm-syn-errline ((,class (:foreground ,nord11 :underline t))))
+ `(erm-syn-warnline ((,class (:foreground ,nord13 :underline t))))
+
+ ;; > Java Development Environment for Emacs
+ `(jdee-db-active-breakpoint-face ((,class (:background ,nord2 :weight bold))))
+ `(jdee-bug-breakpoint-cursor ((,class (:background ,nord2))))
+ `(jdee-db-requested-breakpoint-face ((,class (:foreground ,nord13 :background ,nord2 :weight bold))))
+ `(jdee-db-spec-breakpoint-face ((,class (:foreground ,nord14 :background ,nord2 :weight bold))))
+ `(jdee-font-lock-api-face ((,class (:foreground ,nord4))))
+ `(jdee-font-lock-code-face ((,class (:slant italic))))
+ `(jdee-font-lock-constant-face ((,class (:foreground ,nord-keyword))))
+ `(jdee-font-lock-constructor-face ((,class (:foreground ,nord-method))))
+ `(jdee-font-lock-doc-tag-face ((,class (:foreground ,nord7))))
+ `(jdee-font-lock-link-face ((,class (:underline t))))
+ `(jdee-font-lock-modifier-face ((,class (:foreground ,nord-keyword))))
+ `(jdee-font-lock-number-face ((,class (:foreground ,nord-numeric))))
+ `(jdee-font-lock-operator-fac ((,class (:foreground ,nord-operator))))
+ `(jdee-font-lock-package-face ((,class (:foreground ,nord-class))))
+ `(jdee-font-lock-pre-face ((,class (:foreground ,nord-comment :slant italic))))
+ `(jdee-font-lock-private-face ((,class (:foreground ,nord-keyword))))
+ `(jdee-font-lock-public-face ((,class (:foreground ,nord-keyword))))
+ `(jdee-font-lock-variable-face ((,class (:foreground ,nord-variable))))
+
+ ;; > JavaScript 2
+ `(js2-function-call ((,class (:foreground ,nord8))))
+ `(js2-private-function-call ((,class (:foreground ,nord8))))
+ `(js2-jsdoc-html-tag-delimiter ((,class (:foreground ,nord6))))
+ `(js2-jsdoc-html-tag-name ((,class (:foreground ,nord9))))
+ `(js2-external-variable ((,class (:foreground ,nord4))))
+ `(js2-function-param ((,class (:foreground ,nord4))))
+ `(js2-jsdoc-value ((,class (:foreground ,nord-comment))))
+ `(js2-jsdoc-tag ((,class (:foreground ,nord7))))
+ `(js2-jsdoc-type ((,class (:foreground ,nord7))))
+ `(js2-private-member ((,class (:foreground ,nord4))))
+ `(js2-object-property ((,class (:foreground ,nord4))))
+ `(js2-error ((,class (:foreground ,nord11))))
+ `(js2-warning ((,class (:foreground ,nord13))))
+ `(js2-instance-member ((,class (:foreground ,nord4))))
+
+ ;; > JavaScript 3
+ `(js3-error-face ((,class (:foreground ,nord11))))
+ `(js3-external-variable-face ((,class (:foreground ,nord4))))
+ `(js3-function-param-face ((,class (:foreground ,nord4))))
+ `(js3-instance-member-face ((,class (:foreground ,nord4))))
+ `(js3-jsdoc-html-tag-delimiter-face ((,class (:foreground ,nord6))))
+ `(js3-jsdoc-html-tag-name-face ((,class (:foreground ,nord9))))
+ `(js3-jsdoc-tag-face ((,class (:foreground ,nord9))))
+ `(js3-jsdoc-type-face ((,class (:foreground ,nord7))))
+ `(js3-jsdoc-value-face ((,class (:foreground ,nord4))))
+ `(js3-magic-paren-face ((,class (:inherit show-paren-match-face))))
+ `(js3-private-function-call-face ((,class (:foreground ,nord8))))
+ `(js3-private-member-face ((,class (:foreground ,nord4))))
+ `(js3-warning-face ((,class (:foreground ,nord13))))
+
+ ;; > Markdown
+ `(markdown-blockquote-face ((,class (:foreground ,nord-comment))))
+ `(markdown-bold-face ((,class (:inherit bold))))
+ `(markdown-header-face-1 ((,class (:foreground ,nord8))))
+ `(markdown-header-face-2 ((,class (:foreground ,nord8))))
+ `(markdown-header-face-3 ((,class (:foreground ,nord8))))
+ `(markdown-header-face-4 ((,class (:foreground ,nord8))))
+ `(markdown-header-face-5 ((,class (:foreground ,nord8))))
+ `(markdown-header-face-6 ((,class (:foreground ,nord8))))
+ `(markdown-inline-code-face ((,class (:foreground ,nord7))))
+ `(markdown-italic-face ((,class (:inherit italic))))
+ `(markdown-link-face ((,class (:foreground ,nord8))))
+ `(markdown-markup-face ((,class (:foreground ,nord9))))
+ `(markdown-reference-face ((,class (:inherit markdown-link-face))))
+ `(markdown-url-face ((,class (:foreground ,nord4 :underline t))))
+
+ ;; > Rainbow Delimeters
+ `(rainbow-delimiters-depth-1-face ((,class :foreground ,nord7)))
+ `(rainbow-delimiters-depth-2-face ((,class :foreground ,nord8)))
+ `(rainbow-delimiters-depth-3-face ((,class :foreground ,nord9)))
+ `(rainbow-delimiters-depth-4-face ((,class :foreground ,nord10)))
+ `(rainbow-delimiters-depth-5-face ((,class :foreground ,nord12)))
+ `(rainbow-delimiters-depth-6-face ((,class :foreground ,nord13)))
+ `(rainbow-delimiters-depth-7-face ((,class :foreground ,nord14)))
+ `(rainbow-delimiters-depth-8-face ((,class :foreground ,nord15)))
+ `(rainbow-delimiters-unmatched-face ((,class :foreground ,nord11)))
+
+ ;; > Web Mode
+ `(web-mode-attr-tag-custom-face ((,class (:foreground ,nord-attribute))))
+ `(web-mode-builtin-face ((,class (:foreground ,nord-keyword))))
+ `(web-mode-comment-face ((,class (:foreground ,nord-comment))))
+ `(web-mode-comment-keyword-face ((,class (:foreground ,nord-comment))))
+ `(web-mode-constant-face ((,class (:foreground ,nord-variable))))
+ `(web-mode-css-at-rule-face ((,class (:foreground ,nord-annotation))))
+ `(web-mode-css-function-face ((,class (:foreground ,nord-method))))
+ `(web-mode-css-property-name-face ((,class (:foreground ,nord-keyword))))
+ `(web-mode-css-pseudo-class-face ((,class (:foreground ,nord-class))))
+ `(web-mode-css-selector-face ((,class (:foreground ,nord-keyword))))
+ `(web-mode-css-string-face ((,class (:foreground ,nord-string))))
+ `(web-mode-doctype-face ((,class (:foreground ,nord-preprocessor))))
+ `(web-mode-function-call-face ((,class (:foreground ,nord-method))))
+ `(web-mode-function-name-face ((,class (:foreground ,nord-method))))
+ `(web-mode-html-attr-name-face ((,class (:foreground ,nord-attribute))))
+ `(web-mode-html-attr-equal-face ((,class (:foreground ,nord-punctuation))))
+ `(web-mode-html-attr-value-face ((,class (:foreground ,nord-string))))
+ `(web-mode-html-entity-face ((,class (:foreground ,nord-keyword))))
+ `(web-mode-html-tag-bracket-face ((,class (:foreground ,nord-punctuation))))
+ `(web-mode-html-tag-custom-face ((,class (:foreground ,nord-tag))))
+ `(web-mode-html-tag-face ((,class (:foreground ,nord-tag))))
+ `(web-mode-html-tag-namespaced-face ((,class (:foreground ,nord-keyword))))
+ `(web-mode-json-key-face ((,class (:foreground ,nord-class))))
+ `(web-mode-json-string-face ((,class (:foreground ,nord-string))))
+ `(web-mode-keyword-face ((,class (:foreground ,nord-keyword))))
+ `(web-mode-preprocessor-face ((,class (:foreground ,nord-preprocessor))))
+ `(web-mode-string-face ((,class (:foreground ,nord-string))))
+ `(web-mode-symbol-face ((,class (:foreground ,nord-variable))))
+ `(web-mode-type-face ((,class (:foreground ,nord-class))))
+ `(web-mode-warning-face ((,class (:inherit ,font-lock-warning-face))))
+ `(web-mode-variable-name-face ((,class (:foreground ,nord-variable))))
+
+ ;; +--- UI ---+
+ ;; > Anzu
+ `(anzu-mode-line ((,class (:foreground, nord8))))
+ `(anzu-mode-line-no-match ((,class (:foreground, nord11))))
+
+ ;; > Avy
+ `(avy-lead-face ((,class (:background ,nord11 :foreground ,nord5))))
+ `(avy-lead-face-0 ((,class (:background ,nord10 :foreground ,nord5))))
+ `(avy-lead-face-1 ((,class (:background ,nord3 :foreground ,nord5))))
+ `(avy-lead-face-2 ((,class (:background ,nord15 :foreground ,nord5))))
+
+ ;; > Company
+ `(company-echo-common ((,class (:foreground ,nord0 :background ,nord4))))
+ `(company-preview ((,class (:foreground ,nord4 :background ,nord10))))
+ `(company-preview-common ((,class (:foreground ,nord0 :background ,nord8))))
+ `(company-preview-search ((,class (:foreground ,nord0 :background ,nord8))))
+ `(company-scrollbar-bg ((,class (:foreground ,nord1 :background ,nord1))))
+ `(company-scrollbar-fg ((,class (:foreground ,nord2 :background ,nord2))))
+ `(company-template-field ((,class (:foreground ,nord0 :background ,nord7))))
+ `(company-tooltip ((,class (:foreground ,nord4 :background ,nord2))))
+ `(company-tooltip-annotation ((,class (:foreground ,nord12))))
+ `(company-tooltip-annotation-selection ((,class (:foreground ,nord12 :weight bold))))
+ `(company-tooltip-common ((,class (:foreground ,nord8))))
+ `(company-tooltip-common-selection ((,class (:foreground ,nord8 :background ,nord3))))
+ `(company-tooltip-mouse ((,class (:inherit highlight))))
+ `(company-tooltip-selection ((,class (:background ,nord3 :weight bold))))
+
+ ;; > diff-hl
+ `(diff-hl-change ((,class (:background ,nord13))))
+ `(diff-hl-insert ((,class (:background ,nord14))))
+ `(diff-hl-delete ((,class (:background ,nord11))))
+
+ ;; > Evil
+ `(evil-ex-info ((,class (:foreground ,nord8))))
+ `(evil-ex-substitute-replacement ((,class (:foreground ,nord9))))
+ `(evil-ex-substitute-matches ((,class (:inherit isearch))))
+
+ ;; > Flycheck
+ `(flycheck-error ((,class (:underline (:style wave :color ,nord11)))))
+ `(flycheck-fringe-error ((,class (:foreground ,nord11 :weight bold))))
+ `(flycheck-fringe-info ((,class (:foreground ,nord8 :weight bold))))
+ `(flycheck-fringe-warning ((,class (:foreground ,nord13 :weight bold))))
+ `(flycheck-info ((,class (:underline (:style wave :color ,nord8)))))
+ `(flycheck-warning ((,class (:underline (:style wave :color ,nord13)))))
+
+ ;; > Git Gutter
+ `(git-gutter:modified ((,class (:foreground ,nord13))))
+ `(git-gutter:added ((,class (:foreground ,nord14))))
+ `(git-gutter:deleted ((,class (:foreground ,nord11))))
+
+ ;; > Git Gutter Plus
+ `(git-gutter+-modified ((,class (:foreground ,nord13))))
+ `(git-gutter+-added ((,class (:foreground ,nord14))))
+ `(git-gutter+-deleted ((,class (:foreground ,nord11))))
+
+ ;; > Helm
+ `(helm-bookmark-addressbook ((,class (:foreground ,nord7))))
+ `(helm-bookmark-directory ((,class (:foreground ,nord9))))
+ `(helm-bookmark-file ((,class (:foreground ,nord8))))
+ `(helm-bookmark-gnus ((,class (:foreground ,nord10))))
+ `(helm-bookmark-info ((,class (:foreground ,nord14))))
+ `(helm-bookmark-man ((,class (:foreground ,nord4))))
+ `(helm-bookmark-w3m ((,class (:foreground ,nord9))))
+ `(helm-buffer-directory ((,class (:foreground ,nord9))))
+ `(helm-buffer-file ((,class (:foreground ,nord8))))
+ `(helm-buffer-not-saved ((,class (:foreground ,nord13))))
+ `(helm-buffer-process ((,class (:foreground ,nord10))))
+ `(helm-candidate-number ((,class (:foreground ,nord4 :weight bold))))
+ `(helm-candidate-number-suspended ((,class (:foreground ,nord4))))
+ `(helm-ff-directory ((,class (:foreground ,nord9 :weight bold))))
+ `(helm-ff-dirs ((,class (:foreground ,nord9))))
+ `(helm-ff-dotted-director ((,class (:foreground ,nord9 :underline t))))
+ `(helm-ff-dotted-symlink-director ((,class (:foreground ,nord7 :weight bold))))
+ `(helm-ff-executable ((,class (:foreground ,nord8))))
+ `(helm-ff-file ((,class (:foreground ,nord4))))
+ `(helm-ff-invalid-symlink ((,class (:foreground ,nord11 :weight bold))))
+ `(helm-ff-prefix ((,class (:foreground ,nord0 :background ,nord9))))
+ `(helm-ff-symlink ((,class (:foreground ,nord7))))
+ `(helm-grep-cmd-line ((,class (:foreground ,nord4 :background ,nord0))))
+ `(helm-grep-file ((,class (:foreground ,nord8))))
+ `(helm-grep-finish ((,class (:foreground ,nord5))))
+ `(helm-grep-lineno ((,class (:foreground ,nord4))))
+ `(helm-grep-match ((,class (:inherit isearch))))
+ `(helm-grep-running ((,class (:foreground ,nord8))))
+ `(helm-header ((,class (:foreground ,nord9 :background ,nord2))))
+ `(helm-header-line-left-margin ((,class (:foreground ,nord9 :background ,nord2))))
+ `(helm-history-deleted ((,class (:foreground ,nord11))))
+ `(helm-history-remote ((,class (:foreground ,nord4))))
+ `(helm-lisp-completion-info ((,class (:foreground ,nord4 :weight bold))))
+ `(helm-lisp-show-completion ((,class (:inherit isearch))))
+ `(helm-locate-finish ((,class (:foreground ,nord14))))
+ `(helm-match ((,class (:foreground ,nord8))))
+ `(helm-match-item ((,class (:inherit isearch))))
+ `(helm-moccur-buffer ((,class (:foreground ,nord8))))
+ `(helm-resume-need-update ((,class (:foreground ,nord0 :background ,nord13))))
+ `(helm-selection ((,class (:inherit highlight))))
+ `(helm-selection-line ((,class (:background ,nord2))))
+ `(helm-source-header ((,class (:height 1.44 :foreground ,nord8 :background ,nord2))))
+ `(helm-swoop-line-number-face ((,class (:foreground ,nord4 :background ,nord0))))
+ `(helm-swoop-target-word-face ((,class (:foreground ,nord0 :background ,nord7))))
+ `(helm-swoop-target-line-face ((,class (:background ,nord13 :foreground ,nord3))))
+ `(helm-swoop-target-line-block-face ((,class (:background ,nord13 :foreground ,nord3))))
+ `(helm-separator ((,class (:background ,nord2))))
+ `(helm-visible-mark ((,class (:background ,nord2))))
+
+ ;; > Magit
+ `(magit-branch ((,class (:foreground ,nord7 :weight bold))))
+ `(magit-diff-context-highlight ((,class (:background ,nord2))))
+ `(magit-diff-file-header ((,class (:foreground ,nord8 :box (:color ,nord8)))))
+ `(magit-diffstat-added ((,class (:foreground ,nord14))))
+ `(magit-diffstat-removed ((,class (:foreground ,nord11))))
+ `(magit-hash ((,class (:foreground ,nord8))))
+ `(magit-hunk-heading ((,class (:foreground ,nord9))))
+ `(magit-hunk-heading-highlight ((,class (:foreground ,nord9 :background ,nord2))))
+ `(magit-item-highlight ((,class (:foreground ,nord8 :background ,nord2))))
+ `(magit-log-author ((,class (:foreground ,nord7))))
+ `(magit-process-ng ((,class (:foreground ,nord13 :weight bold))))
+ `(magit-process-ok ((,class (:foreground ,nord14 :weight bold))))
+ `(magit-section-heading ((,class (:foreground ,nord7 :weight bold))))
+ `(magit-section-highlight ((,class (:background ,nord2))))
+
+ ;; > MU4E
+ `(mu4e-header-marks-face ((,class (:foreground ,nord9))))
+ `(mu4e-title-face ((,class (:foreground ,nord8))))
+ `(mu4e-header-key-face ((,class (:foreground ,nord8))))
+ `(mu4e-highlight-face ((,class (:highlight))))
+ `(mu4e-flagged-face ((,class (:foreground ,nord13))))
+ `(mu4e-unread-face ((,class (:foreground ,nord13 :weight bold))))
+ `(mu4e-link-face ((,class (:underline t))))
+
+ ;; > Powerline
+ `(powerline-active1 ((,class (:foreground ,nord4 :background ,nord1))))
+ `(powerline-active2 ((,class (:foreground ,nord4 :background ,nord3))))
+ `(powerline-inactive1 ((,class (:background ,nord2))))
+ `(powerline-inactive2 ((,class (:background ,nord2))))
+
+ ;; > Powerline Evil
+ `(powerline-evil-base-face ((,class (:foreground ,nord4))))
+ `(powerline-evil-normal-face ((,class (:background ,nord8))))
+ `(powerline-evil-insert-face ((,class (:foreground ,nord0 :background ,nord4))))
+ `(powerline-evil-visual-face ((,class (:foreground ,nord0 :background ,nord7))))
+ `(powerline-evil-replace-face ((,class (:foreground ,nord0 :background ,nord9))))
+
+ ;; > NeoTree
+ `(neo-banner-face ((,class (:foreground ,nord10))))
+ `(neo-dir-link-face ((,class (:foreground ,nord9))))
+ `(neo-expand-btn-face ((,class (:foreground ,nord6 :bold t))))
+ `(neo-file-link-face ((,class (:foreground ,nord4))))
+ `(neo-root-dir-face ((,class (:foreground ,nord7 :weight bold))))
+ `(neo-vc-added-face ((,class (:foreground ,nord14))))
+ `(neo-vc-conflict-face ((,class (:foreground ,nord11))))
+ `(neo-vc-default-face ((,class (:foreground ,nord4))))
+ `(neo-vc-edited-face ((,class (:foreground ,nord13))))
+ `(neo-vc-ignored-face ((,class (:foreground ,nord3))))
+ `(neo-vc-missing-face ((,class (:foreground ,nord12))))
+ `(neo-vc-needs-merge-face ((,class (:background ,nord12 :foreground ,nord4))))
+ `(neo-vc-needs-update-face ((,class (:background ,nord10 :foreground ,nord4))))
+ `(neo-vc-removed-face ((,class (:foreground ,nord11 :strike-through nil))))
+ `(neo-vc-up-to-date-face ((,class (:foreground ,nord4))))
+ `(neo-vc-user-face ((,class (:foreground ,nord4))))
+
+ ;; > Cider
+ `(cider-result-overlay-face ((t (:background unspecified))))
+
+ ;; > Org
+ `(org-level-1 ((,class (:foreground ,nord7 :weight extra-bold))))
+ `(org-level-2 ((,class (:foreground ,nord8 :weight bold))))
+ `(org-level-3 ((,class (:foreground ,nord9 :weight semi-bold))))
+ `(org-level-4 ((,class (:foreground ,nord10 :weight normal))))
+ `(org-level-5 ((,class (:inherit org-level-4))))
+ `(org-level-6 ((,class (:inherit org-level-4))))
+ `(org-level-7 ((,class (:inherit org-level-4))))
+ `(org-level-8 ((,class (:inherit org-level-4))))
+ `(org-agenda-structure ((,class (:foreground ,nord9))))
+ `(org-agenda-date ((,class (:foreground ,nord8 :underline nil))))
+ `(org-agenda-done ((,class (:foreground ,nord14))))
+ `(org-agenda-dimmed-todo-face ((,class (:background ,nord13))))
+ `(org-block ((,class (:foreground ,nord4))))
+ `(org-block-background ((,class (:background ,nord0))))
+ `(org-block-begin-line ((,class (:foreground ,nord7))))
+ `(org-block-end-line ((,class (:foreground ,nord7))))
+ `(org-checkbox ((,class (:foreground ,nord9))))
+ `(org-checkbox-statistics-done ((,class (:foreground ,nord14))))
+ `(org-checkbox-statistics-todo ((,class (:foreground ,nord13))))
+ `(org-code ((,class (:foreground ,nord7))))
+ `(org-column ((,class (:background ,nord2))))
+ `(org-column-title ((,class (:inherit org-column :weight bold :underline t))))
+ `(org-date ((,class (:foreground ,nord8))))
+ `(org-document-info ((,class (:foreground ,nord4))))
+ `(org-document-info-keyword ((,class (:foreground ,nord3 :weight bold))))
+ `(org-document-title ((,class (:foreground ,nord8 :weight bold))))
+ `(org-done ((,class (:foreground ,nord14 :weight bold))))
+ `(org-ellipsis ((,class (:foreground ,nord3))))
+ `(org-footnote ((,class (:foreground ,nord8))))
+ `(org-formula ((,class (:foreground ,nord9))))
+ `(org-hide ((,class (:foreground ,nord0 :background ,nord0))))
+ `(org-link ((,class (:underline t))))
+ `(org-scheduled ((,class (:foreground ,nord14))))
+ `(org-scheduled-previously ((,class (:foreground ,nord13))))
+ `(org-scheduled-today ((,class (:foreground ,nord8))))
+ `(org-special-keyword ((,class (:foreground ,nord9))))
+ `(org-table ((,class (:foreground ,nord9))))
+ `(org-todo ((,class (:foreground ,nord13 :weight bold))))
+ `(org-upcoming-deadline ((,class (:foreground ,nord12))))
+ `(org-warning ((,class (:foreground ,nord13 :weight bold))))
+ `(font-latex-bold-face ((,class (:inherit bold))))
+ `(font-latex-italic-face ((,class (:slant italic))))
+ `(font-latex-string-face ((,class (:foreground ,nord14))))
+ `(font-latex-match-reference-keywords ((,class (:foreground ,nord9))))
+ `(font-latex-match-variable-keywords ((,class (:foreground ,nord4))))
+ `(ido-only-match ((,class (:foreground ,nord8))))
+ `(org-sexp-date ((,class (:foreground ,nord7))))
+ `(ido-first-match ((,class (:foreground ,nord8 :weight bold))))
+ `(ido-subdir ((,class (:foreground ,nord9))))
+ `(org-quote ((,class (:inherit org-block :slant italic))))
+ `(org-verse ((,class (:inherit org-block :slant italic))))
+ `(org-agenda-date-weekend ((,class (:foreground ,nord9))))
+ `(org-agenda-date-today ((,class (:foreground ,nord8 :weight bold))))
+ `(org-agenda-done ((,class (:foreground ,nord14))))
+ `(org-verbatim ((,class (:foreground ,nord7))))
+
+ ;; > ivy-mode
+ `(ivy-current-match ((,class (:inherit region))))
+ `(ivy-minibuffer-match-face-1 ((,class (:inherit default))))
+ `(ivy-minibuffer-match-face-2 ((,class (:background ,nord7 :foreground ,nord0))))
+ `(ivy-minibuffer-match-face-3 ((,class (:background ,nord8 :foreground ,nord0))))
+ `(ivy-minibuffer-match-face-4 ((,class (:background ,nord9 :foreground ,nord0))))
+ `(ivy-remote ((,class (:foreground ,nord14))))
+ `(ivy-posframe ((,class (:background ,nord1))))
+ `(ivy-posframe-border ((,class (:background ,nord1))))
+ `(ivy-remote ((,class (:foreground ,nord14))))
+
+ ;; > perspective
+ `(persp-selected-face ((,class (:foreground ,nord8 :weight bold))))))
+
+;;;###autoload
+(when (and (boundp 'custom-theme-load-path) load-file-name)
+ (add-to-list 'custom-theme-load-path
+ (file-name-as-directory (file-name-directory load-file-name))))
+
+(provide-theme 'nord)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; indent-tabs-mode: nil
+;; End:
+
+;;; nord-theme.el ends here
diff --git a/config/extra/emacs/themes/tlast-theme.el b/config/extra/emacs/themes/tlast-theme.el
new file mode 100644
index 0000000..a6ed15f
--- /dev/null
+++ b/config/extra/emacs/themes/tlast-theme.el
@@ -0,0 +1,306 @@
+;;; tlast-theme.el --- Theme
+
+;; Copyright (C) 2023 , tlast
+
+;; Author: tlast
+;; Version: 0.1
+;; Package-Requires: ((emacs "24.1"))
+;; Created with ThemeCreator, https://github.com/mswift42/themecreator.
+
+;; 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/>.
+
+;; This file is not part of Emacs.
+
+;;; Commentary:
+;;; tlast theme created by tlast in 2023
+
+;;; Code:
+
+(deftheme tlast)
+(let ((class '((class color) (min-colors 89)))
+ (fg1 "#62a0ea")
+ (fg2 "#5a93d7")
+ (fg3 "#5286c5")
+ (fg4 "#4a7ab2")
+ (fg6 "#88b7ef")
+ (bg1 "#3d3846")
+ (bg2 "#4d4855")
+ (bg3 "#5c5864")
+ (bg4 "#6c6872")
+ (builtin "#26a269")
+ (keyword "#3584e4")
+ (const "#ffffff")
+ (comment "#77767b")
+ (func "#99c1f1")
+ (str "#57e389")
+ (type "#f6d32d")
+ (var "#ff7800")
+ (selection "#dc8add")
+ (warning "#ff0000")
+ (warning2 "#ff8800")
+ (unspec (when (>= emacs-major-version 29) 'unspecified)))
+ (custom-theme-set-faces
+ 'tlast
+ `(default ((,class (:background ,bg1 :foreground ,fg1))))
+ `(font-lock-builtin-face ((,class (:foreground ,builtin))))
+ `(font-lock-comment-face ((,class (:foreground ,comment))))
+ `(font-lock-negation-char-face ((,class (:foreground ,const))))
+ `(font-lock-reference-face ((,class (:foreground ,const))))
+ `(font-lock-constant-face ((,class (:foreground ,const))))
+ `(font-lock-doc-face ((,class (:foreground ,comment))))
+ `(font-lock-function-name-face ((,class (:foreground ,func ))))
+ `(font-lock-keyword-face ((,class (:bold ,class :foreground ,keyword))))
+ `(font-lock-string-face ((,class (:foreground ,str))))
+ `(font-lock-type-face ((,class (:foreground ,type ))))
+ `(font-lock-variable-name-face ((,class (:foreground ,var))))
+ `(font-lock-warning-face ((,class (:foreground ,warning :background ,bg2))))
+ `(term-color-black ((,class (:foreground ,fg2 :background ,unspec))))
+ ;; `(region ((,class (:background ,fg1 :foreground ,bg1))))
+ `(region ((,class (:background ,selection))))
+ `(highlight ((,class (:foreground ,fg3 :background ,bg3))))
+ `(hl-line ((,class (:background ,bg2))))
+ `(fringe ((,class (:background ,bg2 :foreground ,fg4))))
+ `(cursor ((,class (:background ,fg4))))
+ `(isearch ((,class (:bold t :foreground ,warning :background ,bg3))))
+ `(mode-line ((,class (:box (:line-width 1 :color nil) :bold t :foreground ,fg4 :background ,bg2))))
+ `(mode-line-inactive ((,class (:box (:line-width 1 :color nil :style pressed-button) :foreground ,var :background ,bg1 :weight normal))))
+ `(mode-line-buffer-id ((,class (:bold t :foreground ,func :background ,unspec))))
+ `(mode-line-highlight ((,class (:foreground ,keyword :box nil :weight bold))))
+ `(mode-line-emphasis ((,class (:foreground ,fg1))))
+ `(vertical-border ((,class (:foreground ,fg3))))
+ `(minibuffer-prompt ((,class (:bold t :foreground ,keyword))))
+ `(default-italic ((,class (:italic t))))
+ `(link ((,class (:foreground ,const :underline t))))
+ `(org-code ((,class (:foreground ,fg2))))
+ `(org-hide ((,class (:foreground ,fg4))))
+ `(org-level-1 ((,class (:bold t :foreground ,fg2 :height 1.1))))
+ `(org-level-2 ((,class (:bold nil :foreground ,fg3))))
+ `(org-level-3 ((,class (:bold t :foreground ,fg4))))
+ `(org-level-4 ((,class (:bold nil :foreground ,bg4))))
+ `(org-date ((,class (:underline t :foreground ,var) )))
+ `(org-footnote ((,class (:underline t :foreground ,fg4))))
+ `(org-link ((,class (:underline t :foreground ,type ))))
+ `(org-special-keyword ((,class (:foreground ,func))))
+ `(org-block ((,class (:foreground ,fg3))))
+ `(org-quote ((,class (:inherit org-block :slant italic))))
+ `(org-verse ((,class (:inherit org-block :slant italic))))
+ `(org-todo ((,class (:box (:line-width 1 :color ,fg3) :foreground ,keyword :bold t))))
+ `(org-done ((,class (:box (:line-width 1 :color ,bg3) :bold t :foreground ,bg4))))
+ `(org-warning ((,class (:underline t :foreground ,warning))))
+ `(org-agenda-structure ((,class (:weight bold :foreground ,fg3 :box (:color ,fg4) :background ,bg3))))
+ `(org-agenda-date ((,class (:foreground ,var :height 1.1 ))))
+ `(org-agenda-date-weekend ((,class (:weight normal :foreground ,fg4))))
+ `(org-agenda-date-today ((,class (:weight bold :foreground ,keyword :height 1.4))))
+ `(org-agenda-done ((,class (:foreground ,bg4))))
+ `(org-scheduled ((,class (:foreground ,type))))
+ `(org-scheduled-today ((,class (:foreground ,func :weight bold :height 1.2))))
+ `(org-ellipsis ((,class (:foreground ,builtin))))
+ `(org-verbatim ((,class (:foreground ,fg4))))
+ `(org-document-info-keyword ((,class (:foreground ,func))))
+ `(font-latex-bold-face ((,class (:foreground ,type))))
+ `(font-latex-italic-face ((,class (:foreground ,var :italic t))))
+ `(font-latex-string-face ((,class (:foreground ,str))))
+ `(font-latex-match-reference-keywords ((,class (:foreground ,const))))
+ `(font-latex-match-variable-keywords ((,class (:foreground ,var))))
+ `(ido-only-match ((,class (:foreground ,warning))))
+ `(org-sexp-date ((,class (:foreground ,fg4))))
+ `(ido-first-match ((,class (:foreground ,keyword :bold t))))
+ `(ivy-current-match ((,class (:foreground ,fg3 :inherit highlight :underline t))))
+ `(gnus-header-content ((,class (:foreground ,keyword))))
+ `(gnus-header-from ((,class (:foreground ,var))))
+ `(gnus-header-name ((,class (:foreground ,type))))
+ `(gnus-header-subject ((,class (:foreground ,func :bold t))))
+ `(mu4e-view-url-number-face ((,class (:foreground ,type))))
+ `(mu4e-cited-1-face ((,class (:foreground ,fg2))))
+ `(mu4e-cited-7-face ((,class (:foreground ,fg3))))
+ `(mu4e-header-marks-face ((,class (:foreground ,type))))
+ `(ffap ((,class (:foreground ,fg4))))
+ `(js2-private-function-call ((,class (:foreground ,const))))
+ `(js2-jsdoc-html-tag-delimiter ((,class (:foreground ,str))))
+ `(js2-jsdoc-html-tag-name ((,class (:foreground ,var))))
+ `(js2-external-variable ((,class (:foreground ,type ))))
+ `(js2-function-param ((,class (:foreground ,const))))
+ `(js2-jsdoc-value ((,class (:foreground ,str))))
+ `(js2-private-member ((,class (:foreground ,fg3))))
+ `(js3-warning-face ((,class (:underline ,keyword))))
+ `(js3-error-face ((,class (:underline ,warning))))
+ `(js3-external-variable-face ((,class (:foreground ,var))))
+ `(js3-function-param-face ((,class (:foreground ,fg2))))
+ `(js3-jsdoc-tag-face ((,class (:foreground ,keyword))))
+ `(js3-instance-member-face ((,class (:foreground ,const))))
+ `(warning ((,class (:foreground ,warning))))
+ `(ac-completion-face ((,class (:underline t :foreground ,keyword))))
+ `(info-quoted-name ((,class (:foreground ,builtin))))
+ `(info-string ((,class (:foreground ,str))))
+ `(icompletep-determined ((,class :foreground ,builtin)))
+ `(undo-tree-visualizer-current-face ((,class :foreground ,builtin)))
+ `(undo-tree-visualizer-default-face ((,class :foreground ,fg2)))
+ `(undo-tree-visualizer-unmodified-face ((,class :foreground ,var)))
+ `(undo-tree-visualizer-register-face ((,class :foreground ,type)))
+ `(slime-repl-inputed-output-face ((,class (:foreground ,type))))
+ `(trailing-whitespace ((,class :foreground ,unspec :background ,warning)))
+ `(rainbow-delimiters-depth-1-face ((,class :foreground ,fg1)))
+ `(rainbow-delimiters-depth-2-face ((,class :foreground ,type)))
+ `(rainbow-delimiters-depth-3-face ((,class :foreground ,var)))
+ `(rainbow-delimiters-depth-4-face ((,class :foreground ,const)))
+ `(rainbow-delimiters-depth-5-face ((,class :foreground ,keyword)))
+ `(rainbow-delimiters-depth-6-face ((,class :foreground ,fg1)))
+ `(rainbow-delimiters-depth-7-face ((,class :foreground ,type)))
+ `(rainbow-delimiters-depth-8-face ((,class :foreground ,var)))
+ `(magit-item-highlight ((,class :background ,bg3)))
+ `(magit-section-heading ((,class (:foreground ,keyword :weight bold))))
+ `(magit-hunk-heading ((,class (:background ,bg3))))
+ `(magit-section-highlight ((,class (:background ,bg2))))
+ `(magit-hunk-heading-highlight ((,class (:background ,bg3))))
+ `(magit-diff-context-highlight ((,class (:background ,bg3 :foreground ,fg3))))
+ `(magit-diffstat-added ((,class (:foreground ,type))))
+ `(magit-diffstat-removed ((,class (:foreground ,var))))
+ `(magit-process-ok ((,class (:foreground ,func :weight bold))))
+ `(magit-process-ng ((,class (:foreground ,warning :weight bold))))
+ `(magit-branch ((,class (:foreground ,const :weight bold))))
+ `(magit-log-author ((,class (:foreground ,fg3))))
+ `(magit-hash ((,class (:foreground ,fg2))))
+ `(magit-diff-file-header ((,class (:foreground ,fg2 :background ,bg3))))
+ `(lazy-highlight ((,class (:foreground ,fg2 :background ,bg3))))
+ `(term ((,class (:foreground ,fg1 :background ,bg1))))
+ `(term-color-black ((,class (:foreground ,bg3 :background ,bg3))))
+ `(term-color-blue ((,class (:foreground ,func :background ,func))))
+ `(term-color-red ((,class (:foreground ,keyword :background ,bg3))))
+ `(term-color-green ((,class (:foreground ,type :background ,bg3))))
+ `(term-color-yellow ((,class (:foreground ,var :background ,var))))
+ `(term-color-magenta ((,class (:foreground ,builtin :background ,builtin))))
+ `(term-color-cyan ((,class (:foreground ,str :background ,str))))
+ `(term-color-white ((,class (:foreground ,fg2 :background ,fg2))))
+ `(rainbow-delimiters-unmatched-face ((,class :foreground ,warning)))
+ `(helm-header ((,class (:foreground ,fg2 :background ,bg1 :underline nil :box nil))))
+ `(helm-source-header ((,class (:foreground ,keyword :background ,bg1 :underline nil :weight bold))))
+ `(helm-selection ((,class (:background ,bg2 :underline nil))))
+ `(helm-selection-line ((,class (:background ,bg2))))
+ `(helm-visible-mark ((,class (:foreground ,bg1 :background ,bg3))))
+ `(helm-candidate-number ((,class (:foreground ,bg1 :background ,fg1))))
+ `(helm-separator ((,class (:foreground ,type :background ,bg1))))
+ `(helm-time-zone-current ((,class (:foreground ,builtin :background ,bg1))))
+ `(helm-time-zone-home ((,class (:foreground ,type :background ,bg1))))
+ `(helm-buffer-not-saved ((,class (:foreground ,type :background ,bg1))))
+ `(helm-buffer-process ((,class (:foreground ,builtin :background ,bg1))))
+ `(helm-buffer-saved-out ((,class (:foreground ,fg1 :background ,bg1))))
+ `(helm-buffer-size ((,class (:foreground ,fg1 :background ,bg1))))
+ `(helm-ff-directory ((,class (:foreground ,func :background ,bg1 :weight bold))))
+ `(helm-ff-file ((,class (:foreground ,fg1 :background ,bg1 :weight normal))))
+ `(helm-ff-executable ((,class (:foreground ,var :background ,bg1 :weight normal))))
+ `(helm-ff-invalid-symlink ((,class (:foreground ,warning2 :background ,bg1 :weight bold))))
+ `(helm-ff-symlink ((,class (:foreground ,keyword :background ,bg1 :weight bold))))
+ `(helm-ff-prefix ((,class (:foreground ,bg1 :background ,keyword :weight normal))))
+ `(helm-grep-cmd-line ((,class (:foreground ,fg1 :background ,bg1))))
+ `(helm-grep-file ((,class (:foreground ,fg1 :background ,bg1))))
+ `(helm-grep-finish ((,class (:foreground ,fg2 :background ,bg1))))
+ `(helm-grep-lineno ((,class (:foreground ,fg1 :background ,bg1))))
+ `(helm-grep-match ((,class (:foreground ,unspec :background ,unspec :inherit helm-match))))
+ `(helm-grep-running ((,class (:foreground ,func :background ,bg1))))
+ `(helm-moccur-buffer ((,class (:foreground ,func :background ,bg1))))
+ `(helm-source-go-package-godoc-description ((,class (:foreground ,str))))
+ `(helm-bookmark-w3m ((,class (:foreground ,type))))
+ `(company-echo-common ((,class (:foreground ,bg1 :background ,fg1))))
+ `(company-preview ((,class (:background ,bg1 :foreground ,var))))
+ `(company-preview-common ((,class (:foreground ,bg2 :foreground ,fg3))))
+ `(company-preview-search ((,class (:foreground ,type :background ,bg1))))
+ `(company-scrollbar-bg ((,class (:background ,bg3))))
+ `(company-scrollbar-fg ((,class (:foreground ,keyword))))
+ `(company-tooltip ((,class (:foreground ,fg2 :background ,bg2 :bold t))))
+ `(company-tooltop-annotation ((,class (:foreground ,const))))
+ `(company-tooltip-common ((,class ( :foreground ,fg3))))
+ `(company-tooltip-common-selection ((,class (:foreground ,str))))
+ `(company-tooltip-mouse ((,class (:inherit highlight))))
+ `(company-tooltip-selection ((,class (:background ,bg3 :foreground ,fg3))))
+ `(company-template-field ((,class (:inherit region))))
+ `(web-mode-builtin-face ((,class (:inherit ,font-lock-builtin-face))))
+ `(web-mode-comment-face ((,class (:inherit ,font-lock-comment-face))))
+ `(web-mode-constant-face ((,class (:inherit ,font-lock-constant-face))))
+ `(web-mode-keyword-face ((,class (:foreground ,keyword))))
+ `(web-mode-doctype-face ((,class (:inherit ,font-lock-comment-face))))
+ `(web-mode-function-name-face ((,class (:inherit ,font-lock-function-name-face))))
+ `(web-mode-string-face ((,class (:foreground ,str))))
+ `(web-mode-type-face ((,class (:inherit ,font-lock-type-face))))
+ `(web-mode-html-attr-name-face ((,class (:foreground ,func))))
+ `(web-mode-html-attr-value-face ((,class (:foreground ,keyword))))
+ `(web-mode-warning-face ((,class (:inherit ,font-lock-warning-face))))
+ `(web-mode-html-tag-face ((,class (:foreground ,builtin))))
+ `(jde-java-font-lock-package-face ((t (:foreground ,var))))
+ `(jde-java-font-lock-public-face ((t (:foreground ,keyword))))
+ `(jde-java-font-lock-private-face ((t (:foreground ,keyword))))
+ `(jde-java-font-lock-constant-face ((t (:foreground ,const))))
+ `(jde-java-font-lock-modifier-face ((t (:foreground ,fg2))))
+ `(jde-jave-font-lock-protected-face ((t (:foreground ,keyword))))
+ `(jde-java-font-lock-number-face ((t (:foreground ,var))))
+ `(yas-field-highlight-face ((t (:background ,selection)))))
+ ;; Legacy
+ (if (< emacs-major-version 22)
+ (custom-theme-set-faces
+ 'tlast
+ `(show-paren-match-face ((,class (:background ,warning))))) ;; obsoleted in 22.1, removed 2016
+ (custom-theme-set-faces
+ 'tlast
+ `(show-paren-match ((,class (:foreground ,bg1 :background ,str))))
+ `(show-paren-mismatch ((,class (:foreground ,bg1 :background ,warning))))))
+ ;; emacs >= 26.1
+ (when (>= emacs-major-version 26)
+ (custom-theme-set-faces
+ 'tlast
+ `(line-number ((t (:inherit fringe))))
+ `(line-number-current-line ((t (:inherit fringe :foreground ,fg6 :weight bold))))))
+
+ ;; emacs >= 27.1
+ (when (>= emacs-major-version 27)
+ (custom-theme-set-faces
+ 'tlast
+ `(tab-line ((,class (:background ,bg2 :foreground ,fg4))))
+ `(tab-line-tab ((,class (:inherit tab-line))))
+ `(tab-line-tab-inactive ((,class (:background ,bg2 :foreground ,fg4))))
+ `(tab-line-tab-current ((,class (:background ,bg1 :foreground ,fg1))))
+ `(tab-line-highlight ((,class (:background ,bg1 :foreground ,fg2))))))
+ (when (>= emacs-major-version 28)
+ (custom-theme-set-faces
+ 'tlast
+ `(line-number ((t (:inherit fringe))))
+ `(line-number-current-line ((t (:inherit fringe :foreground ,fg6 :weight bold))))))
+;; emacs >= 27.1
+(when (>= emacs-major-version 27)
+ (custom-theme-set-faces
+ 'tlast
+ `(tab-line ((,class (:background ,bg2 :foreground ,fg4))))
+ `(tab-line-tab ((,class (:inherit tab-line))))
+ `(tab-line-tab-inactive ((,class (:background ,bg2 :foreground ,fg4))))
+ `(tab-line-tab-current ((,class (:background ,bg1 :foreground ,fg1))))
+ `(tab-line-highlight ((,class (:background ,bg1 :foreground ,fg2))))))
+ (when (>= emacs-major-version 28)
+ (custom-theme-set-faces
+ 'tlast
+ `(tab-line-tab-modified ((,class (:foreground ,warning2 :weight bold))))))
+ (when (boundp 'font-lock-regexp-face)
+ (custom-theme-set-faces
+ 'tlast
+ `(font-lock-regexp-face ((,class (:inherit font-lock-string-face :underline t)))))))
+
+;;;###autoload
+(when load-file-name
+ (add-to-list 'custom-theme-load-path
+ (file-name-as-directory (file-name-directory load-file-name))))
+
+(provide-theme 'tlast)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; tlast-theme.el ends here
diff --git a/config/extra/kitty/kitty.conf b/config/extra/kitty/kitty.conf
index 9d9168b..2cf6565 100644
--- a/config/extra/kitty/kitty.conf
+++ b/config/extra/kitty/kitty.conf
@@ -6,7 +6,7 @@
#: individual font faces and even specify special fonts for particular
#: characters.
-font_family DejaVuSansMono
+font_family monospace
bold_font auto
italic_font auto
bold_italic_font auto
diff --git a/config/wayland/dwl/startup.sh b/config/wayland/dwl/startup.sh
index d743f19..8817ad2 100755
--- a/config/wayland/dwl/startup.sh
+++ b/config/wayland/dwl/startup.sh
@@ -10,6 +10,7 @@ swaybg -i ~/pics/wallpaper &
wl-paste --watch cliphist store &
swayidle 300 locker &
keyadd id_rsa &
+emacs --daemon &
pkill -f "tail -f $HOME/.config/wob/pipe"
WOBCONFIG="$HOME"/.config/wob
diff --git a/config/wayland/hypr/binds.conf b/config/wayland/hypr/binds.conf
index 19c1c8d..251ce69 100644
--- a/config/wayland/hypr/binds.conf
+++ b/config/wayland/hypr/binds.conf
@@ -11,19 +11,19 @@ bind = $mainMod, F, togglefloating,
bind = $mainMod SHIFT, P, pseudo
bind = $mainMod, S, togglesplit
-bind = $mainMod, E, focusmonitor, +1
-bind = $mainMod, W, focusmonitor, -1
+bind = $mainMod, COMMA, focusmonitor, +1
+bind = $mainMod, PERIOD, focusmonitor, -1
binde = $mainMod, H, movefocus, l
binde = $mainMod, J, movefocus, d
binde = $mainMod, K, movefocus, u
binde = $mainMod, L, movefocus, r
binde = $mainMod, SPACE, swapnext
-bind = $mainMod SHIFT, E, movewindow, mon:+1
-bind = $mainMod SHIFT, W, movewindow, mon:-1
-bind = $mainMod CTRL, E, movewindow, mon:+1
-bind = $mainMod CTRL, E, focusmonitor, -1
-bind = $mainMod CTRL, W, movewindow, mon:-1
-bind = $mainMod CTRL, W, focusmonitor, +1
+bind = $mainMod SHIFT, PERIOD, movewindow, mon:+1
+bind = $mainMod SHIFT, COMMA, movewindow, mon:-1
+bind = $mainMod CTRL, PERIOD, movewindow, mon:+1
+bind = $mainMod CTRL, PERIOD, focusmonitor, -1
+bind = $mainMod CTRL, COMMA, movewindow, mon:-1
+bind = $mainMod CTRL, COMMA, focusmonitor, +1
binde = $mainMod SHIFT, H, resizeactive, -60 0
binde = $mainMod SHIFT, J, resizeactive, 0 60
@@ -69,12 +69,13 @@ bind = $mainMod, mouse_up, workspace, e-1
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
+bind = $mainMod, B, exec, $BROWSER
+bind = $mainMod, E, exec, emacsclient -c -a 'emacs'
+
bind = $mainMod, A, submap, apps
submap = apps
bind = $mainMod, D, exec, discord
bind = , D, exec, discord
-bind = $mainMod, B, exec, $BROWSER
-bind = , B, exec, $BROWSER
bind = $mainMod, G, exec, gml
bind = , G, exec, gml
source = ./reset-submap.conf
diff --git a/config/wayland/waybar/configs/hyprland.jsonc b/config/wayland/waybar/configs/hyprland.jsonc
index cd24d14..9d60915 100644
--- a/config/wayland/waybar/configs/hyprland.jsonc
+++ b/config/wayland/waybar/configs/hyprland.jsonc
@@ -23,7 +23,7 @@
"interval": 10,
},
"hyprland/window": {
- "format": "{}",
+ "format": " {}",
"separate-outputs": true,
},
"pulseaudio": {
diff --git a/config/wayland/waybar/style.css b/config/wayland/waybar/style.css
index b5a6cf9..76f49ff 120000
--- a/config/wayland/waybar/style.css
+++ b/config/wayland/waybar/style.css
@@ -1 +1 @@
-styles/base16.css \ No newline at end of file
+styles/nord.css \ No newline at end of file
diff --git a/config/wayland/waybar/styles/base16.css b/config/wayland/waybar/styles/base16.css
index c9e3170..639b590 100644
--- a/config/wayland/waybar/styles/base16.css
+++ b/config/wayland/waybar/styles/base16.css
@@ -17,7 +17,7 @@
border-radius: 0;
font-family: monospace;
font-weight: bold;
- font-size: 14px;
+ font-size: 12px;
min-height: 24px;
}
@@ -90,8 +90,6 @@ window#waybar.PCSX2 #window {
#workspaces button.active, #tags button.focused {
background-color: @color6;
- border-bottom: 6px solid @color4;
-
}
#workspaces button:hover, #tags button:hover {
diff --git a/config/wayland/waybar/styles/colors/colors.css b/config/wayland/waybar/styles/colors/colors.css
index 2a2c2fa..801cf92 120000
--- a/config/wayland/waybar/styles/colors/colors.css
+++ b/config/wayland/waybar/styles/colors/colors.css
@@ -1 +1 @@
-/home/aluc/.cache/wal/colors-waybar.css \ No newline at end of file
+colors-nord \ No newline at end of file
diff --git a/config/wayland/waybar/styles/nord.css b/config/wayland/waybar/styles/nord.css
index efd0e81..3b7b7f6 100644
--- a/config/wayland/waybar/styles/nord.css
+++ b/config/wayland/waybar/styles/nord.css
@@ -40,7 +40,6 @@ window#waybar.PCSX2 #window {
margin-left: 8px;
padding-left: 16px;
padding-right: 16px;
- border-radius: 26px;
}
#workspaces, #mpd, #battery,
@@ -48,6 +47,7 @@ window#waybar.PCSX2 #window {
margin-top: 4px;
margin-bottom: 2px;
transition: none;
+ border-radius: 6px;
}
#battery {
@@ -57,7 +57,6 @@ window#waybar.PCSX2 #window {
#workspaces {
margin-left: 12px;
- border-radius: 26px;
background: #2e3440;
}
@@ -69,7 +68,8 @@ window#waybar.PCSX2 #window {
}
#workspaces button.active {
- color: #5e81ac;
+ color: #a3be8c;
+ text-shadow: 0px 0px 1px #a3be8c;
}
#workspaces button:hover {
@@ -122,7 +122,6 @@ window#waybar.PCSX2 #window {
margin-right: 12px;
padding-left: 16px;
padding-right: 16px;
- border-radius: 26px;
color: #d8dee9;
background: #2e3440;
}