<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://web.resource.org/cc/"
    xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<title>EmacsWiki: SiteMap</title>
<link>http://www.emacswiki.org/emacs/SiteMap</link>
<atom:link href="http://www.emacswiki.org/emacs?action=rss;page=1;diff=1;full=1" rel="self" type="application/rss+xml" />
<description>This is the Emacs and XEmacs know-how repository.</description>
<pubDate>Thu, 23 May 2013 20:53:26 GMT</pubDate>
<lastBuildDate>Thu, 23 May 2013 20:53:26 GMT</lastBuildDate>
<generator>Oddmuse</generator>
<copyright>This work is licensed to you under version 2 of the GNU General Public License. Alternatively, you may choose to receive this work under any other license that grants the right to use, copy, modify, and distribute the work, as long as that license imposes the restriction that derivative works have to grant the same rights and impose the same restriction. For example, you may choose to receive this work under the GNU Free Documentation License, the CreativeCommons ShareAlike License, the XEmacs manual license, or similar licenses.</copyright>
<cc:license>http://creativecommons.org/licenses/sa/1.0/</cc:license>
<cc:license>http://www.gnu.org/copyleft/fdl.html</cc:license>
<cc:license>http://www.gnu.org/copyleft/gpl.html</cc:license>
<cc:license>http://www.emacswiki.org/OLD</cc:license>
<wiki:interwiki>EmacsWiki</wiki:interwiki>
<image>
<url>http://www.emacswiki.org/emacs_rss.png</url>
<title>EmacsWiki: SiteMap</title>
<link>http://www.emacswiki.org/emacs</link>
</image>

<item>
<title>ELPA</title>
<link>http://www.emacswiki.org/emacs/ELPA</link>
<guid>http://www.emacswiki.org/emacs/ELPA</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; (add-hook 'after-init-hook &lt;strong class="changes"&gt;#'(&lt;/strong&gt;lambda () (load "&amp;lt;real init file&amp;gt;")))&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; (add-hook 'after-init-hook &lt;strong class="changes"&gt;(&lt;/strong&gt;lambda () (load "&amp;lt;real init file&amp;gt;")))&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt; ELPA is the &lt;b&gt;Emacs Lisp Package Archive&lt;/b&gt;, originally by &lt;a class="local" href="http://www.emacswiki.org/emacs/TomTromey"&gt;TomTromey&lt;/a&gt;, now included in Emacs 24 after contributions from others.&lt;/p&gt;&lt;h2&gt;ELPA&lt;/h2&gt;&lt;p&gt;&lt;i&gt;"Our goal is to make it simple to install, use, and upgrade Emacs Lisp packages. We supply ##package.el## a simple package manager for Emacs, and a repository of pre-packed Emacs Lisp code."&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;package.el&lt;/code&gt; is a package manager included in Emacs since version 24. It includes a built-in repository of FSF sanctioned Emacs packages, also called ELPA and found at &lt;a class="url http outside" href="http://elpa.gnu.org/"&gt;ELPA repository&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The Emacs version of &lt;code&gt;package.el&lt;/code&gt; supports multiple repositories. You can use the GNU ELPA plus other repositories like this:&lt;/p&gt;&lt;pre&gt;(setq package-archives '((&lt;span class="string"&gt;"gnu"&lt;/span&gt; . &lt;span class="string"&gt;"http&lt;span class="builtin"&gt;://elpa&lt;/span&gt;.gnu.org/packages/"&lt;/span&gt;)
                         (&lt;span class="string"&gt;"marmalade"&lt;/span&gt; . &lt;span class="string"&gt;"http&lt;span class="builtin"&gt;://marmalade-repo&lt;/span&gt;.org/packages/"&lt;/span&gt;)
                         (&lt;span class="string"&gt;"melpa"&lt;/span&gt; . &lt;span class="string"&gt;"http&lt;span class="builtin"&gt;://melpa&lt;/span&gt;.milkbox.net/packages/"&lt;/span&gt;)))
&lt;/pre&gt;&lt;p&gt;Any combination of repositories is fine. You should probably always include GNU&amp;#x2019;s core repository but it&amp;#x2019;s not required.&lt;/p&gt;&lt;p&gt;Package archives may also be &lt;a class="local" href="http://www.emacswiki.org/emacs/LocalElpaArchive"&gt;local to your machine&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Adding transactionally&lt;/h3&gt;&lt;p&gt;You can also do it transactionally.&lt;/p&gt;&lt;p&gt;Adding &lt;a class="local" href="http://www.emacswiki.org/emacs/Marmalade"&gt;Marmalade&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;  (add-to-list 'package-archives '(&lt;span class="string"&gt;"marmalade"&lt;/span&gt; . &lt;span class="string"&gt;"http&lt;span class="builtin"&gt;://marmalade-repo&lt;/span&gt;.org/packages/"&lt;/span&gt;))&lt;/pre&gt;&lt;p&gt;Adding &lt;a class="local" href="http://www.emacswiki.org/emacs/MELPA"&gt;MELPA&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;  (add-to-list 'package-archives '(&lt;span class="string"&gt;"melpa"&lt;/span&gt; . &lt;span class="string"&gt;"http&lt;span class="builtin"&gt;://melpa&lt;/span&gt;.milkbox.net/packages/"&lt;/span&gt;))&lt;/pre&gt;&lt;h3&gt;Using customize&lt;/h3&gt;&lt;p&gt;You can also customize &lt;code&gt;&amp;#x2018;package-archives&amp;#x2019;&lt;/code&gt;. Try:&lt;/p&gt;&lt;pre&gt;M-x customize-variable [RET] package-archives [RET]
&lt;/pre&gt;&lt;h2&gt;How Packages work in Emacs 24&lt;/h2&gt;&lt;p&gt;&lt;a class="url http outside" href="http://www.gnu.org/software/emacs/manual/html_node/elisp/Packaging-Basics.html#Packaging-Basics"&gt;The Elisp Manual describes how the package system is initialized&lt;/a&gt;: &lt;/p&gt;&lt;dl class="quote"&gt;&lt;dt /&gt;&lt;dd&gt;Whenever Emacs starts up, it automatically calls the function &lt;code&gt;&amp;#x2018;package-initialize&amp;#x2019;&lt;/code&gt; to load installed packages. This is done after loading the init file and abbrev file (if any) and before running &lt;code&gt;&amp;#x2018;after-init-hook&amp;#x2019;&lt;/code&gt; (see Startup Summary). Automatic package loading is disabled if the user option package-enable-at-startup is nil.&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;So packages are initialized &lt;i&gt;AFTER&lt;/i&gt; the init.el is loaded. This means you should &lt;i&gt;NOT&lt;/i&gt; put package specific initialization into your init.el except in a few ways:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;customization variables for a package are fine, they can be set before a package has loaded&lt;/li&gt;&lt;li&gt;auto-mode-alist changes can be made in a way that does not require the package to be loaded before they are setup:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;    (add-to-list 'auto-mode-alist '(&lt;span class="string"&gt;"\\.gradle"&lt;/span&gt; . groovy-mode))
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;mode specific customization of a package could go in a package hook which can be set before the package is loaded, for example:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;    (add-hook 'groovy-mode-hook (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; () (setq tab-width 4)))
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;key bindings can also be done in such a way to not cause init failure, even if the package is not loaded:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;    (global-set-key
     &lt;span class="string"&gt;"\M-?"&lt;/span&gt;
     (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; ()
       (interactive)
       (call-interactively 'magit-status)))

    (global-set-key (kbd &lt;span class="string"&gt;"C-'"&lt;/span&gt;)     'shell-switcher-switch-buffer)
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;some package specific initialization can be done with eval-after-load, see &lt;a class="local anchor" href="http://www.emacswiki.org/emacs/ELPA#eval-after-load"&gt;eval-after-load&lt;/a&gt;&lt;/li&gt;&lt;li&gt;if all these tricks don&amp;#x2019;t work you can still postpone config until after the packages have been loaded like this:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;    (add-hook 'after-init-hook 'cycbuf-init)
&lt;/pre&gt;&lt;h3&gt;Using the `after-init-hook' for package config&lt;/h3&gt;&lt;p&gt;Some people think that using &lt;i&gt;after-init-hook&lt;/i&gt; seems like a last resort because it may force the load of the package you&amp;#x2019;re referring to (thus slowing down Emacs). Others point out that moving your whole initialization to after ELPA is loaded makes things easier to use.&lt;/p&gt;&lt;p&gt;You can do that by putting this in your init file:&lt;/p&gt;&lt;pre&gt;(add-hook 'after-init-hook (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; () (load &lt;span class="string"&gt;"&amp;lt;real init file&amp;gt;"&lt;/span&gt;)))
&lt;/pre&gt;&lt;p&gt;and moving all your normal init to the &lt;code&gt;&amp;lt;&amp;lt;real init file&amp;gt;&amp;gt;&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;&lt;a class="local anchor" href="http://www.emacswiki.org/emacs/NicFerrier#PackagesForConfig"&gt;See also PackagesForConfig&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a class="anchor" name="eval-after-load"&gt;&lt;/a&gt; &lt;/p&gt;&lt;h3&gt;Using `eval-after-load' for package config&lt;/h3&gt;&lt;p&gt;Using &lt;code&gt;&amp;#x2018;eval-after-load&amp;#x2019;&lt;/code&gt; is one way of achieving fine grained configuration per-package. It falls back gracefully if the package is not present.&lt;/p&gt;&lt;p&gt;The following code is an example of customizing a hypothetical major mode called abcd-mode using eval-after-load:&lt;/p&gt;&lt;pre&gt;    (&lt;span class="keyword elisp"&gt;eval-after-load&lt;/span&gt; &lt;span class="string"&gt;"abcd-mode"&lt;/span&gt; &lt;span class="comment"&gt;; &amp;lt;-- &lt;span class="string"&gt;"abcd-mode"&lt;/span&gt;, not 'abcd-mode&lt;/span&gt;
      '(&lt;span class="keyword elisp"&gt;progn&lt;/span&gt;
         (setq-default abcd-basic-offset 7) &lt;span class="comment"&gt;; setting some option&lt;/span&gt;
         (add-to-list 'abcd-globals-list &lt;span class="string"&gt;"console"&lt;/span&gt;) &lt;span class="comment"&gt;; appending to a list option&lt;/span&gt;
         (add-hook 'abcd-mode-hook 'prepare-some-abcd-soup) &lt;span class="comment"&gt;; things to do for abcd mode buffers&lt;/span&gt;
         (define-key abcd-mode-map (kbd &lt;span class="string"&gt;"C-c C-c"&lt;/span&gt;) 'play-some-abcd-song) &lt;span class="comment"&gt;; add some key binding for abcd mode&lt;/span&gt;
     ))
&lt;/pre&gt;&lt;p&gt;And here is an example for a hypothetical global minor mode called broccoli mode.&lt;/p&gt;&lt;pre&gt;    (&lt;span class="keyword elisp"&gt;eval-after-load&lt;/span&gt; &lt;span class="string"&gt;"broccoli-autoloads"&lt;/span&gt; &lt;span class="comment"&gt;; &amp;lt;-- &lt;span class="string"&gt;"broccoli-autoloads"&lt;/span&gt;, not &lt;span class="string"&gt;"broccoli"&lt;/span&gt;&lt;/span&gt;
      '(&lt;span class="keyword elisp"&gt;progn&lt;/span&gt;
         (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; (&lt;span class="keyword"&gt;require&lt;/span&gt; '&lt;span class="constant"&gt;broccoli&lt;/span&gt; nil t)
             (&lt;span class="keyword elisp"&gt;progn&lt;/span&gt;
               (broccoli-mode 1) &lt;span class="comment"&gt;; Turn on Broccoli global minor mode if broccoli-autoloads.el doesn't do it.&lt;/span&gt;
               (setq-default broccoli-how 'steamed) &lt;span class="comment"&gt;; set some option.&lt;/span&gt;
               (add-to-list 'broccoli-additional-stuff 'salt) &lt;span class="comment"&gt;; add to a list option.&lt;/span&gt;
               )
           (&lt;span class="warning"&gt;warn&lt;/span&gt; &lt;span class="string"&gt;"broccoli is not found."&lt;/span&gt;))))
&lt;/pre&gt;&lt;h3&gt;Adjusting load-path after updating packages&lt;/h3&gt;&lt;p&gt;To my mind one of the faults of ELPA is that the load path is not updated when new packages are installed. Here is a command that will do it for you:&lt;/p&gt;&lt;pre&gt;(&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;package-update-load-path&lt;/span&gt; ()
  &lt;span class="string"&gt;"Update the load path for newly installed packages."&lt;/span&gt;
  (interactive)
  (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; ((package-dir (expand-file-name package-user-dir)))
    (mapc (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; (pkg)
            (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; ((stem (symbol-name (car pkg)))
		  (version &lt;span class="string"&gt;""&lt;/span&gt;)
		  (first t)
		  path)
	      (mapc (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; (num)
		      (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; first
			  (setq first nil)
			  (setq version (format &lt;span class="string"&gt;"%s."&lt;/span&gt; version)))
		      (setq version (format &lt;span class="string"&gt;"%s%s"&lt;/span&gt; version num)))
		    (aref (cdr pkg) 0))
              (setq path (format &lt;span class="string"&gt;"%s/%s-%s"&lt;/span&gt; package-dir stem version))
              (add-to-list 'load-path path)))
          package-alist)))
&lt;/pre&gt;&lt;div class="color one level0"&gt;&lt;div class="portrait"&gt;&lt;p&gt;&lt;a class="newauthor" title="2013-01-20 12:21 UTC" href="http://www.emacswiki.org/emacs/NicFerrier"&gt;&lt;img class="portrait" src="http://gravatar.com/avatar/e94960f8e47c178e206a869c3b81165d" alt="new: 2013-01-20 12:21 UTC" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;a class="local" href="http://www.emacswiki.org/emacs/NicFerrier"&gt;NicFerrier&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt; Would this be better as some advice? Perhaps even a package that installed the advice?&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;ELPA policy&lt;/h3&gt;&lt;p&gt;ELPA policy for Emacs 24 was discussed here: &lt;a class="url http" href="http://thread.gmane.org/gmane.emacs.devel/132634/focus=132640"&gt;http://thread.gmane.org/gmane.emacs.devel/132634/focus=132640&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;How packages work in Emacs 23&lt;/h2&gt;&lt;p&gt;You can make packages work in Emacs 23, you need to add something like this to your &lt;i&gt;init.el&lt;/i&gt;:&lt;/p&gt;&lt;pre&gt;(&lt;span class="keyword"&gt;require&lt;/span&gt; '&lt;span class="constant"&gt;package&lt;/span&gt;)
&lt;span class="comment"&gt;;; Any add to list for package-archives (to add marmalade or melpa) goes here&lt;/span&gt;
(add-to-list 'package-archives 
    '(&lt;span class="string"&gt;"marmalade"&lt;/span&gt; .
      &lt;span class="string"&gt;"http&lt;span class="builtin"&gt;://marmalade-repo&lt;/span&gt;.org/packages/"&lt;/span&gt;))
(package-initialize)
&lt;/pre&gt;&lt;p&gt;In order to use package.el in Emacs 23, the following package.el (link found on github) version is needed: &lt;a class="url http" href="http://bit.ly/pkg-el23"&gt;http://bit.ly/pkg-el23&lt;/a&gt; (source of info:&lt;a class="url http" href="https://github.com/technomancy/package.el"&gt;https://github.com/technomancy/package.el&lt;/a&gt;)&lt;/p&gt;&lt;h2&gt;Other Repositories&lt;/h2&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/AndrewHyatt"&gt;AndrewHyatt&lt;/a&gt; has written an &lt;a class="url http outside" href="http://code.google.com/p/elpa-on-appengine/"&gt;implementation of ELPA for AppEngine&lt;/a&gt;, written in Go. It is not yet running publicly yet, as of April 2013.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryCode"&gt;CategoryCode&lt;/a&gt; &lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryPackaging"&gt;CategoryPackaging&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Thu, 23 May 2013 20:53:26 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_ELPA</comments>
<dc:contributor>NicFerrier</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>58</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=ELPA</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=ELPA</wiki:diff>
</item>

<item>
<title>GoogleTalk</title>
<link>http://www.emacswiki.org/emacs/GoogleTalk</link>
<guid>http://www.emacswiki.org/emacs/GoogleTalk</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; [new]&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; -Alex&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;How Setup Google Talk in Emacs&lt;/p&gt;&lt;p&gt;After a bit of googling, I got &lt;strong&gt;jabber.el&lt;/strong&gt; to work with my Google Talk account. I&amp;#x2019;ll save others some googling:&lt;/p&gt;&lt;pre&gt;(setq jabber-username &lt;span class="string"&gt;"my-username"&lt;/span&gt; &lt;span class="comment"&gt;;; notice: leave off the @gmail.com&lt;/span&gt;
      jabber-server &lt;span class="string"&gt;"gmail.com"&lt;/span&gt;     &lt;span class="comment"&gt;;; this is a part of your user ID, not a part of the server you will connect to.&lt;/span&gt;
      jabber-network-server &lt;span class="string"&gt;"talk.google.com"&lt;/span&gt;  &lt;span class="comment"&gt;;; this is the actual server to connect to&lt;/span&gt;
      jabber-port 5223
      jabber-connection-type 'ssl)
&lt;/pre&gt;&lt;p&gt;(thanks Hamsterboy, &lt;a class="local" href="http://www.emacswiki.org/emacs/timcharper"&gt;timcharper&lt;/a&gt;)&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt;I can verify that the above worked (on MacOS&lt;a class="edit" title="Click to edit this page" rel="nofollow" href="http://www.emacswiki.org/emacs?action=edit;id=MacOS"&gt;?&lt;/a&gt; X). However, I had some difficulties at first. The version of gnutls installed by Mac ports would always throw an error when I tried to connect: (I could see this by switching to the buffer *-jabber-process-*)&lt;/p&gt;&lt;pre&gt;*** Fatal error: A TLS packet with unexpected length was received.
*** Server has terminated the connection abnormally.
&lt;/pre&gt;&lt;p&gt;I installed a more recent version of gnutls (2.8.3), and modified both my PATH environment variable and my exec-path setting via Emacs-customize in order to ensure that that most recent version of gnutls was used, and not the version installed by Mac ports.&lt;/p&gt;&lt;p&gt;Once I did that, jabber connected to Google talk swimmingly.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/timcharper"&gt;timcharper&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h2&gt;jabber.el 0.7.1 and below&lt;/h2&gt;&lt;p&gt;Setting up emacs to use Google Talk is pretty easy since it uses the XMPP protocol, which is handled by jabber clients. &lt;a class="local" href="http://www.emacswiki.org/emacs/JabberEl"&gt;JabberEl&lt;/a&gt; works well (at least from the arch sources available), and setup the following variables, either through customization or in your .emacs file:&lt;/p&gt;&lt;pre&gt;  (setq jabber-username &lt;span class="string"&gt;"username"&lt;/span&gt;)
  (setq jabber-password &lt;span class="string"&gt;"password"&lt;/span&gt;)
  (setq jabber-nickname &lt;span class="string"&gt;"nick"&lt;/span&gt;)
  (setq jabber-connection-type (quote ssl))
  (setq jabber-network-server &lt;span class="string"&gt;"talk.google.com"&lt;/span&gt;)
  (setq jabber-server &lt;span class="string"&gt;"gmail.com"&lt;/span&gt;)&lt;/pre&gt;&lt;p&gt;Under gentoo, I had to install the gnutls package to get everything working just fine, your mileage may vary. After that, you might find this function handy:&lt;/p&gt;&lt;pre&gt;  (&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;jabber&lt;/span&gt; ()
    (interactive)
    (jabber-connect)
    (switch-to-buffer &lt;span class="string"&gt;"*-jabber-*"&lt;/span&gt;))&lt;/pre&gt;&lt;p&gt;Allowing you to M-x jabber to load up the client.&lt;/p&gt;&lt;p&gt;The jabber.el client is pretty self explanitory, but consult its page for further help and tips.&lt;/p&gt;&lt;h2&gt;jabber.el 0.7.90 and later&lt;/h2&gt;&lt;p&gt;If you use both Emacs and Gnus from CVS, you can probably get away with just hitting C-x C-j C-c and entering your Gmail address, but most of us mortals will need a setup like the following:&lt;/p&gt;&lt;pre&gt;  (setq jabber-account-list
    '((&lt;span class="string"&gt;"username@gmail.com"&lt;/span&gt; 
       (&lt;span class="builtin"&gt;:network-server&lt;/span&gt; . &lt;span class="string"&gt;"talk.google.com"&lt;/span&gt;)
       (&lt;span class="builtin"&gt;:connection-type&lt;/span&gt; . ssl))))&lt;/pre&gt;&lt;p&gt;And make sure that you have either gnutls-cli or openssl installed and in your path. Then C-x C-j C-c should Just Workâ¢.&lt;/p&gt;&lt;h2&gt;Multi-user Chat&lt;/h2&gt;&lt;p&gt;Here is a function to create use google groupchat:&lt;/p&gt;&lt;pre&gt;  (&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;egh&lt;span class="builtin"&gt;:jabber-google-groupchat-create&lt;/span&gt;&lt;/span&gt; ()
      (interactive)
      (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; ((group (apply 'format &lt;span class="string"&gt;"private-chat-%x%x%x%x%x%x%x%x-%x%x%x%x-%x%x%x%x-%x%x%x%x-%x%x%x%x%x%x%x%x%x%x%x%x@groupchat.google.com"&lt;/span&gt;
                          (mapcar (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; (x) (random x)) (make-list 32 15))))
            (account (jabber-read-account)))
        (jabber-groupchat-join account group (jabber-muc-read-my-nickname account group) t)))&lt;/pre&gt;&lt;p&gt;For versions 0.8.x of &lt;a class="local" href="http://www.emacswiki.org/emacs/JabberEl"&gt;JabberEl&lt;/a&gt; there may be an issue when connecting with Multi-user chat. You may have to set the variable &lt;code&gt;&amp;#x2018;jabber-muc-disable-disco-check&amp;#x2019;&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; for disable disco checking if the above function doesn&amp;#x2019;t work(or popup the buffer). For more information read the &lt;a class="url http outside" href="http://emacs-jabber.sourceforge.net/manual-0.8.0/Groupchat.html#Groupchat"&gt;jabber.el v.0.8.0 groupchat manual&lt;/a&gt; third paragraph.&lt;/p&gt;&lt;h2&gt;Success Stories&lt;/h2&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Works great for me after installing gnutls package on Mac OS X using &lt;a class="url http outside" href="http://mxcl.github.io/homebrew/"&gt;homebrew&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;$ brew install gnutls&lt;/code&gt;&lt;/p&gt;&lt;p&gt;-Alex&lt;/p&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/JabberEl"&gt;JabberEl&lt;/a&gt; &lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryChatClient"&gt;CategoryChatClient&lt;/a&gt; &lt;/p&gt;</description>
<pubDate>Thu, 23 May 2013 19:22:04 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_GoogleTalk</comments>
<dc:contributor>Alex</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>12</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=GoogleTalk</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=GoogleTalk</wiki:diff>
</item>

<item>
<title>UndoTree</title>
<link>http://www.emacswiki.org/emacs/UndoTree</link>
<guid>http://www.emacswiki.org/emacs/UndoTree</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; Emacs &lt;strong class="changes"&gt;has a powerful undo system. Unlike the standard&lt;/strong&gt; undo&lt;strong class="changes"&gt;/redo&lt;/strong&gt; system &lt;strong class="changes"&gt;in most software, it&lt;/strong&gt; allows you to recover ''any'' past state of a buffer (&lt;strong class="changes"&gt;whereas&lt;/strong&gt; the standard undo/redo system &lt;strong class="changes"&gt;can lose past&lt;/strong&gt; states &lt;strong class="changes"&gt;as soon as&lt;/strong&gt; you &lt;strong class="changes"&gt;redo&lt;/strong&gt;). However, &lt;strong class="changes"&gt;this power comes at a price: many people find&lt;/strong&gt; Emacs' undo &lt;strong class="changes"&gt;system&lt;/strong&gt; confusing and difficult to use, &lt;strong class="changes"&gt;spawning&lt;/strong&gt; a number of packages that replace it with the &lt;strong class="changes"&gt;less powerful but more intuitive&lt;/strong&gt; undo/redo system (see CategoryUndo).&lt;br /&gt;&amp;lt; Both the loss of data with standard undo/redo&lt;strong class="changes"&gt;,&lt;/strong&gt; and the confusion of Emacs' undo&lt;strong class="changes"&gt;,&lt;/strong&gt; stem from trying to treat undo history as a linear sequence of changes. &lt;strong class="changes"&gt;It's not. The&lt;/strong&gt; ##undo-tree-mode## &lt;strong class="changes"&gt;provided by this package replaces Emacs' undo system with a system that&lt;/strong&gt; treats undo history as what it is: a branching tree of changes&lt;strong class="changes"&gt;. This simple idea allows the more intuitive behaviour of&lt;/strong&gt; the &lt;strong class="changes"&gt;standard undo/redo&lt;/strong&gt; system to &lt;strong class="changes"&gt;be combined with the power of never losing&lt;/strong&gt; any history. An added side bonus is that undo history can in some cases be stored more efficiently, allowing more changes to accumulate before Emacs starts discarding history.&lt;br /&gt;&amp;lt; &lt;strong class="changes"&gt;It gets better&lt;/strong&gt;. &lt;strong class="changes"&gt;You don't have to imagine the undo tree, because ##undo-tree-mode## includes an undo-tree visualizer which draws it for you,&lt;/strong&gt; and &lt;strong class="changes"&gt;lets you browse around the undo history&lt;/strong&gt;. It also sports various other nifty features: &lt;strong class="changes"&gt;persistent saving of undo history across sessions (only works with sufficiently recent Emacsen),&lt;/strong&gt; storing and restoring past buffer states in registers, a diff view of the changes that will be made by undoing, and probably more besides.&lt;br /&gt;&amp;lt; &lt;strong class="changes"&gt;The only downside to this more advanced yet simpler undo system is that it was inspired by Vim. But, after all, most successful religions steal the best ideas from their competitors!&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; Emacs&lt;strong class="changes"&gt;'s&lt;/strong&gt; undo system allows you to recover ''any'' past state of a buffer (the standard undo/redo system &lt;strong class="changes"&gt;loses any "redoable"&lt;/strong&gt; states &lt;strong class="changes"&gt;whenever&lt;/strong&gt; you &lt;strong class="changes"&gt;make an edit&lt;/strong&gt;). However, Emacs'&lt;strong class="changes"&gt;s solution, to treat "&lt;/strong&gt;undo&lt;strong class="changes"&gt;" itself as just another editing action that can be undone, can be&lt;/strong&gt; confusing and difficult to use&lt;strong class="changes"&gt;: if you make an edit whilst in the middle of undoing multiple changes, you "break the undo chain", and to get back to where you were, you have to undo all the undos you just did, then undo all the changes you'd already undone before, and only /then/ can you continue undoing from where you left off. If this sounds confusing, it's because it is! Hence&lt;/strong&gt;, a number of packages &lt;strong class="changes"&gt;exist&lt;/strong&gt; that replace it with the undo/redo system (see CategoryUndo).&lt;br /&gt;&amp;gt; Both the loss of data with standard undo/redo and the confusion of Emacs' undo stem from trying to treat undo history as a linear sequence of changes. ##undo-tree-mode## &lt;strong class="changes"&gt;instead&lt;/strong&gt; treats undo history as what it is: a branching tree of changes &lt;strong class="changes"&gt;(&lt;/strong&gt;the &lt;strong class="changes"&gt;same&lt;/strong&gt; system &lt;strong class="changes"&gt;that Vim has had for some time now). This makes it substantially easier&lt;/strong&gt; to &lt;strong class="changes"&gt;undo and redo&lt;/strong&gt; any &lt;strong class="changes"&gt;change, while preserving the entire&lt;/strong&gt; history &lt;strong class="changes"&gt;of past states. The undo-tree visualizer helps, particularly in complex cases&lt;/strong&gt;. An added side bonus is that undo history can in some cases be stored more efficiently, allowing more changes to accumulate before Emacs starts discarding history. &lt;strong class="changes"&gt;Undo history can be saved persistently across sessions with Emacs 24&lt;/strong&gt;.&lt;strong class="changes"&gt;3&lt;/strong&gt; and &lt;strong class="changes"&gt;later&lt;/strong&gt;. It also sports various other nifty features: storing and restoring past buffer states in registers, a diff view of the changes that will be made by undoing, and probably more besides.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; The undo-tree package is available from GNU [[ELPA]] in recent Emacsen&lt;strong class="changes"&gt;.&lt;/strong&gt; The latest "stable" version (version 0.6.3, released December 2012) can also be downloaded from:&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; The undo-tree package is available from GNU [[ELPA]] in recent Emacsen&lt;strong class="changes"&gt;, and in [[el-get]].&lt;/strong&gt; The latest "stable" version (version 0.6.3, released December 2012) can also be downloaded from:&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Deleted:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; == Discussion ==&lt;br /&gt;&amp;lt; Hi Toby! Long time no see ;) This is a very interesting package, at least from the viewpoint of cool factor. As someone who is kind of used to the standard undo (or undo/redo as some would call it) I wonder what the main benefits would be for me. Is there any real-world use cases in particular where this shines?&lt;br /&gt;&amp;lt; Thanks!&lt;br /&gt;&amp;lt; -- MaDa&lt;br /&gt;&amp;lt; [new]&lt;br /&gt;&amp;lt; Nice to hear from you, Mathias!&lt;br /&gt;&amp;lt; The Commentary section at the top of the &amp;lt;tt&amp;gt;undo-tree.el&amp;lt;/tt&amp;gt; package file discusses this at some length, and I recommend reading it. To sumarise briefly...&lt;br /&gt;&amp;lt; Emacs' undo system is definitely not the standard impoverished undo/redo system used in lesser software, which loses history as soon as you "redo". Emacs' undo system instead treats undos as just another type of change that can be undone. So redoing becomes simply "undoing an undo". This is very powerful, as it preserves the complete undo history. The disadvantage is that calling any command whilst in the middle of undoing multiple changes "breaks the undo chain", and makes it a pain to get back to where you were. (You have to undo all the undos you just did, then undo all the changes you'd already undone before, and only /then/ can you continue undoing from where you left off. If this sounds confusing, it's because it is! For some people, at least.)&lt;br /&gt;&amp;lt; Undo-tree-mode instead treats undo history as what it is: a branching tree of changes. This preserves all the power of Emacs' undo system vis-a-vis not losing any undo history. But it makes it substantially easier and more intuitive to undo and redo the changes you want (for some people, at least). Note that this matches the undo system that Vim has had for some time now. The undo-tree visualizer in the screenshot above is just the icing on the cake. The bigger thing is the fundamental change to how the undo system works.&lt;br /&gt;&amp;lt; Apparently quite a few people do find this useful. It's by far the most popular of my Emacs packages.&lt;br /&gt;&amp;lt; Do read the Commentary for a more detailed discussion. It even has diagrams :)&lt;br /&gt;&amp;lt; -- TobyCubitt&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;h2&gt;About&lt;/h2&gt;&lt;p&gt;Emacs&amp;#x2019;s undo system allows you to recover &lt;em&gt;any&lt;/em&gt; past state of a buffer (the standard undo/redo system loses any &amp;#x201c;redoable&amp;#x201d; states whenever you make an edit). However, Emacs&amp;#x2019;s solution, to treat &amp;#x201c;undo&amp;#x201d; itself as just another editing action that can be undone, can be confusing and difficult to use: if you make an edit whilst in the middle of undoing multiple changes, you &amp;#x201c;break the undo chain&amp;#x201d;, and to get back to where you were, you have to undo all the undos you just did, then undo all the changes you&amp;#x2019;d already undone before, and only &lt;i&gt;then&lt;/i&gt; can you continue undoing from where you left off. If this sounds confusing, it&amp;#x2019;s because it is! Hence, a number of packages exist that replace it with the undo/redo system (see &lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryUndo"&gt;CategoryUndo&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Both the loss of data with standard undo/redo and the confusion of Emacs&amp;#x2019; undo stem from trying to treat undo history as a linear sequence of changes. &lt;code&gt;undo-tree-mode&lt;/code&gt; instead treats undo history as what it is: a branching tree of changes (the same system that Vim has had for some time now). This makes it substantially easier to undo and redo any change, while preserving the entire history of past states. The undo-tree visualizer helps, particularly in complex cases. An added side bonus is that undo history can in some cases be stored more efficiently, allowing more changes to accumulate before Emacs starts discarding history. Undo history can be saved persistently across sessions with Emacs 24.3 and later. It also sports various other nifty features: storing and restoring past buffer states in registers, a diff view of the changes that will be made by undoing, and probably more besides.&lt;/p&gt;&lt;p&gt;For more information, see the Commentary at the top of the &lt;code&gt;undo-tree.el&lt;/code&gt; file.&lt;/p&gt;&lt;h2&gt;Downloading&lt;/h2&gt;&lt;p&gt;The undo-tree package is available from GNU &lt;a class="local" href="http://www.emacswiki.org/emacs/ELPA"&gt;ELPA&lt;/a&gt; in recent Emacsen, and in &lt;a class="local" href="http://www.emacswiki.org/emacs/el-get"&gt;el-get&lt;/a&gt;. The latest &amp;#x201c;stable&amp;#x201d; version (version 0.6.3, released December 2012) can also be downloaded from:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Undo-tree package download: &lt;a class="url http" href="http://www.dr-qubit.org/download.php?file=undo-tree/undo-tree.el"&gt;http://www.dr-qubit.org/download.php?file=undo-tree/undo-tree.el&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Web-site: &lt;a class="url http" href="http://www.dr-qubit.org/emacs.php#undo-tree"&gt;http://www.dr-qubit.org/emacs.php#undo-tree&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you want to live on the bleeding edge, the latest &amp;#x201c;development&amp;#x201d; version can be found in a git repository located at:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Undo-tree git repository: &lt;a class="url http" href="http://www.dr-qubit.org/git/undo-tree.git"&gt;http://www.dr-qubit.org/git/undo-tree.git&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is a git repository, &lt;em&gt;&lt;b&gt;not&lt;/b&gt;&lt;/em&gt; a web page. You cannot view it in a web browser. To grab the latest development version, clone the repository using:&lt;/p&gt;&lt;pre&gt;    git clone http&lt;span class="builtin"&gt;://www&lt;/span&gt;.dr-qubit.org/git/undo-tree.git&lt;/pre&gt;&lt;h2&gt;Contributing&lt;/h2&gt;&lt;p&gt;Please send bug reports and suggestions to &lt;a class="url mailto outside" href="mailto:toby-undo-tree@dr-qubit.org"&gt;toby-undo-tree@dr-qubit.org&lt;/a&gt; (you can post them here as well if you like, of course). I don&amp;#x2019;t check this page regularly, so anything not emailed to me is likely to languish here unnoticed for some time.&lt;/p&gt;&lt;p&gt;If you have code you would like to contribute to undo-tree, either send a patch against the latest development version to &lt;a class="url mailto outside" href="mailto:toby-undo-tree@dr-qubit.org"&gt;toby-undo-tree@dr-qubit.org&lt;/a&gt;, or better still, use git, rebase your work against the latest git master, and let me know where to find your clone of the undo-tree repository so that I can pull your changes.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/TobyCubitt"&gt;TobyCubitt&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Screenshot&lt;/h2&gt;&lt;p&gt;Showing the undo-tree visualizer, with some undo states stored in registers, and the visualizer&amp;#x2019;s diff view:&lt;/p&gt;&lt;p&gt;&lt;a class="image" href="http://www.emacswiki.org/emacs/UndoTreeScreenshot"&gt;&lt;img class="upload" src="http://www.emacswiki.org/pics/static/UndoTreeScreenshot" alt="UndoTreeScreenshot" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryUndo"&gt;CategoryUndo&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Thu, 23 May 2013 15:24:35 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_UndoTree</comments>
<dc:contributor>rrt</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>46</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=UndoTree</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=UndoTree</wiki:diff>
</item>

<item>
<title>DropBox</title>
<link>http://www.emacswiki.org/emacs/DropBox</link>
<guid>http://www.emacswiki.org/emacs/DropBox</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last major edit (&lt;a class="diff" rel="nofollow" href="http://www.emacswiki.org/emacs?action=browse;diff=1;id=DropBox;diffrevision=4"&gt;later minor edits&lt;/a&gt;)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; If you use DeskTop and you have multiple Emacsen running simultaneously, you might want to have each machine keep its own set of open files. One way to do that is &amp;lt;code&amp;gt;(setq desktop-base-file-name (concat ".desktop." (system-name)))&amp;lt;/code&amp;gt;.&lt;br /&gt;&amp;gt; --AmitPatel&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="url http outside" href="https://www.dropbox.com/"&gt;DropBox&lt;/a&gt; is a &amp;#x201c;free&amp;#x201d; (as in beer, not as in speech) service for file storage and synchronization.&lt;/p&gt;&lt;p&gt;Q: What emacs files can be stored on dropbox to share between computers running Emacs? config files? site-lisp? home directory? ELPA packages? &lt;/p&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;This would presume that the same Emacs version is running on all machines connected to that Dropbox (or do not care about a particular Emacs folder, or are not running shared byte-compiled code).&lt;/li&gt;&lt;li&gt;or config-files are set to account for this&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;Does anything get screwed up? &amp;#x2013; E.g., lots of dropbox-conflicted files proliferate in a directory? (This happens to me with Pidgin-Portable shared in Dropbox)&lt;/p&gt;&lt;p&gt;--&lt;a class="local" href="http://www.emacswiki.org/emacs/MichaelPaulukonis"&gt;MichaelPaulukonis&lt;/a&gt;, who hopes this page will turn into something useful.&lt;/p&gt;&lt;p&gt;I keep my emacs folder and my .emacs.d folder (which includes all my ELPA packages) in Dropbox, and symlink them into my home dir (I don&amp;#x2019;t want my entire home dir in Dropbox). A couple of things worth mentioning:&lt;/p&gt;&lt;p&gt;If you use Emacs as a server (server-start) you will want to move server-auth-dir out of Dropbox, or make sure you have a custom server-name on each machine (system-name is convenient for setting this up), otherwise they&amp;#x2019;ll all try to use the same file.&lt;/p&gt;&lt;p&gt;If there&amp;#x2019;s anything you want to keep secret (.authinfo files, say, or org files containing your plans for the Death Star), keep them off Dropbox, or encrypt them using something like Easy PG. Dropbox has had security issues in the past.&lt;/p&gt;&lt;p&gt;If you add machines often, it&amp;#x2019;s convenient to create a script that sets up your environment variables and does the symlinks for a new machine. Install Dropbox + wait + run script = Emacs!&lt;/p&gt;&lt;p&gt;My experience is mostly on Windows, and OS X. YMMV.&lt;/p&gt;&lt;p&gt;--&lt;a class="local" href="http://www.emacswiki.org/emacs/BrianCasiello"&gt;BrianCasiello&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you use &lt;a class="local" href="http://www.emacswiki.org/emacs/DeskTop"&gt;DeskTop&lt;/a&gt; and you have multiple Emacsen running simultaneously, you might want to have each machine keep its own set of open files. One way to do that is &lt;code&gt;(setq desktop-base-file-name (concat ".desktop." (system-name)))&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;--&lt;a class="local" href="http://www.emacswiki.org/emacs/AmitPatel"&gt;AmitPatel&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Thu, 23 May 2013 14:41:40 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_DropBox</comments>
<dc:contributor>AmitPatel</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>4</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=DropBox</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=DropBox</wiki:diff>
</item>

<item>
<title>Comments on EvaluatingExpressions</title>
<link>http://www.emacswiki.org/emacs/Comments_on_EvaluatingExpressions</link>
<guid>http://www.emacswiki.org/emacs/Comments_on_EvaluatingExpressions</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ----&lt;br /&gt;&amp;gt; oochh&lt;br /&gt;&amp;gt; -- JonasBernoulli 2013-05-23 00:38 UTC&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;Alex: I believe to remember that you have writen some code to evaluate multi-line expressions in comments. If so, what&amp;#x2019;s that library called?&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/JonasBernoulli"&gt;JonasBernoulli&lt;/a&gt; 2013-05-22 15:54 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;No idea.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt; 2013-05-22 18:34 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;oochh&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/JonasBernoulli"&gt;JonasBernoulli&lt;/a&gt; 2013-05-23 00:38 UTC&lt;/p&gt;</description>
<pubDate>Thu, 23 May 2013 00:38:47 GMT</pubDate>
<dc:contributor>JonasBernoulli</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>3</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=Comments_on_EvaluatingExpressions</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=Comments_on_EvaluatingExpressions</wiki:diff>
</item>

<item>
<title>EssSmartUnderscore</title>
<link>http://www.emacswiki.org/emacs/EssSmartUnderscore</link>
<guid>http://www.emacswiki.org/emacs/EssSmartUnderscore</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; * &amp;lt;b&amp;gt;Version &amp;lt;/b&amp;gt; --  0.&lt;strong class="changes"&gt;78&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; * &amp;lt;b&amp;gt;Version &amp;lt;/b&amp;gt; --  0.&lt;strong class="changes"&gt;79&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; * &amp;lt;b&amp;gt;22-May-2013 &amp;lt;/b&amp;gt; --   Added more ggplot operators.  (Matthew L. Fidler)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; * &amp;lt;b&amp;gt;15-Jul-2011 &amp;lt;/b&amp;gt; --   Bug fix for d[d$CMT &amp;lt;tt&amp;gt;&amp;lt;/tt&amp;gt; 2,"DV"] _ to produce d[d$CMT &amp;lt;tt&amp;gt;&amp;lt;/tt&amp;gt; 2,"DV"] &amp;lt;-  (Matthew L. Fidler)* &lt;strong class="changes"&gt;Functions&lt;br /&gt;&amp;lt; === Interactive Functions ===&lt;br /&gt;&amp;lt; === Internal Functions ===&lt;br /&gt;&amp;lt; ==&lt;/strong&gt; Variables &lt;strong class="changes"&gt;==&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; * &amp;lt;b&amp;gt;15-Jul-2011 &amp;lt;/b&amp;gt; --   Bug fix for d[d$CMT &amp;lt;tt&amp;gt;&amp;lt;/tt&amp;gt; 2,"DV"] _ to produce d[d$CMT &amp;lt;tt&amp;gt;&amp;lt;/tt&amp;gt; 2,"DV"] &amp;lt;-  (Matthew L. Fidler)* Variables&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; == Functions ==&lt;br /&gt;&amp;gt; === Interactive Functions ===&lt;br /&gt;&amp;gt; === Internal Functions ===&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;h2&gt;Library Information&lt;/h2&gt;&lt;p&gt;&lt;i&gt;ess-smart-underscore.el&lt;/i&gt; &amp;#x2014; Ess Smart Underscore&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Filename &lt;/b&gt; &amp;#x2013;  &lt;a class="local" href="http://www.emacswiki.org/emacs/ess-smart-underscore.el"&gt;ess-smart-underscore.el&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Description &lt;/b&gt; &amp;#x2013;  ess-smart-underscore&lt;/li&gt;&lt;li&gt;&lt;b&gt;Author &lt;/b&gt; &amp;#x2013;  Matthew L. Fidler&lt;/li&gt;&lt;li&gt;&lt;b&gt;Maintainer &lt;/b&gt; &amp;#x2013;  Matthew Fidler&lt;/li&gt;&lt;li&gt;&lt;b&gt;Created &lt;/b&gt; &amp;#x2013;  Thu Jul 14 11:04:42 2011 (-0500)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Version &lt;/b&gt; &amp;#x2013;  0.79&lt;/li&gt;&lt;li&gt;&lt;b&gt;Last-Updated &lt;/b&gt; &amp;#x2013;  Mon Apr  9 15:27:09 2012 (-0500)&lt;/li&gt;&lt;li&gt;&lt;b&gt;By &lt;/b&gt; &amp;#x2013;  Matthew L. Fidler&lt;/li&gt;&lt;li&gt;&lt;b&gt;Update # &lt;/b&gt; &amp;#x2013;  137&lt;/li&gt;&lt;li&gt;&lt;B&gt;URL &lt;/B&gt; &amp;#x2013;  &lt;a class="url http" href="http://github.com/mlf176f2/ess-smart-underscore.el"&gt;http://github.com/mlf176f2/ess-smart-underscore.el&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Keywords &lt;/b&gt; &amp;#x2013;  ESS, underscore Compatibility:&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Possible Dependencies&lt;/h2&gt;&lt;p&gt;&lt;code&gt;&amp;#x2018;custom&amp;#x2019;&lt;/code&gt;, &lt;code&gt;&amp;#x2018;easymenu&amp;#x2019;&lt;/code&gt;, &lt;code&gt;&amp;#x2018;ess&amp;#x2019;&lt;/code&gt;, &lt;code&gt;&amp;#x2018;ess-compat&amp;#x2019;&lt;/code&gt;, &lt;code&gt;&amp;#x2018;ess-custom&amp;#x2019;&lt;/code&gt;, &lt;code&gt;&amp;#x2018;font-lock&amp;#x2019;&lt;/code&gt;, &lt;code&gt;&amp;#x2018;syntax&amp;#x2019;&lt;/code&gt;, &lt;code&gt;&amp;#x2018;widget&amp;#x2019;&lt;/code&gt;.&lt;/p&gt;&lt;h2&gt;Installation&lt;/h2&gt;&lt;p&gt;To use without using a package manager:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Put the library in a directory in the emacs load path, like ~/.emacs.d&lt;/li&gt;&lt;li&gt;Add (require &amp;#x2018;ess-smart-underscore) in your ~/.emacs file&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is in emacswiki, so this package can also be installed using el-get.&lt;/p&gt;&lt;p&gt;After installing el-get, Type M-x el-get-install ess-smart-underscore. &lt;/p&gt;&lt;h2&gt;Ess-Smart Underscore Package Information&lt;/h2&gt;&lt;p&gt;Smart &amp;#x201c;_&amp;#x201d; key: insert &lt;tt&gt;ess-S-assign&lt;/tt&gt;, unless:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;in string/comment&lt;/li&gt;&lt;li&gt;after a $ (like d$one_two) (toggle with &lt;tt&gt;ess-S-underscore-after-$&lt;/tt&gt;)&lt;/li&gt;&lt;li&gt;when the underscore is part of a variable definition previously defined. (toggle with &lt;code&gt;&amp;#x2018;ess-S-underscore-after-defined&amp;#x2019;&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;when the underscore is after a &amp;#x201c;=&amp;#x201d; or &amp;#x201c;&amp;#8592;&amp;#x201d; on the same line.&lt;/li&gt;&lt;li&gt;inside a parenthetical statement () or []. (toggle with &lt;tt&gt;ess-S-underscore-when-inside-paren&lt;/tt&gt;)&lt;/li&gt;&lt;li&gt;At the beginning of a line.&lt;/li&gt;&lt;li&gt;In a variable that contains underscores already (for example foo_a) (toggle with &lt;tt&gt;ess-S-underscore-when-variable-contains-underscores&lt;/tt&gt;)&lt;/li&gt;&lt;li&gt;The preceding character is not a tab/space (toggle with &lt;tt&gt;ess-S-underscore-when-last-character-is-a-space&lt;/tt&gt;. Not enabled by default.)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;An exception to #4 is in the following situation:&lt;/p&gt;&lt;pre&gt;a &amp;lt;- b |
&lt;/pre&gt;&lt;p&gt;Pressing an underscore here would produce&lt;/p&gt;&lt;pre&gt;a &amp;lt;- b &amp;lt;-
&lt;/pre&gt;&lt;p&gt;However when in the following situation&lt;/p&gt;&lt;pre&gt;a &amp;lt;- b|
&lt;/pre&gt;&lt;p&gt;Pressing an underscore would produce&lt;/p&gt;&lt;pre&gt;a &amp;lt;- b_
&lt;/pre&gt;&lt;p&gt;This behavior can be toggled by &lt;tt&gt;ess-S-space-underscore-is-assignment&lt;/tt&gt;&lt;/p&gt;&lt;p&gt;If the underscore key is pressed a second time, the assignment operator is removed and replaced by the underscore. &lt;tt&gt;ess-S-assign&lt;/tt&gt;, typically &amp;#x201c; &amp;#8592; &amp;#x201c;, can be customized. In ESS modes other than R/S, an underscore is always inserted.&lt;/p&gt;&lt;p&gt;In addition the ess-smart-underscore attempts to work with noweb-mode&lt;/p&gt;&lt;h2&gt;History&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;22-May-2013 &lt;/b&gt; &amp;#x2013;  Added more ggplot operators. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;21-May-2013 &lt;/b&gt; &amp;#x2013;  Added math to ggplot&amp;#x2019;s functions&amp;#x2026; (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;21-May-2013 &lt;/b&gt; &amp;#x2013;  Added hook to R-mode to make it behave a little better. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;15-May-2013 &lt;/b&gt; &amp;#x2013;  Fixed ess-smart-underscore to work in an inferior R process. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;15-May-2013 &lt;/b&gt; &amp;#x2013;  Added ggplot function prefixes. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;05-Nov-2012 &lt;/b&gt; &amp;#x2013;  Better handling of noweb. I think it Came from Denis Haine and Martin Maechler. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;22-Feb-2012 &lt;/b&gt; &amp;#x2013;  Support unbalanced sexps. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;02-Feb-2012 &lt;/b&gt; &amp;#x2013;  Took out auto-installing. Most package managers don&amp;#x2019;t want you to do this. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;03-Aug-2011 &lt;/b&gt; &amp;#x2013;  Bug fix for parenthetical statement (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;20-Jul-2011 &lt;/b&gt; &amp;#x2013;  Changed to allow underscore instead of assign when inside a parenthetical statement. (Matthew L. Fidler)&lt;/li&gt;&lt;li&gt;&lt;b&gt;15-Jul-2011 &lt;/b&gt; &amp;#x2013;  Bug fix for d[d$CMT &lt;tt&gt;&lt;/tt&gt; 2,&amp;#x201c;DV&amp;#x201d;] _ to produce d[d$CMT &lt;tt&gt;&lt;/tt&gt; 2,&amp;#x201c;DV&amp;#x201d;] &amp;#8592; (Matthew L. Fidler)* Variables &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Customizable Variables&lt;/h3&gt;&lt;h3&gt;Internal Variables&lt;/h3&gt;&lt;h2&gt;Functions&lt;/h2&gt;&lt;h3&gt;Interactive Functions&lt;/h3&gt;&lt;h3&gt;Internal Functions&lt;/h3&gt;&lt;p&gt;This was generated with &lt;a class="local" href="http://www.emacswiki.org/emacs/OrgReadme"&gt;OrgReadme&lt;/a&gt;. On updating the library, this page is likely to be replaced with updated content.&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 22:02:13 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_EssSmartUnderscore</comments>
<dc:contributor>MatthewL.Fidler</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>7</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=EssSmartUnderscore</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=EssSmartUnderscore</wiki:diff>
</item>

<item>
<title>ess-smart-underscore.el</title>
<link>http://www.emacswiki.org/emacs/ess-smart-underscore.el</link>
<guid>http://www.emacswiki.org/emacs/ess-smart-underscore.el</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;; Version: 0.&lt;strong class="changes"&gt;78&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; Version: 0.&lt;strong class="changes"&gt;79&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; 22-May-2013    Matthew L. Fidler  &lt;br /&gt;&amp;gt; ;;    Last-Updated: Mon Apr  9 15:27:09 2012 (-0500) #137 (Matthew L. Fidler)&lt;br /&gt;&amp;gt; ;;    Added more ggplot operators. &lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;   &lt;strong class="changes"&gt;'("aes"&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;   &lt;strong class="changes"&gt;'(&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;     "&lt;strong class="changes"&gt;math&lt;/strong&gt;"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;     "&lt;strong class="changes"&gt;aes&lt;/strong&gt;"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;     "continuous"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Deleted:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;     "trans"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;     "math"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;     "trans"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;     "update_geom&lt;strong class="changes"&gt;")&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;     "update_geom&lt;strong class="changes"&gt;"&lt;br /&gt;&amp;gt;     )&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p class="download"&gt;&lt;a href="http://www.emacswiki.org/emacs/download/ess-smart-underscore.el"&gt;Download&lt;/a&gt;&lt;/p&gt;&lt;pre&gt;&lt;span class="comment"&gt;;;; ess-smart-underscore.el --- Ess Smart Underscore&lt;/span&gt;
&lt;span class="comment"&gt;;;&lt;/span&gt;
&lt;span class="comment"&gt;;; Filename: ess-smart-underscore.el&lt;/span&gt;
&lt;span class="comment"&gt;;; Description: ess-smart-underscore&lt;/span&gt;
&lt;span class="comment"&gt;;; Author: Matthew L. Fidler&lt;/span&gt;
&lt;span class="comment"&gt;;; Maintainer: Matthew Fidler&lt;/span&gt;
&lt;span class="comment"&gt;;; Created: Thu Jul 14 11:04:42 2011 (-0500)&lt;/span&gt;
&lt;span class="comment"&gt;;; Version: 0.79&lt;/span&gt;
&lt;span class="comment"&gt;;; Last-Updated: Mon Apr  9 15:27:09 2012 (-0500)&lt;/span&gt;
&lt;span class="comment"&gt;;;           By: Matthew L. Fidler&lt;/span&gt;
&lt;span class="comment"&gt;;;     Update #: 137&lt;/span&gt;
&lt;span class="comment"&gt;;; URL: http&lt;span class="builtin"&gt;://github&lt;/span&gt;.com/mlf176f2/ess-smart-underscore.el&lt;/span&gt;
&lt;span class="comment"&gt;;; Keywords: ESS, underscore&lt;/span&gt;
&lt;span class="comment"&gt;;; Compatibility&lt;span class="builtin"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; Features that might be required by this library&lt;span class="builtin"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="comment"&gt;;;&lt;/span&gt;
&lt;span class="comment"&gt;;;   `&lt;span class="constant important"&gt;custom&lt;/span&gt;', `&lt;span class="constant important"&gt;easymenu&lt;/span&gt;', `&lt;span class="constant important"&gt;ess&lt;/span&gt;', `&lt;span class="constant important"&gt;ess-compat&lt;/span&gt;', `&lt;span class="constant important"&gt;ess-custom&lt;/span&gt;',&lt;/span&gt;
&lt;span class="comment"&gt;;;   `&lt;span class="constant important"&gt;font-lock&lt;/span&gt;', `&lt;span class="constant important"&gt;syntax&lt;/span&gt;', `&lt;span class="constant important"&gt;widget&lt;/span&gt;'.&lt;/span&gt;
&lt;span class="comment"&gt;;;&lt;/span&gt;
&lt;span class="comment"&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class="comment"&gt;;;&lt;/span&gt;
&lt;span class="comment"&gt;;;; Commentary&lt;span class="builtin"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; * Installation&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; To use without using a package manager&lt;span class="builtin"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;;  - Put the library in a directory in the emacs load path, like ~/.emacs.d&lt;/span&gt;
&lt;span class="comment"&gt;;;  - Add (&lt;span class="keyword"&gt;require&lt;/span&gt; '&lt;span class="constant"&gt;ess-smart-underscore&lt;/span&gt;) in your ~/.emacs file&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; This is in emacswiki, so this package can also be installed using el-get.&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; After installing el-get, Type M-x el-get-install ess-smart-underscore.&lt;/span&gt;
&lt;span class="comment"&gt;;; * Ess-Smart Underscore Package Information&lt;/span&gt;
&lt;span class="comment"&gt;;; Smart &lt;span class="string"&gt;"_"&lt;/span&gt; key: insert `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;', unless&lt;span class="builtin"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;;   1. in string/comment&lt;/span&gt;
&lt;span class="comment"&gt;;;   2. after a $ (like d$one_two) (toggle with `ess-S-underscore-after-$')&lt;/span&gt;
&lt;span class="comment"&gt;;;   3. when the underscore is part of a variable definition previously defined.&lt;/span&gt;
&lt;span class="comment"&gt;;;      (toggle with `&lt;span class="constant important"&gt;ess-S-underscore-after-defined&lt;/span&gt;')&lt;/span&gt;
&lt;span class="comment"&gt;;;   4. when the underscore is after a &lt;span class="string"&gt;"="&lt;/span&gt; or &lt;span class="string"&gt;"&amp;lt;-"&lt;/span&gt; on the same line.&lt;/span&gt;
&lt;span class="comment"&gt;;;   5. inside a parenthetical statement () or [].&lt;/span&gt;
&lt;span class="comment"&gt;;;      (toggle with `&lt;span class="constant important"&gt;ess-S-underscore-when-inside-paren&lt;/span&gt;')&lt;/span&gt;
&lt;span class="comment"&gt;;;   6. At the beginning of a line.&lt;/span&gt;
&lt;span class="comment"&gt;;;   7. In a variable that contains underscores already (for example foo_a)&lt;/span&gt;
&lt;span class="comment"&gt;;;      (toggle with `&lt;span class="constant important"&gt;ess-S-underscore-when-variable-contains-underscores&lt;/span&gt;')&lt;/span&gt;
&lt;span class="comment"&gt;;;   8. The preceding character is not a tab/space (toggle with&lt;/span&gt;
&lt;span class="comment"&gt;;;      `&lt;span class="constant important"&gt;ess-S-underscore-when-last-character-is-a-space&lt;/span&gt;'.  Not enabled&lt;/span&gt;
&lt;span class="comment"&gt;;;      by default.)&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; An exception to &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; a &amp;lt;- b |&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; Pressing an underscore here would produce&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; a &amp;lt;- b &amp;lt;-&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; However when in the following situation&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; a &amp;lt;- b|&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; Pressing an underscore would produce&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; a &amp;lt;- b_&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; This behavior can be toggled by `&lt;span class="constant important"&gt;ess-S-space-underscore-is-assignment&lt;/span&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; If the underscore key is pressed a second time, the assignment&lt;/span&gt;
&lt;span class="comment"&gt;;; operator is removed and replaced by the underscore.  `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;',&lt;/span&gt;
&lt;span class="comment"&gt;;; typically &lt;span class="string"&gt;" &amp;lt;- "&lt;/span&gt;, can be customized.  In ESS modes other than R/S,&lt;/span&gt;
&lt;span class="comment"&gt;;; an underscore is always inserted.&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; In addition the ess-smart-underscore attempts to work with noweb-mode&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class="comment"&gt;;;&lt;/span&gt;
&lt;span class="comment"&gt;;;; Change Log&lt;span class="builtin"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="comment"&gt;;; 22-May-2013    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Mon Apr  9 15:27:09 2012 (-0500) #137 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Added more ggplot operators. &lt;/span&gt;
&lt;span class="comment"&gt;;; 21-May-2013    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Mon Apr  9 15:27:09 2012 (-0500) #137 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Added math to ggplot's functions...&lt;/span&gt;
&lt;span class="comment"&gt;;; 21-May-2013    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Mon Apr  9 15:27:09 2012 (-0500) #137 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Added hook to R-mode to make it behave a little better.&lt;/span&gt;
&lt;span class="comment"&gt;;; 15-May-2013    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Mon Apr  9 15:27:09 2012 (-0500) #137 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Fixed ess-smart-underscore to work in an inferior R process.&lt;/span&gt;
&lt;span class="comment"&gt;;; 15-May-2013    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Mon Apr  9 15:27:09 2012 (-0500) #137 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Added ggplot function prefixes.  &lt;/span&gt;
&lt;span class="comment"&gt;;; 05-Nov-2012    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Mon Apr  9 15:27:09 2012 (-0500) #137 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Better handling of noweb.  I think it Came from Denis Haine and&lt;/span&gt;
&lt;span class="comment"&gt;;;    Martin Maechler.&lt;/span&gt;
&lt;span class="comment"&gt;;; 22-Feb-2012    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Wed Feb 22 20:27:04 2012 (-0600) #120 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Support unbalanced sexps.&lt;/span&gt;
&lt;span class="comment"&gt;;; 02-Feb-2012    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Thu Feb  2 21:06:52 2012 (-0600) #117 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Took out auto-installing.  Most package managers don't want you&lt;/span&gt;
&lt;span class="comment"&gt;;;    to do this.&lt;/span&gt;
&lt;span class="comment"&gt;;; 03-Aug-2011    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Wed Aug  3 15:05:15 2011 (-0500) #112 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Bug fix for parenthetical statement&lt;/span&gt;
&lt;span class="comment"&gt;;; 20-Jul-2011    Matthew L. Fidler  &lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Wed Jul 20 15:20:10 2011 (-0500) #101 (Matthew L. Fidler)&lt;/span&gt;

&lt;span class="comment"&gt;;;    Changed to allow underscore instead of assign when inside a&lt;/span&gt;
&lt;span class="comment"&gt;;;    parenthetical statement.&lt;/span&gt;

&lt;span class="comment"&gt;;; 15-Jul-2011    Matthew L. Fidler&lt;/span&gt;
&lt;span class="comment"&gt;;;    Last-Updated: Fri Jul 15 11:34:52 2011 (-0500) #90 (Matthew L. Fidler)&lt;/span&gt;
&lt;span class="comment"&gt;;;    Bug fix for d[d$CMT == 2,&lt;span class="string"&gt;"DV"&lt;/span&gt;] _ to produce d[d$CMT == 2,&lt;span class="string"&gt;"DV"&lt;/span&gt;] &amp;lt;-&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; This program is free software; you can redistribute it and/or&lt;/span&gt;
&lt;span class="comment"&gt;;; modify it under the terms of the GNU General Public License as&lt;/span&gt;
&lt;span class="comment"&gt;;; published by the Free Software Foundation; either version 3, or&lt;/span&gt;
&lt;span class="comment"&gt;;; (at your option) any later version.&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; This program is distributed in the hope that it will be useful,&lt;/span&gt;
&lt;span class="comment"&gt;;; but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/span&gt;
&lt;span class="comment"&gt;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;/span&gt;
&lt;span class="comment"&gt;;; General Public License for more details.&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;; You should have received a copy of the GNU General Public License&lt;/span&gt;
&lt;span class="comment"&gt;;; along with this program; see the file COPYING.  If not, write to&lt;/span&gt;
&lt;span class="comment"&gt;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth&lt;/span&gt;
&lt;span class="comment"&gt;;; Floor, Boston, MA 02110-1301, USA.&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class="comment"&gt;;; &lt;/span&gt;
&lt;span class="comment"&gt;;;; Code&lt;span class="builtin"&gt;:&lt;/span&gt;&lt;/span&gt;
(&lt;span class="keyword"&gt;require&lt;/span&gt; '&lt;span class="constant"&gt;ess&lt;/span&gt;)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-after-&lt;/span&gt;$ t
  &lt;span class="string"&gt;"Should underscore produce an underscore if it is an element of a list/data structure?

 Used by \\[&lt;span class="constant important"&gt;ess-smart-underscore&lt;/span&gt;]."&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-after-defined&lt;/span&gt; t
  &lt;span class="string"&gt;"Should underscore produce an underscore if it is after a variable has been defined?

 Used by \\[&lt;span class="constant important"&gt;ess-smart-underscore&lt;/span&gt;]."&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-after-&lt;/span&gt;&amp;lt;-or-= t
  &lt;span class="string"&gt;"Should underscore produce an underscore if it is after a \"&amp;lt;-\" or \"=\"?

 Used by \\[&lt;span class="constant important"&gt;ess-smart-underscore&lt;/span&gt;]."&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-space-underscore-is-assignment&lt;/span&gt; t
  &lt;span class="string"&gt;"Should underscore produce `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;' when a space is right before the cursor.

Used by \\[&lt;span class="constant important"&gt;ess-smart-underscore&lt;/span&gt;]."&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-when-inside-paren&lt;/span&gt; t
  &lt;span class="string"&gt;"Should an underscore be produced instead of `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;' when inside a parenthetical expression?"&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-when-inside-unbalanced-parenthesis&lt;/span&gt; t
  &lt;span class="string"&gt;"Should an underscore be produced instead of `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;' when inside an unbalanced parenthetical expression such as:

  foo(bar_

This requires `&lt;span class="constant important"&gt;ess-S-underscore-when-inside-paren&lt;/span&gt;' to be true.
"&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-when-preceeding-words&lt;/span&gt;
  '(
    &lt;span class="string"&gt;"add"&lt;/span&gt;
    &lt;span class="string"&gt;"aes"&lt;/span&gt;
    &lt;span class="string"&gt;"annotation"&lt;/span&gt;
    &lt;span class="string"&gt;"calc"&lt;/span&gt;
    &lt;span class="string"&gt;"continuous"&lt;/span&gt;
    &lt;span class="string"&gt;"coord"&lt;/span&gt;
    &lt;span class="string"&gt;"cut"&lt;/span&gt;
    &lt;span class="string"&gt;"discrete"&lt;/span&gt;
    &lt;span class="string"&gt;"element"&lt;/span&gt;
    &lt;span class="string"&gt;"expand"&lt;/span&gt;
    &lt;span class="string"&gt;"facet"&lt;/span&gt;
    &lt;span class="string"&gt;"geom"&lt;/span&gt;
    &lt;span class="string"&gt;"gg"&lt;/span&gt;
    &lt;span class="string"&gt;"guide"&lt;/span&gt;
    &lt;span class="string"&gt;"label"&lt;/span&gt;
    &lt;span class="string"&gt;"last"&lt;/span&gt;
    &lt;span class="string"&gt;"math"&lt;/span&gt;
    &lt;span class="string"&gt;"mean"&lt;/span&gt;
    &lt;span class="string"&gt;"position"&lt;/span&gt;
    &lt;span class="string"&gt;"scale"&lt;/span&gt;
    &lt;span class="string"&gt;"scale_color"&lt;/span&gt;
    &lt;span class="string"&gt;"scale_colour"&lt;/span&gt;
    &lt;span class="string"&gt;"scale_x"&lt;/span&gt;
    &lt;span class="string"&gt;"scale_y"&lt;/span&gt;
    &lt;span class="string"&gt;"stat"&lt;/span&gt;
    &lt;span class="string"&gt;"theme"&lt;/span&gt;
    &lt;span class="string"&gt;"trans"&lt;/span&gt;
    &lt;span class="string"&gt;"translate"&lt;/span&gt;
    &lt;span class="string"&gt;"translate_qplot"&lt;/span&gt;
    &lt;span class="string"&gt;"update"&lt;/span&gt;
    &lt;span class="string"&gt;"update_"&lt;/span&gt;
    &lt;span class="string"&gt;"update_geom"&lt;/span&gt;
    )
  &lt;span class="string"&gt;"Things that should have underscores after them. "&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; '(repeat
          (string &lt;span class="builtin"&gt;:tag&lt;/span&gt; &lt;span class="string"&gt;"Word"&lt;/span&gt;)))


(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-when-variable-contains-underscores&lt;/span&gt; t
  &lt;span class="string"&gt;"Should an underscore be produced instead of `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;' when variable already contains an underscore?"&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

(&lt;span class="keyword"&gt;defcustom&lt;/span&gt; &lt;span class="variable"&gt;ess-S-underscore-when-last-character-is-a-space&lt;/span&gt; nil
  &lt;span class="string"&gt;"ESS produces an underscore only when the last character is not a space or a tab."&lt;/span&gt;
  &lt;span class="builtin"&gt;:group&lt;/span&gt; 'ess-S
  &lt;span class="builtin"&gt;:type&lt;/span&gt; 'boolean)

&lt;span class="comment"&gt;;;;###&lt;span class="warning"&gt;autoload&lt;/span&gt;&lt;/span&gt;
(&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;ess-smarter-underscore&lt;/span&gt; ()
  &lt;span class="string"&gt;"Smart \"_\" key: insert `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;', unless:
  1. in string/comment
  2. after a $ (like d$one_two) (toggle with `ess-S-underscore-after-$')
  3. when the underscore is part of a variable definition previously defined.
     (toggle with `&lt;span class="constant important"&gt;ess-S-underscore-after-defined&lt;/span&gt;')
  4. when the underscore is after a \"=\" or \"&amp;lt;-\" on the same line.
     (toggle with `ess-S-underscore-after-&amp;lt;-or-=')
  5. inside a parenthetical statement () or [].
     (toggle with `&lt;span class="constant important"&gt;ess-S-underscore-when-inside-paren&lt;/span&gt;')
  6. At the beginning of a line.
  7. In a variable that contains underscores already (for example foo_a)
     (toggle with `&lt;span class="constant important"&gt;ess-S-underscore-when-variable-contains-underscores&lt;/span&gt;')
  8. The preceding character is not a tab/space
     (toggle with `&lt;span class="constant important"&gt;ess-S-underscore-when-last-character-is-a-space&lt;/span&gt;'.  Not enabled by default.)
  9. The preceding words/characters are in `&lt;span class="constant important"&gt;ess-S-underscore-when-preceeding-words&lt;/span&gt;'


An exception to #4 is in the following situation:

a &amp;lt;- b |

pressing an underscore here would produce

a &amp;lt;- b &amp;lt;-

However when in the following situation

a &amp;lt;- b|

pressing an underscore would produce

a &amp;lt;- b_

This behavior can be toggled by `&lt;span class="constant important"&gt;ess-S-space-underscore-is-assignment&lt;/span&gt;'

If the underscore key is pressed a second time, the assignment
operator is removed and replaced by the underscore.  `&lt;span class="constant important"&gt;ess-S-assign&lt;/span&gt;',
typically \" &amp;lt;- \", can be customized.  In ESS modes other than R/S,
an underscore is always inserted. "&lt;/span&gt;
  (interactive)
  &lt;span class="comment"&gt;;;(insert (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; (ess-inside-string-or-comment-p (point)) &lt;span class="string"&gt;"_"&lt;/span&gt;&lt;/span&gt;
  &lt;span class="comment"&gt;;;ess-S-assign))&lt;/span&gt;
  &lt;span class="comment"&gt;;;(message &lt;span class="string"&gt;"%s"&lt;/span&gt; (looking-back &lt;span class="string"&gt;"_[&lt;span class="negation"&gt;^&lt;/span&gt; \t\n]*?\\="&lt;/span&gt;))&lt;/span&gt;
  (&lt;span class="keyword elisp"&gt;save-restriction&lt;/span&gt;
    (&lt;span class="keyword cl"&gt;ignore-errors&lt;/span&gt;
      (&lt;span class="keyword cl"&gt;when&lt;/span&gt; (and (eq major-mode 'inferior-ess-mode)
                 (&amp;gt; (point) (process-mark (get-buffer-process
                                           (current-buffer)))))
        (narrow-to-region (process-mark (get-ess-process)) (point-max)))
      (and ess-noweb-mode
           (noweb-in-code-chunk)
           (noweb-narrow-to-chunk)))
    (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; (or
         (not (equal ess-language &lt;span class="string"&gt;"S"&lt;/span&gt;))
         (looking-back &lt;span class="string"&gt;"^[ \t\n]*\\="&lt;/span&gt;)
         (looking-back (regexp-opt ess-S-underscore-when-preceeding-words t))
         (and ess-S-underscore-when-variable-contains-underscores
              (looking-back &lt;span class="string"&gt;"_[&lt;span class="negation"&gt;^&lt;/span&gt; \t\n]*?\\="&lt;/span&gt;))
         (and ess-S-underscore-when-last-character-is-a-space
              (looking-back &lt;span class="string"&gt;"[&lt;span class="negation"&gt;^&lt;/span&gt; \t]\\="&lt;/span&gt;))
         (ess-inside-string-or-comment-p (point))
         &lt;span class="comment"&gt;;; Data&lt;/span&gt;
         (and ess-S-underscore-after-$ (&lt;span class="keyword elisp"&gt;save-match-data&lt;/span&gt; (&lt;span class="keyword elisp"&gt;save-excursion&lt;/span&gt; (re-search-backward &lt;span class="string"&gt;"\\([$]\\)[A-Za-z0-9.]+\\="&lt;/span&gt; nil t))))
         (and ess-S-underscore-after-&amp;lt;-or-=
              (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; ((ret (&lt;span class="keyword elisp"&gt;save-match-data&lt;/span&gt; (and (not (looking-back ess-S-assign))
                                               (looking-back &lt;span class="string"&gt;"\\(&amp;lt;-\\|\\&amp;lt;=\\&amp;gt;\\).*"&lt;/span&gt;)))))
                (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; (and ret ess-S-space-underscore-is-assignment
                         (looking-back &lt;span class="string"&gt;"[ \t]"&lt;/span&gt;))
                    (setq ret nil))
                (symbol-value 'ret)))
         &lt;span class="comment"&gt;;; Look for variable&lt;/span&gt;
         (and ess-S-underscore-after-defined
              (not (looking-back ess-S-assign)) &lt;span class="comment"&gt;; Hack to fix bug&lt;/span&gt;
              (&lt;span class="keyword elisp"&gt;save-match-data&lt;/span&gt;
                (&lt;span class="keyword elisp"&gt;save-excursion&lt;/span&gt;
                  (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; (word)
                    (&lt;span class="keyword cl"&gt;when&lt;/span&gt; (looking-back &lt;span class="string"&gt;"\\&amp;lt;[A-Za-z0-9.]+[ \t]*"&lt;/span&gt;)
                      (setq word (match-string 0))
                      (setq ret
                            (or (re-search-backward (format &lt;span class="string"&gt;"^[ \t]*%s_[A-Za-z0-9.]*[ \t]*\\(&amp;lt;-\\|=\\)"&lt;/span&gt; word) nil t)
                                (re-search-backward (format &lt;span class="string"&gt;"-&amp;gt;[ \t]*%s_[A-Za-z0-9.]*[ \t]*$"&lt;/span&gt; word) nil t)))
                      (symbol-value 'ret))))))
         (and ess-S-underscore-when-inside-paren
              (&lt;span class="keyword elisp"&gt;save-match-data&lt;/span&gt;
                (&lt;span class="keyword elisp"&gt;save-excursion&lt;/span&gt;
                  (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; ((pt (point))
                        ret)
                    (&lt;span class="keyword cl"&gt;when&lt;/span&gt; (re-search-backward &lt;span class="string"&gt;"\\((\\|\\[\\).*\\="&lt;/span&gt; nil t)
                      (&lt;span class="keyword elisp"&gt;condition-case&lt;/span&gt; err
                          (&lt;span class="keyword elisp"&gt;progn&lt;/span&gt;
                            (forward-sexp)
                            (&lt;span class="keyword cl"&gt;when&lt;/span&gt; (&amp;gt; (point) pt)
                              (setq ret t)))
                        (&lt;span class="warning"&gt;error&lt;/span&gt;
                         (&lt;span class="keyword cl"&gt;when&lt;/span&gt; ess-S-underscore-when-inside-unbalanced-parenthesis
                           (setq ret 't)))))
                    (symbol-value 'ret))))))
        (insert &lt;span class="string"&gt;"_"&lt;/span&gt;)
      &lt;span class="comment"&gt;;; Else one keypress produces ess-S-assign; a second keypress will delete&lt;/span&gt;
      &lt;span class="comment"&gt;;; ess-S-assign and instead insert _&lt;/span&gt;
      &lt;span class="comment"&gt;;; Rather than trying to count a second _ keypress, just check whether&lt;/span&gt;
      &lt;span class="comment"&gt;;; the current point is preceded by ess-S-assign.&lt;/span&gt;
      (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; ((assign-len (length ess-S-assign)))
        (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; (and
             (&amp;gt;= (point) (+ assign-len (point-min))) &lt;span class="comment"&gt;;check that we can move back&lt;/span&gt;
             (looking-back ess-S-assign))
            &lt;span class="comment"&gt;;; If we are currently looking at ess-S-assign, replace it with _&lt;/span&gt;
            (&lt;span class="keyword elisp"&gt;progn&lt;/span&gt;
              (replace-match &lt;span class="string"&gt;""&lt;/span&gt;)
              (insert &lt;span class="string"&gt;"_"&lt;/span&gt;))
          (delete-horizontal-space)
          (insert ess-S-assign))))))
(define-key ess-mode-map (kbd &lt;span class="string"&gt;"_"&lt;/span&gt;) 'ess-smarter-underscore)

(&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;ess-smart-underscore-add-inf&lt;/span&gt; ()
  &lt;span class="string"&gt;"Add to inferior mode."&lt;/span&gt;
  (local-set-key (kbd &lt;span class="string"&gt;"_"&lt;/span&gt;) 'ess-smarter-underscore))

(add-hook 'ess-R-post-run-hook 'ess-smart-underscore-add-inf)
(add-hook 'R-mode-hook 'ess-smart-underscore-add-inf)
(&lt;span class="keyword"&gt;provide&lt;/span&gt; '&lt;span class="constant"&gt;ess-smart-underscore&lt;/span&gt;)
&lt;span class="comment"&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class="comment"&gt;;;; ess-smart-underscore.el ends here&lt;/span&gt;&lt;/pre&gt;</description>
<pubDate>Wed, 22 May 2013 22:00:49 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_ess-smart-underscore.el</comments>
<dc:contributor>MatthewL.Fidler</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>20</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=ess-smart-underscore.el</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=ess-smart-underscore.el</wiki:diff>
</item>

<item>
<title>ignoramus.el</title>
<link>http://www.emacswiki.org/emacs/ignoramus.el</link>
<guid>http://www.emacswiki.org/emacs/ignoramus.el</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;; Version: 0.6.&lt;strong class="changes"&gt;4&lt;/strong&gt;&lt;br /&gt;&amp;lt; ;; Last-Updated: &lt;strong class="changes"&gt;18 Oct 2012&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; Version: 0.6.&lt;strong class="changes"&gt;8&lt;/strong&gt;&lt;br /&gt;&amp;gt; ;; Last-Updated: &lt;strong class="changes"&gt;22 May 2013&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;; &lt;strong class="changes"&gt;requires&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;; &lt;strong class="changes"&gt;requirements&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;   :version "0.6.&lt;strong class="changes"&gt;4&lt;/strong&gt;"&lt;br /&gt;&amp;lt;   :link '(emacs-commentary-link "ignoramus")&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;   :version "0.6.&lt;strong class="changes"&gt;8&lt;/strong&gt;"&lt;br /&gt;&amp;gt;   :link '(emacs-commentary-link &lt;strong class="changes"&gt;:tag "Commentary"&lt;/strong&gt; "ignoramus&lt;strong class="changes"&gt;")&lt;br /&gt;&amp;gt;   :link '(url-link :tag "Github" "http://github.com/rolandwalker/ignoramus")&lt;br /&gt;&amp;gt;   :link '(url-link :tag "EmacsWiki" "http://emacswiki.org/emacs/Ignoramus&lt;/strong&gt;")&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;     ".ttc"                                    ; template toolkit&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;     ((null str-or-sym)&lt;br /&gt;&amp;gt;      nil)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;This page is too big to send over RSS.&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 16:47:39 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_ignoramus.el</comments>
<dc:contributor>roland.walker</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>5</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=ignoramus.el</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=ignoramus.el</wiki:diff>
</item>

<item>
<title>hardhat.el</title>
<link>http://www.emacswiki.org/emacs/hardhat.el</link>
<guid>http://www.emacswiki.org/emacs/hardhat.el</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;; Version: 0.&lt;strong class="changes"&gt;3&lt;/strong&gt;.&lt;strong class="changes"&gt;6&lt;/strong&gt;&lt;br /&gt;&amp;lt; ;; Last-Updated: &lt;strong class="changes"&gt;18 Oct 2012&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; Version: 0.&lt;strong class="changes"&gt;4&lt;/strong&gt;.&lt;strong class="changes"&gt;0&lt;/strong&gt;&lt;br /&gt;&amp;gt; ;; Last-Updated: &lt;strong class="changes"&gt;22 May 2013&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;; If a buffer is not visiting a file, hardhat-mode has no effect.&lt;br /&gt;&amp;lt; ;; If the visited file is not writable by the user, hardhat-mode&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; If a buffer is not visiting a file, &lt;strong class="changes"&gt;`&lt;/strong&gt;hardhat-mode&lt;strong class="changes"&gt;'&lt;/strong&gt; has no effect.&lt;br /&gt;&amp;gt; ;; If the visited file is not writable by the user, &lt;strong class="changes"&gt;`&lt;/strong&gt;hardhat-mode&lt;strong class="changes"&gt;'&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;     &lt;strong class="changes"&gt;Hardhat&lt;/strong&gt;-mode takes no action until the user attempts an&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;     &lt;strong class="changes"&gt;`hardhat&lt;/strong&gt;-mode&lt;strong class="changes"&gt;'&lt;/strong&gt; takes no action until the user attempts an&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;     open and write to a file protected by hardhat-mode&lt;strong class="changes"&gt;,&lt;/strong&gt; so long as&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;     open and write to a file protected by &lt;strong class="changes"&gt;`&lt;/strong&gt;hardhat-mode&lt;strong class="changes"&gt;',&lt;/strong&gt; so long as&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;     When `hardhat-protect' is set, no other rules are consulted.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;     When `hardhat-protect' is set &lt;strong class="changes"&gt;to either t or nil&lt;/strong&gt;, no other&lt;br /&gt;&amp;gt; &lt;strong class="changes"&gt;;;&lt;/strong&gt;     rules are consulted.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;; &lt;strong class="changes"&gt;requires&lt;br /&gt;&amp;lt; (eval-when-compile&lt;br /&gt;&amp;lt;   (defvar ert--running-tests))&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;; &lt;strong class="changes"&gt;requirements&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;; declarations&lt;br /&gt;&amp;gt; (eval-when-compile&lt;br /&gt;&amp;gt;   (defvar ert--running-tests))&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;   :version "0.&lt;strong class="changes"&gt;3&lt;/strong&gt;.&lt;strong class="changes"&gt;6&lt;/strong&gt;"&lt;br /&gt;&amp;lt;   :link '(emacs-commentary-link "hardhat")&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;   :version "0.&lt;strong class="changes"&gt;4&lt;/strong&gt;.&lt;strong class="changes"&gt;0&lt;/strong&gt;"&lt;br /&gt;&amp;gt;   :link '(emacs-commentary-link &lt;strong class="changes"&gt;:tag "Commentary"&lt;/strong&gt; "hardhat&lt;strong class="changes"&gt;")&lt;br /&gt;&amp;gt;   :link '(url-link :tag "Github" "http://github.com/rolandwalker/hardhat")&lt;br /&gt;&amp;gt;   :link '(url-link :tag "EmacsWiki" "http://emacswiki.org/emacs/Hardhat&lt;/strong&gt;")&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;                                                    "\\&amp;lt;Compiled template generated by\\&amp;gt;"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;                                                "/\\.git/\\(?:COMMIT_EDITMSG\\|MERGE_MSG\\|SQUASH_MSG\\|rebase-merge/git-rebase-todo\\|description\\|hooks/\\|config\\)\\'"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;                                                "/\\.git/\\(?:COMMIT_EDITMSG\\|MERGE_MSG\\|SQUASH_MSG\\|rebase-merge/git-rebase-todo\\|description\\|hooks/\\|config&lt;strong class="changes"&gt;\\|GHI_ISSUE&lt;/strong&gt;\\)\\'"&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;   (&lt;strong class="changes"&gt;if&lt;/strong&gt; (&lt;strong class="changes"&gt;eq 0 (cdr (subr-arity (symbol-function&lt;/strong&gt; 'called-interactively-p&lt;strong class="changes"&gt;))))&lt;/strong&gt;&lt;br /&gt;&amp;lt;       '(called-interactively-p)&lt;br /&gt;&amp;lt;     `(called-interactively-p ,kind&lt;strong class="changes"&gt;)))&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;   (&lt;strong class="changes"&gt;cond&lt;br /&gt;&amp;gt;     ((not&lt;/strong&gt; (&lt;strong class="changes"&gt;fboundp&lt;/strong&gt; 'called-interactively-p&lt;strong class="changes"&gt;))&lt;/strong&gt;&lt;br /&gt;&amp;gt;      '(&lt;strong class="changes"&gt;interactive-p))&lt;br /&gt;&amp;gt;     ((condition-case nil&lt;br /&gt;&amp;gt;          (progn (&lt;/strong&gt;called-interactively-p &lt;strong class="changes"&gt;'any) t&lt;/strong&gt;)&lt;br /&gt;&amp;gt;        &lt;strong class="changes"&gt;(error nil))&lt;/strong&gt;&lt;br /&gt;&amp;gt;      `(called-interactively-p ,kind&lt;strong class="changes"&gt;))&lt;br /&gt;&amp;gt;     (t&lt;br /&gt;&amp;gt;      '(called-interactively-p))))&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; (defun hardhat-local-variables-hook (&amp;amp;rest &lt;strong class="changes"&gt;args&lt;/strong&gt;)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; (defun hardhat-local-variables-hook (&amp;amp;rest &lt;strong class="changes"&gt;_ignored&lt;/strong&gt;)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; The file-local variable `hardhat-protect' is tested."&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; The file-local variable `hardhat-protect' is tested&lt;strong class="changes"&gt;.&lt;br /&gt;&amp;gt; Any arguments are ignored&lt;/strong&gt;."&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; (defun hardhat-local-hook (&amp;amp;rest &lt;strong class="changes"&gt;args&lt;/strong&gt;)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; (defun hardhat-local-hook (&amp;amp;rest &lt;strong class="changes"&gt;_ignored&lt;/strong&gt;)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; &lt;strong class="changes"&gt;ARGS&lt;/strong&gt; are ignored."&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; &lt;strong class="changes"&gt;Any arguments&lt;/strong&gt; are ignored."&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; (defun hardhat-global-hook (&amp;amp;rest &lt;strong class="changes"&gt;args&lt;/strong&gt;)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; (defun hardhat-global-hook (&amp;amp;rest &lt;strong class="changes"&gt;_ignored&lt;/strong&gt;)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; &lt;strong class="changes"&gt;ARGS&lt;/strong&gt; are ignored."&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; &lt;strong class="changes"&gt;Any arguments&lt;/strong&gt; are ignored."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;This page is too big to send over RSS.&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 16:46:33 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_hardhat.el</comments>
<dc:contributor>roland.walker</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>4</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=hardhat.el</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=hardhat.el</wiki:diff>
</item>

<item>
<title>unicode-fonts.el</title>
<link>http://www.emacswiki.org/emacs/unicode-fonts.el</link>
<guid>http://www.emacswiki.org/emacs/unicode-fonts.el</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;; Version: 0.3.&lt;strong class="changes"&gt;4&lt;/strong&gt;&lt;br /&gt;&amp;lt; ;; Last-Updated: &lt;strong class="changes"&gt;10 Oct 2012&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; Version: 0.3.&lt;strong class="changes"&gt;6&lt;/strong&gt;&lt;br /&gt;&amp;gt; ;; Last-Updated: &lt;strong class="changes"&gt;22 May 2013&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;        http://users.teilar.gr/~g1951d/&lt;strong class="changes"&gt;Symbola702&lt;/strong&gt;.zip&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;        http://users.teilar.gr/~g1951d/&lt;strong class="changes"&gt;Symbola706&lt;/strong&gt;.zip&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;; configure.  &lt;strong class="changes"&gt;Furthermore&lt;/strong&gt;, the default setup does not always pick &lt;strong class="changes"&gt;the&lt;/strong&gt;&lt;br /&gt;&amp;lt; ;; most legible fonts.  As the manual warns, the choice of font&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; configure.  &lt;strong class="changes"&gt;In addition&lt;/strong&gt;, the default setup does not always pick&lt;br /&gt;&amp;gt; ;; &lt;strong class="changes"&gt;the&lt;/strong&gt; most legible fonts.  As the manual warns, the choice of font&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;; Unicode provides a way to organize font mappings: it divides character&lt;br /&gt;&amp;lt; &lt;strong class="changes"&gt;;;&lt;/strong&gt; ranges into logical groups called "blocks".  This library configures&lt;br /&gt;&amp;lt; &lt;strong class="changes"&gt;;;&lt;/strong&gt; Emacs in a Unicode-friendly way by providing mappings from&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;; &lt;strong class="changes"&gt;The&lt;/strong&gt; Unicode &lt;strong class="changes"&gt;standard&lt;/strong&gt; provides a way to organize font mappings: it&lt;br /&gt;&amp;gt; &lt;strong class="changes"&gt;;;&lt;/strong&gt; divides character ranges into logical groups called "blocks".  This&lt;br /&gt;&amp;gt; &lt;strong class="changes"&gt;;;&lt;/strong&gt; library configures Emacs in a Unicode-friendly way by providing&lt;br /&gt;&amp;gt; &lt;strong class="changes"&gt;;;&lt;/strong&gt; mappings from&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;; &lt;strong class="changes"&gt;requires&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ;;; &lt;strong class="changes"&gt;requirements&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;   :version "0.3.&lt;strong class="changes"&gt;4&lt;/strong&gt;"&lt;br /&gt;&amp;lt;   :link '(emacs-commentary-link "unicode-fonts")&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;   :version "0.3.&lt;strong class="changes"&gt;6&lt;/strong&gt;"&lt;br /&gt;&amp;gt;   :link '(emacs-commentary-link &lt;strong class="changes"&gt;:tag "Commentary"&lt;/strong&gt; "unicode-fonts&lt;strong class="changes"&gt;")&lt;br /&gt;&amp;gt;   :link '(url-link :tag "Github" "http://github.com/rolandwalker/unicode-fonts")&lt;br /&gt;&amp;gt;   :link '(url-link :tag "EmacsWiki" "http://emacswiki.org/emacs/UnicodeFonts&lt;/strong&gt;")&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Deleted:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; ;;; compatibility functions&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt;       (require '&lt;strong class="changes"&gt;alert&lt;/strong&gt;)&lt;br /&gt;&amp;lt;       (setq message-function '&lt;strong class="changes"&gt;alert&lt;/strong&gt;-message-insert))&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt;       (require '&lt;strong class="changes"&gt;express&lt;/strong&gt;)&lt;br /&gt;&amp;gt;       (setq message-function '&lt;strong class="changes"&gt;express&lt;/strong&gt;-message-insert))&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;This page is too big to send over RSS.&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 16:45:01 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_unicode-fonts.el</comments>
<dc:contributor>roland.walker</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>5</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=unicode-fonts.el</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=unicode-fonts.el</wiki:diff>
</item>

<item>
<title>Comments on UploadingImages</title>
<link>http://www.emacswiki.org/emacs/Comments_on_UploadingImages</link>
<guid>http://www.emacswiki.org/emacs/Comments_on_UploadingImages</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last major edit (&lt;a class="diff" rel="nofollow" href="http://www.emacswiki.org/emacs?action=browse;diff=1;id=Comments_on_UploadingImages;diffrevision=1"&gt;later minor edits&lt;/a&gt;)&lt;/b&gt;&lt;/p&gt; &lt;p class="summary"&gt;Summary: === imgur.com hosted images === An ''ordinary URL'' is not defined explicitly, but it would appear to require an image-type suffix (eg. . . .&lt;/p&gt; No diff available.&lt;/div&gt;&lt;hr /&gt;&lt;h3&gt;imgur.com hosted images&lt;/h3&gt;&lt;p&gt;An &lt;em&gt;ordinary URL&lt;/em&gt; is not defined explicitly, but it would appear to require an image-type suffix (eg. &lt;code&gt;.jpg .png .gif&lt;/code&gt; etc.)&lt;/p&gt;&lt;p&gt;&lt;a class="url http" href="http://imgur.com"&gt;http://imgur.com&lt;/a&gt; is a decent, easy-to-use host that does not require an account (unlike Flickr), but their images are not inlined by default &lt;code&gt;http://imgur.com/K2UweJp&lt;/code&gt;&lt;/p&gt;&lt;dl class="quote"&gt;&lt;dl class="quote"&gt;&lt;dl class="quote"&gt;&lt;dt /&gt;&lt;dd&gt;&lt;a class="url http" href="http://imgur.com/K2UweJp"&gt;http://imgur.com/K2UweJp&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/dl&gt;&lt;/dl&gt;&lt;p&gt;Unless you grab the special URL &lt;code&gt;http://i.imgur.com/mEfHEIZ.png&lt;/code&gt;&lt;/p&gt;&lt;dl class="quote"&gt;&lt;dl class="quote"&gt;&lt;dl class="quote"&gt;&lt;dt /&gt;&lt;dd&gt;&lt;img class="url http" src="http://i.imgur.com/mEfHEIZ.png" alt="http://i.imgur.com/mEfHEIZ.png" /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/dl&gt;&lt;/dl&gt;&lt;p&gt;&lt;strong&gt;To top it all off, this matches something in &lt;a class="local" href="http://www.emacswiki.org/emacs/BannedRegexps"&gt;BannedRegexps&lt;/a&gt; and can&amp;#x2019;t be posted in the main page&lt;/strong&gt; Surprisingly (worringly?), comments don&amp;#x2019;t get the same ban-hammer.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/MichaelPaulukonis"&gt;MichaelPaulukonis&lt;/a&gt; 2013-05-22 15:30 UTC&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 15:30:21 GMT</pubDate>
<dc:contributor>MichaelPaulukonis</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=Comments_on_UploadingImages</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=Comments_on_UploadingImages</wiki:diff>
</item>

<item>
<title>EmacsWikiProblems</title>
<link>http://www.emacswiki.org/emacs/EmacsWikiProblems</link>
<guid>http://www.emacswiki.org/emacs/EmacsWikiProblems</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; == DuckDuckGo search not strictly limited to site ==&lt;br /&gt;&amp;gt; # I search for [[https://duckduckgo.com/?q=storing+dotfiles+site%3Aemacswiki.org|storing dotfiles site:emacswiki.org]]&lt;br /&gt;&amp;gt; # Another site come up first in the results, THEN emacswiki.org, THEN other sites, emacswiki, etc.&lt;br /&gt;&amp;gt; ## same results for [[https://duckduckgo.com/?q=site%3Aemacswiki.org+storing+dotfiles|site:emacswiki.org storing dotfiles]]&lt;br /&gt;&amp;gt; # as much as it pains me to admit this, when I do the same search on google, the results are limited to emacswiki&lt;br /&gt;&amp;gt; ## https://www.google.com/search?q=site%3Aemacswiki.org+storing+dotfiles&lt;br /&gt;&amp;gt; [[http://imgur.com/K2UweJp screenshot @ imgur.com]]&lt;br /&gt;&amp;gt; -- MichaelPaulukonis 2013-05-22 15:15 UTC&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;This page is for recording (or discussion) of current apparent &lt;strong&gt;&lt;a name="Problems" class="definition" title="Click to search for references to this permanent anchor" rel="nofollow" href="http://www.emacswiki.org/emacs?search=%22Problems%22"&gt;Problems&lt;/a&gt;&lt;/strong&gt; with the &lt;a class="local" href="http://www.emacswiki.org/emacs/EmacsWiki"&gt;EmacsWiki&lt;/a&gt; &lt;em&gt;Web site&lt;/em&gt;. The purpose is to point out problems to the site maintainers.&lt;/p&gt;&lt;p&gt;This page is &lt;em&gt;not&lt;/em&gt; for questions or problems about Emacs &amp;#x2013; see &lt;a class="local" href="http://www.emacswiki.org/emacs/OpenQuestions"&gt;OpenQuestions&lt;/a&gt; for that.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Suggestions:&lt;/strong&gt; If you have &lt;em&gt;suggestions&lt;/em&gt; (not problems) for the Emacs Wiki (not Emacs), please contribute them at &lt;strong&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/EmacsWikiSuggestions"&gt;EmacsWikiSuggestions&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Note that this page is not about &lt;a class="local" href="http://www.emacswiki.org/emacs/EmacsWikiMode"&gt;EmacsWikiMode&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Add your problem descriptions below this line&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;h2&gt;DuckDuckGo search not strictly limited to site&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;I search for &lt;a class="url http outside" href="https://duckduckgo.com/?q=storing+dotfiles+site%3Aemacswiki.org"&gt;storing dotfiles site:emacswiki.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Another site come up first in the results, THEN emacswiki.org, THEN other sites, emacswiki, etc.&lt;ol&gt;&lt;li&gt;same results for &lt;a class="url http outside" href="https://duckduckgo.com/?q=site%3Aemacswiki.org+storing+dotfiles"&gt;site:emacswiki.org storing dotfiles&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;as much as it pains me to admit this, when I do the same search on google, the results are limited to emacswiki&lt;ol&gt;&lt;li&gt;&lt;a class="url http" href="https://www.google.com/search?q=site%3Aemacswiki.org+storing+dotfiles"&gt;https://www.google.com/search?q=site%3Aemacswiki.org+storing+dotfiles&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;a class="url http outside" href="http://imgur.com/K2UweJp"&gt;screenshot @ imgur.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/MichaelPaulukonis"&gt;MichaelPaulukonis&lt;/a&gt; 2013-05-22 15:15 UTC&lt;/p&gt;&lt;h2&gt;Disabling new CSS design has no effect on ElispArea&lt;/h2&gt;&lt;p&gt;Title says it all. I disabled it, but it still shows up at &lt;a class="local" href="http://www.emacswiki.org/emacs/ElispArea"&gt;ElispArea&lt;/a&gt;. This was not the case yesterday (2013-04-24) but it is today. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Currently none of the &lt;a class="local" href="http://www.emacswiki.org/emacs/CSS"&gt;CSS&lt;/a&gt; &amp;#x201c;use it&amp;#x201d; links seem to work. Tested with Iceweasel 10 on debian testing and Firefox 20.0 on Ubuntu 12.10. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/LeonidasTsampros"&gt;LeonidasTsampros&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Yeah, I assume they all need &lt;code&gt;;bootstrap=0&lt;/code&gt; or I should check for the presence of the CSS cookie. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Thanks. This works now. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/LeonidasTsampros"&gt;LeonidasTsampros&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Out of curiosity: which one are you using? &amp;#x2013; Alex&lt;/p&gt;&lt;/div&gt;&lt;h2&gt;Still seeing double TOCs&lt;/h2&gt;&lt;p&gt;I removed the entry for the double-TOC in &lt;a class="local" href="http://www.emacswiki.org/emacs/ElispArea"&gt;ElispArea&lt;/a&gt;. But now I see one at &lt;a class="local" href="http://www.emacswiki.org/emacs/HighlightLibrary"&gt;HighlightLibrary&lt;/a&gt;. I suspect that something introduced the problem but perhaps if the page then gets edited and saved anew the problem goes away? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Could be! I just tried looking at &lt;a class="local" href="http://www.emacswiki.org/emacs/HighlightLibrary"&gt;HighlightLibrary&lt;/a&gt; using IE 8&amp;#x2014;the oldest browser I have access to, and it looks ok. Just one table of contents. I&amp;#x2019;ve recently switched to a little piece of Javascript to remove an existing table of contents if it exists and to generate a new one based on the actual headings found in the HTML output instead of the hard to maintain code I have used for so long. Evidently the part about removing the existing table of contents is not working for you. :( &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;hr /&gt;&lt;h2&gt;Search&lt;/h2&gt;&lt;h3&gt;Switch to DuckDuckGo?&lt;/h3&gt;&lt;div class="color one level0"&gt;&lt;p&gt; All these search issues make me think that perhaps we&amp;#x2019;d be better off using &lt;a class="local" href="http://www.emacswiki.org/emacs/DuckDuckGo"&gt;DuckDuckGo&lt;/a&gt;? Apparently, &lt;a class="url http outside" href="http://www.schneier.com/blog/archives/2013/03/changes_to_the.html"&gt;Bruce Schneier uses it&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Issues mentioned below:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="url http outside" href="https://duckduckgo.com/?q=site%3Awww.emacswiki.org+apropos-fn%2Bvar.el"&gt;apropos-fn+var.el&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="url http outside" href="https://duckduckgo.com/?q=site%3Awww.emacswiki.org+BrowseKillRing"&gt;BrowseKillRing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="url http outside" href="https://duckduckgo.com/?q=site%3Awww.emacswiki.org+buff-menu%2B.el"&gt;buff-menu+.el&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="url http outside" href="https://duckduckgo.com/?q=site%3Awww.emacswiki.org+DiredPlus"&gt;DiredPlus&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Then again, I&amp;#x2019;m not sure whether all of these issues still persist. The only one that clearly still didn&amp;#x2019;t work was the &lt;code&gt;DiredPlus&lt;/code&gt; example. Anyway, what do you think? Switch away from Google?&lt;/p&gt;&lt;p&gt;Perhaps I should just offer both in order to allow easy testing. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;Search finds nothing when browser is Chrome&lt;/h3&gt;&lt;p&gt;Using Chrome Version 24.0.1312.52 m and Windows 7 Pro Version 6.1 (Build 7601: Service Pack 1)&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Works for me. Chrome Version 25.0.1364.97 m and Windows XP SP3. My guess is a temporary hickup by Google. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;Site search misses stuff&lt;/h3&gt;&lt;p&gt;Search for &amp;#x201c;apropos-fn+var.el&amp;#x201d;, or even just &amp;#x201c;apropos-fn+var&amp;#x201d;. You will not find most of the pages that link to page &lt;tt&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/apropos-fn%2bvar.el"&gt;apropos-fn+var.el&lt;/a&gt;&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;Now search for just &amp;#x201c;apropos-fn&amp;#x201d;, and you will find them &amp;#x2013; 4 pages of links.&lt;/p&gt;&lt;p&gt;Now try searching for &amp;#x201c;&lt;a class="local" href="http://www.emacswiki.org/emacs/BrowseKillRing"&gt;BrowseKillRing&lt;/a&gt;&amp;#x201d; &amp;#x2013; that page is not found. Now try &amp;#x201c;browse kill ring&amp;#x201d; or &amp;#x201c;browse-kill-ring&amp;#x201d;. After checking the 10 pages of links you discover that page &lt;a class="local" href="http://www.emacswiki.org/emacs/BrowseKillRing"&gt;BrowseKillRing&lt;/a&gt; appeards nowhere.&lt;/p&gt;&lt;p&gt;Now try to find this page: &lt;a class="local" href="http://www.emacswiki.org/emacs/BufferMenuPlus"&gt;BufferMenuPlus&lt;/a&gt;. Now try clicking the title of page &lt;tt&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/buff-menu%2b.el"&gt;buff-menu+.el&lt;/a&gt;&lt;/tt&gt; and looking through the search-hit links for page &lt;a class="local" href="http://www.emacswiki.org/emacs/BufferMenuPlus"&gt;BufferMenuPlus&lt;/a&gt;. No luck. Same thing for &lt;a class="local" href="http://www.emacswiki.org/emacs/DiredPlus"&gt;DiredPlus&lt;/a&gt; from &lt;tt&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/dired%2b.el"&gt;dired+.el&lt;/a&gt;&lt;/tt&gt;. Try finding &lt;a class="local" href="http://www.emacswiki.org/emacs/DiredSortMenu"&gt;DiredSortMenu&lt;/a&gt; using &amp;#x201c;dired sort menu&amp;#x201d; or by clicking the title of &lt;tt&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/dired-sort-menu%2b.el"&gt;dired-sort-menu+.el&lt;/a&gt;&lt;/tt&gt;. You get the idea.&lt;/p&gt;&lt;p&gt;What&amp;#x2019;s wrong? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Google. I am noticing similar issues with global google search more and more often. E.g. it seems google treats &amp;#x201c;-&amp;#x201d; as whitespace and then looks for the resulting separate words. It&amp;#x2019;s becoming harder and harder to &amp;#x201c;google&amp;#x201d; documentation of lisp symbol. The same happens for camelCase and file/paths, or at least I am getting that impression.&lt;/p&gt;&lt;p&gt;Edit: In case of apropos-fn or org-something it gets worse: fn? that&amp;#x2019;s not a word let&amp;#x2019;s just ignore it. org? that&amp;#x2019;s certainly organisation.&lt;/p&gt;&lt;p&gt;Edit 2: We cannot rename every page that google cannot find like done for the below issue. Maybe we should switch to another search engine instead.&lt;/p&gt;&lt;p&gt;Edit 3: Or maybe google just/additionally penalizes the emacswiki for offering N different urls for the same content. I think it would be worth while using just a single url and redirect all the others even if it wasn&amp;#x2019;t for the google issue.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/JonasBernoulli"&gt;JonasBernoulli&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Perhaps a second search box that just searched page names would help? &lt;a class="inter Self" href="/emacs?action=index;match=example"&gt;&lt;span class="site"&gt;Self&lt;/span&gt;&lt;span class="separator"&gt;:&lt;/span&gt;&lt;span class="page"&gt;action=index;match=example&lt;/span&gt;&lt;/a&gt; &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Maybe.&lt;/p&gt;&lt;p&gt;But I don&amp;#x2019;t see how that would help with the problem of finding the page that documents a library, by clicking the Elisp page&amp;#x2019;s title. E.g., clicking the title of page &lt;tt&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/wide-n.el"&gt;wide-n.el&lt;/a&gt;&lt;/tt&gt; to find the page &lt;a class="local" href="http://www.emacswiki.org/emacs/MultipleNarrowings"&gt;MultipleNarrowings&lt;/a&gt; as one of the pages that link to it.&lt;/p&gt;&lt;p&gt;BTW, I notice that short things like &lt;code&gt;&amp;#x2018;hl&amp;#x2019;&lt;/code&gt; in `hl-line+.el&amp;#x2019; &lt;strong&gt;&lt;em&gt;ARE&lt;/em&gt;&lt;/strong&gt; being used by the google search. So Jonas&amp;#x2019;s hypothesis that &lt;code&gt;&amp;#x2018;fn&amp;#x2019;&lt;/code&gt; not being a word is a problem does not seem to be a problem.&lt;/p&gt;&lt;p&gt;And even searching for a full page title sometimes does not find it. It seems that titles themselves are not being included in the text that is indexed/searched. Perhaps that is the real problem (or one of them). &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; I think it must be a bug in Google&amp;#x2019;s code. Without the quotes &lt;a class="url http outside" href="http://www.google.com/cse?cx=004774160799092323420:6-ff2s0o6yi&amp;amp;q=%22apropos-fn%2bvar.el%22#gsc.tab=0&amp;amp;gsc.q=apropos-fn%2Bvar.el"&gt;returns more results&lt;/a&gt; that seem to be missing in the search with quotes. At this point I feel that maybe Jonas is right: &amp;#x201c;Maybe we should switch to another search engine instead.&amp;#x201d; when I last looked at ylucene it seemed like a pain to setup and I think I felt it didn&amp;#x2019;t handle a multi-lingual corpus very well. Does anybody feel like writing something? With the remote repositories it should be possible to write an external indexing and searching service that we could just integrate. &amp;#x2013; Alex&lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; I can&amp;#x2019;t speak to most of what you wrote last, Alex. But wrt the quotes: Isn&amp;#x2019;t it the case that if you enclose something in (double-)quotes then it is looked for literally, rather than being decomposed into indexed substrings? If so then I would expect that with the quotes there would be fewere hits, because the hits would only be hits for the whole string, not for its component substrings.&lt;/p&gt;&lt;p&gt;AFAIK, Google generally uses full-text search, which means indexing, stop words etc. But since we see that it finds hits on components such as &lt;code&gt;&amp;#x2018;hl&amp;#x2019;&lt;/code&gt; perhaps it is not doing that kind of search on a site, at least with the way we are using it. (If so, that is actually better.)&lt;/p&gt;&lt;p&gt;As I mentioned earlier, one guess I have is that the page titles are simply not being included among the text that is searched. That alone might explain a lot. Perhaps there is some way to make Google include that text. (E.g., even artificially add it to each page as text, maybe in a hidden way.)&lt;/p&gt;&lt;p&gt;I know nothing about this stuff. Just talking off the top of my head. If it doesn&amp;#x2019;t help, please ignore. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;Site search misses main page for highlight.el&lt;/h3&gt;&lt;p&gt;Visit &lt;tt&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/highlight.el"&gt;highlight.el&lt;/a&gt;&lt;/tt&gt;. Click the title to google-search for references to that page. There are 5 pages of hits, but none of them are &lt;a class="local" href="http://www.emacswiki.org/emacs/HighLight"&gt;HighLight&lt;/a&gt;, which is the main page documenting &lt;a class="inter Lisp" href="/emacs/highlight.el"&gt;&lt;span class="site"&gt;Lisp&lt;/span&gt;&lt;span class="separator"&gt;:&lt;/span&gt;&lt;span class="page"&gt;highlight.el&lt;/span&gt;&lt;/a&gt;. There is even a link &lt;code&gt;Lisp:highlight.el&lt;/code&gt; on page &lt;a class="local" href="http://www.emacswiki.org/emacs/HighLight"&gt;HighLight&lt;/a&gt;, so it can&amp;#x2019;t just be a problem of using &lt;code&gt;&amp;lt;tt&amp;gt;[[highlight.el]]&amp;lt;/tt&amp;gt;&lt;/code&gt; instead of &lt;code&gt;Lisp:&lt;/code&gt;. Maybe the problem has something to do with case-sensitivity in the page name &amp;#x201c;&lt;code&gt;HighLight&lt;/code&gt;&amp;#x201d;? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; I think that&amp;#x2019;s because when serving the page, the wiki tries to split page names based on CamelCase &amp;#x2192;&amp;#x00a0;Camel Case &amp;#x2013; this is what Google picks up (in addition to the h1 header). Thus, if you search for &amp;#x201c;highlight&amp;#x201d; you won&amp;#x2019;t find HighLight because it registers as &amp;#x201c;High Light&amp;#x201d;. If you search for &amp;#x201c;high light&amp;#x201d; instead, you&amp;#x2019;ll find the correct page. Perhaps we should create a new page called Highlight, move the HighLight content there, and have HighLight redirect to Highlight? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Thanks for the explanation. Still, I don&amp;#x2019;t quite understand. I thought that explicit links to the target page (&lt;tt&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/highlight.el"&gt;highlight.el&lt;/a&gt;&lt;/tt&gt; in this case) were taken into account, i.e. by picking up the link sources (sort of like Google does in general, when trying to rank a page). How does a search for the text &lt;code&gt;highlight&lt;/code&gt; come into the picture? Is the search only for the text &lt;code&gt;highlight.el&lt;/code&gt;, or are links taken into account?&lt;/p&gt;&lt;p&gt;Wrt your suggestion, I don&amp;#x2019;t think that&amp;#x2019;s the solution here, but I might rename the page to something a bit different &amp;#x2013; and less general sounding&amp;#x2013; anyway. Thx &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; I can&amp;#x2019;t say I understand completely, either. Google ought to know that there is a page with Url bla/&lt;a class="local" href="http://www.emacswiki.org/emacs/HighLight"&gt;HighLight&lt;/a&gt;, title High Light and h1 &lt;a class="local" href="http://www.emacswiki.org/emacs/HighLight"&gt;HighLight&lt;/a&gt; &amp;#x2013; why doesn&amp;#x2019;t a search for &amp;#x201c;highlight&amp;#x201d; find it? I don&amp;#x2019;t know. :(&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;Page not found by search&lt;/h3&gt;&lt;p&gt;Just mentioning in case it indicates a bug: Search for &lt;code&gt;DiredPlus&lt;/code&gt; and you will not see the &lt;a class="local" href="http://www.emacswiki.org/emacs/DiredPlus"&gt;DiredPlus&lt;/a&gt; page in the list. But search for &lt;code&gt;GrepPlus&lt;/code&gt; and you will see the &lt;a class="local" href="http://www.emacswiki.org/emacs/GrepPlus"&gt;GrepPlus&lt;/a&gt; page. Wonder why. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Problem with Google search&lt;/h3&gt;&lt;div class="color one level0"&gt;&lt;p&gt; If you search for the word &amp;#x201c;sticky&amp;#x201d; you do not find the page &lt;a class="local" href="http://www.emacswiki.org/emacs/StickyModifiers"&gt;StickyModifiers&lt;/a&gt;, but that word is on that page. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/LennartBorgman"&gt;LennartBorgman&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; hmm searching  for &amp;#x201c;sticky site:.emacswiki.org&amp;#x201d; google find thse page with the url: www.emacswiki.org/cgi-bin/emacs-en/&lt;a class="local" href="http://www.emacswiki.org/emacs/StickyModifiers"&gt;StickyModifiers&lt;/a&gt;, maybe it&amp;#x2019;s just a problem of adding a couple more url in the custom search  &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/PierreGaston"&gt;PierreGaston&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; I added &lt;code&gt;http://www.emacswiki.org/cgi-bin/emacs-*&lt;/code&gt; to the list of sites. Previously the site list contained only &lt;code&gt;http://www.emacswiki.org/cgi-bin/wiki/*&lt;/code&gt;. I think the real problem is that I would want all the URLs matching &lt;code&gt;http://www.emacswiki.org/cgi-bin/emacs-*&lt;/code&gt; to be registered as &lt;code&gt;http://www.emacswiki.org/cgi-bin/wiki&lt;/code&gt;. Ah the joys of fiddling with search engines. :) &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Thanks! &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/LennartBorgman"&gt;LennartBorgman&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Is there something magic with &lt;a class="local" href="http://www.emacswiki.org/emacs/StickyModifiers"&gt;StickyModifiers&lt;/a&gt; (except that it saves you)? You can&amp;#x2019;t search for &lt;a class="local" href="http://www.emacswiki.org/emacs/StickyModifiers"&gt;StickyModifiers&lt;/a&gt; now. Or for &amp;#x201c;sticky modifiers&amp;#x201d;. Anyone understands this? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/LennartBorgman"&gt;LennartBorgman&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; I set my search languages to Chinese in google search preferences, so when I search in emacswiki.org, only a few pages can be found, can I just search all languages in emacswiki.org without change my google preferences? Or in the page of search result provides a radio button to select language. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/Ye_Wenbin"&gt;Ye Wenbin&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;Search Flooded with Source Code&lt;/h3&gt;&lt;p&gt;(this issue is actually different from the above)&lt;/p&gt;&lt;p&gt;No idea how much control you have over the search. However, currently searches often are useless to me, because they show only source code files. Try searching for &amp;#x201c;defmacro&amp;#x201d;, for instance; maybe that is because it isn&amp;#x2019;t discussed anywhere on the wiki, but I have no way of finding out. Please allow to exclude sources from the search results. &amp;#x2013; OlafB&lt;a class="edit" title="Click to edit this page" rel="nofollow" href="http://www.emacswiki.org/emacs?action=edit;id=OlafB"&gt;?&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; The &lt;a class="local" href="http://www.emacswiki.org/emacs/ElispArea"&gt;ElispArea&lt;/a&gt; used to be separate, but now it is not. &lt;a class="inter Oddmuse" href="http://www.oddmuse.org/cgi-bin/oddmuse/Searching"&gt;&lt;span class="site"&gt;Oddmuse&lt;/span&gt;&lt;span class="separator"&gt;:&lt;/span&gt;&lt;span class="page"&gt;Searching&lt;/span&gt;&lt;/a&gt; would need to be improved to be able to differentiate code. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AaronHawley"&gt;AaronHawley&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; I&amp;#x2019;m not sure what to do. Fiddling with the search engine configuration might work, but how would we search for code examples, then? Add a second search box for code only? Yuck. There\s not much configuration going on because we are using Google Search. I don&amp;#x2019;t see a way to add checkboxes and other options to influence it.&lt;/p&gt;&lt;p&gt;Somebody could start working on a multi-lingual setup for Lucene or whatever the search engine of choice is for people who want to do it themselves. I remember looking at it and thinking that it looked like a lot of work for little gain.&lt;/p&gt;&lt;p&gt;For the example given, Google returns &lt;a class="local" href="http://www.emacswiki.org/emacs/MacroBasics"&gt;MacroBasics&lt;/a&gt; on third place. That&amp;#x2019;s not so bad, is it?&lt;/p&gt;&lt;p&gt;We could certainly add options to the &lt;a class="local" href="http://www.emacswiki.org/emacs/Search"&gt;Search&lt;/a&gt; page. would that be acceptable? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;both www.emacsen.org and emacsen.org work without one redirecting to the other&lt;/h3&gt;&lt;p&gt;This might not be the best setup, Google-juice-wise. Permanently redirecting from one to the other seems like the way to go.&lt;/p&gt;&lt;p&gt;Additionally, even with a domain, pages lack a canonical URI; &lt;code&gt;/cgi-bin/emacs/foo&lt;/code&gt;, &lt;code&gt;/cgi-bin/emacs-en/foo&lt;/code&gt;, and &lt;code&gt;/cgi-bin/wiki/foo&lt;/code&gt; all work. I suggest redirecting all of those to &lt;code&gt;/wiki/foo&lt;/code&gt;.&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Yeah, I think you&amp;#x2019;re right. I&amp;#x2019;m not comfortable enough with mod_alias, mod_rewrite, and all those and I don&amp;#x2019;t have an automated test suite that would point out how changes to .htaccess are affecting the site. That&amp;#x2019;s why I hesitate to fix these. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; emacswiki.org now redirects to www.emacswiki.org &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h2&gt;Revisioning Problems&lt;/h2&gt;&lt;h3&gt;Conflict from my own edit 25 minutes ago?&lt;/h3&gt;&lt;p&gt;I edited page &lt;a class="local" href="http://www.emacswiki.org/emacs/icicles-opt.el"&gt;icicles-opt.el&lt;/a&gt; and saved. Later I tried to do the same thing. I got a lock message. I used the browser Back button to get to the editing again and saved again. I then got this:&lt;/p&gt;&lt;pre&gt;This page was changed by somebody else 25 minutes ago. The changes conflict. Please check the page again.

icicles-opt.el
Download

&lt;span class="comment"&gt;;;; icicles-opt.el --- User options (variables) for Icicles&lt;/span&gt;
&lt;span class="comment"&gt;;;&lt;/span&gt;
&lt;span class="comment"&gt;;; Filename: icicles-opt.el&lt;/span&gt;
&lt;span class="comment"&gt;;; Description: User options (variables) for Icicles&lt;/span&gt;
&lt;span class="comment"&gt;;; Author: Drew Adams&lt;/span&gt;
&lt;span class="comment"&gt;;; Maintainer: Drew Adams&lt;/span&gt;
&lt;span class="comment"&gt;;; Copyright (C) 1996-2009, Drew Adams, all rights reserved.&lt;/span&gt;
&lt;span class="comment"&gt;;; Created: Mon Feb 27 09:22:14 2006&lt;/span&gt;
&lt;span class="comment"&gt;;; Version: 22.0&lt;/span&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; you
&lt;span class="comment"&gt;;; Last-Updated: Fri Jun  4 17:34:46 2010 (-0700)&lt;/span&gt;
||||||| ancestor
&lt;span class="comment"&gt;;; Last-Updated: Fri Jun  4 16:52:30 2010 (-0700)&lt;/span&gt;
=======
&lt;span class="comment"&gt;;; Last-Updated: Fri Jun  4 17:32:35 2010 (-0700)&lt;/span&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; other
&lt;span class="comment"&gt;;;           By: dradams&lt;/span&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; you
&lt;span class="comment"&gt;;;     Update #: 3700&lt;/span&gt;
||||||| ancestor
&lt;span class="comment"&gt;;;     Update #: 3698&lt;/span&gt;
=======
&lt;span class="comment"&gt;;;     Update #: 3699&lt;/span&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; other
&lt;/pre&gt;&lt;p&gt;&amp;#x2026;&lt;/p&gt;&lt;p&gt;It&amp;#x2019;s telling me my two edits conflict, and it is not recognizing that I am me. ;-) &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; That&amp;#x2019;s very strange indeed! I thought that once you&amp;#x2019;re using a username &amp;#x2013; which you clearly are &amp;#x2013; then that doesn&amp;#x2019;t happen anymore. I&amp;#x2019;ll have to look at that code again. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; It just happened that once. And I simply pasted and saved the file again, so there was no damage in the end. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a class="anchor" name="EditingGetsOldPageText"&gt;&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;h3&gt;editing does not get most recent version&lt;/h3&gt;&lt;p&gt;I tried yet again to get emacs-w3m to work as described above. I edited. It didn&amp;#x2019;t work. I edited the page with Safari. It worked. Then I followed the instructions again in emacs-w3m. The Safari edit did not show up in the compose edit box, even though the page did show it. Therefore, the text that the user edits is not the same as the text that is shown. Is this a cache issue? Thanks.&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; There&amp;#x2019;s some technical information available here, if you want to take a look at it: &lt;a class="inter Oddmuse" href="http://www.oddmuse.org/cgi-bin/oddmuse/Caching"&gt;&lt;span class="site"&gt;Oddmuse&lt;/span&gt;&lt;span class="separator"&gt;:&lt;/span&gt;&lt;span class="page"&gt;Caching&lt;/span&gt;&lt;/a&gt;. As I&amp;#x2019;m currently in Costa Rica, I can&amp;#x2019;t help you. All I know is that it worked for me &amp;#x2013; and I went through all the trouble of downloading and compiling w3m and dependencies. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;RecentChanges doesn't reflect recent changes&lt;/h3&gt;&lt;p&gt;I just edited and saved a reply someone posted at &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewsElispLibraries"&gt;DrewsElispLibraries&lt;/a&gt;. I refrefreshed &lt;a class="local" href="http://www.emacswiki.org/emacs/RecentChanges"&gt;RecentChanges&lt;/a&gt; (with rollbacks and minor changes included), but my edit does not appear. That wiki page is listed, but still at the time and user of the previous edit. However, after clicking List only major changes it was listed. I had previously cleared my cache, so I don&amp;#x2019;t think that was the problem. I&amp;#x2019;m guessing it was a cache problem nevertheless, but thought I&amp;#x2019;d mention it, in case it&amp;#x2019;s not. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Invisible change&lt;/h3&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Someone edited &lt;a class="local" href="http://www.emacswiki.org/emacs/Emacsmirror"&gt;Emacsmirror&lt;/a&gt; months ago but the change is not visible on the page. When I edit the page I can see the added text. I haven&amp;#x2019;t tried yet what happens when I save the page. Maybe that would cause the old edit to become effective but I wanted to leave it as-is so you can see for yourself. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/JonasBernoulli"&gt;JonasBernoulli&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Hm, I&amp;#x2019;m not sure. When &lt;a class="url http outside" href="http://www.emacswiki.org/emacs/Emacsmirror?cache=0"&gt;using the cache=0 parameter&lt;/a&gt; the page doesn&amp;#x2019;t mention &amp;#x201c;solarized&amp;#x201d; so I think editing the page will not make a big change. I wonder where the diff comes from, however.&lt;/p&gt;&lt;/div&gt;&lt;h2&gt;Markup/Generation Issues&lt;/h2&gt;&lt;h3&gt;Apostrophes etc. not prettified in links&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;ain't -- it -- "nice"&lt;/code&gt; &amp;#x21D2; ain&amp;#x2019;t &amp;#x2013; it &amp;#x2013; &amp;#x201c;nice&amp;#x201d;&lt;/li&gt;&lt;li&gt;&lt;code&gt;[EmacsWikiProblems ain't -- it -- "nice"]&lt;/code&gt; &amp;#x21D2; &lt;a class="local" href="http://www.emacswiki.org/emacs/EmacsWikiProblems"&gt;ain't -- it -- "nice"&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The link text retains its crude ASCII formatting. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/VegardOye"&gt;VegardOye&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Braces not allowed in links&lt;/h3&gt;&lt;p&gt;I tried to put braces in a url (because the stupid url required them), eg:&lt;/p&gt;&lt;pre&gt;https&lt;span class="builtin"&gt;://www&lt;/span&gt;.heathrowconnect.com/index.asp?SID={65C76CDC-2EFD-4589-A223-809157EAA164}
&lt;/pre&gt;&lt;p&gt;I tried a few different things, eg:&lt;/p&gt;&lt;pre&gt;[[https&lt;span class="builtin"&gt;://www&lt;/span&gt;.heathrowconnect.com/index.asp?SID={65C76CDC-2EFD-4589-A223-809157EAA164}|Blah]]
&lt;/pre&gt;&lt;p&gt;none of them worked. I think this &lt;b&gt;should&lt;/b&gt; be ok.&lt;/p&gt;&lt;p&gt;Again though, I&amp;#x2019;m happy with it not being fixed because we&amp;#x2019;ll fix it with Elwiki.&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; If you read &lt;a href="http://tools.ietf.org/html/rfc2396"&gt;RFC 2396&lt;/a&gt; you&amp;#x2019;ll note that curly braces are deemed &amp;#x201c;unwise&amp;#x201d; in section 2.4.3. Excluded US-ASCII Characters.&lt;/p&gt;&lt;/div&gt;&lt;h2&gt;Server Issues&lt;/h2&gt;&lt;h3&gt;Site is very slow now&lt;/h3&gt;&lt;p&gt;Takes me several minutes to load the Elisp Area page &amp;#x2013; or else it hangs altogether (times out). Likewise to get to one of the Lisp files there. Likewise, it takes a long time to preview (e.g. this edit). And yes, I tried closing the browser and deleting the cache. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Is this happening to anybody else? What about the time? Whenever I use the site, it seems to be working just fine. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;CGI Internal error: 400 Bad request (malformed multipart POST)&lt;/h3&gt;&lt;p&gt;I just got this error when trying to save a page after some simple (trivial) editing. No idea what caused it or what the problem is. I then clicked the browser &lt;code&gt;&amp;#x2018;Back&amp;#x2019;&lt;/code&gt; button and tried, successfully, to save again. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Anybody else? I&amp;#x2019;ve never seen this before. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Just an FYI that this problem has not disappeared, even if it is less frequent. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h2&gt;Client Issues&lt;/h2&gt;&lt;p&gt;In some cases the server might actually be at fault - still makes sense to group them like this.&lt;/p&gt;&lt;p&gt;&lt;a class="anchor" name="StalePagesServed"&gt;&lt;/a&gt; &lt;/p&gt;&lt;h3&gt;Browser Cache Not Refreshed - Stale Pages Served&lt;/h3&gt;&lt;p&gt;This might be the same problem as &lt;a class="local anchor" href="#EditingGetsOldPageText"&gt;EditingGetsOldPageText&lt;/a&gt;, below, but since that speaks specifically about emacs-w3m, I&amp;#x2019;m not sure.&lt;/p&gt;&lt;p&gt;This problem started several months ago. The browser cache does not get refreshed when pages are edited and saved. This happens for different browsers.&lt;/p&gt;&lt;p&gt;This problem has bitten several people, and the only workaround seems to be to remember to manually force a cache refresh when, say, you are looking at the editable page. And even that doesn&amp;#x2019;t work if you use the Download link.&lt;/p&gt;&lt;p&gt;This causes people to download the wrong version of a page (e.g. an Emacs Lisp library, using the Download link). And it causes people to accidentally overwrite a previous edit by someone else (since it doesn&amp;#x2019;t appear in the editable text unless they refresh that text).&lt;/p&gt;&lt;p&gt;I know that some people have thought that the problem was that pages were not being locked properly for edits, so that two people editing at the same time could accidentally overwrite each other&amp;#x2019;s edits. I don&amp;#x2019;t know if that problem also exists, but I do know that this cache problem has caused people to think there is a locking problem for edits. The cache problem occurs however, even for an edit that is long after (days after) the last edit has been saved, so it is not a lock problem.&lt;/p&gt;&lt;p&gt;Thanks for looking into this. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; This is still happening, but I still cannot give a recipe for why or when it happens &amp;#x2013; it happens sometimes. It just happened now. In the same browser session, I updated page &lt;a class="local" href="http://www.emacswiki.org/emacs/DoReMi"&gt;DoReMi&lt;/a&gt; and saved. Then opened that page again from the link at &lt;a class="local" href="http://www.emacswiki.org/emacs/RecentChanges"&gt;RecentChanges&lt;/a&gt;, using browser&amp;#x2019;s Open Link in New Window. Then clicked Edit the page and got the old page source, before my edit and save. HTH &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Some more info on this, in case it helps. I was just bitten by this again &amp;#x2013; I had to redo a bunch of edits as a result.&lt;/p&gt;&lt;p&gt;If you look at the revisions of &lt;a class="local" href="http://www.emacswiki.org/emacs/BookmarkPlus"&gt;BookmarkPlus&lt;/a&gt; between Revision 53 and Revision 58, you&amp;#x2019;ll see that Revision 54 was a major edit, then 55 was a minor edit. Well, 55 did not use 54 as its starting point &amp;#x2013; it used 53 instead. So I ended up doing 55, 56, 57, and 58, before I realized that the major edit for 54 had been undone (i.e. lost).&lt;/p&gt;&lt;p&gt;I used to think this problem had something to do with the browser cache, but now I&amp;#x2019;m thinking it has something to do with major and minor edits. HTH. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Dunno if this is strictly related to the browser cache problem that I&amp;#x2019;ve been assuming exists, but there is a fine example of losing page updates that just occurred. See the revisions of this very page, &lt;a class="local" href="http://www.emacswiki.org/emacs/EmacsWikiProblems"&gt;EmacsWikiProblems&lt;/a&gt;, today.&lt;/p&gt;&lt;p&gt;You&amp;#x2019;ll see that this sequence of events took place:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;I updated the page to reply to &lt;a class="local" href="http://www.emacswiki.org/emacs/SteveTaylor"&gt;SteveTaylor&lt;/a&gt; about the mistaken rollback: revision 608.&lt;/li&gt;&lt;li&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/VegardOye"&gt;VegardOye&lt;/a&gt; updated the page to add a new item: revision 609.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Vegard&amp;#x2019;s update wiped out my previous update. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Hm, maybe this is unrelated. Possibly it just took him more than nine minutes to edit the page before he saved it? Perhaps diff3 will sometimes merge things and drop changes without marking them as a conflict? Or he used a raw client that interacts with the wiki text directly, didn&amp;#x2019;t post back the last modification date, thus diff3 was unable to determine the ancestor for conflict resolution, and he ended up overwriting what you had done. I think the caching problem you reported earlier is something else (and much trickier, apparently). &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;emacswiki and w3m&lt;/h3&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/EmacsWiki"&gt;EmacsWiki&lt;/a&gt; doesnt appear to work well with w3m, specifically the search button. --&lt;a class="local" href="http://www.emacswiki.org/emacs/JoakimVerona"&gt;JoakimVerona&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; Try this solution, been using it a while now --&lt;a class="alias" title="NielsGiesen" href="http://www.emacswiki.org/emacs/NielsGiesen#pft"&gt;pft&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;   (define-key w3m-mode-map &lt;span class="string"&gt;"\C-c\C-c"&lt;/span&gt; 
     '(&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; ()
        (interactive)
        (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; (member 'w3m-href-anchor (text-properties-at (point)))
            (w3m-view-this-url)
          (w3m-submit-form))))&lt;/pre&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; I&amp;#x2019;ve just opened at terminal and used w3m to browse and search the wiki and didn&amp;#x2019;t see anything wrong. The answer above makes me think that maybe it&amp;#x2019;s a w3m-mode question but I&amp;#x2019;m not sure. If it&amp;#x2019;s a w3m issue, can you elaborate? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;RSS for single-pages doesn't work in Google Reader&lt;/h3&gt;&lt;p&gt;I haven&amp;#x2019;t figured out what the problem is yet, but I added &lt;a class="url http" href="http://www.emacswiki.org/emacs/?action=rss;rcidonly=IciclesDiscussion"&gt;http://www.emacswiki.org/emacs/?action=rss;rcidonly=IciclesDiscussion&lt;/a&gt; to Google Reader, and it didn&amp;#x2019;t get a &amp;#x201c;new item&amp;#x201d; notification when the page was changed. &amp;#x2013; EthanGlasserCamp&lt;a class="edit" title="Click to edit this page" rel="nofollow" href="http://www.emacswiki.org/emacs?action=edit;id=EthanGlasserCamp"&gt;?&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; When I look at the RSS feed, I get to see the latest revision of the page. I must therefore assume that it&amp;#x2019;s Google Reader&amp;#x2019;s fault. I can imagine two problems: 1. It takes very long for changes to be picked up by Google. That&amp;#x2019;s the explanation I currently favor because I have several of my own wikis in Google Reader and I often have the impression that Google Reader is up to a day late. 2. Google Reader thinks that you&amp;#x2019;re looking at an update to an existing page and will not show it anymore. I remember there was such an option for Blog Lines, but I can&amp;#x2019;t find anything like it for Google Reader. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;Browser `Open in New Window' no longer works on wiki pages&lt;/h3&gt;&lt;p&gt;This has changed in the last day or so &amp;#x2013; since the spam attack.&lt;/p&gt;&lt;p&gt;On &lt;a class="local" href="http://www.emacswiki.org/emacs/EmacsWiki"&gt;EmacsWiki&lt;/a&gt;, I can no longer right-click a link (any link) and choose &lt;strong&gt;Open in New Window&lt;/strong&gt;. I use IE6, and I have Google Toolbar installed (since a long time ago). When I try to open a link in a new window, Google Toolbar treats the attempt as a pop-up and blocks it.&lt;/p&gt;&lt;p&gt;I am forced to duplicate the browser window (&lt;code&gt;&amp;#x2018;C-n&amp;#x2019;&lt;/code&gt;) and then find and click the link. This is very slow, since the current page needs to be reloaded  in the new window even though I&amp;#x2019;m going to move away from it.&lt;/p&gt;&lt;p&gt;I have this problem only for &lt;span&gt;EmacsWiki&lt;/span&gt; pages, and I have changed nothing in my browser etc. Does this perhaps have something to do with the change to use &lt;a class="url http outside" href="http://recaptcha.net/"&gt;reCAPTCHA&lt;/a&gt;?&lt;/p&gt;&lt;p&gt;This is really quite annoying. I can make the problem go away by choosing &lt;strong&gt;Popups okay&lt;/strong&gt; for Google Toolbar (for &lt;span&gt;EmacsWiki&lt;/span&gt;), but users shouldn&amp;#x2019;t need to do that. &lt;span&gt;EmacsWiki&lt;/span&gt; appears unfriendly to people with this behavior. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; I believe you. Unfortunately I don&amp;#x2019;t know what to do about it. I&amp;#x2019;m sure your browsing environment will allow you to define exceptions to the popup blocker. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Yes, as I said, I&amp;#x2019;ve done that. The point was that it&amp;#x2019;s a shame that users will now need to do that &amp;#x2013; some might become discouraged or not understand. What&amp;#x2019;s odd is that I&amp;#x2019;ve never seen this (treating &lt;strong&gt;Open in New Window&lt;/strong&gt; as a popup) on any other site. Anyway, it&amp;#x2019;s not a biggee. And perhaps it affects only IE6 users who happen to use Google Toolbar &amp;#x2013; dunno. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/DrewAdams"&gt;DrewAdams&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h2&gt;Missing table of contents&lt;/h2&gt;&lt;p&gt;My understanding is that the TOC should be auto-generated.&lt;/p&gt;&lt;p&gt;This works fine on some pages (e.g. &lt;a class="local" href="http://www.emacswiki.org/emacs/OddmuseMode"&gt;OddmuseMode&lt;/a&gt; )&lt;/p&gt;&lt;p&gt;But is missing completely on others (e.g. &lt;a class="local" href="http://www.emacswiki.org/emacs/TrampMode"&gt;TrampMode&lt;/a&gt; (and &lt;b&gt;this&lt;/b&gt; page, in fact))&lt;/p&gt;&lt;div class="color one level0"&gt;&lt;p&gt; A while back there was a change: these days, the TOC is generated by Javascript (&lt;code&gt;/outliner.0.5.0.62-toc.js&lt;/code&gt;). I&amp;#x2019;m assuming what you sees depends on the age of the page. If it was last edited before the change, the TOC is part of the cached HTML and you can still see it. If it was last edited after the change, the TOC has been removed from the cached HTML by previous contributors and the Javascript ought to recreate it for you. Perhaps you have disabled Javascript? &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="color two level0"&gt;&lt;p&gt; Yes, I usually browse with Javascript off (Firefox + Noscript). Good to know that&amp;#x2019;s the workaround. It&amp;#x2019;s a shame the inline TOC was disabled. Was it still buggy? (I gathered from other discussions that there were some problems with it at some stage.)&lt;/p&gt;&lt;/div&gt;&lt;div class="color one level0"&gt;&lt;p&gt; I guess it worked most of the time, but at the same time it was very &lt;i&gt;brittle&lt;/i&gt; and required constant attention and compatibility cross-checking. I feel it&amp;#x2019;s just not worth the effort. Perhaps we can improve the wiki for noscript users and add some explanatory text and instructions for how to selectively enable scripts.&lt;/p&gt;&lt;p&gt;The &lt;a class="local" href="http://www.emacswiki.org/emacs/DuckDuckGo"&gt;DuckDuckGo&lt;/a&gt; search also uses &lt;a class="local" href="http://www.emacswiki.org/emacs/JavaScript"&gt;JavaScript&lt;/a&gt; to quietly add &lt;i&gt;site:www.emacswiki.org&lt;/i&gt; to the search terms. Without &lt;a class="local" href="http://www.emacswiki.org/emacs/JavaScript"&gt;JavaScript&lt;/a&gt;, this will also look weird. &amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryEmacsWikiSite"&gt;CategoryEmacsWikiSite&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 15:19:15 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_EmacsWikiProblems</comments>
<dc:contributor>MichaelPaulukonis</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>765</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=EmacsWikiProblems</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=EmacsWikiProblems</wiki:diff>
</item>

<item>
<title>Comments on Search</title>
<link>http://www.emacswiki.org/emacs/Comments_on_Search</link>
<guid>http://www.emacswiki.org/emacs/Comments_on_Search</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; ----&lt;br /&gt;&amp;gt; I haven't changed any of the text, because I didn't know if it was an oversight, or part of a work-in-progress.&lt;br /&gt;&amp;gt; I think I would prefer search at the top of the page.&lt;br /&gt;&amp;gt; I don't want the top of the page cluttered, but there are a number of sites (like https://github.com) that pack a lot if technical info and menus into a small space.&lt;br /&gt;&amp;gt; -- MichaelPaulukonis 2013-05-22 14:58 UTC&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;This page and &lt;a class="local" href="http://www.emacswiki.org/emacs/HowToSearch"&gt;HowToSearch&lt;/a&gt; and &lt;a class="local" href="http://www.emacswiki.org/emacs/FirefoxQuickSearch"&gt;FirefoxQuickSearch&lt;/a&gt; should be updated. (Because of the new &lt;a class="local" href="http://www.emacswiki.org/emacs/DuckDuckGo"&gt;DuckDuckGo&lt;/a&gt; search engine.)&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/XueFuqiao"&gt;XueFuqiao&lt;/a&gt; 2013-05-19 01:55 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;I did what I could. Let me know if there are more instances.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/AlexSchroeder"&gt;AlexSchroeder&lt;/a&gt; 2013-05-19 09:48 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Thank you! I&amp;#x2019;ll edit myself or let you know if I find some other instances.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/XueFuqiao"&gt;XueFuqiao&lt;/a&gt; 2013-05-19 13:48 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;I am not seeing a search box at the top of the page anymore. What gives?&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="url http outside" href="http://nic.ferrier.me.uk"&gt;NicFerrier&lt;/a&gt; 2013-05-22 13:00 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Nic &amp;#x2013; it&amp;#x2019;s at the bottom, with an undocumented &amp;#x201c;language&amp;#x201d; input. I asked as well over at &lt;a class="local" href="http://www.emacswiki.org/emacs/Comments_on_HowToSearch"&gt;Comments on HowToSearch&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/MichaelPaulukonis"&gt;MichaelPaulukonis&lt;/a&gt; 2013-05-22 13:08 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;The trouble is everything still says &amp;#x201c;use the search box at the top&amp;#x201d;. SIGH.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="url http outside" href="http://nic.ferrier.me.uk"&gt;NicFerrier&lt;/a&gt; 2013-05-22 14:45 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Could we have some keyindex to focus it? Alt+s or something?&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="url http outside" href="http://nic.ferrier.me.uk"&gt;NicFerrier&lt;/a&gt; 2013-05-22 14:46 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;We already have. accesskey=&amp;#x201c;f&amp;#x201d;.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="url http outside" href="http://nic.ferrier.me.uk"&gt;NicFerrier&lt;/a&gt; 2013-05-22 14:47 UTC&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;I haven&amp;#x2019;t changed any of the text, because I didn&amp;#x2019;t know if it was an oversight, or part of a work-in-progress.&lt;/p&gt;&lt;p&gt;I think I would prefer search at the top of the page.&lt;/p&gt;&lt;p&gt;I don&amp;#x2019;t want the top of the page cluttered, but there are a number of sites (like &lt;a class="url http" href="https://github.com"&gt;https://github.com&lt;/a&gt;) that pack a lot if technical info and menus into a small space.&lt;/p&gt;&lt;p&gt;&amp;#x2013; &lt;a class="local" href="http://www.emacswiki.org/emacs/MichaelPaulukonis"&gt;MichaelPaulukonis&lt;/a&gt; 2013-05-22 14:58 UTC&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 14:58:49 GMT</pubDate>
<dc:contributor>MichaelPaulukonis</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>9</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=Comments_on_Search</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=Comments_on_Search</wiki:diff>
</item>

<item>
<title>Evil</title>
<link>http://www.emacswiki.org/emacs/Evil</link>
<guid>http://www.emacswiki.org/emacs/Evil</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; == Changing the mode-line color by state ==&lt;br /&gt;&amp;gt; In Vim I like to have the status line change color when in insert mode and when the buffer is dirty (needs saving). It's much easier to do in Evil than it is in Vim itself.&lt;br /&gt;&amp;gt;    ;; change mode-line color by evil state&lt;br /&gt;&amp;gt;    (lexical-let ((default-color (cons (face-background 'mode-line)&lt;br /&gt;&amp;gt;                                       (face-foreground 'mode-line))))&lt;br /&gt;&amp;gt;      (add-hook 'post-command-hook&lt;br /&gt;&amp;gt;        (lambda ()&lt;br /&gt;&amp;gt;          (let ((color (cond ((minibufferp) default-color)&lt;br /&gt;&amp;gt;                             ((evil-insert-state-p) '("#e80000" . "#ffffff"))&lt;br /&gt;&amp;gt;                             ((evil-emacs-state-p)  '("#444488" . "#ffffff"))&lt;br /&gt;&amp;gt;                             ((buffer-modified-p)   '("#006fa0" . "#ffffff"))&lt;br /&gt;&amp;gt;                             (t default-color))))&lt;br /&gt;&amp;gt;            (set-face-background 'mode-line (car color))&lt;br /&gt;&amp;gt;            (set-face-foreground 'mode-line (cdr color))))))&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="image right" href="http://www.emacswiki.org/emacs/EvilLogo"&gt;&lt;img class="upload" title="EvilLogo" src="http://www.emacswiki.org/pics/static/EvilLogo" alt="EvilLogo" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Evil&lt;/strong&gt; is an &lt;strong&gt;e&lt;/strong&gt;xtensible &lt;strong&gt;vi&lt;/strong&gt; &lt;strong&gt;l&lt;/strong&gt;ayer for Emacs. It provides Vim features like Visual selection and text objects, and is the successor to &lt;a class="local" href="http://www.emacswiki.org/emacs/Vimpulse"&gt;Vimpulse&lt;/a&gt; and &lt;a class="local" href="http://www.emacswiki.org/emacs/VimMode"&gt;vim-mode&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Current stable version: &lt;b&gt;1.0.1&lt;/b&gt;&lt;/p&gt;&lt;h2&gt;Quick install&lt;/h2&gt;&lt;p&gt;1. &lt;a class="local" href="http://www.emacswiki.org/emacs/ELPA"&gt;ELPA&lt;/a&gt;: The latest stable version is available from the &lt;a class="local" href="http://www.emacswiki.org/emacs/Marmalade"&gt;Marmalade&lt;/a&gt; repository, the current development version from &lt;a class="local" href="http://www.emacswiki.org/emacs/MELPA"&gt;MELPA&lt;/a&gt;. Both can be installed by &lt;/p&gt;&lt;pre&gt;    M-x package-install RET evil RET&lt;/pre&gt;&lt;p&gt;2. &lt;a class="local" href="http://www.emacswiki.org/emacs/el-get"&gt;el-get&lt;/a&gt;: Evil can be downloaded and installed with:&lt;/p&gt;&lt;pre&gt;    M-x el-get-install RET evil RET&lt;/pre&gt;&lt;h2&gt;Download&lt;/h2&gt;&lt;p&gt;Alternatively, Evil lives in a Git repository. To download Evil, do:&lt;/p&gt;&lt;pre&gt;    git clone git&lt;span class="builtin"&gt;://gitorious&lt;/span&gt;.org/evil/evil.git&lt;/pre&gt;&lt;p&gt;If you don&amp;#x2019;t have Git, just head over to &lt;a class="url http outside" href="https://gitorious.org/evil/evil/commits/master"&gt;Gitorious&lt;/a&gt; and click the &lt;em&gt;&amp;#x201c;Download master as tar.gz&amp;#x201d;&lt;/em&gt; link (extract with &lt;code&gt;tar -xzf master.tar.gz&lt;/code&gt;).&lt;/p&gt;&lt;h2&gt;Install&lt;/h2&gt;&lt;p&gt;Move Evil to &lt;code&gt;~/.emacs.d/evil&lt;/code&gt; (or somewhere else in your &lt;code&gt;load-path&lt;/code&gt;). Then add the following lines to &lt;code&gt;~/.emacs&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;    (add-to-list 'load-path &lt;span class="string"&gt;"~/.emacs.d/evil"&lt;/span&gt;) &lt;span class="comment"&gt;; only without ELPA/el-get&lt;/span&gt;
    (&lt;span class="keyword"&gt;require&lt;/span&gt; '&lt;span class="constant"&gt;evil&lt;/span&gt;)
    (evil-mode 1)&lt;/pre&gt;&lt;p&gt;If your .emacs file has a custom-set-variables section, you should place it after Evil.&lt;/p&gt;&lt;p&gt;Evil requires &lt;a class="local" href="http://www.emacswiki.org/emacs/UndoTree"&gt;undo-tree.el&lt;/a&gt; in the &lt;code&gt;load-path&lt;/code&gt; for linear undo and undo branches. Otherwise, Evil uses regular Emacs undo.&lt;/p&gt;&lt;h2&gt;Documentation&lt;/h2&gt;&lt;p&gt;A brief &lt;a class="url http outside" href="https://gitorious.org/evil/evil/blobs/raw/doc/doc/evil.pdf"&gt;PDF manual&lt;/a&gt; is available in the &lt;code&gt;/doc&lt;/code&gt; subdirectory.&lt;/p&gt;&lt;h2&gt;Plug-ins&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="url http outside" href="https://github.com/timcharper/evil-surround"&gt;evil-surround&lt;/a&gt;: Port of Vim&amp;#x2019;s surround script.&lt;/li&gt;&lt;li&gt;&lt;a class="url http outside" href="https://github.com/cofi/evil-numbers"&gt;evil-numbers&lt;/a&gt;: Vim-like increment and decrement.&lt;/li&gt;&lt;li&gt;&lt;a class="url http outside" href="https://github.com/cofi/evil-leader"&gt;evil-leader&lt;/a&gt;: Port of Vim&amp;#x2019;s mapleader.&lt;/li&gt;&lt;li&gt;&lt;a class="url http outside" href="https://github.com/antono/evil-rails"&gt;evil-rails&lt;/a&gt;: Port of rails.vim.&lt;/li&gt;&lt;li&gt;&lt;a class="url http outside" href="https://github.com/redguardtoo/evil-nerd-commenter"&gt;evil-nerd-commenter&lt;/a&gt;: Port of Vim&amp;#x2019;s &lt;a class="url http outside" href="http://www.vim.org/scripts/script.php?script_id=1218"&gt;Nerd-Commenter&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Bug tracker&lt;/h2&gt;&lt;p&gt;If you have bug reports or suggestions, please submit them at the &lt;a class="url http outside" href="https://bitbucket.org/lyro/evil"&gt;BitBucket bug tracker&lt;/a&gt; (open for all).&lt;/p&gt;&lt;h2&gt;Managing keymaps&lt;/h2&gt;&lt;p&gt;If you want to use the full power of Emacs in Vim-like ways (ie using short key sequences near home row instead of Control-Shift-Nonsense), this section provides some guidance. This guide assumes you&amp;#x2019;ve read the Evil manual sections &amp;#x201c;Modes and states&amp;#x201d; and &amp;#x201c;Keymaps&amp;#x201d;.&lt;/p&gt;&lt;h3&gt;Overriding and intercept keymaps&lt;/h3&gt;&lt;p&gt;There are Emacs modes that provide their own single letter key bindings, independent of Evil. &lt;a class="local" href="http://www.emacswiki.org/emacs/BufferMenu"&gt;BufferMenu&lt;/a&gt;, &lt;a class="alias" title="EdiffMode" href="http://www.emacswiki.org/emacs/EdiffMode#Ediff"&gt;Ediff&lt;/a&gt;, and &lt;a class="alias" title="SourceLevelDebugger" href="http://www.emacswiki.org/emacs/SourceLevelDebugger#Edebug"&gt;Edebug&lt;/a&gt; are a few examples. By default, Evil allows these modes&amp;#x2019; keymaps to override Evil&amp;#x2019;s. To change this behavior, &lt;a class="url http outside" href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Easy-Customization.html"&gt;customize&lt;/a&gt; the evil-overriding-maps and evil-intercept-maps variables. If you set these two to nil, then the active Evil keymaps have precedence over other active keymaps. For example, without customization, inputting n in the Buffer Menu will call a Buffer Menu command to move down a line. If Buffer-menu-mode-map is removed from evil-overriding-maps, then n will invoke Evil&amp;#x2019;s command to go to the next search term.&lt;/p&gt;&lt;p&gt;With these customizations made, there are still some familiar Evil key bindings that are unavailable in Buffer Menu. These pertain to commands that edit raw text &amp;#x2013; disabled because raw text editing doesn&amp;#x2019;t make much sense in the Buffer Menu. This is realized by the Buffer-menu-mode entry in the evil-motion-state-maps variable. Because the evil-normal-state-map is inactive in motion state, Buffer Menu commands like x and d are directly available.&lt;/p&gt;&lt;h3&gt;Temporary execution in Emacs state&lt;/h3&gt;&lt;p&gt;You may still wish to use a mode&amp;#x2019;s key bindings, if you decided to remove its keymap from evil-overriding-maps or evil-intercept-maps. Evil defines the \ command to temporarily interpret the subsequent Key Sequence in the Emacs state. If you wish to use Buffer Menu&amp;#x2019;s b command, you can do so with two key strokes: \b . This is pretty reasonable in most cases, but if you want to have a one letter key binding you can add it specifically with the evil-define-key function.&lt;/p&gt;&lt;h3&gt;Modes' initial state&lt;/h3&gt;&lt;p&gt;While Buffer Menu comes up in motion state, other modes such as Ediff come up in Emacs state where all Evil keymaps are inactive. You may change a mode&amp;#x2019;s initial state by customizing the evil-*-state-modes variables. The Minibuffer is an exception: it is always in Emacs state regardless of these variables. To move all elements of evil-emacs-state-modes to evil-motion-state-modes:&lt;/p&gt;&lt;pre&gt;   (setq evil-motion-state-modes (append evil-emacs-state-modes evil-motion-state-modes))
   (setq evil-emacs-state-modes nil)&lt;/pre&gt;&lt;h3&gt;Making the most of RET and SPC&lt;/h3&gt;&lt;p&gt;It is common for Emacs modes like these to define key bindings for RET and SPC. Since these are motion commands, Evil places its key bindings for these in evil-motion-state-map. However, these commands are fairly worthless to a seasoned Vim user, since they do the same thing as j and l commands. Thus it is useful to remove them from evil-motion-state-map so as when modes define them, RET and SPC bindings are available directly.&lt;/p&gt;&lt;pre&gt;   (&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;my-move-key&lt;/span&gt; (keymap-from keymap-to key)
     &lt;span class="string"&gt;"Moves key binding from one keymap to another, deleting from the old location. "&lt;/span&gt;
     (define-key keymap-to key (lookup-key keymap-from key))
     (define-key keymap-from key nil)
     )
   (my-move-key evil-motion-state-map evil-normal-state-map (kbd &lt;span class="string"&gt;"RET"&lt;/span&gt;))
   (my-move-key evil-motion-state-map evil-normal-state-map &lt;span class="string"&gt;" "&lt;/span&gt;)&lt;/pre&gt;&lt;h3&gt;Key Translations (simple)&lt;/h3&gt;&lt;p&gt;Key Translations are another useful Emacs feature which allows one Key Sequence to translate to another prior to Emacs&amp;#x2019; process of Key Lookup in the active keymaps. One limitation is &lt;a class="url http outside" href="https://bitbucket.org/lyro/evil/issue/177/key-translation-map-not-honored-in-evil-o"&gt;an Evil bug&lt;/a&gt; that prevents Key Translations taking effect in the operator state.&lt;/p&gt;&lt;p&gt;An example of defining a Key Translation: You could translate ch to C-h and cx to C-x . To do this, make c a Prefix Key so as Key Lookup does not end on the c input alone.&lt;/p&gt;&lt;pre&gt;   (define-key evil-normal-state-map &lt;span class="string"&gt;"c"&lt;/span&gt; nil)
   (define-key evil-motion-state-map &lt;span class="string"&gt;"cu"&lt;/span&gt; 'universal-argument)&lt;/pre&gt;&lt;p&gt;The second line automatically made c a Prefix Key, and its binding was somewhat arbitrary. Now we define the Key Translations:&lt;/p&gt;&lt;pre&gt;   (define-key key-translation-map (kbd &lt;span class="string"&gt;"ch"&lt;/span&gt;) (kbd &lt;span class="string"&gt;"C-h"&lt;/span&gt;))
   (define-key key-translation-map (kbd &lt;span class="string"&gt;"cx"&lt;/span&gt;) (kbd &lt;span class="string"&gt;"C-x"&lt;/span&gt;))&lt;/pre&gt;&lt;p&gt;Note that this won&amp;#x2019;t interfere with insert state because c is bound to self-insert-command, and the evil-motion-state-map defining c as a Prefix Key is inactive.&lt;/p&gt;&lt;h3&gt;Key Translations (better)&lt;/h3&gt;&lt;p&gt;The approach above to Key Translations has a couple of disadvantages: it won&amp;#x2019;t allow single letter Key Translations, and if a mode offers its own binding for ch or cx, it is unavailable to you (not even via \). To resolve these issues, you&amp;#x2019;ll need to use the Emacs pretest 24.2.90 release which will become Emacs 24.3 .&lt;/p&gt;&lt;p&gt;In addition to updating your Emacs version, you&amp;#x2019;ll have to enable lexical binding. Doing so might render other Elisp in your init file inoperable if it relies on dynamic binding. Put this on the very first line of your init file:&lt;/p&gt;&lt;pre&gt;   &lt;span class="comment"&gt;;; -*- lexical-binding: t -*-&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;C-x is a common Prefix Key and it is extremely convenient to bind to a single letter near home row. Let&amp;#x2019;s translate ch to C-h and g to C-x as follows:&lt;/p&gt;&lt;pre&gt;   &lt;span class="comment"&gt;;; Note: lexical-binding must be t in order for this to work correctly.&lt;/span&gt;
   (&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;make-conditional-key-translation&lt;/span&gt; (key-from key-to translate-keys-p)
     &lt;span class="string"&gt;"Make a Key Translation such that if the translate-keys-p function returns true,
   key-from translates to key-to, else key-from translates to itself.  translate-keys-p
   takes key-from as an argument. "&lt;/span&gt;
     (define-key key-translation-map key-from
       (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; (prompt)
         (&lt;span class="keyword elisp"&gt;if&lt;/span&gt; (funcall translate-keys-p key-from) key-to key-from))))
   (&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;my-translate-keys-p&lt;/span&gt; (key-from)
     &lt;span class="string"&gt;"Returns whether conditional key translations should be active.  See make-conditional-key-translation function. "&lt;/span&gt;
     (and
       &lt;span class="comment"&gt;;; Only allow a non identity translation if we're beginning a Key Sequence.&lt;/span&gt;
       (equal key-from (this-command-keys))
       (or (evil-motion-state-p) (evil-normal-state-p) (evil-visual-state-p))))
   (define-key evil-normal-state-map &lt;span class="string"&gt;"c"&lt;/span&gt; nil)
   (define-key evil-motion-state-map &lt;span class="string"&gt;"cu"&lt;/span&gt; 'universal-argument)
   (make-conditional-key-translation (kbd &lt;span class="string"&gt;"ch"&lt;/span&gt;) (kbd &lt;span class="string"&gt;"C-h"&lt;/span&gt;) 'my-translate-keys-p)
   (make-conditional-key-translation (kbd &lt;span class="string"&gt;"g"&lt;/span&gt;) (kbd &lt;span class="string"&gt;"C-x"&lt;/span&gt;) 'my-translate-keys-p)&lt;/pre&gt;&lt;p&gt;If another keymap defines a binding for &amp;#x201c;ch&amp;#x201d;, you can access it with \ch , because my-translate-keys-p returns false in the Emacs state, resulting in a Key Translation of &amp;#x201c;ch&amp;#x201d; to itself.&lt;/p&gt;&lt;p&gt;In non insert state, you can now type &amp;#x201c;g3&amp;#x201d; to split-window-right, &amp;#x201c;go&amp;#x201d; to move to the other window, etc. This code is written to only translate the key when it is the first of a Key Sequence, so as a binding like &amp;#x201c;sg&amp;#x201d; won&amp;#x2019;t translate into &amp;#x201c;s C-x&amp;#x201d;.&lt;/p&gt;&lt;p&gt;If there are Evil g commands you miss, just redefine them for C-x:&lt;/p&gt;&lt;pre&gt;   (define-key evil-motion-state-map &lt;span class="string"&gt;"\C-x\C-]"&lt;/span&gt; 'find-tag)&lt;/pre&gt;&lt;p&gt;See evil-maps.el to find all of the Evil g commands.&lt;/p&gt;&lt;p&gt;To continue the pattern of translating &amp;#x201c;c&amp;lt;char&amp;gt;&amp;#x201d; to &amp;#x201c;C-&amp;lt;char&amp;gt;&amp;#x201d;:&lt;/p&gt;&lt;pre&gt;  (&lt;span class="keyword cl"&gt;when&lt;/span&gt; (fboundp 'cl-loop)
        &lt;span class="comment"&gt;;; cl-loop iterates from ASCII '!' to ASCII '~'.&lt;/span&gt;
        (cl-loop for ascii-code-i from 33 to 126 by 1 do
                 (make-conditional-key-translation (kbd (format &lt;span class="string"&gt;"c%c"&lt;/span&gt; ascii-code-i))
                                                   (kbd (format &lt;span class="string"&gt;"C-%c"&lt;/span&gt; ascii-code-i))
                                                   'my-translate-keys-p)))&lt;/pre&gt;&lt;h2&gt;Defining your own escape&lt;/h2&gt;&lt;p&gt;You can define any key sequence you like for escaping from Evil insert state back to normal state. C-c is one of the options available in Vim by default, but Evil cannot define C-c this way because Emacs coding standards require packages to reserve C-c for the user.&lt;/p&gt;&lt;p&gt;The following Elisp shows how to define C-c as an escape key, using a Key Translation.&lt;/p&gt;&lt;pre&gt;   &lt;span class="comment"&gt;;;; C-c as general purpose escape key sequence.&lt;/span&gt;
   &lt;span class="comment"&gt;;;;&lt;/span&gt;
   (&lt;span class="keyword"&gt;defun&lt;/span&gt; &lt;span class="function"&gt;my-esc&lt;/span&gt; (prompt)
     &lt;span class="string"&gt;"Functionality for escaping generally.  Includes exiting Evil insert state and C-g binding. "&lt;/span&gt;
     (&lt;span class="keyword elisp"&gt;cond&lt;/span&gt;
      &lt;span class="comment"&gt;;; If we're in one of the Evil states that defines [escape] key, return [escape] so as&lt;/span&gt;
      &lt;span class="comment"&gt;;; Key Lookup will use it.&lt;/span&gt;
      ((or (evil-insert-state-p) (evil-normal-state-p) (evil-replace-state-p) (evil-visual-state-p)) [escape])
      &lt;span class="comment"&gt;;; This is the best way I could infer for now to have C-c work during evil-read-key.&lt;/span&gt;
      &lt;span class="comment"&gt;;; Note: As long as I return [escape] in normal-state, I don't need this.&lt;/span&gt;
      &lt;span class="comment"&gt;;;((eq overriding-terminal-local-map evil-read-key-map) (keyboard-quit) (kbd &lt;span class="string"&gt;""&lt;/span&gt;))&lt;/span&gt;
      (t (kbd &lt;span class="string"&gt;"C-g"&lt;/span&gt;))))
   (define-key key-translation-map (kbd &lt;span class="string"&gt;"C-c"&lt;/span&gt;) 'my-esc)
   &lt;span class="comment"&gt;;; Works around the fact that Evil uses read-event directly when in operator state, which&lt;/span&gt;
   &lt;span class="comment"&gt;;; doesn't use the key-translation-map.&lt;/span&gt;
   (define-key evil-operator-state-map (kbd &lt;span class="string"&gt;"C-c"&lt;/span&gt;) 'keyboard-quit)
   &lt;span class="comment"&gt;;; Not sure what behavior this changes, but might as well set it, seeing the Elisp manual's&lt;/span&gt;
   &lt;span class="comment"&gt;;; documentation of it.&lt;/span&gt;
   (set-quit-char &lt;span class="string"&gt;"C-c"&lt;/span&gt;)&lt;/pre&gt;&lt;p&gt;In Emacs, C-g is somewhat analogous to what C-c was in Vim. And since C-c is more ergonomic than C-g, I decided it&amp;#x2019;s useful and intuitive to translate C-c to C-g if I&amp;#x2019;m already escaped out of insert state.&lt;/p&gt;&lt;p&gt;Emacs defines C-c as a useful global prefix key. In order to use it, you may define a Key Translation as described in the Key Translation section. Emacs does not apply Key Translation twice so if you define a Key Translation from cc to C-c, cc will not escape but access the global prefix key for C-c as desired.&lt;/p&gt;&lt;p&gt;Another way is to use keychords.el as a basis for an escape key sequence. For example, this Elisp defines ,, as an escape key (very convenient for bépo layout, rather not for qwerty…):&lt;/p&gt;&lt;pre&gt;   (key-chord-define evil-normal-state-map &lt;span class="string"&gt;",,"&lt;/span&gt; 'evil-force-normal-state)
   (key-chord-define evil-visual-state-map &lt;span class="string"&gt;",,"&lt;/span&gt; 'evil-change-to-previous-state)
   (key-chord-define evil-insert-state-map &lt;span class="string"&gt;",,"&lt;/span&gt; 'evil-normal-state)
   (key-chord-define evil-replace-state-map &lt;span class="string"&gt;",,"&lt;/span&gt; 'evil-normal-state)&lt;/pre&gt;&lt;h2&gt;AceJump Integration&lt;/h2&gt;&lt;p&gt;&lt;script src="https://gist.github.com/4963125.js"&gt;&lt;/script&gt;&lt;noscript&gt;&lt;a href="https://gist.github.com/4963125" class="download"&gt;Gist&lt;/a&gt;&lt;/noscript&gt;&lt;/p&gt;&lt;h2&gt;Changing the mode-line color by state&lt;/h2&gt;&lt;p&gt;In Vim I like to have the status line change color when in insert mode and when the buffer is dirty (needs saving). It&amp;#x2019;s much easier to do in Evil than it is in Vim itself.&lt;/p&gt;&lt;pre&gt;   &lt;span class="comment"&gt;;; change mode-line color by evil state&lt;/span&gt;
   (&lt;span class="keyword cl"&gt;lexical-let&lt;/span&gt; ((default-color (cons (face-background 'mode-line)
                                      (face-foreground 'mode-line))))
     (add-hook 'post-command-hook
       (&lt;span class="keyword elisp"&gt;lambda&lt;/span&gt; ()
         (&lt;span class="keyword elisp"&gt;let&lt;/span&gt; ((color (&lt;span class="keyword elisp"&gt;cond&lt;/span&gt; ((minibufferp) default-color)
                            ((evil-insert-state-p) '(&lt;span class="string"&gt;"#e80000"&lt;/span&gt; . &lt;span class="string"&gt;"#ffffff"&lt;/span&gt;))
                            ((evil-emacs-state-p)  '(&lt;span class="string"&gt;"#444488"&lt;/span&gt; . &lt;span class="string"&gt;"#ffffff"&lt;/span&gt;))
                            ((buffer-modified-p)   '(&lt;span class="string"&gt;"#006fa0"&lt;/span&gt; . &lt;span class="string"&gt;"#ffffff"&lt;/span&gt;))
                            (t default-color))))
           (set-face-background 'mode-line (car color))
           (set-face-foreground 'mode-line (cdr color))))))&lt;/pre&gt;&lt;h2&gt;Discussion&lt;/h2&gt;&lt;dl class="quote"&gt;&lt;dt /&gt;&lt;dd&gt;&lt;em&gt;(Evil is also discussed at the &lt;a class="url http outside" href="http://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list"&gt;gmane.emacs.vim-emulation&lt;/a&gt; mailing list and in our IRC channel #evil-mode on irc.freenode.net.)&lt;/em&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div class="color one level0"&gt;&lt;p&gt; It would be nice with a brief overview over the objectives and difference to &lt;a class="local" href="http://www.emacswiki.org/emacs/ViperMode"&gt;Viper&lt;/a&gt;.&lt;/p&gt;&lt;dl class="quote"&gt;&lt;dt /&gt;&lt;dd&gt;The main difference is that while Viper emulates classical vi, Evil emulates Vim. It therefore sports additional features like Visual selection and text objects. Evil also attempts to integrate with Emacs: for example, repetition is implemented in terms of keyboard macros. At the most basic level, Evil is just a collection of key bindings that can be extended and adapted to any Emacs mode.&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;h3&gt;Vim tabs&lt;/h3&gt;&lt;p&gt;The first thing I missed of Vim were the tabs. With elscreen.el and its dependencies installed, the following code emulates part of the Vim behaviour:&lt;/p&gt;&lt;pre&gt;    (load &lt;span class="string"&gt;"elscreen"&lt;/span&gt; &lt;span class="string"&gt;"ElScreen"&lt;/span&gt; t)&lt;/pre&gt;&lt;pre&gt;    (define-key evil-normal-state-map (kbd &lt;span class="string"&gt;"C-w t"&lt;/span&gt;) 'elscreen-create) &lt;span class="comment"&gt;;creat tab&lt;/span&gt;
    (define-key evil-normal-state-map (kbd &lt;span class="string"&gt;"C-w x"&lt;/span&gt;) 'elscreen-kill) &lt;span class="comment"&gt;;kill tab&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    (define-key evil-normal-state-map &lt;span class="string"&gt;"gT"&lt;/span&gt; 'elscreen-previous) &lt;span class="comment"&gt;;previous tab&lt;/span&gt;
    (define-key evil-normal-state-map &lt;span class="string"&gt;"gt"&lt;/span&gt; 'elscreen-next) &lt;span class="comment"&gt;;next tab&lt;/span&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryKeys"&gt;CategoryKeys&lt;/a&gt; &lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryEmulation"&gt;CategoryEmulation&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 13:08:41 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_Evil</comments>
<dc:contributor>d11wtq</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>80</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=Evil</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=Evil</wiki:diff>
</item>

<item>
<title>AbcMode</title>
<link>http://www.emacswiki.org/emacs/AbcMode</link>
<guid>http://www.emacswiki.org/emacs/AbcMode</guid>
<description>&lt;div class="diff"&gt;&lt;p&gt;&lt;b&gt;Last edit&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="old"&gt;&lt;p&gt;&amp;lt; Source:&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; &lt;strong class="changes"&gt;Old&lt;/strong&gt; Source:&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="new"&gt;&lt;p&gt;&amp;gt; Latest source: https://gist.github.com/mkjunker/5624795&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;A major mode for editing abc music files. Includes some abc2midi features.&lt;/p&gt;&lt;pre&gt;    (add-to-list 'auto-mode-alist '(&lt;span class="string"&gt;"\\.abc\\'"&lt;/span&gt;  . abc-mode))
    (add-to-list 'auto-mode-alist '(&lt;span class="string"&gt;"\\.abp\\'"&lt;/span&gt;  . abc-mode))
    (autoload 'abc-mode &lt;span class="string"&gt;"abc-mode"&lt;/span&gt; &lt;span class="string"&gt;"abc music files"&lt;/span&gt; t)
    (add-to-list 'auto-insert-alist '(abc-mode . abc-skeleton))&lt;/pre&gt;&lt;p&gt;Old Source: &lt;a class="local" href="http://www.emacswiki.org/emacs/abc-mode.el"&gt;abc-mode.el&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Latest source: &lt;a class="url http" href="https://gist.github.com/mkjunker/5624795"&gt;https://gist.github.com/mkjunker/5624795&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class="local" href="http://www.emacswiki.org/emacs/CategoryModes"&gt;CategoryModes&lt;/a&gt; &lt;a class="local" href="http://www.emacswiki.org/emacs/MultimediaModes"&gt;MultimediaModes&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 22 May 2013 02:22:07 GMT</pubDate>
<comments>http://www.emacswiki.org/emacs/Comments_on_AbcMode</comments>
<dc:contributor>MattJunker</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>6</wiki:version>
<wiki:history>http://www.emacswiki.org/emacs?action=history;id=AbcMode</wiki:history>
<wiki:diff>http://www.emacswiki.org/emacs?action=browse;diff=1;id=AbcMode</wiki:diff>
</item>
</channel>
</rss>
