We need at least one of these, even a blank one to avoid error on startup.
#+begin_src emacs-lisp
+(ivy-mode 1)
+(add-hook 'text-mode-hook (lambda () (auto-fill-mode t)))
+#+end_src
+
+
+* 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
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
+* TODO update comint-exec-1
+* TODO learn some more ivy mode stuff
+* TODO disable return overriding ctrl-m
+* 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.
#+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)
:PROPERTIES:
: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
** readline complete fix, replaced with proper solution
+update: I need this function here, where INSIDE_EMACS is replaced with RLC_INSIDE_EMACS.
+
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.
;; ian: commented this out
;;(unless (getenv "EMACS")
;; (list "EMACS=t"))
- (list (format "INSIDE_EMACS=%s,comint" emacs-version))
+ (list (format "RLC_INSIDE_EMACS=%s,comint" emacs-version))
process-environment))
(default-directory
(if (file-accessible-directory-p default-directory)
#+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
(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)
(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
:PROPERTIES:
#+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 "C-j") 'exit-minibuffer)
(define-key icomplete-minibuffer-map (kbd "<return>")
'minibuffer-force-complete-and-exit))
(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)
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