Difference between revisions of "Ido"

From WikEmacs
Jump to: navigation, search
(cleanup)
m (See Also: added Smex)
 
(23 intermediate revisions by 8 users not shown)
Line 1: Line 1:
'''Ido''' is a very convenient way to find files and switch buffers.
+
{{Package
 +
|name=Ido
 +
|author = Kim F. Storm
 +
|description=Interactive Do [[MiniBuffer]] Enhancement
 +
|source=http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/ido.el
 +
|maintainer=[[FSF]]
 +
|in_emacs=yes
 +
|Development status=active
 +
}}
  
= Basic setup =
+
'''Ido''' - Interactively do things is a very convenient way to find files and switch buffers.
 +
 
 +
== Basic setup ==
  
 
<source lang="lisp">
 
<source lang="lisp">
Line 8: Line 18:
 
</source>
 
</source>
  
= Helpful keybindings =
+
== Helpful keybindings ==
  
; {{Keys|C-x C-c}}
+
; {{Keys|C-s}}
: Quit Emacs.
+
: Move to next ido suggestion.
  
; {{CommandKeys|C-x C-s|save-buffer}}
+
; {{Keys|C-r}}
: Save buffer.
+
: Move to previous ido suggestion.
  
= Common Customization =
+
; {{Keys|C-f}}
 +
: Temporarily revert to the default find-file behavior. Handy if [[ido]] won't behave as you'd like.
  
== Customization 1 ==
+
; {{Keys|C-j}}
<source lang="lisp">
+
: Accept the provided text as is, instead of selecting the currently proposed completion.
(message "This stuff will go in your .emacs")
+
</source>
+
  
== Customization 2 ==
+
== Common Customization ==
<source lang="lisp">
+
 
(message "You can also do this customization")
+
=== Enable Fuzzy Matching ===
</source>
+
 
 +
<syntaxhighlight lang="lisp">
 +
(setq ido-enable-flex-matching t)
 +
</syntaxhighlight>
 +
 
 +
=== Ignore Case ===
 +
 
 +
{{Snippet|(setq ido-case-fold t)}}
 +
 
 +
=== Virtual Buffers ===
 +
 
 +
If [[Recentf]] is enabled, you can use {{CommandKeys|C-x b|ido-switch-buffer}} to visit recently closed files by enabling virtual buffers:
 +
{{Snippet|(setq ido-use-virtual-buffers t)}}
 +
 
 +
=== Prevent Auto-Merge ===
 +
 
 +
Ido's default behavior when there is no matching file in the current directory is to look in recent working directories. If you prefer to limit {{CommandKeys|C-x C-f|ido-find-file}} to the current directory you can disable this ''auto-merge'' behavior:
 +
{{Snippet|(setq ido-auto-merge-work-directories-length -1) ;; disable auto-merge}}
 +
 
 +
You can still look in other working directories explicitly with {{Keys|M-s|ido-merge-work-directories}}.
 +
 
 +
=== Directory Caching on Windows ===
 +
 
 +
On [[Windows]] operating systems it can be unreliable to cache directory listings: the directory may not appear to be modified even though files have been added or removed. Ido caches directory listings by default, which may cause confusion on Windows. You can disable caching:
 +
 
 +
<syntaxhighlight lang="lisp">
 +
(when (equal system-type 'windows-nt)
 +
  (setq ido-max-dir-file-cache 0)) ; caching unreliable
 +
</syntaxhighlight>
 +
 
 +
=== Specifying sort-order ===
 +
If you'd like to tweak the default file sorting, like making [[Org]]-files appear first, tell [[ido]] which files to give a higher sort priority:
 +
<syntaxhighlight lang="lisp">
 +
(setq ido-file-extensions-order '(".org" ".txt" ".py" ".emacs" ".xml" ".el"
 +
  ".ini" ".cfg" ".conf"))
 +
</syntaxhighlight>
 +
 
 +
=== Sort by mtime instead of alphabetically ===
 +
 
 +
If you prefer to sort ido filelist by mtime instead of alphabetically :
 +
 
 +
<syntaxhighlight lang="lisp">
 +
(add-hook 'ido-make-file-list-hook 'ido-sort-mtime)
 +
(add-hook 'ido-make-dir-list-hook 'ido-sort-mtime)
 +
(defun ido-sort-mtime ()
 +
  (setq ido-temp-list
 +
        (sort ido-temp-list
 +
              (lambda (a b)
 +
                (time-less-p
 +
                (sixth (file-attributes (concat ido-current-directory b)))
 +
                (sixth (file-attributes (concat ido-current-directory a)))))))
 +
  (ido-to-end  ;; move . files to end (again)
 +
  (delq nil (mapcar
 +
              (lambda (x) (and (char-equal (string-to-char x) ?.) x))
 +
              ido-temp-list))))
 +
</syntaxhighlight>
 +
 
 +
 
 +
== See Also ==
 +
 
 +
[[Helm]]
  
= See Also =
+
[[Smex]], a M-x enhancement
  
= Project Pages =
+
== External Links ==
* [http://bazaar.canonical.com/en/ Bazaar]
+
* [http://doc.bazaar-vcs.org/bzr.dev/en/user-guide/index.html Bzr Users Guide]
+
  
= Tutorial Pages =
+
[http://www.masteringemacs.org/articles/2010/10/10/introduction-to-ido-mode/ Introduction to Ido Mode]
;[http://wiki.bazaar.canonical.com/EmacsTips Emacs as commit message editor]
+
:Tips for setting up Emacs as Bazaar commit editor.
+
  
[[Category:Completion]] [[Category:MiniBuffer]]
+
[[Category:Completion]]
 +
[[Category:Built-in Package]]
 +
[[Category:MiniBuffer]]
 +
[[Category:Convenience]]
 +
[[Category:Minor Mode]]
 +
[[Category:Buffer Navigation]]
 +
[[Category:Popular Package]]

Latest revision as of 05:40, 11 June 2013

Ido
Description Interactive Do MiniBuffer Enhancement
Author Kim F. Storm
Maintainer FSF
Source http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/ido.el
Part of Emacs yes

Ido - Interactively do things is a very convenient way to find files and switch buffers.

Basic setup[edit]

(ido-mode)
(ido-everywhere 1)

Helpful keybindings[edit]

[C-s]
Move to next ido suggestion.
[C-r]
Move to previous ido suggestion.
[C-f]
Temporarily revert to the default find-file behavior. Handy if ido won't behave as you'd like.
[C-j]
Accept the provided text as is, instead of selecting the currently proposed completion.

Common Customization[edit]

Enable Fuzzy Matching[edit]

(setq ido-enable-flex-matching t)

Ignore Case[edit]

(setq ido-case-fold t)

Virtual Buffers[edit]

If Recentf is enabled, you can use [C-x b] (or M-x ido-switch-buffer) to visit recently closed files by enabling virtual buffers:

(setq ido-use-virtual-buffers t)

Prevent Auto-Merge[edit]

Ido's default behavior when there is no matching file in the current directory is to look in recent working directories. If you prefer to limit [C-x C-f] (or M-x ido-find-file) to the current directory you can disable this auto-merge behavior:

(setq ido-auto-merge-work-directories-length -1) ;; disable auto-merge

You can still look in other working directories explicitly with [M-s].

Directory Caching on Windows[edit]

On Windows operating systems it can be unreliable to cache directory listings: the directory may not appear to be modified even though files have been added or removed. Ido caches directory listings by default, which may cause confusion on Windows. You can disable caching:

(when (equal system-type 'windows-nt)
  (setq ido-max-dir-file-cache 0)) ; caching unreliable

Specifying sort-order[edit]

If you'd like to tweak the default file sorting, like making Org-files appear first, tell ido which files to give a higher sort priority:

(setq ido-file-extensions-order '(".org" ".txt" ".py" ".emacs" ".xml" ".el"
				  ".ini" ".cfg" ".conf"))

Sort by mtime instead of alphabetically[edit]

If you prefer to sort ido filelist by mtime instead of alphabetically :

(add-hook 'ido-make-file-list-hook 'ido-sort-mtime)
(add-hook 'ido-make-dir-list-hook 'ido-sort-mtime)
(defun ido-sort-mtime ()
  (setq ido-temp-list
        (sort ido-temp-list
              (lambda (a b)
                (time-less-p
                 (sixth (file-attributes (concat ido-current-directory b)))
                 (sixth (file-attributes (concat ido-current-directory a)))))))
  (ido-to-end  ;; move . files to end (again)
   (delq nil (mapcar
              (lambda (x) (and (char-equal (string-to-char x) ?.) x))
              ido-temp-list))))


See Also[edit]

Helm

Smex, a M-x enhancement

External Links[edit]

Introduction to Ido Mode