;;; 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 ;; 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))) ) ) ;;;_ , ido (use-package ido :defines (ido-cur-item ido-require-match ido-selected ido-final-text ido-show-confirm-message) :init (ido-mode 1) :config (progn (use-package ido-hacks :init (ido-hacks-mode 1) :ensure t ) (use-package flx-ido :init (progn (use-package flx :ensure t) (flx-ido-mode 1) ) :ensure t ) (setq ido-use-filename-at-point 'guess) (setq ido-use-virtual-buffers t) (setq ido-create-new-buffer 'always) (use-package ido-ubiquitous :init (ido-ubiquitous-mode t) :ensure t ) (use-package ido-vertical-mode :init (ido-vertical-mode 1) :ensure t ) (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))) (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) :ensure t ) (provide 'ravi-init-ido) ;;; ravi-init-ido.el ends here