;;; ravi-init-ido.el --- ido initialization ;; Copyright (C) 2013 ;; Author: ;; Keywords: ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Ido initialization ;;; Code: ;; Almost all of the code below is stolen from jwiegley's .emacs.d. (use-package ibuffer :bind ("C-x C-b" . ibuffer) :config (progn (use-package ibuffer-vc :commands ibuffer-vc-set-filter-groups-by-vc-root) ;; Switching to ibuffer puts the cursor on the most recent past buffer (defadvice ibuffer (around ibuffer-point-to-most-recent-but-one activate) () "Open ibuffer with cursor pointed to most recent buffer name" (let ((recent-buffer-name (buffer-name (other-buffer (current-buffer) t)))) ad-do-it (ibuffer-jump-to-buffer recent-buffer-name))) ;; Show version control status in ibuffer (setq ibuffer-formats '((mark modified read-only vc-status-mini " " (name 18 18 :left :elide) " " (size 9 -1 :right) " " (mode 16 16 :left :elide) " " (vc-status 16 16 :left) " " filename-and-process))) (defun ravi/ibuffer-vc-sort-hook () (ibuffer-vc-set-filter-groups-by-vc-root) (unless (eq ibuffer-sorting-mode 'alphabetic) (ibuffer-do-sort-by-alphabetic))) (add-hook 'ibuffer-hook 'ravi/ibuffer-vc-sort-hook) ) ) (use-package ace-jump-buffer :bind (("M-" . ace-jump-buffer) ("C-" . ace-jump-buffer-other-window) ("S-" . ace-jump-projectile-buffers)) ;; :config ;; (progn ;; (bind-key "M-" 'ido-switch-buffer)) ) ;;;_ , ido (use-package ido :defines (ido-cur-item ido-require-match ido-selected ido-final-text ido-show-confirm-message) :if (equal ravi/use-selection-system 'ido) :init (ido-mode 1) :config (progn (use-package ido-hacks :config (ido-hacks-mode 1)) (use-package flx-ido :config (progn (use-package flx) (flx-ido-mode 1) )) (setq ido-use-filename-at-point 'guess) (setq ido-use-virtual-buffers t) (setq ido-create-new-buffer 'always) (use-package ido-ubiquitous :config (ido-ubiquitous-mode t)) (use-package ido-vertical-mode :config (ido-vertical-mode 1)) (defun ido-smart-select-text () "Select the current completed item. Do NOT descend into directories." (interactive) (when (and (or (not ido-require-match) (if (memq ido-require-match '(confirm confirm-after-completion)) (if (or (eq ido-cur-item 'dir) (eq last-command this-command)) t (setq ido-show-confirm-message t) nil)) (ido-existing-item-p)) (not ido-incomplete-regexp)) (when ido-current-directory (setq ido-exit 'takeprompt) (unless (and ido-text (= 0 (length ido-text))) (let ((match (ido-name (car ido-matches)))) (throw 'ido (setq ido-selected (if match (replace-regexp-in-string "/\\'" "" match) ido-text) ido-text ido-selected ido-final-text ido-text))))) (exit-minibuffer))) (add-hook 'ido-minibuffer-setup-hook #'(lambda () (bind-key "" 'ido-smart-select-text ido-file-completion-map))) (if window-system (defun ido-switch-buffer-tiny-frame (buffer) (interactive (list (ido-read-buffer "Buffer: " nil t))) (with-selected-frame (make-frame '((width . 80) (height . 22) (left-fringe . 0) (right-fringe . 0) (vertical-scroll-bars . nil) (unsplittable . t) (has-modeline-p . nil) ;;(background-color . "grey80") (minibuffer . nil))) (switch-to-buffer buffer) (set (make-local-variable 'mode-line-format) nil))) (bind-key "C-x 5 t" 'ido-switch-buffer-tiny-frame)))) (use-package smex :init (global-set-key [remap execute-extended-command] 'smex) :if (equal ravi/use-selection-system 'ido)) (provide 'ravi-init-ido) ;;; ravi-init-ido.el ends here