From: Ian Kelling Date: Fri, 4 Sep 2020 05:28:34 +0000 (-0400) Subject: remove various unused cruft X-Git-Url: https://iankelling.org/git/?a=commitdiff_plain;h=39d4ad692d933ff9d430ac98527cb429aee134e4;p=dot-emacs remove various unused cruft --- diff --git a/init.el b/init.el index e671ef4..5f1bbd5 100644 --- a/init.el +++ b/init.el @@ -225,9 +225,9 @@ (recentf-mode 1)) (setq package-archives - (quote - (("gnu" . "https://elpa.gnu.org/packages/") - ("MELPA" . "https://melpa.org/packages/")))) + (quote + (("gnu" . "https://elpa.gnu.org/packages/") + ("MELPA" . "https://melpa.org/packages/")))) ;;(add-to-list 'package-archives ;; '("marmalade" . @@ -258,8 +258,6 @@ (add-to-list 'ac-modes 'org-mode 'sql-mode) -(defun ac-common-setup () - (add-to-list 'ac-sources 'ac-source-yasnippet)) ;; for org mode completion source taken from wiki. ;; it did not work. no idea why. todo, investigate @@ -378,7 +376,34 @@ (set-process-coding-system proc decoding encoding)) proc)) -;;; auto save & backup +;;; auto save + +;; todo: patch this so i can turn it off like my-as-off-local. +;; then try it out and see if it can replace my autosave. +;; Or maybe with the new auto-save-visited-mode. +;; (use-package super-save +;; :ensure t +;; :config +;; (setq super-save-exclude '("") +;; super-save-triggers +;; '(balance-windows +;; next-buffer +;; org-babel-execute-src-block +;; other-window +;; previous-buffer +;; split-window-below +;; split-window-horizontally +;; start-process-shell-command +;; switch-to-buffer +;; windmove-down +;; windmove-left +;; windmove-right +;; windmove-up) +;; ) +;; (super-save-mode +1)) + + + (setq auto-save-timeout 1) ; idle time before auto-save. ;; main hook for my auto save @@ -523,43 +548,16 @@ A non-nil CURRENT-ONLY argument means save only current buffer." ;; but new emacs version fixed all that, yay!. - ; not using, but here for documentation, - ; alternate way to enable and specify how long between autosaves. - ; number of input events between autosave. - ; lowest bound of functionality is actually about 15 input events - ;(setq auto-save-interval - -;;; bbdb -;; based on bbdb manual -;; also has instructions to integrate with gnus, - -(bbdb-initialize 'message) - -;; recommended by gnus, -;; but seems like it could be good to have set for other stuff -(setq user-full-name "Ian Kelling") -;; general email setting? recommended by mu4e -(setq message-kill-buffer-on-exit t) - - - -;; use d instead -(add-hook 'bbdb-mode-hook - (lambda () (define-key bbdb-mode-map (kbd "C-k") nil)) - ;; based on emacs24-starter-kit - (setq bbdb-offer-save 'auto - bbdb-notice-auto-save-file t - bbdb-expand-mail-aliases t - bbdb-canonicalize-redundant-nets-p t - bbdb-complete-name-allow-cycling t) - ) - -;;(require 'bbdb-csv-import) +;; not using, but here for documentation, +;; alternate way to enable and specify how long between autosaves. +;; number of input events between autosave. +;; lowest bound of functionality is actually about 15 input events +;; (setq auto-save-interval ...) ;;; bookmark settings - ; save bookmarks whenever they are changed instead of just when emacs quits +;; save bookmarks whenever they are changed instead of just when emacs quits (setq bookmark-save-flag 1) - ; increase bookmark context size for better functionality +;; increase bookmark context size for better functionality (setq bookmark-search-size 2000) ;;; c-like settings @@ -581,9 +579,6 @@ A non-nil CURRENT-ONLY argument means save only current buffer." ;; themes are available through ELPA. -;; interesting light themes - - (defun override-theme (arg) (interactive) (while custom-enabled-themes @@ -629,8 +624,6 @@ A non-nil CURRENT-ONLY argument means save only current buffer." ;;(override-theme 'wombat) ; cursor not visible enough. from a wombat package, not sure which ;;(override-theme 'misterioso) ; cursor not visible enough - - ;;decent light themes ;;(override-theme 'alect-light) ; theres a -alt version, don't see a dif. could use this without dimming. from alect-something package ;;(override-theme 'occidental) ; from occidental-theme package @@ -646,33 +639,6 @@ A non-nil CURRENT-ONLY argument means save only current buffer." -;;; yasnippet - -;; cd ~/.emacs.d/src -;; git clone --recursive https://github.com/capitaomorte/yasnippet -;; touch snippets/.yas-make-groups - -;; This all makes it so I can look through the default snippets -;; in the menu bar, but they don't show up elsewhere, because they are -;; mostly things I don't want. - - -(require 'yasnippet) -;; this needs to be before yas-global-mode -(setq yas-snippet-dirs (list "~/.emacs.d/snippets")) -(yas-global-mode 1) - -(setq - yas-also-auto-indent-first-line t - yas-choose-tables-first t - yas-use-menu (quote full) - ;; this sets ido-prompt as first function - yas-prompt-functions - '(yas-ido-prompt yas-dropdown-prompt yas-x-prompt yas-completing-prompt yas-no-prompt)) - -;; todo, explore this option for wrapping region -;; '(yas/wrap-around-region t)) - ;;; cross session settings ;; Save a list of recent files visited. @@ -712,7 +678,6 @@ A non-nil CURRENT-ONLY argument means save only current buffer." (setq ediff-split-window-function 'split-window-horizontally) - ;; Things I tried which didn't work, which intuitively I think should ;; work better: I can open the second diff buffer in a new frame, and ;; close it's window in the first frame after starting ediff, but when I @@ -912,200 +877,14 @@ and Ian Kelling as the name" ;;; elisp settings - ; when manually evaluating lisp, go into debugger on error +;; when manually evaluating lisp, go into debugger on error (setq eval-expression-debug-on-error t) - ;reminder of useful var: debug-on-error - - -;;; haskell - -;; useful comint-shell mode commands. If not prefaced with *, it means it is not in the haskell custom repl -;; *todo: setup haskell c-t toggle arrow keys -;; tab completion -;; C-q insert prev arg -;; C-( history search -;; c-m-left/right move to next/prev prompts -;; *c-enter, multi-line input -;; *s-delete, send input across windows. (i can implement this) -;; *c-m-l clear screen -;; *haskell-process-interrupt, c-cc terminate job (i can implement this maybe) - -;; nice bash/readline functions missing in comint: -;; yank-nth-arg -;; operate-get-next -;; menu-complete - -;; usefull comint commands: -;; c-cl : list historic command in temp buffer -;; C-c C-o comint-delete-output -;; comint-restore-input, todo: put this on a randomish c-c key - - - -;; todo: -;; checkout haskell repl functions: -;; c-cv haskell-check, hlint -;; C-M-q prog-indent-sexp -;; c-c. haskell-mode-format-imports -;; C-c M-/ haskell-doc-check-active -;; haskell-process-generate-tags -;; haskell-process-cabal-build -;; haskell-cabal-command.. or something -;; haskell-process-restart -;; C-h v haskell-process-log -;; C-h v haskell-process-show-debug-tips -;; various not immediately useful functions: -;; haskell-process-add-dependency -;; haskell-process-touch-buffer -;; haskell-process-cd -;; haskell-process-unignore -;; haskell-process-reload-devel-main - - -;; rebind -;; home: C-a haskell-interactive-mode-beginning -;; c-return: C-j haskell-interactive-mode-newline-indent -;; up/down: haskell-interactive-mode-history-next - -;; todo haskell mode better binds for: -;; 'haskell-process-load-file -;; 'haskell-process-do-type -;; 'haskell-process-do-info -;; 'inferior-haskell-send-decl - - -;; commands which don't work in haskell-interactive-mode(hi) vs inferior-haskell-mode(ih, default) -;; functions not in hi: -;; inferior-haskell-find-definition, use tags instead -;; inferior-haskell-find-haddock, todo, test if this works - -;; redefined ih to hi -;; switch-to-haskell -> 'haskell-interactive-switch -;; haskell-process-load-file -> inferior-haskell-load-file -;; haskell-process-do-type -> inferior-haskell-type -;; switch-to-haskell -> haskell-interactive-switch -;; inferior-haskell-load-file -> 'haskell-process-load-file - - -;; haskell-mode installation from source, based on its readme -;; in the git directory, -;; make all - - - - -;; remove default option to not link the file -(setq haskell-compile-command "ghc -Wall -ferror-spans -fforce-recomp %s") -(add-hook 'haskell-indentation-mode-hook - (lambda () - (define-key haskell-indentation-mode-map [?\C-d] nil) - (define-key haskell-indentation-mode-map - (kbd "") - 'haskell-indentation-delete-char))) - -;;copied from haskell-mode docs in order to use the new, better, nondefault -;;interactive mode. -(eval-after-load "haskell-mode" - '(progn - (define-key haskell-mode-map (kbd "C-x C-d") nil) - (define-key haskell-mode-map (kbd "C-c C-z") 'haskell-interactive-switch) - (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-file) - (define-key haskell-mode-map (kbd "C-c C-b") 'haskell-interactive-switch) - (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) - (define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info) - (define-key haskell-mode-map (kbd "C-c M-.") nil) - (define-key haskell-mode-map (kbd "C-c C-d") nil))) - -;; ghc-mod install http://www.mew.org/~kazu/proj/ghc-mod/en/emacs.html -;; todo, try this out -;; (autoload 'ghc-init "ghc" nil t) -;;(add-hook 'haskell-mode-hook (lambda () (ghc-init) (flymake-mode))) - - - -;; from the package readme for ghci-completion -(add-hook 'inferior-haskell-mode-hook 'turn-on-ghci-completion) - - -;; disable some rebinds. they are set to appropriate keys in the keybinds section -(eval-after-load "haskell-mode" - '(progn - (define-key haskell-mode-map (kbd "C-a") 'nil) - (define-key haskell-mode-map (kbd "C-j") 'nil))) (eval-after-load "python-mode" '(progn (define-key python-mode-map (kbd "C-j") nil))) -(defun pretty-lambdas-haskell () - (font-lock-add-keywords - nil `((,(concat "(?\\(" (regexp-quote "\\") "\\)") - (0 (progn (compose-region (match-beginning 1) (match-end 1) - ,(make-char 'greek-iso8859-7 107)) - nil)))))) -;; from haskell-mode manual -(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) -(when (window-system) - (add-hook 'haskell-mode-hook 'pretty-lambdas-haskell)) - -;; added from haskell-mode website install instructions - ;(load "/usr/share/emacs/site-lisp/haskell-mode/haskell-site-file") -(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) -;;the three indentation modules are mutually exclusive - add at most one. Trying out the "most advanced" -(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) -;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indent) -;;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent) - - -;; todo, set this to some other key -;; (local-set-key (kbd "C-e") 'my-haskell-load-and-run) - -(defun my-haskell-load-and-run () - "Loads and runs the current Haskell file." - (interactive) - (let ((start-buffer (current-buffer))) - (inferior-haskell-load-and-run inferior-haskell-run-command) - (sleep-for 0 100) - (end-of-buffer) - (pop-to-buffer start-buffer))) - -;; show haskell function in mode line -;; todo, this broke after updating emacs -;;(eval-after-load "which-func" -;; '(add-to-list 'which-func-modes 'haskell-mode)) - - - -(add-hook 'interactive-haskell-mode-hook 'ac-haskell-process-setup) -(add-hook 'haskell-interactive-mode-hook 'ac-haskell-process-setup) -(eval-after-load "auto-complete" - '(add-to-list 'ac-modes 'haskell-interactive-mode)) - -(add-hook 'haskell-mode-hook - (lambda () (define-key haskell-mode-map (kbd "C-(") - (lambda () (interactive) - (basic-save-buffer) - (haskell-compile) - (run-with-timer .3 nil 'repeat-shell))))) -(add-hook 'haskell-cabal-mode-hook - (lambda () (define-key haskell-cabal-mode-map (kbd "C-(") 'haskell-compile))) - - - -(add-hook 'haskell-interactive-mode-hook - (lambda () - (define-key haskell-interactive-mode-map "\r" nil) - (define-key haskell-interactive-mode-map (kbd "RET") - 'haskell-interactive-mode-return))) -(add-hook 'haskell-indentation-mode-hook (lambda () (define-key haskell-indentation-mode-map "\r" nil))) - - - -(add-hook 'haskell-interactive-mode-hook - (lambda () - (define-key haskell-interactive-mode-map (kbd "") 'haskell-interactive-mode-newline-indent))) - ;;; isearch (setq isearch-allow-scroll t @@ -1183,11 +962,7 @@ and Ian Kelling as the name" (isearch-yank-symbol partialp))) - - ; lets look through emacs starter kit before we throw this out. - - - ; automatically wrap to the top of the buffer when isearch fails +;; automatically wrap to the top of the buffer when isearch fails (defadvice isearch-search (after isearch-no-fail activate) (unless isearch-success (ad-disable-advice 'isearch-search 'after 'isearch-no-fail) @@ -1243,36 +1018,11 @@ and Ian Kelling as the name" (turn-on-eldoc-mode)) (add-hook 'ielm-mode-hook 'ielm-mode-defaults) -;;; mediawiki - -(eval-after-load "mediawiki" - '(progn - (remove-hook 'outline-minor-mode-hook 'mediawiki-outline-magic-keys) - (add-hook 'mediawiki-mode-hook - (lambda () (define-key mediawiki-mode-map (kbd "C-(") 'mediawiki-save-reload))) - - ;; mediawiki mode has a bug that it will claim an edit conflict unless you reload after saving. - ;; I also like to save with no edit summary for previewing on my local mw instance - (defun mediawiki-save-reload () - (interactive) - (and (mediawiki-save "") (mediawiki-reload))))) ;;; modes with little configuration needed -;; busted: -;;(require 'csv-mode) -;;(add-to-list 'auto-mode-alist '("\\.[Cc][Ss][Vv]\\'" . csv-mode)) ;; disabled temporarily ;;(add-hook 'outline-minor-mode-hook 'outshine-mode) -(setq org-caldav-url "https://cal.iankelling.org" - org-caldav-calendar-id "ian" - org-caldav-inbox "/p/cal.org") -;;(org-caldav-sync) - - -;;(require 'dtrt-indent) -;;(setq dtrt-indent-mode t) - (setq css-indent-offset 2) (when (file-exists-p "/a/h/iank-mod.el") @@ -1316,67 +1066,18 @@ and Ian Kelling as the name" (setq-local prev-auto-revert-max (point-max))) -;; gnu global -(add-hook 'c-mode-common-hook - (lambda () (ggtags-mode 1) - (setq c-label-minimum-indentation 0))) - -(defun my-ggtags-init() - ;; specific to my unusual keybind setup, you may want to - ;; pick different keys - (define-key ggtags-mode-map (kbd "C-M-o") 'ggtags-find-tag-dwim) - (define-key ggtags-mode-map (kbd "C-M-m") 'ggtags-grep)) -(eval-after-load "ggtags" '(my-ggtags-init)) - - -(defun gtags-update-single(filename) - "Update Gtags database for changes in a single file" - (interactive) - (start-process "update-gtags" "update-gtags" "bash" "-c" (concat "cd " ggtags-project-root " ; gtags --single-update " filename ))) - -(defun gtags-update-current-file() - (interactive) - (let ((rel-filename (replace-regexp-in-string - ggtags-project-root "." - (buffer-file-name (current-buffer))))) - (gtags-update-single rel-filename))) - -(defun gtags-update-hook() - "Update GTAGS file incrementally upon saving a file" - (when (and (boundp 'ggtags-mode) ggtags-mode ggtags-project-root) - (gtags-update-current-file))) - -(add-hook 'after-save-hook 'gtags-update-hook) - -;; i'd like to make some elisp which modifies a keymap to remove -;; all binds which don't match a predicate. -;; I tried setting a keymap to a new keymap, -;; but that didn't register as functional. -;; so I'd need to modify the list in place. - -;; colorize hex colors: use rainbow mode - - ;; message mode prompted me on first message. ;; a function which describes options then sets this ;; the other options were to use smtp directly or pass to another mail client ;; here we use the standard sendmail interface, which I use postfix for (setq send-mail-function (quote sendmail-send-it)) -(global-set-key (kbd "C-M-w") 'spray-mode) -;; remember, h/l = move. f/s = faster/slower, space = pause, all others quit - ;; delete active selection with self-insert commands (delete-selection-mode t) ;; Transparently open compressed files (auto-compression-mode t) -;; Highlight matching parenthesesq when the pointq is on them. -;; not needed since smart paren mode? -;; (show-paren-mode 1) - - ;; not documented, but looking at the source, I find this ;; stops me from being asked what command on every C-c-c ;; when doing a latex document. @@ -1386,41 +1087,19 @@ and Ian Kelling as the name" (require 'dot-mode) (add-hook 'find-file-hooks 'dot-mode-on) - ;; clean up obsolete buffers automatically at midnight (require 'midnight) - -;; disabled because it takes 400ms on startup -;; ;; emacs regexes are too limited. -;; (require 'foreign-regexp) -;; ;; perl is most powerful, but javascript is pretty close and -;; ;; I'd rather know javascript stuff than perl -;; (custom-set-variables -;; '(foreign-regexp/regexp-type 'javascript) ;; Choose by your preference. -;; '(reb-re-syntax 'foreign-regexp)) ;; Tell re-builder to use foreign regexp. -;; ;; it would be nice to add documentation to do this for more commands to that package -;; ;; disabled because it's too slow. but I'd still m-x it for advanced replacements -;; ;;(define-key global-map [remap isearch-forward-regexp] 'foreign-regexp/isearch-forward) - - ;; saner regex syntax (require 're-builder) (setq reb-re-syntax 'string) -;; use shift + arrow keys to switch between visible buffers -;; todo, set these keys to something else -;; (require 'windmove) -;; (windmove-default-keybindings) - - ;; show the name of the current function definition in the modeline ;;(require 'which-func) (setq which-func-modes t) (which-function-mode 1) - ;; enable winner-mode to manage window configurations (winner-mode +1) @@ -1590,7 +1269,7 @@ and Ian Kelling as the name" ;; todo sometime, make it work for certain modes only (smooth-scroll-mode t) ;; its too slow with the default of 2 -(setq smooth-scroll/vscroll-step-size 7) +(setq smooth-scroll/vscroll-step-size 6) ;; sublimity doesn't work as good going fast by default ;; smooth-scrolling.el, does not do smooth scrolling. its about cursor location @@ -1843,14 +1522,6 @@ Go to the next directory based on where the cursor is." (y (cdr pos))) (set-mouse-position (selected-frame) x y))) -;;;; keybinds for wow mouse - -(global-set-key (kbd "") 'move-mouse-to-point) -(global-set-key (kbd "") 'indent-region) -(global-set-key (kbd "") 'mark-defun) -(global-set-key (kbd "") 'ibuffer) -(global-set-key (kbd "") 'delete-horizontal-space) - ;;; org mode ;; todo work on org-cycle-emulate-tab @@ -1905,12 +1576,8 @@ Go to the next directory based on where the cursor is." org-completion-use-ido t org-catch-invisible-edits 'smart) -;; non universally recommended settings (setq org-default-notes-file "/a/t.org" - org-agenda-files (quote ("/a/t.org")) - org-mobile-directory "/p/org-mobile" - org-mobile-inbox-for-pull "/p/from-mobile.org" org-directory "/p") ;; modeilne populated from (org-clock-get-clocked-time) @@ -1921,15 +1588,12 @@ Go to the next directory based on where the cursor is." (eval-after-load "org" '(org-clock-persistence-insinuate)) - (defun time-to-org-day (time) (round (time-to-number-of-days (time-subtract time (list 0 (* 3600 org-extend-today-until) 0))))) - (defun my-org-confirm-babel-evaluate (lang body) (not (or (string= (buffer-file-name) "/a/t.org") - (string= (buffer-file-name) "/home/iank/.emacs.d/my-init.org") ))) (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate) @@ -1939,22 +1603,6 @@ Go to the next directory based on where the cursor is." ;; '(4) is the argument passed by universal prefix (org-time-stamp (if arg arg '(4)) t)) -(defun ian-org-work-time () - (interactive) - (save-excursion - (set-buffer "t.org") - (goto-char (org-find-entry-with-id "ian-identifier-1")) - (org-clock-in))) - -(defun ian-org-idle-time () - (interactive) - (save-excursion - (goto-char (org-find-entry-with-id "ian-identifier-2")) - (set-buffer "t.org") - (org-clock-in))) - - - ;; based on http://stackoverflow.com/questions/3758139/variable-pitch-for-org-mode-fixed-pitch-for-tables ;; keywords: proportional font, monospace @@ -2036,7 +1684,6 @@ Go to the next directory based on where the cursor is." (add-hook 'prog-mode-hook 'flyspell-prog-mode) - ;;; yank auto-indent ;; automatically indenting yanked text if in programming-modes (defvar yank-indent-modes @@ -2236,7 +1883,6 @@ indent yanked text (with prefix arg don't indent)." ;;; znc - (setq erc-fill-prefix "") (defun chirp() (interactive) @@ -2343,8 +1989,6 @@ indent yanked text (with prefix arg don't indent)." (define-prefix-command 'terminal-key-map) (global-set-key (kbd "\e[") 'terminal-key-map) - - (global-set-key (kbd "C-x C-b") 'ibuffer) @@ -2378,14 +2022,12 @@ indent yanked text (with prefix arg don't indent)." ;;;; single/special keys ;;;;; tab - isearch ;; todo: this doesnt work. needs , which doesnt work in terminal. fix that. -;; (define-key isearch-mode-map (kbd "TAB") 'isearch-query-replace) -(define-key isearch-mode-map (kbd "M-f") 'isearch-query-replace) +(define-key isearch-mode-map (kbd "TAB") 'isearch-query-replace) ;;;;; f12 - isearch-forward ;; explained in http://stackoverflow.com/questions/7411920/how-to-bind-search-and-search-repeat-to-c-f-in-emacs (global-set-key (kbd "") 'isearch-forward) (global-set-key (kbd "") 'isearch-forward) -(define-key isearch-mode-map "\t" nil) (define-key isearch-mode-map (kbd "") 'isearch-repeat-forward) (define-key isearch-mode-map (kbd "") 'isearch-repeat-forward) ;; get rid of the standard completion binding, always use auto-complete @@ -2836,31 +2478,31 @@ modes like org-mode which have their own yank function." (global-set-key (kbd "C-a") 'copy-all) ;;;;; C-s - c-x prefix - ; prefix key binds. - ; good info http://www.masteringemacs.org/articles/2011/02/08/mastering-key-bindings-emacs/ - ; rebinding the prefix keys are tricky. apparently, some modes ignore any redefinition of a prefix key and use it explicitly, - ; so you have to dig into their key maps and redo things. - ; There are 2 simpler alternatives which have their own downsides. - ; One is cua mode, which I do not like because it smashes 2 keybinds onto 1 and limits what you can do. - ; The other is keyboard-translate, which translates the key presses before anything else. - ; The downside is that it translates them when you aren't using them as a prefix. - ; Since the swaps I'm using are all very accessible, the only downside is some mental jugling when reading docs etc about these keybinds. - - ; I've seen this as an another suggestion, it was a total fail. The prefix command took over both keys. - ; (define-key key-translation-map [f12] "\C-c") - ; (define-key key-translation-map "\C-c" [left]) - - - ;idea to remove the hook later since it is only needed at startup. - ; did not work however, and there is not a real need to fix it, so I did not investigate - ;(defun removeSwapHook () - ; (remove-hook 'buffer-list-update-hook 'myKeySwap) - ; (remove-hook 'change-major-mode-hook 'removeSwapHook)) - ;(add-hook 'change-major-mode-hook 'removeSwapHook) - - - ; went through almost all the relevant standard hooks, - ; this overcomes a known bug that (keyboard-translate) does not get applied when running emacs daemon +;; prefix key binds. +;; good info http://www.masteringemacs.org/articles/2011/02/08/mastering-key-bindings-emacs/ +;; rebinding the prefix keys are tricky. apparently, some modes ignore any redefinition of a prefix key and use it explicitly, +;; so you have to dig into their key maps and redo things. +;; There are 2 simpler alternatives which have their own downsides. +;; One is cua mode, which I do not like because it smashes 2 keybinds onto 1 and limits what you can do. +;; The other is keyboard-translate, which translates the key presses before anything else. +;; The downside is that it translates them when you aren't using them as a prefix. +;; Since the swaps I'm using are all very accessible, the only downside is some mental jugling when reading docs etc about these keybinds. + +;; I've seen this as an another suggestion, it was a total fail. The prefix command took over both keys. +;; (define-key key-translation-map [f12] "\C-c") +;; (define-key key-translation-map "\C-c" [left]) + + +;;idea to remove the hook later since it is only needed at startup. +;; did not work however, and there is not a real need to fix it, so I did not investigate +;;(defun removeSwapHook () +;; (remove-hook 'buffer-list-update-hook 'myKeySwap) +;; (remove-hook 'change-major-mode-hook 'removeSwapHook)) +;;(add-hook 'change-major-mode-hook 'removeSwapHook) + + +;; went through almost all the relevant standard hooks, +;; this overcomes a known bug that (keyboard-translate) does not get applied when running emacs daemon (add-hook 'buffer-list-update-hook (lambda () (interactive) (keyboard-translate ?\C-x ?\C-s) (keyboard-translate ?\C-s ?\C-x) @@ -2869,16 +2511,16 @@ modes like org-mode which have their own yank function." - ; these all don't work - ; don't know why this doesn't error but reversing the keys does - ;(keyboard-translate ?\t ?\M-\t) - ;(keyboard-translate [M-tab] [tab]) - ; from what i can tell, it wants to use a keyboard-translate-table, - ; which is a char table, which is a vector indexed by chars, - ; and mod+tab is not a char (it has too many bits), it is an integer - ; it actually says it can hold vectors or strings, but that it is obsolete to do so - ;(characterp ?\M-a) - ;(characterp ?\C-a) +;; these all don't work +;; don't know why this doesn't error but reversing the keys does +;;(keyboard-translate ?\t ?\M-\t) +;;(keyboard-translate [M-tab] [tab]) +;; from what i can tell, it wants to use a keyboard-translate-table, +;; which is a char table, which is a vector indexed by chars, +;; and mod+tab is not a char (it has too many bits), it is an integer +;; it actually says it can hold vectors or strings, but that it is obsolete to do so +;;(characterp ?\M-a) +;;(characterp ?\C-a) ;;;;; C-M-s - split-window-vertically diff --git a/misc-disabled.el b/misc-disabled.el index 2564338..90b63d4 100644 --- a/misc-disabled.el +++ b/misc-disabled.el @@ -47,3 +47,345 @@ ;; default abbreviation mode file is .emacs.d/abbrev_defs. ;; add-global-abbrev, add-mode-abbrev for expansion at point ;; if all else fails, edit the abbrev file + + +;;; bbdb +;; based on bbdb manual +;; also has instructions to integrate with gnus, + +(bbdb-initialize 'message) + +;; recommended by gnus, +;; but seems like it could be good to have set for other stuff +(setq user-full-name "Ian Kelling") +;; general email setting? recommended by mu4e +(setq message-kill-buffer-on-exit t) + + + +;; use d instead +(add-hook 'bbdb-mode-hook + (lambda () (define-key bbdb-mode-map (kbd "C-k") nil)) + ;; based on emacs24-starter-kit + (setq bbdb-offer-save 'auto + bbdb-notice-auto-save-file t + bbdb-expand-mail-aliases t + bbdb-canonicalize-redundant-nets-p t + bbdb-complete-name-allow-cycling t) + ) + +;;(require 'bbdb-csv-import) + + + + +;;; yasnippet +;;; todo: learn and use yasnippet + +;; cd ~/.emacs.d/src +;; git clone --recursive https://github.com/capitaomorte/yasnippet +;; touch snippets/.yas-make-groups + +;; This all makes it so I can look through the default snippets +;; in the menu bar, but they don't show up elsewhere, because they are +;; mostly things I don't want. + + +(require 'yasnippet) +;; this needs to be before yas-global-mode +(setq yas-snippet-dirs (list "~/.emacs.d/snippets")) +(yas-global-mode 1) + +(setq + yas-also-auto-indent-first-line t + yas-choose-tables-first t + yas-use-menu (quote full) + ;; this sets ido-prompt as first function + yas-prompt-functions + '(yas-ido-prompt yas-dropdown-prompt yas-x-prompt yas-completing-prompt yas-no-prompt)) + +;; todo, explore this option for wrapping region +;; '(yas/wrap-around-region t)) + +(defun ac-common-setup () + (add-to-list 'ac-sources 'ac-source-yasnippet)) + + + +;;; haskell + +;; useful comint-shell mode commands. If not prefaced with *, it means it is not in the haskell custom repl +;; *todo: setup haskell c-t toggle arrow keys +;; tab completion +;; C-q insert prev arg +;; C-( history search +;; c-m-left/right move to next/prev prompts +;; *c-enter, multi-line input +;; *s-delete, send input across windows. (i can implement this) +;; *c-m-l clear screen +;; *haskell-process-interrupt, c-cc terminate job (i can implement this maybe) + +;; nice bash/readline functions missing in comint: +;; yank-nth-arg +;; operate-get-next +;; menu-complete + +;; usefull comint commands: +;; c-cl : list historic command in temp buffer +;; C-c C-o comint-delete-output +;; comint-restore-input, todo: put this on a randomish c-c key + + + +;; todo: +;; checkout haskell repl functions: +;; c-cv haskell-check, hlint +;; C-M-q prog-indent-sexp +;; c-c. haskell-mode-format-imports +;; C-c M-/ haskell-doc-check-active +;; haskell-process-generate-tags +;; haskell-process-cabal-build +;; haskell-cabal-command.. or something +;; haskell-process-restart +;; C-h v haskell-process-log +;; C-h v haskell-process-show-debug-tips + +;; various not immediately useful functions: +;; haskell-process-add-dependency +;; haskell-process-touch-buffer +;; haskell-process-cd +;; haskell-process-unignore +;; haskell-process-reload-devel-main + + +;; rebind +;; home: C-a haskell-interactive-mode-beginning +;; c-return: C-j haskell-interactive-mode-newline-indent +;; up/down: haskell-interactive-mode-history-next + +;; todo haskell mode better binds for: +;; 'haskell-process-load-file +;; 'haskell-process-do-type +;; 'haskell-process-do-info +;; 'inferior-haskell-send-decl + + +;; commands which don't work in haskell-interactive-mode(hi) vs inferior-haskell-mode(ih, default) +;; functions not in hi: +;; inferior-haskell-find-definition, use tags instead +;; inferior-haskell-find-haddock, todo, test if this works + +;; redefined ih to hi +;; switch-to-haskell -> 'haskell-interactive-switch +;; haskell-process-load-file -> inferior-haskell-load-file +;; haskell-process-do-type -> inferior-haskell-type +;; switch-to-haskell -> haskell-interactive-switch +;; inferior-haskell-load-file -> 'haskell-process-load-file + + +;; haskell-mode installation from source, based on its readme +;; in the git directory, +;; make all + + + + +;; remove default option to not link the file +(setq haskell-compile-command "ghc -Wall -ferror-spans -fforce-recomp %s") +(add-hook 'haskell-indentation-mode-hook + (lambda () + (define-key haskell-indentation-mode-map [?\C-d] nil) + (define-key haskell-indentation-mode-map + (kbd "") + 'haskell-indentation-delete-char))) + +;;copied from haskell-mode docs in order to use the new, better, nondefault +;;interactive mode. +(eval-after-load "haskell-mode" + '(progn + (define-key haskell-mode-map (kbd "C-x C-d") nil) + (define-key haskell-mode-map (kbd "C-c C-z") 'haskell-interactive-switch) + (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-file) + (define-key haskell-mode-map (kbd "C-c C-b") 'haskell-interactive-switch) + (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) + (define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info) + (define-key haskell-mode-map (kbd "C-c M-.") nil) + (define-key haskell-mode-map (kbd "C-c C-d") nil))) + +;; ghc-mod install http://www.mew.org/~kazu/proj/ghc-mod/en/emacs.html +;; todo, try this out +;; (autoload 'ghc-init "ghc" nil t) +;;(add-hook 'haskell-mode-hook (lambda () (ghc-init) (flymake-mode))) + + + +;; from the package readme for ghci-completion +(add-hook 'inferior-haskell-mode-hook 'turn-on-ghci-completion) + + +;; disable some rebinds. they are set to appropriate keys in the keybinds section +(eval-after-load "haskell-mode" + '(progn + (define-key haskell-mode-map (kbd "C-a") 'nil) + (define-key haskell-mode-map (kbd "C-j") 'nil))) + + +(defun pretty-lambdas-haskell () + (font-lock-add-keywords + nil `((,(concat "(?\\(" (regexp-quote "\\") "\\)") + (0 (progn (compose-region (match-beginning 1) (match-end 1) + ,(make-char 'greek-iso8859-7 107)) + nil)))))) +;; from haskell-mode manual +(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) +(when (window-system) + (add-hook 'haskell-mode-hook 'pretty-lambdas-haskell)) + +;; added from haskell-mode website install instructions + ;(load "/usr/share/emacs/site-lisp/haskell-mode/haskell-site-file") +(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) +;;the three indentation modules are mutually exclusive - add at most one. Trying out the "most advanced" +(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) +;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indent) +;;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent) + + +;; todo, set this to some other key +;; (local-set-key (kbd "C-e") 'my-haskell-load-and-run) + +(defun my-haskell-load-and-run () + "Loads and runs the current Haskell file." + (interactive) + (let ((start-buffer (current-buffer))) + (inferior-haskell-load-and-run inferior-haskell-run-command) + (sleep-for 0 100) + (end-of-buffer) + (pop-to-buffer start-buffer))) + +;; show haskell function in mode line +;; todo, this broke after updating emacs +;;(eval-after-load "which-func" +;; '(add-to-list 'which-func-modes 'haskell-mode)) + + + +(add-hook 'interactive-haskell-mode-hook 'ac-haskell-process-setup) +(add-hook 'haskell-interactive-mode-hook 'ac-haskell-process-setup) +(eval-after-load "auto-complete" + '(add-to-list 'ac-modes 'haskell-interactive-mode)) + +(add-hook 'haskell-mode-hook + (lambda () (define-key haskell-mode-map (kbd "C-(") + (lambda () (interactive) + (basic-save-buffer) + (haskell-compile) + (run-with-timer .3 nil 'repeat-shell))))) +(add-hook 'haskell-cabal-mode-hook + (lambda () (define-key haskell-cabal-mode-map (kbd "C-(") 'haskell-compile))) + + + +(add-hook 'haskell-interactive-mode-hook + (lambda () + (define-key haskell-interactive-mode-map "\r" nil) + (define-key haskell-interactive-mode-map (kbd "RET") + 'haskell-interactive-mode-return))) +(add-hook 'haskell-indentation-mode-hook (lambda () (define-key haskell-indentation-mode-map "\r" nil))) + + + +(add-hook 'haskell-interactive-mode-hook + (lambda () + (define-key haskell-interactive-mode-map (kbd "") 'haskell-interactive-mode-newline-indent))) + + +;;; mediawiki + +(eval-after-load "mediawiki" + '(progn + (remove-hook 'outline-minor-mode-hook 'mediawiki-outline-magic-keys) + (add-hook 'mediawiki-mode-hook + (lambda () (define-key mediawiki-mode-map (kbd "C-(") 'mediawiki-save-reload))) + + ;; mediawiki mode has a bug that it will claim an edit conflict unless you reload after saving. + ;; I also like to save with no edit summary for previewing on my local mw instance + (defun mediawiki-save-reload () + (interactive) + (and (mediawiki-save "") (mediawiki-reload))))) + + +(setq org-caldav-url "https://cal.iankelling.org" + org-caldav-calendar-id "ian" + org-caldav-inbox "/p/cal.org") +;;(org-caldav-sync) + + +;;(require 'dtrt-indent) +;;(setq dtrt-indent-mode t) + + +;; gnu global +(add-hook 'c-mode-common-hook + (lambda () (ggtags-mode 1) + (setq c-label-minimum-indentation 0))) + +(defun my-ggtags-init() + ;; specific to my unusual keybind setup, you may want to + ;; pick different keys + (define-key ggtags-mode-map (kbd "C-M-o") 'ggtags-find-tag-dwim) + (define-key ggtags-mode-map (kbd "C-M-m") 'ggtags-grep)) +(eval-after-load "ggtags" '(my-ggtags-init)) + + +(defun gtags-update-single(filename) + "Update Gtags database for changes in a single file" + (interactive) + (start-process "update-gtags" "update-gtags" "bash" "-c" (concat "cd " ggtags-project-root " ; gtags --single-update " filename ))) + +(defun gtags-update-current-file() + (interactive) + (let ((rel-filename (replace-regexp-in-string + ggtags-project-root "." + (buffer-file-name (current-buffer))))) + (gtags-update-single rel-filename))) + +(defun gtags-update-hook() + "Update GTAGS file incrementally upon saving a file" + (when (and (boundp 'ggtags-mode) ggtags-mode ggtags-project-root) + (gtags-update-current-file))) + +(add-hook 'after-save-hook 'gtags-update-hook) + +;; i'd like to make some elisp which modifies a keymap to remove +;; all binds which don't match a predicate. +;; I tried setting a keymap to a new keymap, +;; but that didn't register as functional. +;; so I'd need to modify the list in place. + +;; colorize hex colors: use rainbow mode + + +(global-set-key (kbd "C-M-w") 'spray-mode) +;; remember, h/l = move. f/s = faster/slower, space = pause, all others quit + + +;; disabled because it takes 400ms on startup +;; ;; emacs regexes are too limited. +;; (require 'foreign-regexp) +;; ;; perl is most powerful, but javascript is pretty close and +;; ;; I'd rather know javascript stuff than perl +;; (custom-set-variables +;; '(foreign-regexp/regexp-type 'javascript) ;; Choose by your preference. +;; '(reb-re-syntax 'foreign-regexp)) ;; Tell re-builder to use foreign regexp. +;; ;; it would be nice to add documentation to do this for more commands to that package +;; ;; disabled because it's too slow. but I'd still m-x it for advanced replacements +;; ;;(define-key global-map [remap isearch-forward-regexp] 'foreign-regexp/isearch-forward) + + +;;;; keybinds for wow mouse + +(global-set-key (kbd "") 'move-mouse-to-point) +(global-set-key (kbd "") 'indent-region) +(global-set-key (kbd "") 'mark-defun) +(global-set-key (kbd "") 'ibuffer) +(global-set-key (kbd "") 'delete-horizontal-space)