Mercurial > dotfiles
view .elisp/settings/50.localfuncs.el @ 307:e37b00236907
zshrc: work around my shell function that turns on utf8 in screen
The zsh built in which was getting confused by the function, and
always claimed screen was installed. I'm finally running into machines
with tmux but not screen, so I noticed.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sat, 19 Jan 2013 19:29:58 -0600 |
parents | 026344f083ef |
children |
line wrap: on
line source
;; advice to prevent ido from using flex matches on huge lists of files ;; with enough characters typed and blocking for an absurd amount of time ;; after a stupid typo ;; The value af-ido-flex-fuzzy-limit is the maximum value of the product ;; of the number of characters the user has entered and the number of ;; options in the ido list. ;; The default value was determined experimentally and seemed to be ;; the boundary of sane wait times when this was written. (defvar af-ido-flex-fuzzy-limit (* 2000 5)) (defadvice ido-set-matches-1 (around my-ido-set-matches-1 activate) "Conditionally disable flex matching if the list is huge. This is useful because when the ido list is huge, ido flex matching spends an eternity in a regex if you make a typo." (let ((ido-enable-flex-matching (< (* (length (ad-get-arg 0)) (length ido-text)) af-ido-flex-fuzzy-limit))) ad-do-it)) ;; Generic repository differ. Requires textmate.el and mercurial.el. ;; Will use monky or magit if either one is present. (defun af-generic-diff-repo () (interactive) (let ((root (textmate-project-root))) (cond ((and (string= (textmate-project-root-type root) "hg") (fboundp 'monky-status)) (monky-status)) ((and (string= (textmate-project-root-type root) "git") (fboundp 'magit-status)) (magit-status root)) (t (progn (cd root) (hg-view-output ((format "project diff for %s" root)) (call-process (textmate-project-root-type root) nil t nil "diff") (diff-mode) (setq diff (not (= (point-min) (point-max)))) (font-lock-fontify-buffer) (cd root))))))) (global-set-key [(control c)(t)(=)] 'af-generic-diff-repo) (global-set-key [(control c)(d)] 'af-generic-diff-repo) (defun af-rotate-list (l) "Move the head of l to the end of the list." (append (cdr l) (list (car l)))) (defun af-spacejoin (l) "Given list of strings l, join them with spaces and return. Returns the empty string if l is nil." (if l (reduce '(lambda (x &optional y) (concat x " " (if y y))) l) "")) (defun pyflakes-this-buffer () (interactive) (compilation-start (concat "cd " (file-name-directory buffer-file-name) "; pyflakes " (file-name-nondirectory buffer-file-name)) nil (lambda (mode) "*pyflakes*"))) (defun hg-check-code () (interactive) (textmate-start-compile-in-root "python contrib/check-code.py `hg man`" nil '(lambda (x) "*check-code*") )) (defun fullscreen () (interactive) (set-frame-parameter nil 'fullscreen (if (frame-parameter nil 'fullscreen) nil 'fullboth))) (defun hg-rm-this-file () (interactive) (shell-command-to-string (concat "hg rm " (shell-quote-argument buffer-file-name)))) ;; Lifted from http://code.google.com/p/ergoemacs/ (defun select-text-in-quote () "Select text between the nearest left and right delimiters. Delimiters are paired characters: ()[]<>«»“”‘’「」, including \"\"." (interactive) (let (b1 b2) (skip-chars-backward "^<>(“{[「«\"‘") (setq b1 (point)) (skip-chars-forward "^<>)”}]」»\"’") (setq b2 (point)) (set-mark b1) ) ) ;; Most of this was extracted from show-paren-function in paren.el from an emacs 23 nightly ;; Also, it seems like this really ought to be builtin, but I can't find it. (defun bounce-to-other-paren () (interactive) (let ((oldpos (point)) (dir (cond ((eq (syntax-class (syntax-after (1- (point)))) 5) -1) ((eq (syntax-class (syntax-after (point))) 4) 1))) pos mismatch face) ;; ;; Find the other end of the sexp. (when dir (save-excursion (save-restriction ;; Determine the range within which to look for a match. (when blink-matching-paren-distance (narrow-to-region (max (point-min) (- (point) blink-matching-paren-distance)) (min (point-max) (+ (point) blink-matching-paren-distance)))) ;; Scan across one sexp within that range. ;; Errors or nil mean there is a mismatch. (condition-case () (setq pos (scan-sexps (point) dir)) (error (setq pos t mismatch t))) ;; Move back the other way and verify we get back to the ;; starting point. If not, these two parens don't really match. ;; Maybe the one at point is escaped and doesn't really count. (when (integerp pos) (unless (condition-case () (eq (point) (scan-sexps pos (- dir))) (error nil)) (setq pos nil))) ))) ;; Highlight the other end of the sexp, or unhighlight if none. (if (and pos (integerp pos)) (goto-char pos) (message "No matching other paren found.") ))) (defun af-set-window-width (&optional columns) "Make selected window COLUMNS wide. Interactively, if no argument is given, make selected window 80 columns wide. " (interactive "p") (let* ((cols (if (or (not columns) (>= 0 columns)) 80 columns))) (shrink-window-horizontally (- (window-width) cols))))