* 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
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 "<menu>" "<kp-add>"))
-(setq shell-key (if x200 "<S-menu>" "<S-kp-equal>"))
+(setq laptop-keyboard (or tp x200))
#+end_src
- Ubiquitous Packages which should be loaded on startup rather than
(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,
+* 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.
* TODO c-<delete> 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
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
#+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)
(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)
#+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
* 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 <a rel=\"license\"
+ href=\"http://creativecommons.org/licenses/by-sa/4.0/\"><img
+ alt=\"Creative Commons License\" style=\"border-width:0\"
+ src=\"http://i.creativecommons.org/l/by-sa/4.0/80x15.png\" /></a>"
+ :html-head "<link rel=\"stylesheet\"
+ href=\"style.css\"
+ type=\"text/css\"/>"
+ :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
#+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 "<f15>") [?\C-i])
- ;; (define-key input-decode-map (kbd "<tab>") [?\C-i])
- ;; (global-set-key (kbd "<f15>") '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))
#+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
;(global-set-key (kbd "<tab>") '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
#+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 "<return>")
+ 'minibuffer-force-complete-and-exit))
+
+
+#+end_src
* elisp settings
#+begin_src emacs-lisp
; when manually evaluating lisp, go into debugger on error
#+RESULTS:
| (lambda nil (define-key haskell-interactive-mode-map (kbd <C-M-return>) (quote haskell-interactive-mode-newline-indent))) | (lambda nil (define-key haskell-interactive-mode-map \n nil) (define-key haskell-interactive-mode-map (kbd <return>) (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
* 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))
(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.
;; 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)
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.
#+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."
(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 <a rel=\"license\"
- href=\"http://creativecommons.org/licenses/by-sa/4.0/\"><img
- alt=\"Creative Commons License\" style=\"border-width:0\"
- src=\"http://i.creativecommons.org/l/by-sa/4.0/80x15.png\" /></a>"
- :html-head "<link rel=\"stylesheet\"
- href=\"style.css\"
- type=\"text/css\"/>"
- :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))
(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)
;; 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
(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 "<kp-add>") '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 "<kp-add>") 'isearch-forward))))
(define-key isearch-mode-map (kbd "M-r") 'my-isearch-toggle-regexp)
#+end_src
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 "<kp-add>") '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 "<kp-add>") '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)
:END:
shell
#+begin_src emacs-lisp
-(global-set-key (kbd shell-key) 'shell-wrap)
+(global-set-key (kbd "<S-kp-equal>") '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:
#+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 "<return>")
- 'minibuffer-force-complete-and-exit))
-
-(add-hook 'ido-setup-hook
- (lambda()
- (define-key ido-completion-map (kbd "<return>") 'ido-exit-minibuffer)))
-(define-key minibuffer-local-completion-map (kbd "<return>") 'exit-minibuffer)
-(define-key isearch-mode-map (kbd "<return>") 'isearch-exit)
-(define-key isearch-mode-map "\r" nil)
+;;(global-set-key (kbd "<return>") 'indent-new-comment-line)
-
-(global-set-key (kbd "<return>") 'indent-new-comment-line)
+;; don't use enter for autocomplete, we use tab or something
(define-key ac-completing-map (kbd "<return>") nil)
(define-key ac-completing-map "\r" nil)
-(define-key minibuffer-local-map "\r" nil)
-(define-key minibuffer-local-map (kbd "<return>") '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 "<return>")
- '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 "<return>") 'comint-send-input)))
-(add-hook 'org-mode-hook
- (lambda ()
- (define-key org-mode-map "\r" nil)
- (define-key org-mode-map (kbd "<return>") '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:
[
#+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)))
: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 "<C-tab>") 'yas-expand)
- (define-key yas-keymap (kbd "<C-tab>") 'yas-next-field-or-maybe-expand)))
- (global-set-key (kbd "<C-tab>") 'yas-insert-snippet)
-#+end_src
+---
+[
+in terminal, it's just TAB, duplicate keybind.
]
*** [M-tab] :drill:
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 "<M-tab>") 'indent-for-tab-command)
-
- ; todo, <M-tab> overrides calculator mode map
-#+end_src
+in terminal it's duplicated of C-M-i
]
*** C-M-tab
:PROPERTIES:
*** [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
: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
*** [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
: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
: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:
*** [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
: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
(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
]
: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
:PROPERTIES:
:CUSTOM_ID: 6febc7ea-9cc7-488c-af34-538b8e69633b
:END:
+org-edit-src-exit
*** C-S--
:PROPERTIES:
:CUSTOM_ID: c73af1d7-61f2-4c1b-935e-43f077d8d915
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
|---------------------+------------------------|
| 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]] | | | |
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
* TESTING / DEVELOPMENT AREA
:PROPERTIES:
- :tangle: no
+:header-args: :tangle no
:END:
** new
#+begin_src emacs-lisp