From 6aed1cfbfddd13950938380418b8d1f39d9ebd14 Mon Sep 17 00:00:00 2001 From: Bruno Raoult Date: Sun, 24 Mar 2024 19:47:07 +0100 Subject: [PATCH] emacs: use vundo instead of undo-tree, .bashrc: cleanup. --- config/home/bashrc.br | 3 +- config/home/bashrc.br.lorien | 15 +-- config/home/emacs.d/init.el | 172 +++++++++++++++++++++++----------- config/home/emacs.d/lorien.el | 5 +- 4 files changed, 129 insertions(+), 66 deletions(-) diff --git a/config/home/bashrc.br b/config/home/bashrc.br index 8f2687a..57e30e9 100644 --- a/config/home/bashrc.br +++ b/config/home/bashrc.br @@ -158,8 +158,7 @@ else # ... or clones, vim/vi, etc.. fi export EDITOR=$VISUAL -for _pdfviewer in qpdfview atril; do # look for a pdf viewer - +for _pdfviewer in atril qpdfview; do # look for a pdf viewer if hash "$_pdfviewer" 2>/dev/null; then # shellcheck disable=SC2139 alias acroread="$_pdfviewer" diff --git a/config/home/bashrc.br.lorien b/config/home/bashrc.br.lorien index 0c6ab00..9e0da23 100644 --- a/config/home/bashrc.br.lorien +++ b/config/home/bashrc.br.lorien @@ -65,13 +65,14 @@ _vardir() { # shellcheck disable=SC2139 alias "$_a"="$_x" } -_vardir AOC aoc + ~/dev/advent-of-code # Advent of code -_vardir WCHESS wchess - ~/dev/www/crd/chess # raoult.com chess -_vardir CHESS chess + ~/dev/brchess # brchess -_vardir TOOLS tools - ~/dev/tools # tools -_vardir BRLIB brlib - ~/dev/brlib # brlib -_vardir EUD eud + ~/dev/eudyptula # eudyptula -_vardir DEV dev - ~/dev # dev +_vardir AOC aoc + ~/dev/advent-of-code # Advent of code +_vardir WCHESS wchess - ~/dev/www/crd/chess # raoult.com chess +_vardir CHESS chess + ~/dev/brchess # brchess +_vardir CHESS brchess + ~/dev/brchess # brchess +_vardir TOOLS tools - ~/dev/tools # tools +_vardir BRLIB brlib - ~/dev/brlib # brlib +_vardir EUD eud + ~/dev/eudyptula # eudyptula +_vardir DEV dev - ~/dev # dev # Indent style for emacs # Local Variables: diff --git a/config/home/emacs.d/init.el b/config/home/emacs.d/init.el index d7385d2..1434490 100755 --- a/config/home/emacs.d/init.el +++ b/config/home/emacs.d/init.el @@ -15,6 +15,7 @@ ;; (require 'use-package) (package-initialize) (setq use-package-always-ensure t) +(use-package delight :ensure t) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) ;;(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) @@ -255,23 +256,33 @@ Return new LIST-VAR value." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ggtags (use-package ggtags :ensure t - :diminish ggtags-mode + :diminish "gg" :disabled t - :defer t + ;; :defer t + :after cc-mode :init (setq ggtags-global-window-height 28 ggtags-enable-navigation-keys nil) - - (after cc-mode (add-hook 'c-mode-common-hook #'ggtags-mode)) + (add-hook 'c-mode-common-hook + (lambda () + (when (derived-mode-p 'c-mode 'c++-mode 'java-mode) + (ggtags-mode 1)))) + ;;(after cc-mode (add-hook 'c-mode-common-hook #'ggtags-mode)) :config (bind-keys :map ggtags-mode-map - ("C-c g s" . ggtags-find-other-symbol) - ("C-c g h" . ggtags-view-tag-history) - ("C-c g r" . ggtags-find-reference) - ("C-c g f" . ggtags-find-file) - ("C-c g c" . ggtags-create-tags) - ("C-c g u" . ggtags-update-tags) + ;;("C-c g s" . ggtags-find-other-symbol) + ;;("C-c g h" . ggtags-view-tag-history) + ;;("C-c g r" . ggtags-find-reference) + ;;("C-c g f" . ggtags-find-file) + ;;("C-c g c" . ggtags-create-tags) + ;;("C-c g u" . ggtags-update-tags) + ("H-g s" . ggtags-find-other-symbol) + ("H-g h" . ggtags-view-tag-history) + ("H-g r" . ggtags-find-reference) + ("H-g f" . ggtags-find-file) + ("H-g c" . ggtags-create-tags) + ("H-g u" . ggtags-update-tags) ("M-," 'pop-tag-mark))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; projectile @@ -279,6 +290,7 @@ Return new LIST-VAR value." (use-package projectile ;;:diminish projectile-mode :diminish " prj" + ;; :delight :ensure t :config ;;(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map) @@ -288,7 +300,9 @@ Return new LIST-VAR value." ;;projectile-indexing-method 'alien ;; does not use ".projectile" projectile-indexing-method 'hybrid ;;projectile-indexing-method 'native - projectile-completion-system 'default) + projectile-completion-system 'auto + projectile-tags-backend 'ggtags) + (add-to-list 'projectile-globally-ignored-files "*.png") (projectile-mode +1)) @@ -440,7 +454,8 @@ Return new LIST-VAR value." (global-set-key (kbd "C-h c") 'describe-char) (global-set-key (kbd "C-x 4 C-b") 'switch-to-buffer-other-window) -(global-unset-key [mode-line mouse-3]) ; unset awful modeline mouse-3 +(global-unset-key [mode-line mouse-3]) ; so disturbing mouse-3 there ! + ;; next example maps C-x C-x to the same as C-c ;; (global-set-key (kbd "C-x C-x") (lookup-key global-map (kbd "C-c"))) @@ -868,31 +883,34 @@ in whole buffer. With neither, delete comments on current line." (global-set-key (kbd "C-x w") 'compare-windows) +;; as dot-mode uses , we allow overwrite-mode with S- +(global-set-key (kbd "S-") 'overwrite-mode) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; define my own keymap (s-c) ;; first, define a keymap, with Super-c as prefix. -(defvar my/keys-mode-map (make-sparse-keymap) - "Keymap for my/keys-mode.") +;; (defvar my/keys-mode-map (make-sparse-keymap) +;; "Keymap for my/keys-mode.") -(defvar my/keys-mode-prefix-map (lookup-key global-map (kbd "s-c")) - "Keymap for custom key bindings starting with s-c prefix.") +;; (defvar my/keys-mode-prefix-map (lookup-key global-map (kbd "s-c")) +;; "Keymap for custom key bindings starting with s-c prefix.") -;; (define-key my/keys-mode-map (kbd "s-c") my/keys-mode-prefix-map) +;; ;; (define-key my/keys-mode-map (kbd "s-c") my/keys-mode-prefix-map) -(define-minor-mode my/keys-mode - "A minor mode for custom key bindings." - :lighter "s-c" - :keymap 'my/keys-mode-map - :global t) +;; (define-minor-mode my/keys-mode +;; "A minor mode for custom key bindings." +;; :lighter "s-c" +;; :keymap 'my/keys-mode-map +;; :global t) -(defun my/prioritize-keys - (file &optional noerror nomessage nosuffix must-suffix) - "Try to ensure that custom key bindings always have priority." - (unless (eq (caar minor-mode-map-alist) 'my/keys-mode) - (let ((my/keys-mode-map (assq 'my/keys-mode minor-mode-map-alist))) - (assq-delete-all 'my/keys-mode minor-mode-map-alist) - (add-to-list 'minor-mode-map-alist my/keys-mode-map)))) +;; (defun my/prioritize-keys +;; (file &optional noerror nomessage nosuffix must-suffix) +;; "Try to ensure that custom key bindings always have priority." +;; (unless (eq (caar minor-mode-map-alist) 'my/keys-mode) +;; (let ((my/keys-mode-map (assq 'my/keys-mode minor-mode-map-alist))) +;; (assq-delete-all 'my/keys-mode minor-mode-map-alist) +;; (add-to-list 'minor-mode-map-alist my/keys-mode-map)))) -(advice-add 'load :after #'my/prioritize-keys) +;; (advice-add 'load :after #'my/prioritize-keys) ;;(global-set-key (kbd "C-c t") #'make-temp-buffer) ;;(define-key my/keys-mode-prefix-map (kbd "r b") #'revert-buffer) @@ -1012,27 +1030,59 @@ in whole buffer. With neither, delete comments on current line." ;;(define-key whole-line-or-region-local-mode-map [remap uncomment-region] nil) ) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; undo tree -(use-package undo-tree - :diminish undo-tree-mode - :defer t - :init - (progn - (defalias 'redo 'undo-tree-redo) - (defalias 'undo 'undo-tree-undo) - (global-undo-tree-mode 1)) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; vundo / undo-tree / winner +;; vundo config from : +;; https://www.reddit.com/r/emacs/comments/txwwfi/vundo_is_great_visual_undotree_for_emacs28/ +(use-package vundo + :commands (vundo) + :config - (progn - (setq undo-tree-visualizer-timestamps t - undo-tree-visualizer-diff t - undo-tree-enable-undo-in-region t - ;;undo-tree-auto-save-history t - ) - (let ((undo-dir (concat my/emacs-tmpdir "/undo-tree/"))) - (setq undo-tree-history-directory-alist - `(("." . ,undo-dir))) - (unless (file-exists-p undo-dir) - (make-directory undo-dir t))))) + ;; Take less on-screen space. + (setq vundo-compact-display t) + + ;; Better contrasting highlight. + (custom-set-faces + '(vundo-node ((t (:foreground "#808080")))) + '(vundo-stem ((t (:foreground "#808080")))) + '(vundo-highlight ((t (:foreground "#FFFF00"))))) + + ;; Use `HJKL` VIM-like motion, also Home/End to jump around. + ;; (define-key vundo-mode-map (kbd "l") #'vundo-forward) + (define-key vundo-mode-map (kbd "") #'vundo-forward) + ;; (define-key vundo-mode-map (kbd "h") #'vundo-backward) + (define-key vundo-mode-map (kbd "") #'vundo-backward) + ;; (define-key vundo-mode-map (kbd "j") #'vundo-next) + (define-key vundo-mode-map (kbd "") #'vundo-next) + ;; (define-key vundo-mode-map (kbd "k") #'vundo-previous) + (define-key vundo-mode-map (kbd "") #'vundo-previous) + (define-key vundo-mode-map (kbd "") #'vundo-stem-root) + (define-key vundo-mode-map (kbd "") #'vundo-stem-end) + (define-key vundo-mode-map (kbd "q") #'vundo-quit) + (define-key vundo-mode-map (kbd "C-g") #'vundo-quit) + (define-key vundo-mode-map (kbd "RET") #'vundo-confirm)) + +(global-set-key (kbd "C-x u") 'vundo) + +;; (use-package undo-tree +;; :diminish undo-tree-mode +;; :defer t +;; :init +;; (progn +;; (defalias 'redo 'undo-tree-redo) +;; (defalias 'undo 'undo-tree-undo) +;; (global-undo-tree-mode 1)) +;; :config +;; (progn +;; (setq undo-tree-visualizer-timestamps t +;; undo-tree-visualizer-diff t +;; undo-tree-enable-undo-in-region t +;; ;;undo-tree-auto-save-history t +;; ) +;; (let ((undo-dir (concat my/emacs-tmpdir "/undo-tree/"))) +;; (setq undo-tree-history-directory-alist +;; `(("." . ,undo-dir))) +;; (unless (file-exists-p undo-dir) +;; (make-directory undo-dir t))))) ;; useful to come back to working window after a buffer has popped up ;; C-c to come back @@ -1356,7 +1406,15 @@ in whole buffer. With neither, delete comments on current line." comment-auto-fill-only-comments nil comment-style 'extra-line)) -(add-hook 'c-mode-hook 'my/c-style) +(use-package cc-mode + :ensure nil + :config + (add-hook 'c-mode-common-hook + (lambda () + ;;(when (derived-mode-p 'c-mode 'c++-mode 'java-mode 'asm-mode) + (when (derived-mode-p 'c-mode) + (ggtags-mode 1)))) + (add-hook 'c-mode-hook 'my/c-style)) ;;;;;;;;;;;;; linux kernel style (defun c-lineup-arglist-tabs-only (ignored) @@ -2194,7 +2252,7 @@ The output will appear in the buffer *PHP*." ;;lsp-enable-on-type-formatting nil lsp-enable-snippet nil lsp-enable-symbol-highlighting t - lsp-lens-enable t + lsp-lens-enable nil lsp-headerline-breadcrumb-enable t lsp-enable-indentation nil lsp-enable-on-type-formatting nil @@ -2203,6 +2261,8 @@ The output will appear in the buffer *PHP*." lsp-modeline-code-actions-enable t lsp-modeline-code-actions-segments '(count icon name) lsp-signature-render-documentation t) + ;;(define-key lsp-mode-map (kbd "") nil) + ;;(define-key lsp-mode-map (kbd "C-S-") 'lsp-mouse-click) :hook ((sh-mode . lsp-deferred) ;;(c-mode-common . lsp-deferred) @@ -2213,9 +2273,9 @@ The output will appear in the buffer *PHP*." ;;:diminish :config (setq lsp-ui-doc-show-with-cursor t - lsp-ui-doc-show-with-mouse nil + lsp-ui-doc-show-with-mouse nil ; breaks isearch - lsp-ui-sideline-enable nil + lsp-ui-sideline-enable nil ; too messy lsp-ui-sideline-show-hover t lsp-ui-sideline-show-symbol t lsp-ui-sideline-show-code-actions t @@ -2225,7 +2285,9 @@ The output will appear in the buffer *PHP*." lsp-ui-doc-max-width 80 lsp-ui-doc-max-height 20 lsp-ui-doc-include-signature t ; type signature in doc - lsp-ui-doc-position 'top) + lsp-ui-doc-enhanced-markdown t ; looks b0rken (lists...) + lsp-ui-doc-position 'top ; top/bottom/at-point + lsp-ui-doc-alignment 'window) :commands (lsp-ui-mode) diff --git a/config/home/emacs.d/lorien.el b/config/home/emacs.d/lorien.el index 2386cd9..b5b335c 100755 --- a/config/home/emacs.d/lorien.el +++ b/config/home/emacs.d/lorien.el @@ -35,14 +35,15 @@ (defconst my/loaded-files-at-startup (list - "~/dev/brlib/Makefile" "~/dev/brchess/Makefile" + "~/dev/brlib/Makefile" ;;"~/org/boot-disk.org" ;;"~/org/beaglebone-buster-setup.org" ;;"~/dev/www/cf.bodi/sql/coc.sql" ;;"~/dev/www/cf.bodi/sql/coc-sql.org" user-init-file - "~/dev/tools/bash/Makefile" + ;; "~/dev/tools/bash/Makefile" + "~/dev/brchess/src/board.c" "~/org/emacs-cheatsheet.org") ;;"~/dev/g910/g910-gkey-macro-support/lib/data_mappers/char_uinput_mapper.py" ;;"~/dev/advent-of-code/2022/Makefile"