<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikemacs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Monotux</id>
	<title>WikEmacs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wikemacs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Monotux"/>
	<link rel="alternate" type="text/html" href="https://wikemacs.org/wiki/Special:Contributions/Monotux"/>
	<updated>2026-06-16T16:27:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wikemacs.org/index.php?title=Ido&amp;diff=2786</id>
		<title>Ido</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Ido&amp;diff=2786"/>
		<updated>2012-04-28T16:30:55Z</updated>

		<summary type="html">&lt;p&gt;Monotux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Package&lt;br /&gt;
|name=Ido&lt;br /&gt;
|author = Kim F. Storm&lt;br /&gt;
|description=Interactive Do [[MiniBuffer]] Enhancement &lt;br /&gt;
|source=http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/ido.el&lt;br /&gt;
|maintainer=[[FSF]]&lt;br /&gt;
|in_emacs=yes&lt;br /&gt;
|Development status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Ido''' - Interactively do things is a very convenient way to find files and switch buffers.&lt;br /&gt;
&lt;br /&gt;
== Basic setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(ido-mode)&lt;br /&gt;
(ido-everywhere 1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpful keybindings ==&lt;br /&gt;
&lt;br /&gt;
; {{Keys|C-s}}&lt;br /&gt;
: Move to next ido suggestion.&lt;br /&gt;
&lt;br /&gt;
; {{Keys|C-r}}&lt;br /&gt;
: Move to previous ido suggestion.&lt;br /&gt;
&lt;br /&gt;
; {{Keys|C-f}}&lt;br /&gt;
: Temporarily revert to the default find-file behavior. Handy if [[ido]] won't behave as you'd like.&lt;br /&gt;
&lt;br /&gt;
== Common Customization ==&lt;br /&gt;
&lt;br /&gt;
=== Enable Fuzzy Matching ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(setq ido-enable-flex-matching t)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ignore Case ===&lt;br /&gt;
&lt;br /&gt;
{{Snippet|(setq ido-case-fold t)}}&lt;br /&gt;
&lt;br /&gt;
=== Virtual Buffers ===&lt;br /&gt;
&lt;br /&gt;
If [[Recentf]] is enabled, you can use {{CommandKeys|C-x b|ido-switch-buffer}} to visit recently closed files by enabling virtual buffers:&lt;br /&gt;
{{Snippet|(setq ido-use-virtual-buffers t)}}&lt;br /&gt;
&lt;br /&gt;
=== Prevent Auto-Merge ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
{{Snippet|(setq ido-auto-merge-work-directories-length -1) ;; disable auto-merge}}&lt;br /&gt;
&lt;br /&gt;
You can still look in other working directories explicitly with {{Keys|M-s|ido-merge-work-directories}}.&lt;br /&gt;
&lt;br /&gt;
=== Directory Caching on Windows ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(when (equal system-type 'windows-nt)&lt;br /&gt;
  (setq ido-max-dir-file-cache 0)) ; caching unreliable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specifying sort-order ===&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(setq ido-file-extensions-order '(&amp;quot;.org&amp;quot; &amp;quot;.txt&amp;quot; &amp;quot;.py&amp;quot; &amp;quot;.emacs&amp;quot; &amp;quot;.xml&amp;quot; &amp;quot;.el&amp;quot;&lt;br /&gt;
				  &amp;quot;.ini&amp;quot; &amp;quot;.cfg&amp;quot; &amp;quot;.conf&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[Helm]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
[http://www.masteringemacs.org/articles/2010/10/10/introduction-to-ido-mode/ Introduction to Ido Mode]&lt;br /&gt;
&lt;br /&gt;
[[Category:Completion]]&lt;br /&gt;
[[Category:Built-in Package]]&lt;br /&gt;
[[Category:MiniBuffer]]&lt;br /&gt;
[[Category:Convenience]]&lt;br /&gt;
[[Category:Minor Mode]]&lt;br /&gt;
[[Category:Buffer Navigation]]&lt;br /&gt;
[[Category:Popular Package]]&lt;/div&gt;</summary>
		<author><name>Monotux</name></author>
	</entry>
	<entry>
		<id>https://wikemacs.org/index.php?title=Package.el&amp;diff=2665</id>
		<title>Package.el</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Package.el&amp;diff=2665"/>
		<updated>2012-04-12T14:07:29Z</updated>

		<summary type="html">&lt;p&gt;Monotux: Snippet requires cl which wasn't loaded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Package&lt;br /&gt;
|name=package.el&lt;br /&gt;
|description=Package Manager&lt;br /&gt;
|author=Tom Tromey&lt;br /&gt;
|maintainer=[[FSF]]&lt;br /&gt;
|source=http://repo.or.cz/w/emacs.git/blob_plain/HEAD:/lisp/emacs-lisp/package.el&lt;br /&gt;
|in_emacs=yes&lt;br /&gt;
|Development status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
package.el is the built-in package manager in Emacs 24. &lt;br /&gt;
&lt;br /&gt;
== Install package.el on Emacs 23 ==&lt;br /&gt;
&amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; is bundled with Emacs 24, but it’s not bound to Emacs 23. Before it became part of Emacs it was an external package, known as ELPA (I guess that stood for Emacs Lisp Package Manager or something similar). So even if you’re an Emacs 23 user you can copy the latest version of &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; from [http://repo.or.cz/w/emacs.git/blob_plain/1a0a666f941c99882093d7bd08ced15033bc3f0c:/lisp/emacs-lisp/package.el here] and enjoy it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Put the following snippet of code near the beginning of your Emacs config, since you’ll definitely want packages installed via &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; to be initalized ''before'' you start tweaking them.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(require 'package)&lt;br /&gt;
(package-initialize)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
What &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; basically does is that it connects to a list of package repositories, retrieves the list of the packages there, presents it to you in a interactive fashion and lets you install the packages you like (of course you can also remove the once you don’t like). &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; understands the dependencies between packages and if one package requires others to run they will be installed automatically (which is really neat).&lt;br /&gt;
&lt;br /&gt;
The magic starts with the command {{Command|package-list-packages}}. At this point you should see something in the lines of this.&lt;br /&gt;
&lt;br /&gt;
You can navigate the list of packages, mark the ones you want to install with the “i” key or the ones you want removed with the “d” key and when you’re done you can press the “x” key to execute the scheduled actions.&lt;br /&gt;
&lt;br /&gt;
Initially &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; didn’t provide the option to update a package, but that should be fixed in recent Emacs builds. According to this [http://lists.gnu.org/archive/html/emacs-devel/2011-09/msg00371.html thread] you can even update all of the installed packages by using the “U” key in the packages list view (I guess that a small “u” would update only one package). Unfortunately my build is lacking those capabilities so I cannot comment of their usability.&lt;br /&gt;
&lt;br /&gt;
== How to add additional repository ==&lt;br /&gt;
You’d probably notice that your list of available packages is not particularly long. That’s because the official Emacs 24 package repository has a strict licensing (and source code) requirements to include a package there. Luckily there are a number of community-maintained &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; repos around with much more relaxed requirements. Probably the most popular of them is [http://marmalade-repo.org/ Marmalade], created by [http://nex-3.com/ Nathan Weizenbaum] of Sass and Haml fame. You can include it in your &amp;lt;tt&amp;gt;package-archives&amp;lt;/tt&amp;gt; list like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;cl&amp;quot;&amp;gt;(add-to-list 'package-archives&lt;br /&gt;
             '(&amp;amp;quot;marmalade&amp;amp;quot; . &amp;amp;quot;http://marmalade-repo.org/packages/&amp;amp;quot;) t)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Marmalade provides a web based UI for package upload and search (both quite buggy unfortunately) and the ability to share the maintenance of a package between several people, who’ll be able to upload new version of the package. There’s also a Emacs Lisp Marmalade tool, that allows you to submit packages directly from Emacs.&lt;br /&gt;
&lt;br /&gt;
== How to use it with a custom build ==&lt;br /&gt;
Using the &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt; UI is ok if you’re a casual Emacs user, but what if you have a custom Emacs configuration, stored under version control, that you’d like to instantly deploy on any OS/machine (like Emacs Prelude). Here in play comes &amp;lt;tt&amp;gt;package.el&amp;lt;/tt&amp;gt;’s programmer interface. In [https://github.com/bbatsov/emacs-prelude Emacs Prelude] I use the following code to install a list of required packages automatically on Emacs startup (if necessary):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;cl&amp;quot;&amp;gt;;; Comment out if you've already loaded this package...&lt;br /&gt;
(require 'cl)&lt;br /&gt;
&lt;br /&gt;
(defvar prelude-packages&lt;br /&gt;
  '(ack-and-a-half auctex clojure-mode coffee-mode deft expand-region&lt;br /&gt;
                   gist groovy-mode haml-mode haskell-mode inf-ruby&lt;br /&gt;
                   magit magithub markdown-mode paredit projectile python&lt;br /&gt;
                   sass-mode rainbow-mode scss-mode solarized-theme&lt;br /&gt;
                   volatile-highlights yaml-mode yari zenburn-theme)&lt;br /&gt;
  &amp;amp;quot;A list of packages to ensure are installed at launch.&amp;amp;quot;)&lt;br /&gt;
&lt;br /&gt;
(defun prelude-packages-installed-p ()&lt;br /&gt;
  (loop for p in prelude-packages&lt;br /&gt;
        when (not (package-installed-p p)) do (return nil)&lt;br /&gt;
        finally (return t)))&lt;br /&gt;
&lt;br /&gt;
(unless (prelude-packages-installed-p)&lt;br /&gt;
  ;; check for new packages (package versions)&lt;br /&gt;
  (message &amp;amp;quot;%s&amp;amp;quot; &amp;amp;quot;Emacs Prelude is now refreshing its package database...&amp;amp;quot;)&lt;br /&gt;
  (package-refresh-contents)&lt;br /&gt;
  (message &amp;amp;quot;%s&amp;amp;quot; &amp;amp;quot; done.&amp;amp;quot;)&lt;br /&gt;
  ;; install the missing packages&lt;br /&gt;
  (dolist (p prelude-packages)&lt;br /&gt;
    (when (not (package-installed-p p))&lt;br /&gt;
      (package-install p))))&lt;br /&gt;
&lt;br /&gt;
(provide 'prelude-packages)&lt;br /&gt;
;;; prelude-packages.el ends here&amp;lt;/pre&amp;gt;&lt;br /&gt;
This code check if all of the packages in the list are installed and if any of them are not installed if refreshes the local package database (in the case a required package for recently added to the remote repo) and installs them.&lt;br /&gt;
&lt;br /&gt;
== How to publish it to Marmalade ==&lt;br /&gt;
To be able to publish a package to Marmalade (or another repo) it should comform a standardized structure. A single-file package might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;;; sass-mode.el --- Sass major mode&lt;br /&gt;
&lt;br /&gt;
;; Copyright 2007-2010 Nathan Weizenbaum&lt;br /&gt;
&lt;br /&gt;
;; Author: Nathan Weizenbaum &amp;lt;nex342@gmail.com&amp;gt;&lt;br /&gt;
;; URL: http://github.com/nex3/sass-mode&lt;br /&gt;
;; Version: 3.0.20&lt;br /&gt;
;; Package-Requires: ((haml-mode &amp;quot;3.0.20&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
;; Code goes here&lt;br /&gt;
&lt;br /&gt;
;;; sass-mode.el ends here&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A multi-file package should have an additional file named&lt;br /&gt;
`&amp;lt;name&amp;gt;-pkg.el` that should look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(define-package &amp;quot;sass-mode&amp;quot; &amp;quot;3.0.20&amp;quot;&lt;br /&gt;
                &amp;quot;Sass major mode&amp;quot;&lt;br /&gt;
                '((haml-mode &amp;quot;3.0.20&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== package.el Repositories ==&lt;br /&gt;
&lt;br /&gt;
* [[ELPA]]&lt;br /&gt;
* [[MELPA]]&lt;br /&gt;
* [[Marmalade]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [http://batsov.com/articles/2012/02/19/package-management-in-emacs-the-good-the-bad-and-the-ugly/ Package Management in Emacs]&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;/div&gt;</summary>
		<author><name>Monotux</name></author>
	</entry>
	<entry>
		<id>https://wikemacs.org/index.php?title=Bookmarks&amp;diff=2027</id>
		<title>Bookmarks</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Bookmarks&amp;diff=2027"/>
		<updated>2012-03-31T15:55:35Z</updated>

		<summary type="html">&lt;p&gt;Monotux: Minor typo fix + how to set another bookmarks-file manually.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Package&lt;br /&gt;
|name=recentf&lt;br /&gt;
|description=helps opening a file that is recently visited &lt;br /&gt;
|source=http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/bookmarks.el&lt;br /&gt;
|maintainer=[[FSF]]&lt;br /&gt;
|in_emacs=yes&lt;br /&gt;
|Development status=active&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bookmarks are somewhat like registers in that they record positions you can jump to. Unlike registers, they have long names, and they persist automatically from one Emacs session to the next. The prototypical use of bookmarks is to record “where you were reading” in various files.&lt;br /&gt;
&lt;br /&gt;
== Command about Bookmarks ==&lt;br /&gt;
&lt;br /&gt;
*C-x r m &amp;lt;RET&amp;gt; Set the bookmark for the visited file, at point. &lt;br /&gt;
*C-x r m bookmark &amp;lt;RET&amp;gt; Set the bookmark named bookmark at point (bookmark-set). &lt;br /&gt;
*C-x r b bookmark &amp;lt;RET&amp;gt; Jump to the bookmark named bookmark (bookmark-jump). &lt;br /&gt;
*C-x r l List all bookmarks (list-bookmarks). &lt;br /&gt;
*M-x bookmark-save Save all the current bookmark values in the default bookmark file.&lt;br /&gt;
&lt;br /&gt;
== Changing the default bookmarks-file ==&lt;br /&gt;
By default, bookmarks are saved to the file &amp;lt;tt&amp;gt;~/.emacs.bmk&amp;lt;/tt&amp;gt;, outside of your &amp;lt;tt&amp;gt;~/.emacs.d&amp;lt;/tt&amp;gt; directory. To change this to another file, set the variable &amp;lt;tt&amp;gt;bookmark-default-file&amp;lt;/tt&amp;gt; to what you like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(setq bookmark-default-file &amp;quot;~/.emacs.d/bookmarks&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Utilities]] [[Category:Bookmarks]]&lt;br /&gt;
[[Category:Native Package]] [[ Category:File Navigation]]&lt;/div&gt;</summary>
		<author><name>Monotux</name></author>
	</entry>
</feed>