minor config update
[dot-emacs] / init.el
diff --git a/init.el b/init.el
index 4855c41e3683d550e0a02ef607eb35299e546e98..e91121ded3628786f3166f302634219a3e0688e7 100644 (file)
--- a/init.el
+++ b/init.el
@@ -23,6 +23,7 @@
 ;;(toggle-debug-on-error) ;uncomment to help debug
 
 
+
 ;; stop from minimizing & freezing the gui
 ;; used to freeze emacs and was really annoying,
 ;; seems its changed now. no harm in keeping this though.
 ;; disabled while I look for another alternative
 ;;(icomplete-mode)
 
+(unless (string= (daemonp) "server")
+  (setq ac-use-comphist nil))
 (require 'auto-complete-config)
 (ac-config-default)
 
 
 ;; complete after 1 char instead of default 2
-(setq ac-auto-start 1)
-(setq ac-delay 0.001)
+(setq ac-auto-start 1
+      ac-delay 0.001)
 
 (add-to-list 'ac-modes 'org-mode 'sql-mode)
 
          (list (format "LC_INSIDE_EMACS=%s,comint" emacs-version))
          process-environment))
        (default-directory
-         (if (file-accessible-directory-p default-directory)
-             default-directory
-           "/"))
+        (if (file-accessible-directory-p default-directory)
+            default-directory
+          "/"))
        proc decoding encoding changed)
     (let ((exec-path (if (and command (file-name-directory command))
                         ;; If the command has slashes, make sure we
@@ -513,8 +516,9 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
   "Backup conditioned on some time passing since last one.
   Hooked into 'before-save-hook."
   (cl-flet ((b-time (minutes)
-                    (< last-backup-time
-                       (- (current-time) (* 60 minutes)))))
+              (< last-backup-time
+                 ;; current-time is seconds, so convert minutes to seconds.
+                 (- (current-time) (* 60 minutes)))))
     (when (or (not (boundp 'last-backup-time)) (and (< (buffer-size) 10000000) (b-time 5)) (b-time 30))
       (setq buffer-backed-up nil)
       (setq-local last-backup-time (current-time)))))
@@ -573,17 +577,36 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 (defun toggle-night ()
   (interactive)
   (cond  ((equal (car custom-enabled-themes) 'naquadah)
-          (override-theme 'leuven))
+          (override-theme 'ef-light))
          (t
           (override-theme 'naquadah))))
 
+(setq ef-themes-mixed-fonts t
+      ef-themes-variable-pitch-ui t)
+
 
 ;; in the leuven theme file, i made this change. will need to remake it
 ;; on package updates. I could fork, but its a pretty simple change
 ;; < `(default ((,class (:foreground "#333333" :background "#FFFFFF"))))
 ;; > `(default ((,class (:foreground "#333333" :background "#F6F6F0"))))
-(override-theme 'leuven)
+;;
+;; <   `(font-lock-comment-face ((,class (:slant italic :foreground "#8D8D84")))) ; #696969
+;; >   `(font-lock-comment-face ((,class (:slant italic :foreground "#484848")))) ; #696969
+
+;;(override-theme 'leuven)
 
+;; based on ef-themes README.org
+(mapc #'disable-theme custom-enabled-themes)
+;; the default blue is too dark and messes with erc colors
+(setq ef-light-palette-overrides
+      '((bg-mode-line "#efefef")))
+(ef-themes-select 'ef-light)
+;;(load-theme 'ef-light)
+
+
+;; for learning about faces, see
+;; useful snippet
+;; (byte-recompile-file "/home/iank/.emacs.d/elpa/leuven-theme-20220203.947/leuven-theme.el" nil 0)
 
 ;; disable color thing with this:
 ;;(disable-theme (car custom-enabled-themes))
@@ -620,12 +643,14 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 
 
 
-
 ;;; cross session settings
 
+
+
 (use-package recentf
   ;; defer & commands from jwiegley
   :defer 10
+  :if (string= (daemonp) "server")
   :commands (recentf-mode
              recentf-add-file
              recentf-apply-filename-handlers)
@@ -635,8 +660,13 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
         recentf-max-menu-items 15)
   )
 
+(when (string= (daemonp) "server")
+  ;; save it every 5 minutes. https://www.emacswiki.org/emacs/RecentFiles
+  (run-at-time nil (* 5 60) 'recentf-save-list))
+
+;; less strong conditional: :unless noninteractive
 (use-package saveplace
-  :unless noninteractive
+  :if (string= (daemonp) "server")
   :config
   (setq
    save-place-version-control 'nospecial
@@ -647,7 +677,7 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 
 ;; savehist keeps track of some history search entries
 (use-package savehist
-  :unless noninteractive
+  :if (string= (daemonp) "server")
   :config
   (setq savehist-additional-variables '(kill-ring search-ring regexp-search-ring)
         ;; save every minute
@@ -661,6 +691,31 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 ;; dired - reuse current buffer by pressing 'a'
 (put 'dired-find-alternate-file 'disabled nil)
 
+
+;; copied from dired-x info manual
+(with-eval-after-load 'dired
+  (require 'dired-x)
+  ;; use e instead for find file. i would like
+  ;; dired-do-async-shell-command, except it pops open some async
+  ;; shell buffer. i should figure out how to get rid of that.
+  (define-key dired-mode-map "f" 'dired-do-shell-command)
+  ;; Set dired-x global variables here.  For example:
+  ;; (setq dired-guess-shell-gnutar "gtar")
+  ;; (setq dired-x-hands-off-my-keys nil)
+  )
+(add-hook 'dired-mode-hook
+          (lambda ()
+            ;; Set dired-x buffer-local variables here.  For example:
+            ;; (dired-omit-mode 1)
+            ))
+
+;; the defaults are just some weird predefined list, like xpdf for pdf.
+(setq dired-guess-shell-alist-user
+      (list
+       (list ".*" "xdg-open")
+       ))
+
+
 ;;; elisp settings
 ;; when manually evaluating lisp, go into debugger on error
 (setq eval-expression-debug-on-error t)
@@ -754,11 +809,11 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 
 ;; Activate occur easily inside isearch
 (define-key isearch-mode-map (kbd "C-o")
-  (lambda () (interactive)
-    (let ((case-fold-search isearch-case-fold-search))
-      (occur (if isearch-regexp
-                 isearch-string
-               (regexp-quote isearch-string))))))
+            (lambda () (interactive)
+              (let ((case-fold-search isearch-case-fold-search))
+                (occur (if isearch-regexp
+                           isearch-string
+                         (regexp-quote isearch-string))))))
 ;;; lisp / elisp mode setings
 
 (add-hook 'emacs-lisp-mode-hook 'starter-kit-remove-elc-on-save)
@@ -793,6 +848,8 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 
 ;;; modes with little configuration needed
 
+
+
 (custom-set-variables
  '(css-indent-offset 2)
  '(sh-here-document-word "'EOF'")
@@ -846,7 +903,7 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 ;; and a function
 ;; inspired by mu4e info manual, search for mu4e-compose-pre-hook.
 (when (file-exists-p "/p/c/mymu4e.el")
-  (load "/p/c/mymu4e.el"))
+  (load "/p/c/mymu4e"))
 
 
 (when (file-exists-p "/a/h/iank-mod.el")
@@ -864,7 +921,10 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 ;; be pasting whitespace significant things in here, so
 ;; just don't do anything.
 ;; todo: propose this upstream
+;; fundamental mode for files like .asc
 (add-to-list 'ws-butler-global-exempt-modes 'message-mode)
+(add-to-list 'ws-butler-global-exempt-modes 'dns-mode)
+(add-to-list 'ws-butler-global-exempt-modes 'fundamental-mode)
 
 (ws-butler-global-mode)
 
@@ -915,7 +975,6 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 
 
 ;; show the name of the current function definition in the modeline
-(setq which-func-modes t)
 (which-function-mode 1)
 
 ;; enable winner-mode to manage window configurations
@@ -986,6 +1045,12 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 (customize-set-variable 'tramp-use-ssh-controlmaster-options nil)
 
 (setq
+ ;; avoid this stupid prompt when doing sudo-edit
+ ;; Save auth info to file ~/.authinfo? [y/n/N/e/?]
+ ;; which doesn't actually use the default N by pressing enter,
+ ;; and doesn't actually save the 'never' setting like it claims.
+ ;; todo: file a bug.
+ auth-source-save-behavior nil
  auto-revert-interval 2
  ;; fix eof end of file newline
  mode-require-final-newline t
@@ -1001,8 +1066,18 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
  paragraph-start "\f\\|[ \t]*$\\|[ \t]*[-+*] "
  sh-basic-offset 2
  vc-follow-symlinks t
+ dired-confirm-shell-command nil
+ dired-deletion-confirmer '(lambda (x) t)
+ dired-listing-switches "-alh"
+ dired-recursive-deletes 'always
+ dired-clean-confirm-killing-deleted-buffers nil
+ undo-outer-limit 100000000 ; per undo command
+ undo-limit 500000000 ; undo history limit
+ undo-strong-limit 600000000 ; undo history limit plus some extra
  )
 
+
+
 (ivy-mode 1)
 (add-hook 'text-mode-hook (lambda () (auto-fill-mode t)))
 (setq counsel-find-file-at-point t)
@@ -1052,7 +1127,6 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
 (setq font-lock-maximum-decoration t
       inhibit-startup-message t
       transient-mark-mode t
-      delete-by-moving-to-trash t
       shift-select-mode nil
       truncate-partial-width-windows nil
       uniquify-buffer-name-style 'forward
@@ -1081,7 +1155,7 @@ A non-nil CURRENT-ONLY argument means save only current buffer."
               indicate-empty-lines t) ; mark end of buffer
 
 
-(blink-cursor-mode '(-4))
+(blink-cursor-mode 0)
 (menu-bar-mode -1)
 (tool-bar-mode -1)
 
@@ -1265,7 +1339,7 @@ Go to the next directory based on where the cursor is."
 
 ;;; org mode
 
-;; todo work on org-cycle-emulate-tab
+
 
 ;; todo, this doesn't work for a non-standard keybind
 ;;(setq org-special-ctrl-k t)
@@ -1315,6 +1389,8 @@ Go to the next directory based on where the cursor is."
       org-global-properties (quote (("STYLE_ALL" . "habit")))
       org-special-ctrl-a/e t  ;; home and end work special in headlines
       org-completion-use-ido t
+      ;; i had some problem with this in the past, but don't know what, so whatever.
+      org-cycle-emulate-tab nil
       org-catch-invisible-edits 'smart)
 
 (setq
@@ -1405,6 +1481,8 @@ Go to the next directory based on where the cursor is."
   ;; so that I can do completion before the dialog pops up
   ;;(local-set-key (kbd "<tab>") 'auto-complete)
   (local-set-key (kbd "TAB") 'auto-complete)
+  (define-key emacs-lisp-mode-map (kbd "M-q") nil)
+
   ;; todo, this is causing error message on loading file, prolly not working
   ;;(flycheck-mode +1)
   (setq ac-sources (delq 'ac-source-dictionary ac-sources))
@@ -1597,20 +1675,48 @@ or else the number of characters matched by `outline-regexp'."
 ;; if I could define overlay faces to use inverse foreground color
 
 
+;; (setq comment-start "<br align=\"left\"")
+;;
+
+;; (setq comment-start "#" comment-padding " ")
+
+
+;; graphviz fill, for html left aligned labels
+(defun grfil()
+  (interactive)
+  (setq comment-start "<br align=\"left\"/>&nbsp;")
+  (setq comment-padding " ")
+  (setq fill-column 50)
+  ;; (setq fill-column 30)
+  (mark-paragraph)
+  ;; (call-interactively 'uncomment-region)
+  (fill-paragraph)
+  (call-interactively 'comment-region)
+  (deactivate-mark)
+  (save-excursion
+    (goto-char (region-beginning))
+    (next-line)
+    (comment-line 1)
+    )
+  )
+
+;; (chirp)
+(defun chirp()
+  (message "chirp nothing"))
 ;;; znc/erc
 (defun chirp()
   (interactive)
-  (setq vol 20)
-  (when (string= (system-name) "kd") (setq vol 80))
+  (setq vol 80)
+  (when (string= (system-name) "kd") (setq vol 60))
   ;; speed is there so i can adjust and make it go slow so it plays long enough to adjust in pavucontrol
-  (start-process-shell-command "ignoreme" nil (format "mpv --speed=1 --no-terminal --vo=null --volume=%d /a/bin/data/bird.mp3" vol)))
+  (start-process-shell-command "ignoreme" nil (format "mpv --speed=1 --no-terminal --vo=null --volume=%d /a/bin/data/d20.wav" vol)))
 ;; from https://www.emacswiki.org/emacs/ErcSound
 (defun chirp-slow()
   (interactive)
   (setq vol 50)
   (when (string= (system-name) "tp") (setq vol 80))
   ;; speed is there so i can adjust and make it go slow so it plays long enough to adjust in pavucontrol
-  (start-process-shell-command "ignoreme" nil (format "mpv --speed=.2 --no-terminal --vo=null --volume=%d /a/bin/data/bird.mp3" vol)))
+  (start-process-shell-command "ignoreme" nil (format "mpv --speed=.2 --no-terminal --vo=null --volume=%d /a/bin/data/d20.wav" vol)))
 
 (defun erc-my-privmsg-sound (proc parsed)
   (let* ((tgt (car (erc-response.command-args parsed)))
@@ -1624,9 +1730,18 @@ or else the number of characters matched by `outline-regexp'."
   (unless (string-match "Server:[0-9]+" nickuserhost)
     (chirp)))
 
+(defun erc-sound-if-not-server (match-type nickuserhost msg)
+  ;; (message "d1 %s" nickuserhost)
+  (unless (or (string-match-p "Server:[0-9]+" nickuserhost) (string-match-p "leah" nickuserhost))
+    (chirp)))
+
 (use-package erc
   :defer t
+  :custom-face
+  (erc-current-nick-face ((t :weight bold :foreground "red")))
   :init
+  (which-function-mode 0)
+  ;; fuck that default turquoise
   (setq erc-fill-prefix ""
         ;; consider invisible frames to be unseen. seems like an obvious default
         erc-track-visibility 'visible
@@ -1634,13 +1749,78 @@ or else the number of characters matched by `outline-regexp'."
         erc-track-switch-direction 'importance
         ;; defaults minus fill. todo: modify the list instead of specifying it explicitly in case the defaults change
         erc-modules
-        '(autojoin button completion irccontrols list match menu move-to-prompt netsplit networks noncommands readonly ring stamp track)
-        ) ; end setq
-  :config
-  (add-hook 'erc-server-PRIVMSG-functions
-            'erc-my-privmsg-sound)
-  (add-hook 'erc-text-matched-hook 'erc-sound-if-not-server)
-  (erc-track-mode 1))
+        '(autojoin button completion imenu irccontrols list match menu move-to-prompt netsplit networks noncommands readonly ring stamp track)
+        ;; expanded from https://www.emacswiki.org/emacs/ErcChannelTracking,
+        ;; ignore various messages
+        erc-track-exclude-types '("JOIN" "NICK" "PART" "QUIT" "MODE"
+                                  "324" "329" "332" "333" "353")
+        ;; seems good, i don't care about the server buffer generally
+        erc-track-exclude-server-buffer t
+        ;; dont highlight channels just cuz of new messages, except for pms or some new channel I haven't listed in my config.
+
+        erc-track-shorten-cutoff 40
+        ;; sed -rn 's/.*(#[^>]*).*/"\1"/p' /p/c/machine_specific/li/filesystem/var/lib/znc/configs/znc.conf
+        erc-track-priority-faces-only (list
+                                        "#conservancy"
+                                        "#fosdem"
+                                        "#fsf"
+                                        "#fsf-licensing"
+                                        "#fsfe"
+                                        "#fsfsys"
+                                        "#gnu"
+                                        "#librecmc"
+                                        "#libreplanet"
+                                        "#mnt-reform"
+                                        "#nouveau"
+                                        "#pump.io"
+                                        "#savannah"
+                                        "#seagl"
+                                        "#social"
+                                        "#spamassassin"
+                                        "#talos-workstation"
+                                        "#trisquel"
+                                        "#trisquel-dev"
+                                        "#overseers"
+                                        "#gdb"
+                                        "#gcc"
+                                        "#glibc"
+                                        "#binutils"
+                                        "#gnu-linux-libre"
+                                        "#parabola"
+                                        "#guix"
+                                        "#gnu-ops"
+                                        "#gcc"
+                                        )
+  ;; so that we don't show channels where i havent been mmentioned
+  erc-track-faces-priority-list '(erc-current-nick-face
+                                  erc-keyword-face
+                                  erc-pal-face
+                                  erc-nick-msg-face
+                                  erc-direct-msg-face
+                                  erc-fool-face)
+
+
+  ) ; end setq
+
+:config
+(add-hook 'erc-server-PRIVMSG-functions
+          'erc-my-privmsg-sound)
+(add-hook 'erc-text-matched-hook 'erc-sound-if-not-server)
+(erc-track-mode 1)
+(defun erc-track--switch-buffer (fun arg)
+  (if (not erc-track-mode)
+      (message (concat "Enable the ERC track module if you want to use the"
+                      " tracking minor mode"))
+    (cond (erc-modified-channels-alist
+          ;; if we're not in erc-mode, set this buffer to return to
+           (if-let ((buf (erc-track-get-active-buffer arg))
+                    ((buffer-live-p buf)))
+               (funcall fun buf)
+             (erc-modified-channels-update)
+             (erc-track--switch-buffer fun arg)))
+         ;; if no active channels, switch back to what we were doing before
+         (t (switch-to-buffer "#fsfsys")))))
+)
 ;;; named commands
 (defun rm-file-and-buffer ()
   "Removes file connected to current buffer and kills buffer."
@@ -1664,7 +1844,7 @@ or else the number of characters matched by `outline-regexp'."
 (dolist
     (r `(
          (?i (file . ,(concat user-emacs-directory "init.el")))
-         (?o (file . ,"/a/work.org"))
+         (?o (file . ,"/b/w/work.org"))
          (?t (file . ,"/a/t.org"))
          (?s (file . ,"/usr/share/doc/exim4-base/spec.txt.gz"))
          (?w (file . ,"/p/w.org"))
@@ -1678,26 +1858,29 @@ or else the number of characters matched by `outline-regexp'."
       undo-strong-limit 600000000) ; undo history limit plus some extra
 
 
-;;; undo tree mode
+;;; undo-fu mode
 
-;; note, this has weird errors when it was before recentf-mode
+;; thank god i'm done with undo-tree and the bug where my auto-saveing
+;; would cause it to lose all undo history, strangely especially in
+;; email buffers. it would claim the undo was outside the visible
+;; buffer.
 
-(use-package undo-tree
+(use-package undo-fu
   :config
-  ;; more resilient undo-tree-history if we have its location set up front.
-  (setq undo-tree-history-directory-alist '(("." . (concat user-emacs-directory ".undo-tree-history")))
-        undo-outer-limit 100000000 ; per undo command
-        undo-limit 500000000 ; undo history limit
-        undo-strong-limit 600000000 ; undo history limit plus some extra
-        ;; Undo in region just happens accidentally, and throws me off
-        undo-tree-enable-undo-in-region nil)
-  ;; disabled due to bug, something like unknown entry in undo tree canary
-  ;; (setq undo-tree-auto-save-history t)
-
-  ;; todo, send patch undo-tree-visualize should scroll with the scroll key, instead of just pgup pgdn (aka next/prior)
-  (global-undo-tree-mode)
-  ;; simple way to fix that enable undo-tree starts out disabled in org-mode
-  (defun undo-tree-overridden-undo-bindings-p() nil))
+  (global-unset-key (kbd "C-z")))
+
+(use-package undo-fu-session
+  :if (string= (daemonp) "server")
+  :config
+  (setq undo-fu-session-incompatible-files '("/COMMIT_EDITMSG\\'" "/git-rebase-todo\\'")))
+
+(when (string= (daemonp) "server")
+  (unless (equal (user-uid) 0) ; don't make root owned files
+    (global-undo-fu-session-mode)
+    (when (file-exists-p "/p/c/undo-fu-session")
+      (setq undo-fu-session-directory "/p/c/undo-fu-session"))
+    ))
+
 
 ;;; keybinds
 
@@ -1714,11 +1897,11 @@ or else the number of characters matched by `outline-regexp'."
 ;; from starter-kit
 
 (define-key isearch-mode-map (kbd "C-o")
-  (lambda () (interactive)
-    (let ((case-fold-search isearch-case-fold-search))
-      (occur (if isearch-regexp
-                 isearch-string
-               (regexp-quote isearch-string))))))
+            (lambda () (interactive)
+              (let ((case-fold-search isearch-case-fold-search))
+                (occur (if isearch-regexp
+                           isearch-string
+                         (regexp-quote isearch-string))))))
 
 
 (defun my-isearch-toggle-regexp ()
@@ -1792,10 +1975,16 @@ or else the number of characters matched by `outline-regexp'."
 (global-set-key (kbd "<home>") 'back-to-indentation-or-beginning)
 
 ;;;;; s-tab - indent-buffer
-;; graphical
-(global-set-key (kbd "<S-iso-lefttab>") 'indent-buffer)
-;; terminal
+;; This is translated from S-<iso-lefttab> in graphicsal mode. previously, I had
+;; also set (kbd "<S-iso-lefttab>"),
+;; But I stopped because it overrides minor mode mappings, and i don't want to do that, at least not only in graphical mode.
+;;
 (global-set-key (kbd "<backtab>") 'indent-buffer)
+
+(add-hook 'org-mode-hook
+          (lambda ()
+            (define-key org-mode-map (kbd "<backtab>") nil)))
+
 ;;;;; s-delete - send-shell
 
 (global-set-key (kbd "<S-delete>") 'send-shell)
@@ -2119,7 +2308,7 @@ modes like org-mode which have their own yank function."
 
 (global-set-key (kbd "C-M-3") 'recenter-top-bottom)
 
-;;;;; C-q org-cycle, comint previous arg
+;;;;; C-q org/bicycle-cycle, comint previous arg
 
 (global-set-key (kbd "C-q") 'bicycle-cycle)
 (add-hook 'org-mode-hook
@@ -2128,7 +2317,13 @@ modes like org-mode which have their own yank function."
 (add-hook 'comint-mode-hook
           (lambda () (define-key comint-mode-map (kbd "C-q") 'comint-insert-previous-argument)))
 
-;;;;; M-q ?? unused
+;;;;; M-q org/bicycle-cycle global
+
+(add-hook 'org-mode-hook
+          (lambda ()
+            (define-key org-mode-map (kbd "M-q") 'org-shifttab)))
+(global-set-key (kbd "M-q") 'bicycle-cycle-global)
+
 ;;;;; C-M-q quoted-insert
 
 (global-set-key (kbd "C-M-q") 'quoted-insert)
@@ -2287,7 +2482,8 @@ modes like org-mode which have their own yank function."
 (global-set-key (kbd "C-M-g") 'mu4e)
 
 ;;;;; C-z - undo-only
-(global-set-key (kbd "C-z") 'undo-tree-undo)
+;;(global-set-key (kbd "C-z") 'undo-tree-undo)
+(global-set-key (kbd "C-z") 'undo-fu-only-undo)
 ;;;;; C-M-z - suspend-frame
 (global-set-key (kbd "C-M-z") 'suspend-frame)
 ;; this is never good in a gui
@@ -2325,8 +2521,10 @@ modes like org-mode which have their own yank function."
 ;;;;; C-c - copy
 
 (global-set-key (kbd "C-d") 'kill-ring-save)
-(add-hook 'c-mode-hook
-          (lambda () (define-key c-mode-map (kbd "C-d") nil)))
+(add-hook 'c-mode-common-hook
+          (lambda ()
+            (define-key c-mode-map (kbd "C-d") nil)
+            (define-key c++-mode-map (kbd "C-d") nil)))
 (add-hook 'comint-mode-hook
           (lambda ()
             (define-key comint-mode-map (kbd "C-d") nil)))
@@ -2349,6 +2547,10 @@ modes like org-mode which have their own yank function."
 
 (global-set-key (kbd "C-v") 'yank-better)
 
+(add-hook 'ivy-mode-hook
+          (lambda ()
+            (define-key ivy-minibuffer-map (kbd "C-v") nil)))
+
 
 
 (defun yank-better (arg)
@@ -2654,8 +2856,6 @@ modes like org-mode which have their own yank function."
 (global-set-key (kbd "C-_") 'vim-style-join-line)
 ;; gui
 (global-set-key (kbd "C-/") 'vim-style-join-line)
-(define-key undo-tree-map (kbd "C-/") nil)
-(define-key undo-tree-map (kbd "C-_") nil)
 
 ;;;;; C-M-/ - copy-buffer-file-name
 
@@ -2804,6 +3004,8 @@ modes like org-mode which have their own yank function."
           (lambda ()
             (define-key org-mode-map (kbd "C-t") 'org-todo)))
 
+
+
 (defun my-comint-previous-input (arg)
   (interactive "*p")
   (if (comint-after-pmark-p)
@@ -2850,7 +3052,7 @@ modes like org-mode which have their own yank function."
 ;;;;; C-home - start of buffer
 ;;;;; C-end - end of buffer
 ;;;; right secondary
-;;;;; C-^ - save-buffers-kill-emacs
+;;;;; C-^ - save-buffers-kill-emacs exit quit
 
 (global-set-key (kbd "C-^") 'save-buffers-kill-emacs)
 
@@ -2927,7 +3129,8 @@ modes like org-mode which have their own yank function."
 ;;;;; C-M-- - org-edit-src-exit
 ;;;;; C-y - undo
 
-(global-set-key (kbd "C-y") 'undo-tree-redo)
+;;(global-set-key (kbd "C-y") 'undo-tree-redo)
+(global-set-key (kbd "C-y") 'undo-fu-only-redo)
 (add-hook 'org-mode-hook
           (lambda () (define-key org-mode-map (kbd "C-y") nil)))