X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=my-init.org;h=87d8515b8ab36247af83561cf51b8e6864051d84;hb=2d1b28652d2fd4eb5917665cf049e0bae4b3277f;hp=6d698da5440469124630f21b0a2d84f2b2c0db80;hpb=4d60a06fd8f3524e1b48f729be314bea09652713;p=dot-emacs diff --git a/my-init.org b/my-init.org index 6d698da..87d8515 100644 --- a/my-init.org +++ b/my-init.org @@ -19,7 +19,7 @@ * things that should be at the beginning #+begin_src emacs-lisp ;; todo, evaluating this manually disables debug on error instead of toggling it -;;(toggle-debug-on-error) ;uncomment to help debug and catch errors +;(toggle-debug-on-error) ;uncomment to help debug and catch errors #+end_src @@ -47,9 +47,9 @@ alternate keyboards m-enter (kbd "M-m") c-enter (kbd "C-8"))) +(setq tp (string= (system-name) "tp")) (setq x200 (string= (system-name) "x2")) -(setq search-key (if x200 "" "")) -(setq shell-key (if x200 "" "")) +(setq laptop-keyboard (or tp x200)) #+end_src - Ubiquitous Packages which should be loaded on startup rather than @@ -82,6 +82,7 @@ alternate keyboards (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) +(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t) ;; if this is a new machine/config, get package list ;; not sure why we need it, but it is recommended in starter kit, @@ -160,7 +161,12 @@ If it is different, emacs will give a message about recovering it when you open +* TODO learn some more ivy mode stuff +* TODO declarative package installations, +with documentation. * TODO shell mode reverse search hides 2nd+ line of multi-line result +* TODO report bug in latest emacs, +c-c ', does't exit org-mode src editing mode. * TODO button for switching to scratch buffer * TODO figure out browsing files with broken nfs mount causes emacs to freeze until I kill -9 it. @@ -170,6 +176,8 @@ and actually, putting the start of it in th emodeline might be cool * TODO c- in shell mode should send over previous line if current line is empty * TODO make c-m-s be just a control key for easier use +* TODO try out avy mode for laptop +i used to have ace jump mode, but google says avy is better. * TODO bind a in group mode of gnus to c-u a, also, make a default for number of articles * TODO make auto-complete be on by default in sql-mode @@ -197,7 +205,9 @@ bad code, the comment this relates to was removed, but not the comment The change in status_notify's return is just passing more information from what it did already. No changes at all inside this function. - +* TODO consider whether to bind indent-for-tab-command +I removed it from m-tab for terminal compatibility. +It's the default tab command, which yasnippet replaces. * TODO readline-complete: remove the hardcoded rlc-no-readline-hook * TODO isearch doesn't automatically wrap in info * TODO look into fixing shell mode reverse search @@ -373,7 +383,8 @@ if all else fails, edit the abbrev file #+begin_src emacs-lisp ;; auto-completion in minibuffer -(icomplete-mode) +;; disabled while I look for another alternative +;;(icomplete-mode) (require 'auto-complete-config) (ac-config-default) @@ -441,6 +452,8 @@ if all else fails, edit the abbrev file (setenv "EMACS" "") (setq explicit-bash-args nil) (setq comint-process-echoes t) +;; default of 30 is way too slow. todo, consider pushing this upstream +(setq rlc-attempts 5) (add-to-list 'ac-modes 'shell-mode) @@ -458,8 +471,57 @@ if all else fails, edit the abbrev file #+RESULTS: : comint-exec-1 -debugging +** readline complete fix + +I need this function here, where INSIDE_EMACS is replaced with RLC_INSIDE_EMACS. +#+begin_src emacs-lisp +;; ian: last update 2017-1-7. update this periodically from upstream +;; like when we do a major emacs update +(defun comint-exec-1 (name buffer command switches) + (let ((process-environment + (nconc + ;; If using termcap, we specify `emacs' as the terminal type + ;; because that lets us specify a width. + ;; If using terminfo, we specify `dumb' because that is + ;; a defined terminal type. `emacs' is not a defined terminal type + ;; and there is no way for us to define it here. + ;; Some programs that use terminfo get very confused + ;; if TERM is not a valid terminal type. + ;; ;; There is similar code in compile.el. + (if (and (boundp 'system-uses-terminfo) system-uses-terminfo) + (list "TERM=dumb" "TERMCAP=" + (format "COLUMNS=%d" (window-width))) + (list "TERM=emacs" + (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width)))) + (list (format "RLC_INSIDE_EMACS=%s,comint" emacs-version)) + process-environment)) + (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 + ;; first look relative to the current directory. + (cons default-directory exec-path) exec-path))) + (setq proc (apply 'start-file-process name buffer command switches))) + ;; Some file name handler cannot start a process, fe ange-ftp. + (unless (processp proc) (error "No process started")) + (let ((coding-systems (process-coding-system proc))) + (setq decoding (car coding-systems) + encoding (cdr coding-systems))) + ;; Even if start-file-process left the coding system for encoding data + ;; sent from the process undecided, we had better use the same one + ;; as what we use for decoding. But, we should suppress EOL + ;; conversion. + (if (and decoding (not encoding)) + (setq encoding (coding-system-change-eol-conversion decoding 'unix) + changed t)) + (if changed + (set-process-coding-system proc decoding encoding)) + proc)) +#+end_src * auto save & backup @@ -811,8 +873,61 @@ Things I tried which didn't work, which intuitively I think should work better: * disabled but saved for documentation purposes :PROPERTIES: - :tangle: no + :header-args: :tangle no :END: +** indent settings for git's perl code +don't have a way to set this automatically or a good place to put this +#+begin_src emacs-lisp +(setq + perl-indent-level 8 + perl-continued-statement-offset 8 + perl-continued-brace-offset -8 + perl-brace-offset 0 + perl-brace-imaginary-offset 0 + indent-tabs-mode t + ) +#+end_src +** org mode website + +#+begin_src emacs-lisp +;; use org-publish-current-project with a project file open +(setq org-publish-project-alist + '(("org" + :base-directory "/a/h/src" + :publishing-directory "/a/h/output" + :base-extension "org" + ;;:publishing-function org-org-publish-to-org + :publishing-function org-html-publish-to-html + :preserve-breaks t + :html-postamble "Everything here is \"Creative" + :html-head "" + :htmlized-source t) + ("othersrc" + :base-directory "/a/h/src" + :base-extension "css\\|el\\|" + :publishing-directory "/a/h/output" + :publishing-function org-publish-attachment) + ("other" + :base-directory "/a/h/other" + :base-extension ".*" + :publishing-directory "/a/h/output" + :publishing-function org-publish-attachment))) +;; default is xhtml-strict. don't really care, but this is more common +(setq org-html-doctype "html4-strict") + +;; this is needed for worg +;; todo: for my own site, I need to define the css in a separate file +;; in order to use this setting. see the variable help for info +(setq org-export-htmlize-output-type t) + + +#+end_src + ** bash-completion #+begin_src emacs-lisp ;; this eventually gets set in @@ -834,42 +949,13 @@ Things I tried which didn't work, which intuitively I think should work better: #+end_src -** ace-jump +** misc stuff It is an awesome mode for keyboard navigation. - However, using the mouse takes less thought and works as well, - especially with my foot mouse ;) + However, using the mouse takes less thought and works as well #+begin_src emacs-lisp - - - ;; this has a problem that it doesn't work with emacsclient, so I'm using a more standard method - ;; This has the benefit of working with less fuss otherwise, I think. - ;; no method works on a terminal - ;; makes C-i and tab be distinct. same deal is done for c-m - ;;(setq local-function-key-map (delete '(tab . [9]) local-function-key-map)) - ;; (define-key input-decode-map (kbd "C-i") [f15]) - ;; (define-key input-decode-map (kbd "") [?\C-i]) - ;; (define-key input-decode-map (kbd "") [?\C-i]) - ;; (global-set-key (kbd "") 'query-replace) - - - ; not using ace jump mode, but if mouse is ever not good, - ; here is config for it - (require 'ace-jump-mode) - (eval-after-load "ace-jump-mode" - '(ace-jump-mode-enable-mark-sync)) - (define-key global-map (kbd "") 'ace-jump-mode) - - - - ;; revert buffers automatically when underlying files are changed externally - ;; too dangerous, and thus disabled. - ;; do m-x auto-revert-mode to auto-rever a specific buffer - ;;(global-auto-revert-mode t) - - ;; whitespace-mode config. minimal for bad whitespace ;(setq whitespace-line-column 80) ; for style of lines-tail, but I have it disabled (setq whitespace-style '(face tabs empty trailing)) @@ -1079,60 +1165,6 @@ this looks nice, but it lags gnus just a bit #+end_src -** readline complete fix, replaced with proper solution - -i had commented out a few lines here, but instead I am setting in my profile -the environment variable I commented out here. Yes, that is not the best explanation, but I will probably delete this as -old history anyways. -#+begin_src emacs-lisp - -(defun comint-exec-1 (name buffer command switches) - (let ((process-environment - (nconc - ;; If using termcap, we specify `emacs' as the terminal type - ;; because that lets us specify a width. - ;; If using terminfo, we specify `dumb' because that is - ;; a defined terminal type. `emacs' is not a defined terminal type - ;; and there is no way for us to define it here. - ;; Some programs that use terminfo get very confused - ;; if TERM is not a valid terminal type. - ;; ;; There is similar code in compile.el. - (if (and (boundp 'system-uses-terminfo) system-uses-terminfo) - (list "TERM=dumb" "TERMCAP=" - (format "COLUMNS=%d" (window-width))) - (list "TERM=emacs" - (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width)))) - ;; ian: commented this out - ;;(unless (getenv "EMACS") - ;; (list "EMACS=t")) - (list (format "INSIDE_EMACS=%s,comint" emacs-version)) - process-environment)) - (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 - ;; first look relative to the current directory. - (cons default-directory exec-path) exec-path))) - (setq proc (apply 'start-file-process name buffer command switches))) - ;; Some file name handler cannot start a process, fe ange-ftp. - (unless (processp proc) (error "No process started")) - (let ((coding-systems (process-coding-system proc))) - (setq decoding (car coding-systems) - encoding (cdr coding-systems))) - ;; Even if start-file-process left the coding system for encoding data - ;; sent from the process undecided, we had better use the same one - ;; as what we use for decoding. But, we should suppress EOL - ;; conversion. - (if (and decoding (not encoding)) - (setq encoding (coding-system-change-eol-conversion decoding 'unix) - changed t)) - (if changed - (set-process-coding-system proc decoding encoding)) - proc)) -#+end_src ** misc #+begin_src emacs-lisp @@ -1151,10 +1183,6 @@ old history anyways. ;(global-set-key (kbd "") 'complete-symbol) - ; todo, see how mastering emacs defines this function - ;(global-set-key (kbd "M-j") 'ido-goto-symbol) - - ; todo, make my custom overlays have an underline if they are ; overriding a paren matching overlay ; make right click set the mark @@ -1294,6 +1322,21 @@ disabled, as I haven't used it in a long time. I think it was good for learning #+end_src +** icomplete +#+begin_src emacs-lisp +;; without this, on partial completion return would exit the minibuffer, and i had to +;; keep typing out letters do a full completion before pressing enter. +;; super annoying. So I picked ctrl-j as a free key to put exit, +;; but in practice, I would just use ctrl-g to quit. Anyways, +;; ivy is doing all the minibuffer stuff, so removed this as it's +;; unused, so it can't cause any problems in future +(when (boundp 'icomplete-minibuffer-map) + (define-key icomplete-minibuffer-map (kbd "C-j") 'exit-minibuffer) + (define-key icomplete-minibuffer-map (kbd "") + 'minibuffer-force-complete-and-exit)) + + +#+end_src * elisp settings #+begin_src emacs-lisp ; when manually evaluating lisp, go into debugger on error @@ -1637,117 +1680,6 @@ make all #+RESULTS: | (lambda nil (define-key haskell-interactive-mode-map (kbd ) (quote haskell-interactive-mode-newline-indent))) | (lambda nil (define-key haskell-interactive-mode-map \n nil) (define-key haskell-interactive-mode-map (kbd ) (quote haskell-interactive-mode-return))) | ac-haskell-process-setup | -* ido -#+begin_src emacs-lisp - -;; easier to read, and more than the default 12 -(setq ido-separator nil) -(setq ido-max-prospects 20) - -(ido-mode t) -(ido-everywhere t) ;; file dialogs - -;; do out of order matching when all else fails -(setq ido-enable-flex-matching t - ido-create-new-buffer 'always ;; create new buffer/file without asking - ido-use-filename-at-point 'guess ;; use filename at point if it makes sense - ido-save-directory-list-file "~/.emacs.d/.ido.last" - ido-default-file-method 'selected-window) ;; make duplicate windows -;; todo, the next 2 functions seem to do roughly the same. -;; figure out which one is better. the first comes from emacs starter kit, -;; i forget about the second. -(defun ido-imenu () - "Update the imenu index and then use ido to select a symbol to navigate to. - Symbols matching the text at point are put first in the completion list." - (interactive) - (imenu--make-index-alist) - (let ((name-and-pos '()) - (symbol-names '())) - (cl-flet ((addsymbols (symbol-list) - (when (listp symbol-list) - (dolist (symbol symbol-list) - (let ((name nil) (position nil)) - (cond - ((and (listp symbol) (imenu--subalist-p symbol)) - (addsymbols symbol)) - - ((listp symbol) - (setq name (car symbol)) - (setq position (cdr symbol))) - - ((stringp symbol) - (setq name symbol) - (setq position (get-text-property 1 'org-imenu-marker symbol)))) - - (unless (or (null position) (null name)) - (add-to-list 'symbol-names name) - (add-to-list 'name-and-pos (cons name position)))))))) - (addsymbols imenu--index-alist)) - ;; If there are matching symbols at point, put them at the beginning of `symbol-names'. - (let ((symbol-at-point (thing-at-point 'symbol))) - (when symbol-at-point - (let* ((regexp (concat (regexp-quote symbol-at-point) "$")) - (matching-symbols (delq nil (mapcar (lambda (symbol) - (if (string-match regexp symbol) symbol)) - symbol-names)))) - (when matching-symbols - (sort matching-symbols (lambda (a b) (> (length a) (length b)))) - (mapc (lambda (symbol) (setq symbol-names (cons symbol (delete symbol symbol-names)))) - matching-symbols))))) - (let* ((selected-symbol (ido-completing-read "Symbol? " symbol-names)) - (position (cdr (assoc selected-symbol name-and-pos)))) - (goto-char position)))) - -(defun ido-goto-symbol (&optional symbol-list) - "Refresh imenu and jump to a place in the buffer using Ido." - (interactive) - (unless (featurep 'imenu) - (require 'imenu nil t)) - (cond - ((not symbol-list) - (let ((ido-mode ido-mode) - (ido-enable-flex-matching - (if (boundp 'ido-enable-flex-matching) - ido-enable-flex-matching t)) - name-and-pos symbol-names position) - (unless ido-mode - (ido-mode 1) - (setq ido-enable-flex-matching t)) - (while (progn - (imenu--cleanup) - (setq imenu--index-alist nil) - (ido-goto-symbol (imenu--make-index-alist)) - (setq selected-symbol - (ido-completing-read "Symbol? " symbol-names)) - (string= (car imenu--rescan-item) selected-symbol))) - (unless (and (boundp 'mark-active) mark-active) - (push-mark nil t nil)) - (setq position (cdr (assoc selected-symbol name-and-pos))) - (cond - ((overlayp position) - (goto-char (overlay-start position))) - (t - (goto-char position))))) - ((listp symbol-list) - (dolist (symbol symbol-list) - (let (name position) - (cond - ((and (listp symbol) (imenu--subalist-p symbol)) - (ido-goto-symbol symbol)) - ((listp symbol) - (setq name (car symbol)) - (setq position (cdr symbol))) - ((stringp symbol) - (setq name symbol) - (setq position - (get-text-property 1 'org-imenu-marker symbol)))) - (unless (or (null position) (null name) - (string= (car imenu--rescan-item) name)) - (add-to-list 'symbol-names (substring-no-properties name)) - (add-to-list 'name-and-pos (cons (substring-no-properties name) position)))))))) - -#+end_src - * isearch #+begin_src emacs-lisp (setq @@ -1959,10 +1891,32 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead * modes with little configuration needed #+begin_src emacs-lisp +;;(require 'dtrt-indent) +;;(setq dtrt-indent-mode t) + +(setq css-indent-offset 2) + +(load-file "/a/h/iank-mod.el") + (require 'ws-butler) (ws-butler-global-mode) +(defun ws-butler-clean-region (beg end) + "Delete trailing blanks in region BEG END." + (interactive "*r") + (ws-butler-with-save + (narrow-to-region beg end) + ;; _much slower would be: (replace-regexp "[ \t]+$" "") + (goto-char (point-min)) + (while (not (eobp)) + (end-of-line) + (delete-horizontal-space) + (forward-line 1))) + ;; clean return code for hooks + nil) + + (require 'nginx-mode) ;;The mode should automatically activate for files called nginx.conf and files under /etc/nginx - if not, you can add something like this to your init file: ;;(add-to-list 'auto-mode-alist '("/etc/nginx/sites-available/.*" . nginx-mode)) @@ -2022,35 +1976,7 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead (require 'magit) -;; http://ergoemacs.org/emacs/emacs_CSS_colors.html -;; there's also rainbow mode, which seems to only work for specific colors? it didn't work at all for me in a css file. -;; todo, do config group on it, and try out one of those colors. -(defun xah-syntax-color-hsl () - "Syntax color hex color spec such as 「hsl(0,90%,41%)」 in current buffer." - (interactive) - (font-lock-add-keywords - nil - '(("hsl( *\\([0-9]\\{1,3\\}\\) *, *\\([0-9]\\{1,3\\}\\)% *, *\\([0-9]\\{1,3\\}\\)% *)" - (0 (put-text-property - (+ (match-beginning 0) 3) - (match-end 0) - 'face (list :background - (concat "#" (mapconcat 'identity - (mapcar - (lambda (x) (format "%02x" (round (* x 255)))) - (color-hsl-to-rgb - (/ (string-to-number (match-string-no-properties 1)) 360.0) - (/ (string-to-number (match-string-no-properties 2)) 100.0) - (/ (string-to-number (match-string-no-properties 3)) 100.0) - ) ) - "" )) ; "#00aa00" - ))))) ) - (font-lock-fontify-buffer) - ) - -(add-hook 'css-mode-hook 'xah-syntax-color-hsl) -(add-hook 'php-mode-hook 'xah-syntax-color-hsl) -(add-hook 'html-mode-hook 'xah-syntax-color-hsl) +;; colorize hex colors: use rainbow mode ;; message mode prompted me on first message. @@ -2197,9 +2123,6 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead ;; disable this nasty function, as I always use a gui (defun suspend-frame() (interactive)) -;; to reopen just ido-switch-buffer (c-l), *scratch* -;; (kill-buffer "*scratch*") - ;; Seed the random-number generator (random t) @@ -2243,8 +2166,11 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead mark-ring-max 160 sort-fold-case t ; case insensitive line sorting global-mark-ring-max 1000 - ;; the bell seems to lag the ui + ;; the visible bell seems to lag the ui ;;visible-bell t + ;; turn off audible bell + ;; https://www.emacswiki.org/emacs/AlarmBell + ring-bell-function 'ignore case-replace nil revert-without-query '(".*") ;; don't pause display code on input. @@ -2332,6 +2258,9 @@ unchecked some stuff so that it inherits from default. #+begin_src emacs-lisp + + + (defun next-backup-dir () "In a directory listing from rsync -n, Go to the next directory based on where the cursor is." @@ -3091,52 +3020,21 @@ clicking on info links (org-clock-in))) -;; use org-publish-current-project with a project file open -(setq org-publish-project-alist - '(("org" - :base-directory "/a/h/src" - :publishing-directory "/a/h/output" - :base-extension "org" - ;;:publishing-function org-org-publish-to-org - :publishing-function org-html-publish-to-html - :preserve-breaks t - :html-postamble "Everything here is \"Creative" - :html-head "" - :htmlized-source t) - ("othersrc" - :base-directory "/a/h/src" - :base-extension "css\\|el\\|" - :publishing-directory "/a/h/output" - :publishing-function org-publish-attachment) - ("other" - :base-directory "/a/h/other" - :base-extension ".*" - :publishing-directory "/a/h/output" - :publishing-function org-publish-attachment))) -;; default is xhtml-strict. don't really care, but this is more common -(setq org-html-doctype "html4-strict") - -;; this is needed for worg -;; todo: for my own site, I need to define the css in a separate file -;; in order to use this setting. see the variable help for info -(setq org-export-htmlize-output-type t) - ;; based on http://stackoverflow.com/questions/3758139/variable-pitch-for-org-mode-fixed-pitch-for-tables ;; keywords: proportional font, monospace -(add-hook 'fundamental-mode-hook 'variable-pitch-mode) -(add-hook 'text-mode-hook 'variable-pitch-mode) + +(defun variable-pitch-on () + (variable-pitch-mode 1)) +(add-hook 'fundamental-mode-hook 'variable-pitch-on) +(add-hook 'org-mode-hook 'variable-pitch-on) +(add-hook 'text-mode-hook 'variable-pitch-on) + (set-face-attribute 'org-table nil :family (face-attribute 'fixed-pitch :family)) (set-face-attribute 'org-code nil :family (face-attribute 'fixed-pitch :family)) (set-face-attribute 'org-formula nil :family (face-attribute 'fixed-pitch :family)) (set-face-attribute 'org-link nil :family (face-attribute 'fixed-pitch :family)) (set-face-attribute 'org-block nil :family (face-attribute 'fixed-pitch :family)) -(set-face-attribute 'org-block-background nil :family (face-attribute 'fixed-pitch :family)) (set-face-attribute 'org-date nil :family (face-attribute 'fixed-pitch :family)) @@ -3221,8 +3119,8 @@ disabled cuz I have none yet (setq ac-sources (delq 'ac-source-dictionary ac-sources)) (highlight-symbol-mode) (make-local-variable 'column-number-mode) + ;; this says do autofilling using newcomment.el. The "only" is a misnomer. (set (make-local-variable 'comment-auto-fill-only-comments) t) - (auto-fill-mode t) (column-number-mode t) (turn-on-smartparens-mode) @@ -3370,9 +3268,6 @@ downgraded to marmalade version and everything is working fine. ;; Except in HTML (sp-local-pair 'html-mode "\"" nil :unless '(:rem sp-point-after-word-p)) -;; CoffeeScript PyStrings -(push 'coffee-mode sp-autoescape-string-quote-if-empty) - #+end_src @@ -4315,10 +4210,10 @@ isearch-occur (isearch-toggle-regexp) (cond (isearch-regexp (global-set-key (kbd "C-r") 'isearch-backward-regexp) - (define-key global-map (kbd search-key) 'isearch-forward-regexp)) + (define-key global-map (kbd "") 'isearch-forward-regexp)) (t (global-set-key (kbd "C-r") 'isearch-backward) - (define-key global-map (kbd search-key) 'isearch-forward)))) + (define-key global-map (kbd "") 'isearch-forward)))) (define-key isearch-mode-map (kbd "M-r") 'my-isearch-toggle-regexp) #+end_src @@ -4639,9 +4534,9 @@ isearch isearch-forward #+begin_src emacs-lisp ;; explained in http://stackoverflow.com/questions/7411920/how-to-bind-search-and-search-repeat-to-c-f-in-emacs -(global-set-key (kbd search-key) 'isearch-forward) +(global-set-key (kbd "") 'isearch-forward) (define-key isearch-mode-map "\t" nil) -(define-key isearch-mode-map (kbd search-key) 'isearch-repeat-forward) +(define-key isearch-mode-map (kbd "") 'isearch-repeat-forward) ;; get rid of the standard completion binding, always use auto-complete ;; this didn't work very well ;;(global-set-key (kbd "TAB") 'auto-complete) @@ -4904,9 +4799,12 @@ modes like org-mode which have their own yank function." :END: shell #+begin_src emacs-lisp -(global-set-key (kbd shell-key) 'shell-wrap) +(global-set-key (kbd "") 'shell-wrap) #+end_src *** s-right arrow +:LOGBOOK: +CLOCK: [2016-11-28 Mon 11:03]--[2016-11-28 Mon 11:03] => 0:00 +:END: :PROPERTIES: :CUSTOM_ID: 2365f5a7-b89a-4a97-b272-ac8ae9c2cc66 :END: @@ -4926,53 +4824,30 @@ new line #+begin_src emacs-lisp ;; todo, this doesn't set the keybind for the help minibuffer -(when (boundp 'icomplete-minibuffer-map) - (define-key icomplete-minibuffer-map (kbd "") - 'minibuffer-force-complete-and-exit)) - -(add-hook 'ido-setup-hook - (lambda() - (define-key ido-completion-map (kbd "") 'ido-exit-minibuffer))) -(define-key minibuffer-local-completion-map (kbd "") 'exit-minibuffer) -(define-key isearch-mode-map (kbd "") 'isearch-exit) -(define-key isearch-mode-map "\r" nil) +;;(global-set-key (kbd "") 'indent-new-comment-line) - -(global-set-key (kbd "") 'indent-new-comment-line) +;; don't use enter for autocomplete, we use tab or something (define-key ac-completing-map (kbd "") nil) (define-key ac-completing-map "\r" nil) -(define-key minibuffer-local-map "\r" nil) -(define-key minibuffer-local-map (kbd "") 'exit-minibuffer) -(define-key icomplete-minibuffer-map (kbd "C-j") 'exit-minibuffer) -(define-key minibuffer-local-map (kbd "C-j") 'exit-minibuffer) -(define-key minibuffer-local-must-match-map (kbd "C-j") 'exit-minibuffer) -(define-key minibuffer-local-must-match-map "\r" nil) -(define-key minibuffer-local-must-match-map (kbd "") - 'minibuffer-complete-and-exit) - -(add-hook 'Man-mode-hook + +(add-hook 'org-mode-hook (lambda () - (define-key Man-mode-map "\r" nil) - (define-key Man-mode-map "x" 'man-follow))) + ;; copied from org-mode, replace org-enter with org-enter-indent +(org-defkey org-mode-map "\C-m" 'org-return-indent))) + (add-hook 'comint-mode-hook (lambda () (define-key comint-mode-map "\r" nil) (define-key comint-mode-map (kbd "") 'comint-send-input))) -(add-hook 'org-mode-hook - (lambda () - (define-key org-mode-map "\r" nil) - (define-key org-mode-map (kbd "") 'org-return-indent))) - (add-hook 'comint-mode-hook (lambda () (define-key comint-mode-map "\C-m" nil) (define-key comint-mode-map "\C-d" nil))) -;; use space instead of enter in calc mode, -;; cuz it is not easy to rebind enter in calc mode + #+end_src *** [s-return] :drill: @@ -6147,6 +6022,7 @@ macro end / call [ #+begin_src emacs-lisp (global-set-key (kbd "C-M-a") 'kmacro-end-or-call-macro) + (add-hook 'perl-mode-hook (lambda () (define-key perl-mode-map (kbd "C-M-a") nil))) (add-hook 'LaTeX-mode-hook (lambda () (define-key LaTeX-mode-map (kbd "C-M-a") nil))) (add-hook 'c-mode-hook (lambda () (define-key c-mode-map (kbd "C-M-a") nil))) @@ -6668,16 +6544,9 @@ SCHEDULED: <2014-03-27 Thu> :DRILL_LAST_QUALITY: 5 :DRILL_LAST_REVIEWED: <2014-02-04 Tue 11:42> :END: -yas-expand - [ - #+begin_src emacs-lisp -;; yas keymaps are already initialized when this runs, -;; but I use a hook because it the way I do it for all other minor modes - (add-hook 'yas-minor-mode-hook (lambda () - (define-key yas-minor-mode-map (kbd "") 'yas-expand) - (define-key yas-keymap (kbd "") 'yas-next-field-or-maybe-expand))) - (global-set-key (kbd "") 'yas-insert-snippet) -#+end_src +--- +[ +in terminal, it's just TAB, duplicate keybind. ] *** [M-tab] :drill: SCHEDULED: <2014-03-14 Fri> @@ -6694,14 +6563,9 @@ SCHEDULED: <2014-03-14 Fri> :DRILL_LAST_QUALITY: 4 :DRILL_LAST_REVIEWED: <2014-02-19 Wed 16:35> :END: -indent line +--- [ -#+begin_src emacs-lisp - - (global-set-key (kbd "") 'indent-for-tab-command) - - ; todo, overrides calculator mode map -#+end_src +in terminal it's duplicated of C-M-i ] *** C-M-tab :PROPERTIES: @@ -7211,7 +7075,7 @@ occur *** [C-M-o] :drill: SCHEDULED: <2014-03-12 Wed> :PROPERTIES: - ido-goto-symbol + counsel-imenu :CUSTOM_ID: 05d1ef50-43ee-46d7-b1ad-dd952543ab45 :ID: 6dfcaa31-d223-4a14-904e-2f2395b2cf75 :DRILL_LAST_INTERVAL: 10.3122 @@ -7223,10 +7087,10 @@ SCHEDULED: <2014-03-12 Wed> :DRILL_LAST_QUALITY: 4 :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:09> :END: -ido-goto-symbol +counsel-imenu [ #+begin_src emacs-lisp - (global-set-key (kbd "C-M-o") 'ido-goto-symbol) + (global-set-key (kbd "C-M-o") 'counsel-imenu) #+end_src ] *** C-S-o @@ -7420,7 +7284,7 @@ man *** [C-l] :drill: SCHEDULED: <2014-05-13 Tue> :PROPERTIES: - ido-switch-buffer + ivy-switch-buffer :ID: 3c7fabd9-572d-4945-ab4b-d7a8dc2cd9c5 :CUSTOM_ID: 8a7572bd-4b5e-4464-b937-3d35adb1783f :DRILL_LAST_INTERVAL: 71.5839 @@ -7432,10 +7296,10 @@ SCHEDULED: <2014-05-13 Tue> :DRILL_LAST_QUALITY: 5 :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10> :END: -ido-switch-buffer +ivy-switch-buffer [ #+begin_src emacs-lisp - (global-set-key (kbd "C-l") 'ido-switch-buffer) + (global-set-key (kbd "C-l") 'ivy-switch-buffer) #+end_src ] *** M-l @@ -7483,18 +7347,12 @@ SCHEDULED: <2014-03-19 Wed> :DRILL_LAST_QUALITY: 4 :DRILL_LAST_REVIEWED: <2014-02-19 Wed 17:45> :END: -comment-dwim - [ -#+begin_src emacs-lisp - (global-set-key (kbd "C-;") 'comment-dwim) - (add-hook 'flyspell-mode-hook - (lambda () (define-key flyspell-mode-map (kbd "C-;") nil))) -#+end_src -] +used in flyspell, not sure what for, otherwise unbound *** M-; :PROPERTIES: :CUSTOM_ID: 211e76d9-d89a-4cc6-abce-69397d456fda :END: +comment-dwim *** [C-M-;] :drill: SCHEDULED: <2014-04-07 Mon> :PROPERTIES: @@ -7564,7 +7422,7 @@ recursive grep *** [C-,] :drill: SCHEDULED: <2014-05-13 Tue> :PROPERTIES: - ido-find-file + counsel-find-file :CUSTOM_ID: 6cbf3a85-f260-453a-920b-850ff5e986b1 :ID: df0f3769-bcfc-4cb9-8943-bb86dafb2711 :DRILL_LAST_INTERVAL: 71.5839 @@ -7576,10 +7434,10 @@ SCHEDULED: <2014-05-13 Tue> :DRILL_LAST_QUALITY: 5 :DRILL_LAST_REVIEWED: <2014-03-02 Sun 21:10> :END: -ido-find-file +counsel-find-file [ #+begin_src emacs-lisp - (global-set-key (kbd "C-,") 'ido-find-file) + (global-set-key (kbd "C-,") 'counsel-find-file) (add-hook 'flyspell-mode-hook (lambda () (define-key flyspell-mode-map (kbd "C-,") nil))) #+end_src @@ -8041,6 +7899,9 @@ org-edit-special (add-hook 'org-mode-hook (lambda () (define-key org-mode-map (kbd "C-SPC") 'org-edit-special) + ;; org-src-mode-map is broken in git version of emacs. + ;; temporarily use this for exiting edit-special mode. + (global-set-key (kbd "C-M--") 'org-edit-src-exit) (define-key org-src-mode-map (kbd "C-SPC") 'org-edit-src-exit))) #+end_src ] @@ -8399,6 +8260,31 @@ text-scale-reset :PROPERTIES: :CUSTOM_ID: 0e7f83a5-600e-4016-af98-95904300c016 :END: +insert-apache +[ +#+begin_src emacs-lisp +(defun insert-apache () + (interactive) + (beginning-of-line) + (let ((beg (point))) + (insert "Copyright (C) 2016 Ian Kelling\n") + (insert "\n") + (insert "Licensed under the Apache License, Version 2.0 (the \"License\");\n") + (insert "you may not use this file except in compliance with the License.\n") + (insert "You may obtain a copy of the License at\n") + (insert "\n") + (insert " http://www.apache.org/licenses/LICENSE-2.0\n") + (insert "\n") + (insert "Unless required by applicable law or agreed to in writing, software\n") + (insert "distributed under the License is distributed on an \"AS IS\" BASIS,\n") + (insert "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n") + (insert "See the License for the specific language governing permissions and\n") + (insert "limitations under the License.\n") + (comment-region beg (point)))) +(global-set-key (kbd "C-M-0") 'insert-apache) +#+end_src +] + *** C-S-0 :PROPERTIES: :CUSTOM_ID: d1706bc7-7cf0-4b49-87d0-15bf76eaca5f @@ -8415,6 +8301,7 @@ text-scale-reset :PROPERTIES: :CUSTOM_ID: 6febc7ea-9cc7-488c-af34-538b8e69633b :END: +org-edit-src-exit *** C-S-- :PROPERTIES: :CUSTOM_ID: c73af1d7-61f2-4c1b-935e-43f077d8d915 @@ -8748,6 +8635,9 @@ to its output. subexpression for close bracket char or nothing: \\(\\]\\|\\) * keybind tables +:LOGBOOK: +CLOCK: [2016-11-28 Mon 10:59]--[2016-11-28 Mon 10:59] => 0:00 +:END: dunno why but it takes doing ctrl-c twice to update this #+BEGIN: keybind-dblock |---------------------+------------------------| @@ -8831,10 +8721,10 @@ dunno why but it takes doing ctrl-c twice to update this | p | [[#9c2e2ba9-f34e-48fe-b4ff-b9826882c1cc][move-mouse-to-point]] | | [[#d55616d3-a3f6-4e83-8807-748578a7b726][delete-horizontal-space]] | | | j | [[#ebcf7c71-3c93-431b-af6b-7c5df7f2945e][register prefix]] | [[#474a3e12-95ac-4f43-b83a-36716f3e6f76][previous-error]] | | | | k | [[#25a7ba1c-ddf3-47f1-9516-914a552e7a36][jump to register]] | [[#a96691bb-9e4c-414b-a093-d9961d453e21][next-error]] | [[#f61ea4ea-4597-422e-b7e3-d3cfad82603d][man]] | | -| l | [[#8a7572bd-4b5e-4464-b937-3d35adb1783f][ido-switch-buffer]] | | [[#24b660d4-3ec4-4416-8a6a-b8224ed1ee8b][move cursor top bottom mid]] | | +| l | [[#8a7572bd-4b5e-4464-b937-3d35adb1783f][ivy-switch-buffer]] | | [[#24b660d4-3ec4-4416-8a6a-b8224ed1ee8b][move cursor top bottom mid]] | | | ; | [[#7e3710eb-5460-4460-8bf0-488302e4ce35][comment-dwim]] | | [[#28680a96-5223-4632-80b9-b1facdd541e7][comment-current-line-dwim]] | | | m | [[#deee53ba-dfa2-4910-894c-55ae98d11aa4][pop-to-mark]] | | [[#f283f705-cba0-45db-b80f-5d20415b2eee][recursive grep]] | | -| , | [[#6cbf3a85-f260-453a-920b-850ff5e986b1][ido-find-file]] | | [[#bfdf6111-029d-462b-bcca-50a3ed2162d5][find-file-in-project]] | | +| , | [[#6cbf3a85-f260-453a-920b-850ff5e986b1][counsel-find-file]] | | [[#bfdf6111-029d-462b-bcca-50a3ed2162d5][find-file-in-project]] | | | . | [[#0675c171-8677-44a8-882c-e7ed42715e31][recentf-ido-find-file]] | | [[#824d422c-67b6-4d68-af11-6a2135e528f5][-]] | | | / | [[#941a7fa8-84b9-434d-89a0-1487385ec479][join lines]] | | [[#37f67593-4f60-4d3b-9aad-6c9bc4882443][copy-variable]] | | | 8 | [[#251c4a1a-a683-4804-a706-d0d3752e42fa][calc-embedded-word]] | | | | @@ -8882,7 +8772,9 @@ much, so the added hassle of having to set it within this file is worth the benefit of only having one concept in my mind. #+begin_src emacs-lisp (dolist - (r `((?i (file . ,"~/.emacs.d/my-init.org")) + (r `( + (?i (file . ,"~/.emacs.d/my-init.org")) + (?t (file . ,"/a/x.txt")) )) (set-register (car r) (cadr r))) #+end_src @@ -8927,7 +8819,7 @@ command to make more accessible, ... * TESTING / DEVELOPMENT AREA :PROPERTIES: - :tangle: no +:header-args: :tangle no :END: ** new #+begin_src emacs-lisp