From 74b093b86f63ebc24afa91ddad8a795390bd8e69 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sun, 24 Jul 2022 07:44:52 +0700 Subject: [PATCH] Trying to build out vanilla emacs --- .config/fish/config.fish | 9 +- .config/fish/fish_variables | 5 +- .config/kitty/kitty.conf | 4 +- .config/nvim/init-kitty.vim | 1 + .config/nvim/init.vim | 1 + .doom.d/config.el | 20 ++- .doom.d/init.el | 8 +- .doom.d/packages.el | 5 + .emacs.vanilla/init.el | 290 ++++++++++++++++++++++++------------ 9 files changed, 234 insertions(+), 109 deletions(-) diff --git a/.config/fish/config.fish b/.config/fish/config.fish index 1b589a4..f7f0c10 100644 --- a/.config/fish/config.fish +++ b/.config/fish/config.fish @@ -5,10 +5,13 @@ set -gx XDG_CONFIG_HOME /home/joe/.config set -gx XDG_DATA_HOME /home/joe/.local/share set -gx XDG_CACHE_HOME /home/joe/.cache -set -gx VISUAL emacsclient -n -set -gx EDITOR emacsclient -n +# set -gx VISUAL emacsclient -n +# set -gx EDITOR emacsclient -n +set -gx VISUAL nvim +set -gx EDITOR nvim set -gx MANPAGER "sh -c 'col -bx | bat -l man -p'" +set -gx DOTNET_CLI_TELEMETRY_OPTOUT 1 bind -M insert \cx restore_job if [ (uname -r | sed -n 's/.*\( *Microsoft *\).*/\1/ip') ] @@ -74,3 +77,5 @@ complete -f -c dotnet -a "(dotnet complete)" # printf "%b" (string join " \n" (vterm_old_fish_prompt)) # vterm_prompt_end # end + +set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX $HOME ; set -gx PATH $HOME/.cabal/bin $PATH /home/joe/.ghcup/bin # ghcup-env \ No newline at end of file diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables index 5927cf9..add73a9 100644 --- a/.config/fish/fish_variables +++ b/.config/fish/fish_variables @@ -5,7 +5,7 @@ SETUVAR VISUAL:nvim SETUVAR XDG_CACHE_HOME:/home/joe/\x2ecache SETUVAR XDG_CONFIG_HOME:/home/joe/\x2econfig SETUVAR XDG_DATA_HOME:/home/joe/\x2elocal/share -SETUVAR __fish_initialized:3100 +SETUVAR __fish_initialized:3400 SETUVAR _fisher_jorgebucaran_2F_fisher_files:/home/joe/\x2econfig/fish/functions/fisher\x2efish\x1e/home/joe/\x2econfig/fish/completions/fisher\x2efish SETUVAR _fisher_plugins:jorgebucaran/fisher\x1esei40kr/fish\x2dranger\x2dcd SETUVAR _fisher_sei40kr_2F_fish_2D_ranger_2D_cd_files:/home/joe/\x2econfig/fish/functions/ranger\x2dcd\x2efish @@ -37,4 +37,5 @@ SETUVAR fish_pager_color_completion:normal SETUVAR fish_pager_color_description:B3A06D\x1eyellow SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan -SETUVAR fish_user_paths:/home/joe/\x2elocal/share/solana/install/active_release/bin\x1e/home/joe/\x2edotnet/tools\x1e/home/joe/\x2elocal/bin +SETUVAR fish_pager_color_selected_background:\x2dr +SETUVAR fish_user_paths:/home/joe/\x2elocal/share/JetBrains/Toolbox/scripts\x1e/home/joe/\x2elocal/bin/jetbrains\x1e/home/joe/\x2elocal/share/JetBrains/Toolbox/script\x1e/home/joe/\x2elocal/share/solana/install/active_release/bin\x1e/home/joe/\x2edotnet/tools\x1e/home/joe/\x2elocal/bin diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index 34d83aa..184c7ed 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -31,5 +31,5 @@ map shift+left move_window left map shift+right move_window right map shift+down move_window down -scrollback_pager bash -c 'nvim " -c "autocmd TermOpen * normal G" -c "terminal cat /proc/$$/fd/0 -" -c "set clipboard+=unnamedplus" -c "call cursor(CURSOR_LINE, CURSOR_COLUMN)"' - +# scrollback_pager bash -c 'nvim " -c "autocmd TermOpen * normal G" -c "terminal cat /proc/$$/fd/0 -" -c "set clipboard+=unnamedplus" -c "call cursor(CURSOR_LINE, CURSOR_COLUMN)"' +scrollback_pager nvim -u ~/.config/nvim/init-kitty.vim -c "map q :qa!" -c "set norelativenumber nonumber nolist showtabline=0 foldcolumn=0" -c "autocmd TermOpen * normal G" -c "silent! write /tmp/kitty_scrollback_buffer | te cat /tmp/kitty_scrollback_buffer - " diff --git a/.config/nvim/init-kitty.vim b/.config/nvim/init-kitty.vim index c83c3b1..9c278af 100644 --- a/.config/nvim/init-kitty.vim +++ b/.config/nvim/init-kitty.vim @@ -56,6 +56,7 @@ set noswapfile set nobackup set hidden set wildmenu +set shell=/bin/bash set clipboard=unnamedplus let mapleader = " " diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 1ae4618..2bbd554 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -56,6 +56,7 @@ set nobackup set hidden set wildmenu set clipboard=unnamedplus +set shell=/bin/bash if exists('g:fvim_loaded') nnoremap :set guifont=+ diff --git a/.doom.d/config.el b/.doom.d/config.el index 7fcfe30..5fd0f9c 100644 --- a/.doom.d/config.el +++ b/.doom.d/config.el @@ -72,11 +72,15 @@ (defun joe/dired-open-with-wsl-open () "Open file under cursor with wsl-open which should launch it on the windows side" (interactive) - (shell-command (format "wsl-open '%s'" (dired-get-filename)))) + (shell-command (format "open '%s'" (dired-get-filename)))) (map! - (:n "-" #'dired-jump) - (:n "C-h" #'dired-jump) + (:n "-" #'dired-jump + :n "C-l" #'evil-window-right + :n "C-h" #'evil-window-left) + (:after flycheck + :map flycheck-mode-map + :leader "e" #'flycheck-explain-error-at-point) (:after dired :map dired-mode-map :n "o" #'joe/dired-open-with-wsl-open @@ -89,11 +93,15 @@ (require 'avy) (defvar avy-map (make-sparse-keymap)) -(use-package! org-bullets - :hook (org-mode . org-bullets-mode)) - (use-package! avy :init (setq avy-keys '(?a ?s ?d ?f ?w ?e ?r ?u ?i ?o ?h ?j ?k ?l ?x ?c ?m ?z ?p ?q ?t ?y ?b ?n)) (setq avy-all-windows nil) (setq avy-background t)) + +(use-package! org-bullets + :hook (org-mode . org-bullets-mode)) + +(use-package! company + :after + (add-to-list 'company-backends 'company-restclient)) diff --git a/.doom.d/init.el b/.doom.d/init.el index ed8e8ac..c653b3b 100644 --- a/.doom.d/init.el +++ b/.doom.d/init.el @@ -115,7 +115,7 @@ ;;beancount ; mind the GAAP cc ; C > C++ == 1 ;;clojure ; java with a lisp - ;;common-lisp ; if you've seen one lisp, you've seen them all + common-lisp ; if you've seen one lisp, you've seen them all ;;coq ; proofs-as-programs ;;crystal ; ruby at the speed of c csharp ; unity, .NET, and mono shenanigans @@ -130,11 +130,11 @@ ;;factor ;;faust ; dsp, but you get to keep your soul ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) - fsharp ; ML stands for Microsoft's Language + (fsharp +lsp) ; ML stands for Microsoft's Language ;;fstar ; (dependent) types and (monadic) effects and Z3 ;;gdscript ; the language you waited for ;;(go +lsp) ; the hipster dialect - ;;(haskell +lsp) ; a language that's lazier than I am + (haskell +lsp) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python ;;idris ; a language you can depend on json ; At least it ain't XML @@ -156,7 +156,7 @@ ;;purescript ; javascript, but functional ;;python ; beautiful is better than ugly ;;qt ; the 'cutest' gui framework ever - ;;racket ; a DSL for DSLs + (racket +lsp +xp) ; a DSL for DSLs ;;raku ; the artist formerly known as perl6 ;;rest ; Emacs as a REST client ;;rst ; ReST in peace diff --git a/.doom.d/packages.el b/.doom.d/packages.el index 37356e4..07715bf 100644 --- a/.doom.d/packages.el +++ b/.doom.d/packages.el @@ -51,3 +51,8 @@ (package! avy) (package! org-bullets) +(package! org-roam) +(package! restclient) +(package! know-your-http-well) +(package! company-restclient) +(package! dockerfile-mode) diff --git a/.emacs.vanilla/init.el b/.emacs.vanilla/init.el index a6d965f..4d8c5d7 100644 --- a/.emacs.vanilla/init.el +++ b/.emacs.vanilla/init.el @@ -23,8 +23,8 @@ (put 'narrow-to-region 'disabled nil) (put 'dired-find-alternate-file 'disabled nil) -(require 'server) -(if (not (server-running-p)) (server-start)) +;; (require 'server) +;; (if (not (server-running-p)) (server-start)) (setq default-directory "/home/joe") @@ -38,13 +38,14 @@ (invert-face 'mode-line) (run-with-timer 0.1 nil #'invert-face 'mode-line)) -(setq visible-bell nil ring-bell-function 'joe/flash-mode-line) +;; (setq visible-bell nil ring-bell-function 'joe/flash-mode-line) (setq-default display-line-numbers 'relative) -(dolist (mode '(org-mode-hook term-mode-hook eww-mode-hook vterm-mode-hook eshell-mode-hook dired-mode-hook shell-mode-hook magit-mode-hook)) +(dolist (mode '(dashboard-mode-hook org-mode-hook term-mode-hook eww-mode-hook vterm-mode-hook eshell-mode-hook dired-mode-hook shell-mode-hook magit-mode-hook)) (add-hook mode (lambda () (display-line-numbers-mode 0)))) (make-variable-buffer-local 'global-hl-line-mode) - +(set-window-margins nil 0) +(setq-default right-fringe-width 10) (setq scroll-margin 0 scroll-conservatively 100000 scroll-preserve-screen-position 1) @@ -52,7 +53,11 @@ (global-hl-line-mode +1) (column-number-mode +1) -(set-face-attribute 'default nil :font "Fira Code Nerd Font" :height 115) +(set-face-attribute 'default nil :font "Fira Code Nerd Font" :height 105) +(setq-default line-spacing 5) +(add-hook 'dashboard-mode-hook (lambda () (setq-local line-spacing 12))) + +(set-face-foreground 'minibuffer-prompt nil) ;; Text Settings (setq-default c-basic-offset 4) ;; This is annoying @@ -103,10 +108,6 @@ all of the evil keybindings in buffers like magit, without compromises." ;; ("marmalade" . "http://marmalade-repo.org/packages/"))) (add-hook 'before-save-hook 'whitespace-cleanup) - -;; TODO: We need 3 bindings; 1.) close buffer 2.) close window 3.) close buffer and window -(global-set-key (kbd "C-x k") 'kill-this-buffer) - ;; Packages (package-initialize) @@ -125,16 +126,26 @@ all of the evil keybindings in buffers like magit, without compromises." '(beacon-color "#f2777a") '(custom-safe-themes '("aaa4c36ce00e572784d424554dcc9641c82d1155370770e231e10c649b59a074" default)) + '(feebleline-msg-functions + '((feebleline-line-number :align right :post "" :fmt "%5s") + (feebleline-column-number :pre ":" :fmt "%-2s") + (feebleline-file-directory :face feebleline-dir-face :post "") + (feebleline-file-or-buffer-name :face font-lock-keyword-face :post "") + (feebleline-file-modified-star :face font-lock-warning-face :post "") + (feebleline-git-branch :face feebleline-git-face :pre " - "))) '(flycheck-color-mode-line-face-to-color 'mode-line-buffer-id) '(frame-background-mode 'dark) '(package-selected-packages - '(evil-goggles magit multi-vterm evil-collection smartparens vterm all-the-icons-dired all-the-icons org-bullets select-themes fsharp-mode eglot-fsharp fish-mode find-file-in-project helpful ahk-mode rainbow-delimiters doom-themes marginalia eglot selectrum-prescient prescient selectrum avy evil-commentary evil-embrace evil-snipe evil-surround undo-tree which-key dashboard)) + '(flycheck all-the-icons-completion kind-icon feebleline mini-modeline sublimity good-scroll shelldon pcomplete-extension corfu-doc esh-autosuggest fish-completion cape corfu highlight-quoted writeroom-mode mini-frame dirvish ranger evil-goggles magit multi-vterm evil-collection smartparens vterm all-the-icons-dired all-the-icons org-bullets select-themes fsharp-mode eglot-fsharp fish-mode find-file-in-project helpful ahk-mode rainbow-delimiters doom-themes marginalia eglot selectrum-prescient prescient selectrum avy evil-commentary evil-embrace evil-snipe evil-surround undo-tree which-key dashboard)) '(window-divider-mode nil)) (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. + '(evil-goggles-delete-face ((t (:inherit 'shadow)))) + '(evil-goggles-paste-face ((t (:inherit 'lazy-highlight)))) + '(evil-goggles-yank-face ((t (:inherit 'isearch-fail)))) '(magit-diff-hunk-heading-highlight ((t (:extend t :background "cornflower blue" :foreground "#212337" :weight bold))))) (dolist (p package-selected-packages) @@ -148,12 +159,21 @@ all of the evil keybindings in buffers like magit, without compromises." (setq evil-undo-system 'undo-tree) (setq evil-want-C-u-scroll t) (setq evil-want-Y-yank-to-eol t) + +(require 'highlight-quoted) +(add-hook 'emacs-lisp-mode-hook 'highlight-quoted-mode) + (global-undo-tree-mode) +(setq undo-tree-visualizer-diff t) +(setq undo-tree-history-directory-alist '(("." . "~/.emacs.vanilla/undo"))) (require 'evil) (evil-mode) (require 'evil-collection) (evil-collection-init) +(save-place-mode t) +(setq save-place-file "~/.emacs.vanilla/places") + (require 'dired) (if (eq system-type 'windows-nt) (setq ls-lisp-dirs-first t) @@ -198,6 +218,12 @@ all of the evil keybindings in buffers like magit, without compromises." (require 'dashboard) (dashboard-setup-startup-hook) +(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) +(setq dashboard-startup-banner 'logo) +(setq dashboard-center-content t) +(setq dashboard-set-file-icons t) +(setq dashboard-set-heading-icons t) + (require 'which-key) (setq which-key-idle-delay 0.3) @@ -215,6 +241,7 @@ all of the evil keybindings in buffers like magit, without compromises." (evil-set-leader 'normal (kbd "SPC")) +;; TODO: We need 3 bindings; 1.) close buffer 2.) close window 3.) close buffer and window ;; To disable a keybinding just bind it to nil (evil-define-key 'normal 'global (kbd "w") 'save-buffer) (evil-define-key 'normal 'global (kbd "q") 'kill-buffer-and-window) @@ -234,20 +261,42 @@ all of the evil keybindings in buffers like magit, without compromises." (evil-define-key 'normal 'global (kbd "bi") 'ibuffer) (evil-define-key 'normal 'global (kbd "bm") 'joe/toggle-buffer-mode) (evil-define-key 'normal 'global (kbd "br") 'joe/revert-buffer-no-confirm) +(evil-define-key 'normal 'global (kbd "bk") 'kill-this-buffer) (evil-define-key 'normal 'global (kbd "gg") 'magit-status) (evil-define-key 'normal 'global (kbd "pi") 'package-install) (evil-define-key 'normal 'global (kbd "pd") 'package-delete) (evil-define-key 'normal 'global (kbd "pf") 'package-refresh-contents) (evil-define-key 'normal 'global (kbd "pl") 'package-list-packages) (evil-define-key 'normal 'global (kbd "pr") 'package-reinstall) -(evil-define-key 'normal 'global (kbd "ss") 'multi-vterm) -(evil-define-key 'normal 'global (kbd "sp") 'multi-vterm-prev) +(evil-define-key 'normal 'global (kbd "C-t") 'multi-vterm-dedicated-toggle) (evil-define-key 'normal 'global (kbd "sn") 'multi-vterm-next) -(evil-define-key 'normal 'global (kbd "sP") 'multi-vterm-project) -(evil-define-key 'normal 'global (kbd "st") 'multi-vterm-dedicated-toggle) -(evil-define-key 'normal 'global (kbd "sf") 'multi-vterm-dedicated-select) +(evil-define-key 'normal 'global (kbd "sp") 'multi-vterm-project) +(evil-define-key 'normal 'global (kbd "sv") 'vterm-other-window) (evil-define-key 'normal 'global (kbd "Ba") 'joe/bookmark-set-and-save) (evil-define-key 'normal 'global (kbd "Bd") 'bookmark-delete) +(evil-define-key 'insert vterm-mode-map (kbd "C-t") #'multi-vterm-dedicated-toggle) +(evil-define-key 'normal 'global (kbd "C-t") #'multi-vterm-dedicated-open) +(evil-define-key 'insert vterm-mode-map (kbd "C-t") #'multi-vterm-dedicated-open) + +(defun joe/half-scroll-down () + (interactive) + (good-scroll-move (/ (good-scroll--window-usable-height) 2))) + +(defun joe/half-scroll-up () + (interactive) + (good-scroll-move (- (/ (good-scroll--window-usable-height) 2)))) +;; (setq good-scroll-avoid-vscroll-reset 1) +;; (evil-define-key 'normal 'global (kbd "C-e") 'good-scroll-up) +;; (evil-define-key 'normal 'global (kbd "C-y") 'good-scroll-down) +;; (evil-define-key 'normal 'global (kbd "C-d") 'joe/half-scroll-down) +;; (evil-define-key 'normal 'global (kbd "C-u") 'joe/half-scroll-up) +;; (evil-define-key 'normal 'global (kbd "C-f") 'good-scroll-up-full-screen) +;; (evil-define-key 'normal 'global (kbd "C-b") 'good-scroll-down-full-screen) +(require 'sublimity) +(require 'sublimity-scroll) +(sublimity-mode 1) +(setq sublimity-scroll-weight 14 + sublimity-scroll-drift-length 6) (evil-define-key 'normal 'global (kbd "C-h") 'evil-window-left) (evil-define-key 'normal 'global (kbd "C-j") 'evil-window-down) @@ -260,47 +309,11 @@ all of the evil keybindings in buffers like magit, without compromises." ;; (evil-define-key 'normal 'global (kbd "M-h") 'tab-line-switch-to-prev-tab) ;; (evil-define-key 'normal 'global (kbd "M-l") 'tab-line-switch-to-next-tab) -;; TODO figure out how to create these kinds of aliases -;; (evil-define-key 'normal 'global (kbd "gg") 'magit-status) - -;; abbr -a -g ga "git add" -;; abbr -a -g gch "git checkout" -;; abbr -a -g gchm "git checkout master" -;; abbr -a -g gchb "git checkout -b" -;; abbr -a -g gd "git diff" -;; abbr -a -g gdh "git diff HEAD" -;; abbr -a -g gm "git merge" -;; abbr -a -g gms "git merge --squash" -;; abbr -a -g gb "git branch" -;; abbr -a -g gba "git branch -a" -;; abbr -a -g gf "git fetch" -;; abbr -a -g gr "git rebase" -;; abbr -a -g gc "git commit" -;; abbr -a -g gcm "git commit -m" -;; abbr -a -g gcau "git commit --author" -;; abbr -a -g gcam "git commit -am" -;; abbr -a -g ga "git add" -;; abbr -a -g gaa "git add -A" -;; abbr -a -g gpl "git pull" -;; abbr -a -g gp "git push" -;; abbr -a -g gpd "git push -d origin" -;; abbr -a -g gpu "git push -u origin" -;; abbr -a -g gpr "git remote prune origin" -;; abbr -a -g grh "git reset --hard" -;; abbr -a -g gcl "git clean -fd" -;; abbr -a -g gst "git stash" -;; abbr -a -g gsl "git stash list" -;; abbr -a -g gsp "git stash pop" -;; abbr -a -g gsu "git submodule update" -;; abbr -a -g glom "git lop -10 origin/master" -;; abbr -a -g gmom "git merge origin/master" -;; abbr -a -g gmm "git merge master" - (defvar global-evil-leader-map (make-sparse-keymap)) (evil-define-key 'normal 'global-evil-leader-map (kbd "SPC") 'evil-send-leader) (define-minor-mode global-evil-leader-mode - "Minor mode to make evil leader blobal" + "Minor mode to make evil leader global" :global t :keymap global-evil-leader-map) (global-evil-leader-mode) @@ -316,7 +329,7 @@ all of the evil keybindings in buffers like magit, without compromises." (require 'avy) (setq avy-keys '(?a ?s ?d ?f ?w ?e ?r ?u ?i ?o ?h ?j ?k ?l ?x ?c ?m)) -(setq avy-all-windows nil) +(setq avy-all-windows t) (setq avy-background t) (defvar avy-map (make-sparse-keymap)) @@ -342,14 +355,58 @@ all of the evil keybindings in buffers like magit, without compromises." (setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) -(setq recentf-max-menu-items 1000) (defun joe/recentf-open-files () "Use `completing-read' to open a recent file." (interactive) (let ((files (mapcar 'abbreviate-file-name recentf-list))) (find-file (completing-read "Find recent file: " files nil t)))) -(run-at-time (current-time) 300 'recentf-save-list) +(require 'recentf) +(setq recentf-max-saved-items 1000) +(setq recentf-max-menu-items 500) +(recentf-mode t) +(run-at-time t (* 5 60) 'recentf-save-list) + +(defun recentf-push-buffers-in-frame () + (walk-windows + (lambda (win) + (let ((bfn (buffer-local-value 'buffer-file-name (window-buffer win)))) + (and bfn (recentf-add-file bfn)))))) +(add-to-list 'window-configuration-change-hook 'recentf-push-buffers-in-frame) + +(defun recentf-add-dired-directory () + (when (and (stringp dired-directory) + (equal "" (file-name-nondirectory dired-directory))) + (recentf-add-file dired-directory))) +(add-hook 'dired-mode-hook 'recentf-add-dired-directory) + +;; Magic advice to rename entries in recentf when moving files in +;; dired. +(defun rjs/recentf-rename-notify (oldname newname &rest args) + (if (file-directory-p newname) + (rjs/recentf-rename-directory oldname newname) + (rjs/recentf-rename-file oldname newname))) + +(defun rjs/recentf-rename-file (oldname newname) + (setq recentf-list + (mapcar (lambda (name) + (if (string-equal name oldname) + newname + name)) + recentf-list))) + +(defun rjs/recentf-rename-directory (oldname newname) + ;; oldname, newname and all entries of recentf-list should already + ;; be absolute and normalised so I think this can just test whether + ;; oldname is a prefix of the element. + (setq recentf-list + (mapcar (lambda (name) + (if (string-prefix-p oldname name) + (concat newname (substring name (length oldname))) + name)) + recentf-list))) + +(advice-add 'dired-rename-file :after #'rjs/recentf-rename-notify) (require 'smartparens) (smartparens-global-mode +1) @@ -371,9 +428,86 @@ all of the evil keybindings in buffers like magit, without compromises." (setq ffip-use-rust-fd 't) (require 'evil-goggles) -(setq evil-goggles-duration 0.1) -(setq evil-goggles-pulse nil) -(setq evil-goggles-async-duration 0.25) +(evil-goggles-mode) +(setq evil-goggles-duration 0.15) +(setq evil-goggles-pulse t) +(setq evil-goggles-async-duration 0.55) + +(modify-all-frames-parameters + '((right-divider-width . 12) + (internal-border-width . 12))) +(dolist (face '(window-divider + window-divider-first-pixel + window-divider-last-pixel)) + (face-spec-reset-face face) + (set-face-foreground face (face-attribute 'default :background))) +(set-face-background 'fringe (face-attribute 'default :background)) + +(require 'mini-frame) + +(mini-frame-mode) +(setq mini-frame-show-parameters '((top . 0.2) (width . 0.6) (height . 0.25) (left . 0.5))) +(setq mini-frame-color-shift-step 18) +(setq mini-frame-internal-border-color "dark") +(setq x-gtk-resize-child-frames nil) + +(require 'corfu) +(global-corfu-mode) +(setq corfu-auto t) +(setq corfu-scroll-margin 10) +(setq corfu-preselect-first nil) +(setq corfu-preview-current t) +(setq corfu-echo-documentation t) +(setq corfu-quit-no-match t) +(setq corfu-auto-prefix 1) +(setq corfu-auto-delay 0) +(setq corfu-max-width 100 + corfu-min-width 50) +(require 'kind-icon) +(setq kind-icon-default-face 'corfu-default) +(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter) + +(require 'all-the-icons-completion) +(all-the-icons-completion-mode) +(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup) + +(load-file "~/.emacs.vanilla/elpa/ligature.el/ligature.el") +(require 'ligature) +(global-ligature-mode) +(ligature-set-ligatures 'prog-mode '("|||>" "<|||" "<==>" "" "---" "-<<" + "<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" + "<--" "<-<" "<<=" "<<-" "<<<" "<+>" "" "###" "#_(" "..<" + "..." "+++" "/==" "///" "_|_" "www" "&&" "^=" "~~" "~@" "~=" + "~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|" + "[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:" + ">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:" + "<$" "<=" "<>" "<-" "<<" "<+" "" "++" "?:" + "?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)" + "\\\\" "://")) + +(add-to-list 'completion-at-point-functions #'cape-file) + +;; (add-to-list 'load-path (expand-file-name "~/.emacs.vanilla/elpa/aweshell/")) +;; (require 'aweshell) +;; (require 'fish-completion) +;; (global-fish-completion-mode) +;; (setq evil-collection-company-use-tng nil) + +(define-key corfu-map (kbd "M-d") #'corfu-doc-toggle) +(define-key corfu-map (kbd "M-p") #'corfu-doc-scroll-down) +(define-key corfu-map (kbd "M-n") #'corfu-doc-scroll-up) +(require 'feebleline) +(feebleline-mode) +(setq feebleline-msg-functions + '((feebleline-git-branch :align right :face feebleline-git-face :pre " - ") + (feebleline-file-directory :align right :face feebleline-dir-face :post "") + (feebleline-file-or-buffer-name :align right :face font-lock-keyword-face :post "") + (feebleline-file-modified-star :align right :face font-lock-warning-face :post "") + (feebleline-line-number :align right :post "" :fmt "%5s") + (feebleline-column-number :align right :pre ":" :fmt "%-2s"))) ;; (require 'slime) ;; (setq inferior-lisp-program "/usr/bin/sbcl") @@ -385,25 +519,8 @@ all of the evil keybindings in buffers like magit, without compromises." ;; (evil-define-key 'normal slime-repl-mode-map (kbd ")") 'slime-repl-next-prompt) ;; (evil-define-key 'normal slime-repl-mode-map (kbd "C-j") 'evil-window-down) ;; (evil-define-key 'normal slime-repl-mode-map (kbd "C-k") 'evil-window-up))) +;; (setq slime-contribs '(slime-fancy slime-company)) -;; -;; Mini-frame doesn't seem to be working on Wayland, -;; a window just pops up over emacs, it's annoying -;; - -;; (require 'mini-frame) -;; (setq mini-frame-show-parameters -;; '((top . 0.3) (width . 0.7) -;; (left . 0.5) (left-fringe . 10) (right-fringe . 10) )) -;; (setq mini-frame-color-shift-step 40) - -;; (setq mini-frame-internal-border-color "dark") -;; (mini-frame-mode) -;; (setq x-gtk-resize-child-frames 'resize-mode) - - -;; ;; Workaround for the initial candidates of mini frame not being shown -;; ;; https://github.com/raxod502/selectrum/issues/169 ;; (define-advice fit-frame-to-buffer (:around (f &rest args) dont-skip-ws-for-mini-frame) ;; (cl-letf* ((orig (symbol-function #'window-text-pixel-size)) ;; ((symbol-function #'window-text-pixel-size) @@ -418,13 +535,12 @@ all of the evil keybindings in buffers like magit, without compromises." ;; args))))) ;; (apply f args))) -;; (require 'eglot) -;; (require 'eglot-fsharp) + +(require 'eglot) +(require 'eglot-fsharp) ;; TODO: Packages to check out ;; expand-region -;; company -;; flycheck ;; projectile ;; Hydra (we can use it for some of the ideas I've had about repeating and arranging stuff) ;; CTRLF (figure out if it does anything interesting) @@ -442,15 +558,3 @@ all of the evil keybindings in buffers like magit, without compromises." ;; sly ;; ))) ;; '(send-mail-function (quote smtpmail-send-it))) - -;; (setq slime-contribs '(slime-fancy slime-company)) - -; (use-package company -; :init -; (setq company-idle-delay 0.05) -; (setq company-minimum-prefix-length 2) -; (add-hook 'after-init-hook 'global-company-mode)) - -; (use-package flycheck -; :init -; (global-flycheck-mode))