From a04213e2c04a98c204c5e51dcf0219a4286113bf Mon Sep 17 00:00:00 2001 From: tmu Date: Tue, 14 Nov 2023 13:38:52 -0800 Subject: bits --- emacs/coding-config.el | 314 +++++++++++++++++++++++++++++++++++++++++++++++++ emacs/init.el | 239 ++++++++++++++++++++++--------------- emacs/project-stuff.el | 310 ------------------------------------------------ 3 files changed, 457 insertions(+), 406 deletions(-) create mode 100644 emacs/coding-config.el delete mode 100644 emacs/project-stuff.el (limited to 'emacs') diff --git a/emacs/coding-config.el b/emacs/coding-config.el new file mode 100644 index 0000000..340f0c0 --- /dev/null +++ b/emacs/coding-config.el @@ -0,0 +1,314 @@ +;;; project-stuff --- Things I want for coding mostly + +;;; Commentary: + +;;; Just want to seperate the coding stuff from my other init stuff + + +(add-hook 'xref-backend-functions 'gxref-xref-backend) + +;; don't forget that eglot exists +;; (global-company-mode 1) +;; (setq company-idle-delay 0.1) + +;; (require 'semantic/sb) +;; (setq semantic-default-submodes +;; '(global-semantic-idle-scheduler-mode +;; semantic-db-minor-mode +;; global-semantic-idle-summary-mode +;; global-semantic-idle-completions-mode +;; global-semantic-highlight-func-mode +;; global-semantic-mru-bookmark-mode +;; global-semantic-idle-local-symbol-highlight-mode) +;; semantic-idle-scheduler-work-idle-time 5) +;; (semantic-mode 1 +;; (global-ede-mode t) + +;; better commenting stuff +(global-set-key (kbd "C-x C-;") 'comment-or-uncomment-region) +(global-set-key (kbd "C-x ;") 'comment-line) +(global-set-key (kbd "C-x :") 'comment-set-column) ;never gonna use but whatever + +(setq asm-comment-char ?#) + +;; nice eglot binds +(global-set-key (kbd "C-c f") 'eglot-code-action-quickfix) +(global-set-key (kbd "C-c C-f") 'eglot-code-actions) + +;; deal white whitespace better +(setq whitespace-style + '(face trailing tabs missing-newline-at-eof indentation space-after-tab space-before-tab tab-mark)) +(setq fill-column 80) +(global-hl-todo-mode 1) + + +(require 'sr-speedbar "~/.emacs.d/sr-speedbar.el" nil) +(defun speedbar-switch-and-setup () + "Switch in and out of the speedbar, opening as necessary." + (interactive) + (if (eq major-mode 'speedbar-mode) + (select-window (previous-window)) + (let ((cur (current-buffer)) + (win (get-buffer-window "*SPEEDBAR*"))) + (if win + (select-window win) + (sr-speedbar-toggle) + (select-window (get-buffer-window "*SPEEDBAR*"))) + (sr-speedbar-refresh) + (speedbar-find-selected-file (buffer-file-name cur)) + (speedbar-expand-line)))) + +(define-key speedbar-mode-map (kbd "q") 'sr-speedbar-toggle) +(global-unset-key (kbd "M-i")) +(global-set-key (kbd "M-i") 'speedbar-switch-and-setup) + +(global-set-key (kbd "M-Z") 'suspend-frame) + +;; indent code when pasting, from +;; https://trey-jackson.blogspot.com/2008/03/emacs-tip-15-indent-yanked-code.html + +;; automatically indenting yanked text if in programming-modes +(defvar yank-indent-modes '(emacs-lisp-mode + c-mode c++-mode + tcl-mode sql-mode + perl-mode cperl-mode + java-mode jde-mode + lisp-interaction-mode + LaTeX-mode TeX-mode + rust-mode + rustic-mode) + "Modes in which to indent regions that are yanked (or yank-popped).") + +(defun yank-advised-indent-function (beg end) + "Do indentation, as long as the region isn't too large. +BEG and END define the region." + (indent-region beg end nil)) + +(defadvice yank (after yank-indent activate) + "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." + (if (and (not (ad-get-arg 0)) + (member major-mode yank-indent-modes)) + (let ((transient-mark-mode nil)) + (yank-advised-indent-function (region-beginning) (region-end))))) + +(defadvice yank-pop (after yank-pop-indent activate) + "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." + (if (and (not (ad-get-arg 0)) + (member major-mode yank-indent-modes)) + (let ((transient-mark-mode nil)) + (yank-advised-indent-function (region-beginning) (region-end))))) + +(defadvice evil-paste-before (after yank-indent activate) + "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." + (if (and (not (ad-get-arg 0)) + (member major-mode yank-indent-modes)) + (let ((transient-mark-mode nil)) + (yank-advised-indent-function (region-beginning) (region-end))))) + +(defadvice evil-paste-after (after yank-indent activate) + "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." + (if (and (not (ad-get-arg 0)) + (member major-mode yank-indent-modes)) + (let ((transient-mark-mode nil)) + (yank-advised-indent-function (region-beginning) (region-end))))) + + +;; make ibuffer play with projectile +(require 'ibuffer) +(add-hook 'ibuffer-hook + (lambda () + (ibuffer-projectile-set-filter-groups) + (unless (eq ibuffer-sorting-mode 'alphabetic) + (ibuffer-do-sort-by-alphabetic)))) + +;; make shells and whatnot slightly better +(require 'comint) +(setq comint-scroll-to-bottom-on-input t) +(setq comint-scroll-to-bottom-on-output t) + +;; code folding + +(add-to-list 'load-path "~/.emacs.d/") +;; (require 'ts-foldV) + +(autoload 'hide-lines "hide-lines" "Hide lines based on a regexp" t) +(global-set-key (kbd "C-c /") 'hide-lines) + +;; region folding +(autoload 'fold-this "fold-this" "arbitrary folding" t) +(autoload 'fold-this-unfold-at-point "fold-this" "arbitrary folding" t) + +;; folding keybinds +(defun fold-this-fold-forward (&optional arg) + "Fold forward ARG number of sexps, defaulting to one." + (interactive "p") + (push-mark) + (forward-sexp arg) + (fold-this (mark) (point)) + (pop-mark)) +(defun fold-this-fold-backward (&optional arg) + "Fold backward ARG number of sexps, defaulting to one." + (interactive "p") + (push-mark) + (backward-sexp arg) + (fold-this (point) (mark)) + (pop-mark)) + +(define-prefix-command 'fold-map) +(global-set-key (kbd "M-F") 'fold-map) + +(define-keymap :full nil + :parent nil + :suppress nil + :keymap nil + :name "fold-map" + :prefix 'fold-map + (kbd "c") 'fold-this + (kbd "e") 'fold-this-unfold-at-point + (kbd "t") 'hs-toggle-hiding + (kbd "f") 'fold-this-fold-forward + (kbd "b") 'fold-this-fold-backward + (kbd "l") 'hs-hide-level) + + +(add-hook 'tex-mode-hook (lambda () + (setq spell-fu-faces-exclude + '(tex-math + font-lock-builtin-face + font-lock-keyword-face + font-lock-function-name-face + font-lock-variable-name-face)))) + +(defun clean-prog-file (buffer) + "Fixes whitespace in buffer" + (save-excursion + (with-current-buffer buffer + (untabify (point-min) (point-max)) + (goto-char (point-min)) + (while (re-search-forward " +$" nil t) + (replace-match "" nil nil))))) + +(add-hook 'prog-mode-hook (lambda () + (hs-minor-mode 1) + ;; (flymake-mode 1) + (spell-fu-mode 0) + (superword-mode 1) + (whitespace-mode 1) + (display-fill-column-indicator-mode 1) + (add-hook 'before-save-hook + (lambda () + (if (not (eq major-mode 'makefile-gmake-mode)) + (clean-prog-file (current-buffer))))))) + + +(add-hook 'haskell-mode-hook (lambda () + (evil-define-key 'normal local-map (kbd "M-.") 'haskell-jump-to-def) + )) + +;; (use-package flymake-diagnostic-at-point +;; :after flymake +;; :config +;; (setq flymake-diagnostic-at-point-timer-delay 1) +;; (add-hook 'flymake-mode-hook #'flymake-diagnostic-at-point-mode)) + +(use-package sideline + :init + (setq sideline-backends-skip-current-line t ; don't display on current line + sideline-order-left 'down ; or 'up + sideline-order-right 'up ; or 'down + sideline-format-left "%s " ; format for left aligment + sideline-format-right " %s" ; format for right aligment + sideline-priority 100 ; overlays' priority + sideline-display-backend-name t) ; display the backend name + :hook ((flycheck-mode . sideline-mode) ; for `sideline-flycheck` + (flymake-mode . sideline-mode)) ; for `sideline-flymake` + :init + (setq sideline-backends-right '(sideline-flymake))) + + +;; eshell stuff +(require 'eshell) +(require 'esh-help) +(setup-esh-help-eldoc) +(add-hook 'eshell-mode-hook (lambda () (eldoc-mode 1))) +(add-hook 'eshell-mode-hook 'eshell-fringe-status-mode) +(require 'em-smart) +(setq eshell-where-to-jump 'begin) +(setq eshell-review-quick-commands 'not-even-short-output) +(setq eshell-smart-space-goes-to-end t) +(add-to-list 'eshell-modules-list 'eshell-smart) +(eshell-vterm-mode 1) +(setq eshell-visual-commands + (append eshell-visual-commands + '("ytfzf" "nmtui" "w3m"))) + +(add-hook 'vterm-mode-hook (lambda () + (hl-line-mode 0))) +(add-hook 'eshell-mode-hook (lambda () + (hl-line-mode 0))) + +(define-key vterm-mode-map (kbd "M-W") 'persp-switch-to-buffer) +(define-key vterm-mode-map (kbd "M-k") 'persp-kill-buffer) +(define-key vterm-mode-map (kbd "M-p") 'persp-key-map) + +(require 'evil) +(evil-set-initial-state 'vterm-mode 'emacs) + +(define-key eshell-mode-map (kbd "M-o") 'other-window) +(define-key eshell-mode-map (kbd "M-W") 'switch-buffer) +(define-key eshell-mode-map (kbd "C-l") (lambda () + (interactive) + (recenter-top-bottom 0))) + +;; compilation stuff +(global-set-key (kbd "M-m") (lambda () + (interactive) + (if flymake-mode + (flymake-goto-next-error) + (next-error)))) +(global-set-key (kbd "M-M") 'recompile) +(setq compilation-always-kill t + compilation-scroll-output t) + +;; better searching +(setq counsel-grep-base-command + "rg -i -M 120 --no-heading --line-number --color never '%s' %s") +(global-set-key (kbd "C-s") 'counsel-grep-or-swiper) +(global-set-key (kbd "C-S-s") 'isearch-forward) +(define-key evil-normal-state-map (kbd "C-r") 'counsel-rg) + +(require 'persp-mode) +(persp-mode 1) + + +(with-eval-after-load "persp-mode" + (defvar after-switch-to-buffer-functions nil) + (defvar after-display-buffer-functions nil) + + (if (fboundp 'advice-add) + ;;Modern way + (progn + (defun after-switch-to-buffer-adv (&rest r) + (apply #'run-hook-with-args 'after-switch-to-buffer-functions r)) + (defun after-display-buffer-adv (&rest r) + (apply #'run-hook-with-args 'after-display-buffer-functions r)) + (advice-add #'switch-to-buffer :after #'after-switch-to-buffer-adv) + (advice-add #'display-buffer :after #'after-display-buffer-adv)) + + (add-hook 'after-switch-to-buffer-functions + #'(lambda (bn) (when (and persp-mode + (not persp-temporarily-display-buffer)) + (persp-add-buffer bn))))) + + (setq persp-add-buffer-on-after-change-major-mode 'free + persp-autokill-buffer-on-remove t + persp-kill-foreign-buffer-behaviour 'dont-ask) + (global-set-key (kbd "M-p") 'persp-key-map) + (global-set-key (kbd "C-x b") #'persp-switch-to-buffer) + (global-set-key (kbd "C-x B") #'switch-to-buffer) + (global-set-key (kbd "C-x C-b") (lambda () + (interactive) + (with-persp-buffer-list () (ibuffer)))) + (global-set-key (kbd "M-W") #'persp-switch-to-buffer) + (global-set-key (kbd "C-x k") #'persp-kill-buffer)) + diff --git a/emacs/init.el b/emacs/init.el index 5ded8b6..36c32b3 100644 --- a/emacs/init.el +++ b/emacs/init.el @@ -7,102 +7,145 @@ ;; If there is more than one, they won't work right. '(comment-style 'extra-line) '(connection-local-criteria-alist - '(((:application tramp :protocol "flatpak") - tramp-container-connection-local-default-flatpak-profile) + '(((:application tramp :protocol "kubernetes") + tramp-kubernetes-connection-local-default-profile) + ((:application tramp :protocol "flatpak") + tramp-container-connection-local-default-flatpak-profile + tramp-flatpak-connection-local-default-profile) ((:application tramp) - tramp-connection-local-default-system-profile tramp-connection-local-default-shell-profile) - ((:application eshell) - eshell-connection-default-profile))) + tramp-connection-local-default-system-profile + tramp-connection-local-default-shell-profile) + ((:application eshell) eshell-connection-default-profile))) '(connection-local-profile-alist - '((tramp-container-connection-local-default-flatpak-profile - (tramp-remote-path "/app/bin" tramp-default-remote-path "/bin" "/usr/bin" "/sbin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" "/opt/bin" "/opt/sbin" "/opt/local/bin")) + '((tramp-flatpak-connection-local-default-profile + (tramp-remote-path "/app/bin" tramp-default-remote-path "/bin" + "/usr/bin" "/sbin" "/usr/sbin" + "/usr/local/bin" "/usr/local/sbin" + "/local/bin" "/local/freeware/bin" + "/local/gnu/bin" "/usr/freeware/bin" + "/usr/pkg/bin" "/usr/contrib/bin" "/opt/bin" + "/opt/sbin" "/opt/local/bin")) + (tramp-kubernetes-connection-local-default-profile + (tramp-config-check . tramp-kubernetes--current-context-data) + (tramp-extra-expand-args 97 + (tramp-kubernetes--container + (car tramp-current-connection)) + 104 + (tramp-kubernetes--pod + (car tramp-current-connection)) + 120 + (tramp-kubernetes--context-namespace + (car tramp-current-connection)))) + (tramp-container-connection-local-default-flatpak-profile + (tramp-remote-path "/app/bin" tramp-default-remote-path "/bin" + "/usr/bin" "/sbin" "/usr/sbin" + "/usr/local/bin" "/usr/local/sbin" + "/local/bin" "/local/freeware/bin" + "/local/gnu/bin" "/usr/freeware/bin" + "/usr/pkg/bin" "/usr/contrib/bin" "/opt/bin" + "/opt/sbin" "/opt/local/bin")) (tramp-connection-local-darwin-ps-profile - (tramp-process-attributes-ps-args "-acxww" "-o" "pid,uid,user,gid,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "state=abcde" "-o" "ppid,pgid,sess,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etime,pcpu,pmem,args") - (tramp-process-attributes-ps-format - (pid . number) - (euid . number) - (user . string) - (egid . number) - (comm . 52) - (state . 5) - (ppid . number) - (pgrp . number) - (sess . number) - (ttname . string) - (tpgid . number) - (minflt . number) - (majflt . number) - (time . tramp-ps-time) - (pri . number) - (nice . number) - (vsize . number) - (rss . number) - (etime . tramp-ps-time) - (pcpu . number) - (pmem . number) - (args))) + (tramp-process-attributes-ps-args "-acxww" "-o" + "pid,uid,user,gid,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + "-o" "state=abcde" "-o" + "ppid,pgid,sess,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etime,pcpu,pmem,args") + (tramp-process-attributes-ps-format (pid . number) + (euid . number) + (user . string) + (egid . number) (comm . 52) + (state . 5) (ppid . number) + (pgrp . number) + (sess . number) + (ttname . string) + (tpgid . number) + (minflt . number) + (majflt . number) + (time . tramp-ps-time) + (pri . number) + (nice . number) + (vsize . number) + (rss . number) + (etime . tramp-ps-time) + (pcpu . number) + (pmem . number) (args))) (tramp-connection-local-busybox-ps-profile - (tramp-process-attributes-ps-args "-o" "pid,user,group,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "stat=abcde" "-o" "ppid,pgid,tty,time,nice,etime,args") - (tramp-process-attributes-ps-format - (pid . number) - (user . string) - (group . string) - (comm . 52) - (state . 5) - (ppid . number) - (pgrp . number) - (ttname . string) - (time . tramp-ps-time) - (nice . number) - (etime . tramp-ps-time) - (args))) + (tramp-process-attributes-ps-args "-o" + "pid,user,group,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + "-o" "stat=abcde" "-o" + "ppid,pgid,tty,time,nice,etime,args") + (tramp-process-attributes-ps-format (pid . number) + (user . string) + (group . string) (comm . 52) + (state . 5) (ppid . number) + (pgrp . number) + (ttname . string) + (time . tramp-ps-time) + (nice . number) + (etime . tramp-ps-time) + (args))) (tramp-connection-local-bsd-ps-profile - (tramp-process-attributes-ps-args "-acxww" "-o" "pid,euid,user,egid,egroup,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "state,ppid,pgid,sid,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etimes,pcpu,pmem,args") - (tramp-process-attributes-ps-format - (pid . number) - (euid . number) - (user . string) - (egid . number) - (group . string) - (comm . 52) - (state . string) - (ppid . number) - (pgrp . number) - (sess . number) - (ttname . string) - (tpgid . number) - (minflt . number) - (majflt . number) - (time . tramp-ps-time) - (pri . number) - (nice . number) - (vsize . number) - (rss . number) - (etime . number) - (pcpu . number) - (pmem . number) - (args))) + (tramp-process-attributes-ps-args "-acxww" "-o" + "pid,euid,user,egid,egroup,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + "-o" + "state,ppid,pgid,sid,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etimes,pcpu,pmem,args") + (tramp-process-attributes-ps-format (pid . number) + (euid . number) + (user . string) + (egid . number) + (group . string) (comm . 52) + (state . string) + (ppid . number) + (pgrp . number) + (sess . number) + (ttname . string) + (tpgid . number) + (minflt . number) + (majflt . number) + (time . tramp-ps-time) + (pri . number) + (nice . number) + (vsize . number) + (rss . number) + (etime . number) + (pcpu . number) + (pmem . number) (args))) (tramp-connection-local-default-shell-profile - (shell-file-name . "/bin/sh") - (shell-command-switch . "-c")) + (shell-file-name . "/bin/sh") (shell-command-switch . "-c")) (tramp-connection-local-default-system-profile - (path-separator . ":") - (null-device . "/dev/null")) - (eshell-connection-default-profile - (eshell-path-env-list)))) + (path-separator . ":") (null-device . "/dev/null")) + (eshell-connection-default-profile (eshell-path-env-list)))) '(custom-enabled-themes '(tmu-custom)) '(custom-safe-themes - '("6dafb31ade9ff07229faaf05c41c2ae475c44731362b792f65f3930b1a2c9cfd" "dc77e008092a5a4aa6b6ed8e4826bebf8f2fb930a8de073bf7f458efd884cca8" "d1ff3e66028f9c527298580d2a64f9e3280f07f9e94d4dada72b67ef15069441" "3d4e3644e237a95683daa73e397c4c0d1ae06bbaaf8040104232591a28bc1315" "12a07bc38295e4b06a8965db261f51ea7ea61fbf91b3ef41298bbb549d1d9403" default)) + '("6dafb31ade9ff07229faaf05c41c2ae475c44731362b792f65f3930b1a2c9cfd" + "dc77e008092a5a4aa6b6ed8e4826bebf8f2fb930a8de073bf7f458efd884cca8" + "d1ff3e66028f9c527298580d2a64f9e3280f07f9e94d4dada72b67ef15069441" + "3d4e3644e237a95683daa73e397c4c0d1ae06bbaaf8040104232591a28bc1315" + "12a07bc38295e4b06a8965db261f51ea7ea61fbf91b3ef41298bbb549d1d9403" + default)) '(ede-project-directories - '("/home/tmu/Desktop/eway/sway" "/home/tmu/Desktop/eway/cage" "/home/tmu/Desktop/eway/wlroots" "/home/tmu/Desktop/eway/comp" "/home/tmu/Desktop/eway")) + '("/home/tmu/Desktop/eway/sway" "/home/tmu/Desktop/eway/cage" + "/home/tmu/Desktop/eway/wlroots" "/home/tmu/Desktop/eway/comp" + "/home/tmu/Desktop/eway")) '(menu-bar-mode nil) '(package-selected-packages - '(evil-commentary frog-jump-buffer modus-themes which-key evil-collection hl-todo evil-easymotion sideline-flymake sideline-lsp zig-mode tree-sitter-langs tree-sitter company-go pyim-basedict evil-snipe evil-surround markdown-preview-mode 2048-game evil ibuffer-project persp-mode-projectile-bridge persp-mode fish-mode spell-fu pyim chinese-conv esup buffer-move vertico flymake-diagnostic-at-point emms-state emms-player-simple-mpv eshell-fringe-status esh-help eshell-vterm vterm rustic benchmark-init ivy-prescient eat ivy-hydra ivy emms eyebrowse highlight dumb-jump volume workgroups async bongo hydra free-keys gxref fold-this simple-httpd xelb oauth2 imenu-anywhere popwin folding gdscript-mode)) + '(haskell-mode pyim-wbdict solarized-theme evil-commentary + frog-jump-buffer evil-collection evil-easymotion + sideline-flymake sideline-lsp tree-sitter company-go + pyim-basedict evil-snipe evil-surround 2048-game + evil ibuffer-project persp-mode-projectile-bridge + persp-mode fish-mode chinese-conv esup buffer-move + flymake-diagnostic-at-point emms-state + emms-player-simple-mpv eshell-fringe-status esh-help + eshell-vterm rustic benchmark-init ivy-prescient eat + emms eyebrowse highlight dumb-jump volume workgroups + async bongo hydra free-keys gxref fold-this xelb + oauth2 imenu-anywhere popwin folding gdscript-mode)) '(scroll-bar-mode nil) '(tool-bar-mode nil) '(transient-mark-mode nil) '(whitespace-style - '(face trailing tabs lines-tail missing-newline-at-eof indentation space-after-tab space-before-tab tab-mark))) + '(face trailing tabs lines-tail missing-newline-at-eof indentation + space-after-tab space-before-tab tab-mark))) ;; (use-package benchmark-init ;; :ensure t @@ -291,23 +334,23 @@ mark. Does the same of ARG number sexps if given" ;; music ;; (autoload 'youtube-dl-enqueue "~/.emacs.d/youtube-dl.el" "download from youtube" t) -(emms-all) -(require 'emms-info-native) -(defun emms-file-info (track) - "Sets info of a track based on it's file name. Expects Artist - Album - Track.ext." - (when (emms-track-file-p track) - (let* ((file-name (emms-track-name track)) - (tags (string-split (car (seq-reverse (string-split file-name "/"))) " - "))) - (emms-track-set track 'info-artist (car tags)) - (emms-track-set track 'info-album (car (cdr tags))) - (emms-track-set track 'info-title (car (cdr (cdr tags))))))) +;; (emms-all) +;; (require 'emms-info-native) +;; (defun emms-file-info (track) +;; "Sets info of a track based on it's file name. Expects Artist - Album - Track.ext." +;; (when (emms-track-file-p track) +;; (let* ((file-name (emms-track-name track)) +;; (tags (string-split (car (seq-reverse (string-split file-name "/"))) " - "))) +;; (emms-track-set track 'info-artist (car tags)) +;; (emms-track-set track 'info-album (car (cdr tags))) +;; (emms-track-set track 'info-title (car (cdr (cdr tags))))))) -(setq emms-player-list '(emms-player-mpv) - emms-info-functions '(emms-file-info) - emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find) +;; (setq emms-player-list '(emms-player-mpv) +;; emms-info-functions '(emms-file-info) +;; emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find) -(require 'emms-state) -;; see single header, loaded AFTER this for more about emms-state +;; (require 'emms-state) +;; ;; see single header, loaded AFTER this for more about emms-state ;; allow using emacsclient @@ -361,6 +404,7 @@ mark. Does the same of ARG number sexps if given" (define-key evil-insert-state-map (kbd "C-e") 'move-end-of-line) (define-key evil-insert-state-map (kbd "C-a") 'move-beginning-of-line) (define-key evil-normal-state-map (kbd "M-.") 'xref-find-definitions) +(define-key evil-normal-state-map (kbd "C-t") 'transpose-chars) (add-hook 'prog-mode-hook (lambda () (modify-syntax-entry ?_ "w") )) @@ -379,7 +423,9 @@ mark. Does the same of ARG number sexps if given" (evil-window-vsplit) (other-window 1)) +(evil-define-key 'normal global-map (kbd "SPC i") 'imenu) (evil-define-key 'normal global-map (kbd "SPC RET") 'vterm) +(evil-define-key 'normal global-map (kbd "SPC v") 'vterm) (evil-define-key 'normal global-map (kbd "SPC !") 'abort-recursive-edit) (evil-define-key 'normal global-map (kbd "SPC f f") 'find-file) @@ -403,7 +449,7 @@ mark. Does the same of ARG number sexps if given" (add-hook 'frog-menu-after-init-hook (lambda () (setq-local avy-background nil))) -(load-file "~/.emacs.d/project-stuff.el") +(load-file "~/.emacs.d/coding-config.el") ;; (load-file "~/.emacs.d/single-header.el") @@ -427,6 +473,7 @@ mark. Does the same of ARG number sexps if given" ;; 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. + '(frog-menu-posframe-background-face ((t (:background "RoyalBlue4")))) '(minibuffer-prompt ((t (:background "gray10" :foreground "cyan" :box nil :weight bold)))) '(vterm-color-blue ((t (:inherit ansi-color-bright-green))))) (put 'downcase-region 'disabled nil) diff --git a/emacs/project-stuff.el b/emacs/project-stuff.el deleted file mode 100644 index 29b515e..0000000 --- a/emacs/project-stuff.el +++ /dev/null @@ -1,310 +0,0 @@ -;;; project-stuff --- Things I want for coding mostly - -;;; Commentary: - -;;; Just want to seperate the coding stuff from my other init stuff - - -(add-hook 'xref-backend-functions 'gxref-xref-backend) - -;; don't forget that eglot exists -;; (global-company-mode 1) -;; (setq company-idle-delay 0.1) - -;; (require 'semantic/sb) -;; (setq semantic-default-submodes -;; '(global-semantic-idle-scheduler-mode -;; semantic-db-minor-mode -;; global-semantic-idle-summary-mode -;; global-semantic-idle-completions-mode -;; global-semantic-highlight-func-mode -;; global-semantic-mru-bookmark-mode -;; global-semantic-idle-local-symbol-highlight-mode) -;; semantic-idle-scheduler-work-idle-time 5) -;; (semantic-mode 1 -;; (global-ede-mode t) - -;; better commenting stuff -(global-set-key (kbd "C-x C-;") 'comment-or-uncomment-region) -(global-set-key (kbd "C-x ;") 'comment-line) -(global-set-key (kbd "C-x :") 'comment-set-column) ;never gonna use but whatever - -(setq asm-comment-char ?#) - -;; nice eglot binds -(global-set-key (kbd "C-c f") 'eglot-code-action-quickfix) -(global-set-key (kbd "C-c C-f") 'eglot-code-actions) - -;; deal white whitespace better -(setq whitespace-style - '(face trailing tabs missing-newline-at-eof indentation space-after-tab space-before-tab tab-mark)) -(setq fill-column 80) -(add-hook 'prog-mode-hook (lambda () - (whitespace-mode 1) - (display-fill-column-indicator-mode 1))) - -(global-hl-todo-mode 1) - - -(require 'sr-speedbar "~/.emacs.d/sr-speedbar.el" nil) -(defun speedbar-switch-and-setup () - "Switch in and out of the speedbar, opening as necessary." - (interactive) - (if (eq major-mode 'speedbar-mode) - (select-window (previous-window)) - (let ((cur (current-buffer)) - (win (get-buffer-window "*SPEEDBAR*"))) - (if win - (select-window win) - (sr-speedbar-toggle) - (select-window (get-buffer-window "*SPEEDBAR*"))) - (sr-speedbar-refresh) - (speedbar-find-selected-file (buffer-file-name cur)) - (speedbar-expand-line)))) - -(define-key speedbar-mode-map (kbd "q") 'sr-speedbar-toggle) -(global-unset-key (kbd "M-i")) -(global-set-key (kbd "M-i") 'speedbar-switch-and-setup) - -(global-set-key (kbd "M-Z") 'suspend-frame) - -;; indent code when pasting, from -;; https://trey-jackson.blogspot.com/2008/03/emacs-tip-15-indent-yanked-code.html - -;; automatically indenting yanked text if in programming-modes -(defvar yank-indent-modes '(emacs-lisp-mode - c-mode c++-mode - tcl-mode sql-mode - perl-mode cperl-mode - java-mode jde-mode - lisp-interaction-mode - LaTeX-mode TeX-mode - rust-mode - rustic-mode) - "Modes in which to indent regions that are yanked (or yank-popped).") - -(defun yank-advised-indent-function (beg end) - "Do indentation, as long as the region isn't too large. -BEG and END define the region." - (indent-region beg end nil)) - -(defadvice yank (after yank-indent activate) - "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." - (if (and (not (ad-get-arg 0)) - (member major-mode yank-indent-modes)) - (let ((transient-mark-mode nil)) - (yank-advised-indent-function (region-beginning) (region-end))))) - -(defadvice yank-pop (after yank-pop-indent activate) - "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." - (if (and (not (ad-get-arg 0)) - (member major-mode yank-indent-modes)) - (let ((transient-mark-mode nil)) - (yank-advised-indent-function (region-beginning) (region-end))))) - -(defadvice evil-paste-before (after yank-indent activate) - "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." - (if (and (not (ad-get-arg 0)) - (member major-mode yank-indent-modes)) - (let ((transient-mark-mode nil)) - (yank-advised-indent-function (region-beginning) (region-end))))) - -(defadvice evil-paste-after (after yank-indent activate) - "If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)." - (if (and (not (ad-get-arg 0)) - (member major-mode yank-indent-modes)) - (let ((transient-mark-mode nil)) - (yank-advised-indent-function (region-beginning) (region-end))))) - - -;; make ibuffer play with projectile -(require 'ibuffer) -(add-hook 'ibuffer-hook - (lambda () - (ibuffer-projectile-set-filter-groups) - (unless (eq ibuffer-sorting-mode 'alphabetic) - (ibuffer-do-sort-by-alphabetic)))) - -;; make shells and whatnot slightly better -(require 'comint) -(setq comint-scroll-to-bottom-on-input t) -(setq comint-scroll-to-bottom-on-output t) - -;; code folding - -(add-to-list 'load-path "~/.emacs.d/") -;; (require 'ts-foldV) - -(autoload 'hide-lines "hide-lines" "Hide lines based on a regexp" t) -(global-set-key (kbd "C-c /") 'hide-lines) - -;; region folding -(autoload 'fold-this "fold-this" "arbitrary folding" t) -(autoload 'fold-this-unfold-at-point "fold-this" "arbitrary folding" t) - -;; folding keybinds -(defun fold-this-fold-forward (&optional arg) - "Fold forward ARG number of sexps, defaulting to one." - (interactive "p") - (push-mark) - (forward-sexp arg) - (fold-this (mark) (point)) - (pop-mark)) -(defun fold-this-fold-backward (&optional arg) - "Fold backward ARG number of sexps, defaulting to one." - (interactive "p") - (push-mark) - (backward-sexp arg) - (fold-this (point) (mark)) - (pop-mark)) - -(define-prefix-command 'fold-map) -(global-set-key (kbd "M-F") 'fold-map) - -(define-keymap :full nil - :parent nil - :suppress nil - :keymap nil - :name "fold-map" - :prefix 'fold-map - (kbd "c") 'fold-this - (kbd "e") 'fold-this-unfold-at-point - (kbd "t") 'hs-toggle-hiding - (kbd "f") 'fold-this-fold-forward - (kbd "b") 'fold-this-fold-backward - (kbd "l") 'hs-hide-level) - - -(add-hook 'tex-mode-hook (lambda () - (setq spell-fu-faces-exclude - '(tex-math - font-lock-builtin-face - font-lock-keyword-face - font-lock-function-name-face - font-lock-variable-name-face)))) - -(defun clean-prog-file (buffer) - "Fixes whitespace in buffer" - (save-excursion - (with-current-buffer buffer - (untabify (point-min) (point-max)) - (goto-char (point-min)) - (while (re-search-forward " +$" nil t) - (replace-match "" nil nil))))) - -(add-hook 'prog-mode-hook (lambda () - (hs-minor-mode 1) - ;; (flymake-mode 1) - (spell-fu-mode 0) - (superword-mode 1) - (add-hook 'before-save-hook (lambda () (clean-prog-file (current-buffer)))))) - -;; (use-package flymake-diagnostic-at-point -;; :after flymake -;; :config -;; (setq flymake-diagnostic-at-point-timer-delay 1) -;; (add-hook 'flymake-mode-hook #'flymake-diagnostic-at-point-mode)) - -(use-package sideline - :init - (setq sideline-backends-skip-current-line t ; don't display on current line - sideline-order-left 'down ; or 'up - sideline-order-right 'up ; or 'down - sideline-format-left "%s " ; format for left aligment - sideline-format-right " %s" ; format for right aligment - sideline-priority 100 ; overlays' priority - sideline-display-backend-name t) ; display the backend name - :hook ((flycheck-mode . sideline-mode) ; for `sideline-flycheck` - (flymake-mode . sideline-mode)) ; for `sideline-flymake` - :init - (setq sideline-backends-right '(sideline-flymake))) - -(setq rustic-lsp-setup-p nil) - -;; eshell stuff -(require 'eshell) -(require 'esh-help) -(setup-esh-help-eldoc) -(add-hook 'eshell-mode-hook (lambda () (eldoc-mode 1))) -(add-hook 'eshell-mode-hook 'eshell-fringe-status-mode) -(require 'em-smart) -(setq eshell-where-to-jump 'begin) -(setq eshell-review-quick-commands 'not-even-short-output) -(setq eshell-smart-space-goes-to-end t) -(add-to-list 'eshell-modules-list 'eshell-smart) -(eshell-vterm-mode 1) -(setq eshell-visual-commands - (append eshell-visual-commands - '("ytfzf" "nmtui" "w3m"))) - -(add-hook 'vterm-mode-hook (lambda () - (hl-line-mode 0))) -(add-hook 'eshell-mode-hook (lambda () - (hl-line-mode 0))) - -(define-key vterm-mode-map (kbd "M-W") 'persp-switch-to-buffer) -(define-key vterm-mode-map (kbd "M-k") 'persp-kill-buffer) -(define-key vterm-mode-map (kbd "M-p") 'persp-key-map) - -(require 'evil) -(evil-set-initial-state 'vterm-mode 'emacs) -(evil-define-key 'normal global-map (kbd "SPC i") 'imenu) - -(define-key eshell-mode-map (kbd "M-o") 'other-window) -(define-key eshell-mode-map (kbd "M-W") 'switch-buffer) -(define-key eshell-mode-map (kbd "C-l") (lambda () - (interactive) - (recenter-top-bottom 0))) - -;; compilation stuff -(global-set-key (kbd "M-m") (lambda () - (interactive) - (if flymake-mode - (flymake-goto-next-error) - (next-error)))) -(global-set-key (kbd "M-M") 'recompile) -(setq compilation-always-kill t - compilation-scroll-output t) - -;; better searching -(setq counsel-grep-base-command - "rg -i -M 120 --no-heading --line-number --color never '%s' %s") -(global-set-key (kbd "C-s") 'counsel-grep-or-swiper) -(global-set-key (kbd "C-S-s") 'isearch-forward) -(define-key evil-normal-state-map (kbd "C-r") 'counsel-rg) - -(require 'persp-mode) -(persp-mode 1) - - -(with-eval-after-load "persp-mode" - (defvar after-switch-to-buffer-functions nil) - (defvar after-display-buffer-functions nil) - - (if (fboundp 'advice-add) - ;;Modern way - (progn - (defun after-switch-to-buffer-adv (&rest r) - (apply #'run-hook-with-args 'after-switch-to-buffer-functions r)) - (defun after-display-buffer-adv (&rest r) - (apply #'run-hook-with-args 'after-display-buffer-functions r)) - (advice-add #'switch-to-buffer :after #'after-switch-to-buffer-adv) - (advice-add #'display-buffer :after #'after-display-buffer-adv)) - - (add-hook 'after-switch-to-buffer-functions - #'(lambda (bn) (when (and persp-mode - (not persp-temporarily-display-buffer)) - (persp-add-buffer bn))))) - - (setq persp-add-buffer-on-after-change-major-mode 'free - persp-autokill-buffer-on-remove t - persp-kill-foreign-buffer-behaviour 'dont-ask) - (global-set-key (kbd "M-p") 'persp-key-map) - (global-set-key (kbd "C-x b") #'persp-switch-to-buffer) - (global-set-key (kbd "C-x B") #'switch-to-buffer) - (global-set-key (kbd "C-x C-b") (lambda () - (interactive) - (with-persp-buffer-list () (ibuffer)))) - (global-set-key (kbd "M-W") #'persp-switch-to-buffer) - (global-set-key (kbd "C-x k") #'persp-kill-buffer)) - -- cgit v1.2.3