<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>_emacs.d/config/magit-config.el</filename>
    </added>
    <added>
      <filename>_emacs.d/lib/bookmark+.el</filename>
    </added>
    <added>
      <filename>_emacs.d/lib/decompile.el</filename>
    </added>
    <added>
      <filename>_emacs.d/lib/jde-findbugs.el</filename>
    </added>
    <added>
      <filename>_emacs.d/lib/jde-jalopy.el</filename>
    </added>
    <added>
      <filename>_emacs.d/lib/jde-lint.el</filename>
    </added>
    <added>
      <filename>_emacs.d/lib/wikipedia-mode.el</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -60,6 +60,7 @@ rxvt*scrollTtyOutput: off
 rxvt*scrollKey: on
 rxvt*titleBar: false
 
+rxvt-unicode*modifier: mod1
 rxvt-unicode*background: DarkSlateGray
 rxvt-unicode*foreground: Wheat
 rxvt-unicode*cursorColor: Yellow
@@ -75,6 +76,7 @@ rxvt-unicode*scrollKey: on
 rxvt-unicode*titleBar: true
 rxvt-unicode*color12: #84bdd2
 
+urxvt*modifier: mod1
 urxvt*background: DarkSlateGray
 urxvt*foreground: Wheat
 urxvt*cursorColor: Yellow</diff>
      <filename>_Xdefaults</filename>
    </modified>
    <modified>
      <diff>@@ -514,7 +514,8 @@ globalkeys = {
                               awful.util.eval, awful.prompt.bash, awful.util.getdir(&quot;cache&quot;) .. &quot;/history_eval&quot;)
                           end),
 
-    keybinding({ modkey }, &quot;F12&quot;, function () awful.spawn('xlock') end),
+    key({ modkey }, &quot;F12&quot;, function () awful.util.spawn('xlock') end),
+    key({ }, &quot;Pause&quot;, function () awful.util.spawn('xlock') end),
 
     --
     -- Awesome controls</diff>
      <filename>_config/awesome/rc.lua</filename>
    </modified>
    <modified>
      <diff>@@ -668,8 +668,8 @@ With prefix argument, turn on if ARG &gt; 0; else turn off.&quot;
   (interactive))
 (global-set-key &quot;\M-\C-y&quot; 'kill-ring-search)
 
-;; (when (request 'pymacs)
-;;   (pymacs-load &quot;ropemacs&quot; &quot;rope-&quot;))
+(when (request 'pymacs)
+  (pymacs-load &quot;ropemacs&quot; &quot;rope-&quot;))
 
 (when (request 'haskell-mode)
   (add-hook 'haskell-mode-hook
@@ -677,7 +677,7 @@ With prefix argument, turn on if ARG &gt; 0; else turn off.&quot;
                 (setq comment-padding &quot; &quot;)
                 (setq comment-start &quot;--&quot;))))
 
-(request 'magit)
+(request 'magit-config)
 
 ;; update agenda file after changes to org files
 (defun th-org-mode-init ()
@@ -705,6 +705,6 @@ With prefix argument, turn on if ARG &gt; 0; else turn off.&quot;
 (request 'magit)
 (request 'ipa)
 
-(eval-after-load &quot;info&quot; '(require 'info+))
+;; (eval-after-load &quot;info&quot; '(require 'info+))
 
 (message &quot;.emacs loaded&quot;)
\ No newline at end of file</diff>
      <filename>_emacs</filename>
    </modified>
    <modified>
      <diff>@@ -9,6 +9,7 @@
  '(1on1-*Help*-frame-flag nil)
  '(1on1-minibuffer-frame-alist (quote ((foreground-color . &quot;Red&quot;) (background-color . &quot;LightBlue&quot;) (font . &quot;fixed&quot;) (mouse-color . &quot;Black&quot;) (cursor-color . &quot;Black&quot;) (menu-bar-lines) (height . 2) (icon-type) (minibuffer . only) (user-position . t) (vertical-scroll-bars) (name . &quot;Emacs Minibuffer&quot;))))
  '(Man-notify-method (quote bully))
+ '(TeX-output-view-style (quote ((&quot;^dvi$&quot; (&quot;^landscape$&quot; &quot;^pstricks$\\|^pst-\\|^psfrag$&quot;) &quot;%(o?)dvips -t landscape %d -o &amp;&amp; gv %f&quot;) (&quot;^dvi$&quot; &quot;^pstricks$\\|^pst-\\|^psfrag$&quot; &quot;%(o?)dvips %d -o &amp;&amp; gv %f&quot;) (&quot;^dvi$&quot; (&quot;^\\(?:a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4\\)$&quot; &quot;^landscape$&quot;) &quot;%(o?)xdvi %dS -paper a4r -s 0 %d&quot;) (&quot;^dvi$&quot; &quot;^\\(?:a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4\\)$&quot; &quot;%(o?)xdvi %dS -paper a4 %d&quot;) (&quot;^dvi$&quot; (&quot;^\\(?:a5\\(?:comb\\|paper\\)\\)$&quot; &quot;^landscape$&quot;) &quot;%(o?)xdvi %dS -paper a5r -s 0 %d&quot;) (&quot;^dvi$&quot; &quot;^\\(?:a5\\(?:comb\\|paper\\)\\)$&quot; &quot;%(o?)xdvi %dS -paper a5 %d&quot;) (&quot;^dvi$&quot; &quot;^b5paper$&quot; &quot;%(o?)xdvi %dS -paper b5 %d&quot;) (&quot;^dvi$&quot; &quot;^letterpaper$&quot; &quot;%(o?)xdvi %dS -paper us %d&quot;) (&quot;^dvi$&quot; &quot;^legalpaper$&quot; &quot;%(o?)xdvi %dS -paper legal %d&quot;) (&quot;^dvi$&quot; &quot;^executivepaper$&quot; &quot;%(o?)xdvi %dS -paper 7.25x10.5in %d&quot;) (&quot;^dvi$&quot; &quot;.&quot; &quot;%(o?)xdvi %dS %d&quot;) (&quot;^pdf$&quot; &quot;.&quot; &quot;xpdf -fullscreen -remote %s -raise %o %(outpage)&quot;) (&quot;^html?$&quot; &quot;.&quot; &quot;netscape %o&quot;))))
  '(add-log-keep-changes-together t)
  '(ange-ftp-ftp-program-args (quote (&quot;-i&quot; &quot;-n&quot; &quot;-g&quot; &quot;-v&quot; &quot;-u&quot;)))
  '(apropos-do-all t)
@@ -74,7 +75,7 @@
  '(ecb-tip-of-the-day nil)
  '(ecb-vc-supported-backends (quote ((ecb-vc-dir-managed-by-CVS . vc-state) (ecb-vc-dir-managed-by-RCS . vc-state) (ecb-vc-dir-managed-by-SCCS . vc-state) (ecb-vc-dir-managed-by-SVN . vc-state))))
  '(ediff-keep-variants t)
- '(enable-multibyte-characters t)
+ '(enable-multibyte-characters t t)
  '(enable-recursive-minibuffers t)
  '(erc-bbdb-auto-create-on-whois-p t)
  '(erc-echo-timestamps t)
@@ -105,9 +106,17 @@
  '(glasses-separator &quot;&quot;)
  '(global-company-mode t)
  '(global-font-lock-mode t nil (font-lock))
+ '(global-semantic-decoration-mode nil nil (semantic-decorate-mode))
  '(global-semantic-highlight-edits-mode t nil (semantic-util-modes))
+ '(global-semantic-highlight-func-mode nil nil (semantic-util-modes))
+ '(global-semantic-idle-completions-mode nil nil (semantic-idle))
  '(global-semantic-idle-scheduler-mode t nil (semantic-idle))
- '(global-semantic-show-unmatched-syntax-mode t nil (semantic-util-modes))
+ '(global-semantic-idle-summary-mode nil nil (semantic-idle))
+ '(global-semantic-mru-bookmark-mode nil nil (semantic-util-modes))
+ '(global-semantic-show-parser-state-mode nil nil (semantic-util-modes))
+ '(global-semantic-show-unmatched-syntax-mode nil nil (semantic-util-modes))
+ '(global-semantic-stickyfunc-mode nil nil (semantic-util-modes))
+ '(global-senator-minor-mode nil nil (senator))
  '(global-visible-mark-mode-exclude-alist (quote (&quot;^\\*&quot;)))
  '(gnus-activate-level 5)
  '(gnus-adaptive-pretty-print t)
@@ -200,6 +209,7 @@
  '(org-empty-line-terminates-plain-lists t)
  '(org-enforce-todo-checkbox-dependencies t)
  '(org-enforce-todo-dependencies t)
+ '(org-export-allow-BIND t)
  '(org-export-language-setup (quote ((&quot;en&quot; &quot;Author&quot; &quot;Date&quot; &quot;Table of Contents&quot;) (&quot;cs&quot; &quot;Autor&quot; &quot;Datum&quot; &quot;Obsah&quot;) (&quot;da&quot; &quot;Ophavsmand&quot; &quot;Dato&quot; &quot;Indhold&quot;) (&quot;de&quot; &quot;Autor&quot; &quot;Datum&quot; &quot;Inhaltsverzeichnis&quot;) (&quot;es&quot; &quot;Autor&quot; &quot;Fecha&quot; &quot;\314ndice&quot;) (&quot;fr&quot; &quot;Auteur&quot; &quot;Date&quot; &quot;Table des Mati&#232;res&quot;) (&quot;it&quot; &quot;Autore&quot; &quot;Data&quot; &quot;Indice&quot;) (&quot;nl&quot; &quot;Auteur&quot; &quot;Datum&quot; &quot;Inhoudsopgave&quot;) (&quot;nn&quot; &quot;Forfattar&quot; &quot;Dato&quot; &quot;Innhold&quot;) (&quot;sv&quot; &quot;F\366rfattarens&quot; &quot;Datum&quot; &quot;Inneh\345ll&quot;))))
  '(org-export-publishing-directory (quote ((:html . &quot;./html&quot;) (:LaTeX . &quot;./latex&quot;) (:ascii . &quot;./txt&quot;) (:ical . &quot;./ical&quot;) (:xoxo . &quot;./xoxo&quot;))) t)
  '(org-outline-path-complete-in-steps nil)
@@ -246,7 +256,7 @@
  '(reftex-auto-recenter-toc t)
  '(reftex-revisit-to-follow t)
  '(reftex-toc-split-windows-horizontally nil)
- '(safe-local-variable-values (quote ((org-export-html-table-tag . &quot;&lt;table border=\&quot;1\&quot; cellspacing=\&quot;0\&quot; cellpadding=\&quot;6\&quot; rules=\&quot;groups\&quot; frame=\&quot;box\&quot;&gt;&quot;) (org-export-html-style-include-default) (org-export-html-style . &quot;   &lt;style type=\&quot;text/css\&quot;&gt;
+ '(safe-local-variable-values (quote ((test-case-name . twisted\.test\.test_internet) (org-export-html-table-tag . &quot;&lt;table border=\&quot;1\&quot; cellspacing=\&quot;0\&quot; cellpadding=\&quot;6\&quot; rules=\&quot;groups\&quot; frame=\&quot;box\&quot;&gt;&quot;) (org-export-html-style-include-default) (org-export-html-style . &quot;   &lt;style type=\&quot;text/css\&quot;&gt;
       p {font-weight: normal; color: gray; }
       h1 {color: black; }
   &lt;/style&gt;&quot;) (folded-file . t) (TeX-master . main\.tex) (Package . Memoization) (Base . 10) (Syntax . Common-Lisp) (unibyte . t) (auto-recompile . t) (TeX-master . &quot;main&quot;) (TeX-master . t) (auto-compile-lisp) (before-save-hook org-encrypt-entries))))
@@ -262,6 +272,7 @@
 ]+&quot;)
  '(semantic-idle-scheduler-max-buffer-size 102400)
  '(semanticdb-global-mode t nil (semanticdb))
+ '(server-use-tcp nil)
  '(set-mark-command-repeat-pop t)
  '(sh-shell-file &quot;/bin/bash&quot;)
  '(show-paren-mode t)
@@ -286,6 +297,7 @@
  '(tooltip-frame-parameters (quote ((name . &quot;tooltip&quot;) (internal-border-width . 1) (border-width . 0))))
  '(tooltip-gud-tips-p t)
  '(tramp-default-method-alist (quote ((&quot;%&quot; &quot;&quot; &quot;smb&quot;) (&quot;&quot; &quot;\\`\\(anonymous\\|ftp\\)\\'&quot; &quot;ftp&quot;) (&quot;\\`ftp&quot; &quot;&quot; &quot;ftp&quot;) (&quot;\\`localhost\\'&quot; &quot;\\`root\\'&quot; &quot;su&quot;))))
+ '(tramp-gvfs-methods nil)
  '(transient-mark-mode nil)
  '(truncate-partial-width-windows nil)
  '(type-break-good-rest-interval 300)
@@ -331,6 +343,7 @@
  '(font-latex-bold-face ((t (:inherit bold))))
  '(font-latex-italic-face ((t (:inherit italic))))
  '(font-latex-math-face ((((class color) (background dark)) (:inherit font-lock-number-face))))
+ '(font-latex-slide-title-face ((t (:inherit font-lock-type-face :weight bold))))
  '(font-latex-string-face ((((class color) (background dark)) (:inherit font-lock-string-face))))
  '(font-latex-verbatim-face ((((class color) (background dark)) (:foreground &quot;burlywood&quot;))))
  '(font-lock-builtin-face ((((class color) (background dark)) (:foreground &quot;lightsteelblue&quot;))))</diff>
      <filename>_emacs-cust</filename>
    </modified>
    <modified>
      <diff>@@ -7,12 +7,12 @@
 ;; Copyright (C) 1996-2009, Drew Adams, all rights reserved.
 ;; Created: Tue Sep 12 16:30:11 1995
 ;; Version: 21.1
-;; Last-Updated: Fri May 22 11:20:13 2009 (-0700)
+;; Last-Updated: Mon Aug  3 14:21:59 2009 (-0700)
 ;;           By: dradams
-;;     Update #: 3455
+;;     Update #: 3832
 ;; URL: http://www.emacswiki.org/cgi-bin/wiki/info+.el
 ;; Keywords: help, docs, internal
-;; Compatibility: GNU Emacs 20.x, GNU Emacs 21.x, GNU Emacs 22.x
+;; Compatibility: GNU Emacs: 20.x, 21.x, 22.x, 23.x
 ;;
 ;; Features that might be required by this library:
 ;;
@@ -27,19 +27,20 @@
 ;;
 ;;  Faces defined here:
 ;;
-;;    `info-elisp-command-ref-item',
-;;    `info-elisp-function-ref-item',`info-elisp-macro-ref-item',
-;;    `info-elisp-reference-item', `info-elisp-special-form-ref-item',
-;;    `info-elisp-syntax-class-item',
-;;    `info-elisp-user-option-ref-item',
-;;    `info-elisp-variable-ref-item', `info-file', `info-menu',
-;;    `info-node', `info-quoted-name', `info-string', `info-xref',
-;;    `minibuffer-prompt'.
+;;    `info-command-ref-item', `info-file',
+;;    `info-function-ref-item',`info-macro-ref-item', `info-menu',
+;;    `info-node', `info-quoted-name', `info-reference-item',
+;;    `info-single-quote', `info-special-form-ref-item',
+;;    `info-string', `info-syntax-class-item',
+;;    `info-user-option-ref-item', `info-variable-ref-item',
+;;    `info-xref', `minibuffer-prompt'.
 ;;
 ;;  Options (user variables) defined here:
 ;;
 ;;    `Info-display-node-header-fn', `Info-fit-frame-flag',
-;;    `Info-fontify-quotations-flag', `Info-saved-nodes',
+;;    `Info-fontify-quotations-flag',
+;;    `Info-fontify-reference-items-flag',
+;;    `Info-fontify-single-quote-flag', `Info-saved-nodes',
 ;;    `Info-subtree-separator'.
 ;;
 ;;  Commands defined here:
@@ -53,12 +54,12 @@
 ;;  Non-interactive functions defined here:
 ;;
 ;;    `Info-display-node-default-header',
-;;    `Info-display-node-time-header',
-;;    `info-fontify-quotations', `info-fontify-reference-items'.
+;;    `Info-display-node-time-header', `info-fontify-quotations',
+;;    `info-fontify-reference-items', `info-quotation-regexp'.
 ;;
 ;;  Internal variables defined here:
 ;;
-;;    `Info-merged-map'.
+;;    `Info-merged-map', `Info-mode-syntax-table'.
 ;;
 ;;
 ;;  ***** NOTE: The following standard faces defined in `info.el'
@@ -82,6 +83,9 @@
 ;;     6. Notes in face `info-xref'.
 ;;     7. If `Info-fontify-quotations-flag', then fontify `...' in
 ;;        face `info-quoted-name' and &quot;...&quot; in face `info-string'.
+;;     8. If `Info-fontify-single-quote-flag' and
+;;        `Info-fontify-quotations-flag', then fontify ' in face
+;;        `info-single-quote'.
 ;;  `Info-goto-emacs-command-node' -
 ;;     1. Uses `completing-read' in interactive spec, with,
 ;;        as default, `symbol-nearest-point'.
@@ -166,8 +170,27 @@
 ;;
 ;;; Change log:
 ;;
+;; 2009/08/03 dadams
+;;     Updated for Emacs 23.1 release: Info-find-node-2, Info-fontify-node, Info-search: new version.
+;; 2009/06/10 dadams
+;;     Added: Info-fontify-reference-items-flag, Info-mode-syntax-table.
+;;     Info-mode: Use Info-mode-syntax-table, not text-mode-syntax-table.
+;;     Info-fontify-node: Fontify ref items if *-reference-items-flag, not just for Elisp manual.
+;;     Renamed: info-elisp-* to info-*.
+;; 2009/06/09 dadams
+;;     info-fontify-quotations: Allow \ before ', just not before`.
+;; 2009/06/08 dadams
+;;     info-fontify-quotations: Rewrote, using better regexp.  Don't fontify escaped ` or '.
+;;       Fontify `\', `\\', etc.  Respect Info-fontify-single-quote-flag.
+;;     Added: info-single-quote, Info-fontify-single-quote-flag, info-quotation-regexp.
+;;     info-quoted-name: Changed face spec to (:inherit font-lock-string-face :foreground &quot;DarkViolet&quot;)
+;; 2009/05/25 dadams
+;;     Info-virtual-book: Treat info-node bookmarks too.
+;; 2009/05/23 dadams
+;;     Added: Info-mode for Emacs 23.
+;;            They added Info-isearch-filter, Info-revert-buffer-function, Info-bookmark-make-record.
 ;; 2009/05/22 dadams
-;;     Added: Info-saved-nodes, Info-save-current-node, Info-virtual-book.
+;;     Added: Info-saved-nodes, Info-save-current-node, Info-virtual-book.  Added to Info-mode-menu.
 ;;     Bind info-apropos, Info-save-current-node, Info-virtual-book to a, ., and v.
 ;;     Info-mode: Updated doc string.
 ;; 2009/04/26 dadams
@@ -413,32 +436,41 @@
 ;; (when (&gt;= emacs-major-version 22)
 ;;   (require 'icicles nil t)) ;; (no error if not found): icicle-read-string-completing
 
-;; Quiet the byte compiler a bit
-(when (&lt; emacs-major-version 21) (eval-when-compile (defvar Info-fontify-visited-nodes)
-                                                    (defvar Info-hide-note-references)
-                                                    (defvar Info-history-list)
-                                                    (defvar Info-menu-entry-name-re)
-                                                    (defvar Info-next-link-keymap)
-                                                    (defvar Info-node-spec-re)
-                                                    (defvar Info-point-loc)
-                                                    (defvar Info-prev-link-keymap)
-                                                    (defvar Info-refill-paragraphs)
-                                                    (defvar Info-up-link-keymap)
-                                                    (defvar Info-use-header-line)
-                                                    (defvar desktop-save-buffer)
-                                                    (defvar header-line-format)
-                                                    (defvar info-tool-bar-map)))
+;; Quiet the byte compiler a bit.
+(when (&lt; emacs-major-version 21)
+  (eval-when-compile
+   (defvar desktop-save-buffer)
+   (defvar header-line-format)
+   (defvar Info-fontify-visited-nodes)
+   (defvar Info-hide-note-references)
+   (defvar Info-history-list)
+   (defvar Info-isearch-initial-node)
+   (defvar Info-isearch-search)
+   (defvar Info-menu-entry-name-re)
+   (defvar Info-next-link-keymap)
+   (defvar Info-node-spec-re)
+   (defvar Info-point-loc)
+   (defvar Info-prev-link-keymap)
+   (defvar Info-refill-paragraphs)
+   (defvar Info-saved-nodes)
+   (defvar Info-search-case-fold)
+   (defvar Info-search-history)
+   (defvar Info-search-whitespace-regexp)
+   (defvar info-tool-bar-map)
+   (defvar Info-up-link-keymap)
+   (defvar Info-use-header-line)
+   (defvar widen-automatically)))
+
+(when (&lt; emacs-major-version 23)
+  (eval-when-compile
+   (defvar Info-read-node-completion-table)
+   (defvar Info-breadcrumbs-depth)
+   (defvar isearch-filter-predicate)))
 
 ;;; You will likely get byte-compiler messages saying that variable
-;;; node-name is free.  In addition, in Emacs &lt; 21, you might get
-;;; byte-compiler messages saying that these variables are free:
-;;
-;;;   Info-isearch-initial-node, Info-isearch-search,
-;;;   Info-search-case-fold, Info-search-history,
-;;;   Info-search-whitespace-regexp, widen-automatically.
-;;;
-;;; In Emacs &lt; 21 you might also get a byte-compiler message saying
-;;; that these functions are not known to be defined:
+;;; node-name is free.  In Emacs &lt; 21 you might also get a
+;;; byte-compiler message saying that these functions are not known to
+;;; be defined:
 ;;;
 ;;;   Info-escape-percent, Info-find-in-tag-table,
 ;;;   Info-find-node-in-buffer, Info-find-node-2, Info-history-back,
@@ -495,20 +527,27 @@ Don't forget to mention your Emacs and library versions.&quot;))
     :group 'basic-faces))
 
 (defface info-file '((t (:foreground &quot;Blue&quot; :background &quot;LightGray&quot;)))
-  &quot;*Face used for file heading labels in `info'.&quot; :group 'Info-Plus :group 'faces)
+  &quot;Face for file heading labels in `info'.&quot; :group 'Info-Plus :group 'faces)
 
 (defface info-menu '((t (:foreground &quot;Blue&quot;)))
   &quot;*Face used for menu items in `info'.&quot; :group 'Info-Plus :group 'faces)
 
+;; FWIW, I use a `LightSteelBlue' background for `*info*', and I use `yellow' for this face.
 (defface info-quoted-name               ; For `...'
-    '((((background light)) (:foreground &quot;#C29D0000C29D&quot;)) ; a dark magenta
+    '((((background light)) (:inherit font-lock-string-face :foreground &quot;DarkViolet&quot;))
       (t (:foreground &quot;yellow&quot;)))
-  &quot;*Face used for quoted names (`...') in `info'.&quot;
+  &quot;Face for quoted names (`...') in `info'.&quot;
   :group 'Info-Plus :group 'faces)
 
-(defface info-string             ; For &quot;...&quot;
+;; FWIW, I use a `LightSteelBlue' background for `*info*', and I use `red3' for this face.
+(defface info-string                    ; For &quot;...&quot;
     '((t (:inherit font-lock-string-face :foreground &quot;red3&quot;)))
-  &quot;Face used for strings (\&quot;...\&quot;) in `info'.&quot;
+  &quot;Face for strings (\&quot;...\&quot;) in `info'.&quot;
+  :group 'Info-Plus :group 'faces)
+
+(defface info-single-quote              ; For '
+    '((t (:inherit font-lock-keyword-face :foreground &quot;Magenta&quot;)))
+  &quot;Face for isolated single-quote marks (') in `info'.&quot;
   :group 'Info-Plus :group 'faces)
 
 ;;; These are only for Emacs 20 and 21.
@@ -555,38 +594,38 @@ Don't forget to mention your Emacs and library versions.&quot;))
                                 (?= info-title-2 bold-italic underline)
                                 (?- info-title-4 italic underline))))
 
-;;; Faces for highlighting reference items in Emacs-Lisp manual
-(defface info-elisp-function-ref-item
+;;; Faces for highlighting reference items
+(defface info-function-ref-item
          '((t (:foreground &quot;DarkBlue&quot; :background &quot;LightGray&quot;)))
-         &quot;Face used for \&quot;Function:\&quot; reference items in `info' Elisp manual.&quot;
+         &quot;Face used for \&quot;Function:\&quot; reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
-(defface info-elisp-variable-ref-item
+(defface info-variable-ref-item
          '((t (:foreground &quot;FireBrick&quot; :background &quot;LightGray&quot;)))
-         &quot;Face used for \&quot;Variable:\&quot; reference items in `info' Elisp manual.&quot;
+         &quot;Face used for \&quot;Variable:\&quot; reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
-(defface info-elisp-special-form-ref-item
+(defface info-special-form-ref-item
          '((t (:foreground &quot;DarkMagenta&quot; :background &quot;LightGray&quot;)))
-         &quot;Face used for \&quot;Special Form:\&quot; reference items in `info' Elisp manual.&quot;
+         &quot;Face used for \&quot;Special Form:\&quot; reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
-(defface info-elisp-command-ref-item
+(defface info-command-ref-item
          '((t (:foreground &quot;Blue&quot; :background &quot;LightGray&quot;)))
-         &quot;Face used for \&quot;Command:\&quot; reference items in `info' Elisp manual.&quot;
+         &quot;Face used for \&quot;Command:\&quot; reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
-(defface info-elisp-user-option-ref-item
+(defface info-user-option-ref-item
          '((t (:foreground &quot;Red&quot; :background &quot;LightGray&quot;)))
-         &quot;Face used for \&quot;User Option:\&quot; reference items in `info' Elisp manual.&quot;
+         &quot;Face used for \&quot;User Option:\&quot; reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
-(defface info-elisp-macro-ref-item
+(defface info-macro-ref-item
          '((t (:foreground &quot;DarkMagenta&quot; :background &quot;LightGray&quot;)))
-         &quot;Face used for \&quot;Macro:\&quot; reference items in `info' Elisp manual.&quot;
+         &quot;Face used for \&quot;Macro:\&quot; reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
-(defface info-elisp-syntax-class-item
+(defface info-syntax-class-item
          '((t (:foreground &quot;DarkGreen&quot; :background &quot;LightGray&quot;)))
-         &quot;Face used for \&quot;Syntax Class:\&quot; reference items in `info' Elisp manual.&quot;
+         &quot;Face used for \&quot;Syntax Class:\&quot; reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
-(defface info-elisp-reference-item
+(defface info-reference-item
          '((t (:background &quot;LightGray&quot;)))
-         &quot;Face used for reference items in `info' Elisp manual.&quot;
+         &quot;Face used for reference items in `info' manual.&quot;
          :group 'Info-Plus :group 'faces)
 
 
@@ -605,13 +644,32 @@ single-quotes (`...').
 
 Note: This fontification can never be 100% reliable.  It aims to be
 useful in most Info texts, but it can occasionally result in
-fontification that you might not expect. This is not a bug; it is part
-of the design to be able to appropriately fontify a great variety of
-texts. Set this flag to nil if you do not find this fontification
+fontification that you might not expect.  This is not a bug; it is
+part of the design to be able to appropriately fontify a great variety
+of texts.  Set this flag to nil if you do not find this fontification
+useful.&quot;
+  :type 'boolean :group 'Info-Plus)
+
+;;;###autoload
+(defcustom Info-fontify-single-quote-flag t
+  &quot;*Non-nil means `info' fontifies ' when not preceded by `....
+A non-nil value has no effect unless `Info-fontify-quotations-flag' is
+also non-nil.
+
+Note: This fontification can never be 100% reliable.  It aims to be
+useful in most Info texts, but it can occasionally result in
+fontification that you might not expect.  This is not a bug; it is
+part of the design to be able to appropriately fontify a great variety
+of texts.  Set this flag to nil if you do not find this fontification
 useful.&quot;
   :type 'boolean :group 'Info-Plus)
 
 ;;;###autoload
+(defcustom Info-fontify-reference-items-flag t
+  &quot;*Non-nil means `info' fontifies reference items such as \&quot;Function:\&quot;.&quot;
+  :type 'boolean :group 'Info-Plus)
+
+;;;###autoload
 (defcustom Info-display-node-header-fn 'Info-display-node-default-header
   &quot;*Function to insert header by `Info-merge-subnodes'.&quot;
   :type 'function :group 'Info-Plus)
@@ -644,6 +702,14 @@ For example, type `^Q^L^Q^J* ' to set this to \&quot;\\f\\n* \&quot;.&quot;
 
 ;;; INTERNAL VARIABLES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+;; I reported this as Emacs bug #3312.  If it gets fixed, this can be removed.
+(defvar Info-mode-syntax-table
+  (let ((table  (copy-syntax-table text-mode-syntax-table)))
+    (modify-syntax-entry ?'    &quot;.&quot; table) ; Punctuation syntax for apostrophe (').
+    (modify-syntax-entry ?\240 &quot;.&quot; table) ; Punctuation syntax for non-breaking space.
+    table)
+  &quot;Syntax table for `info'.&quot;)
+
 (defvar Info-merged-map nil &quot;Keymap for merged Info buffer.&quot;)
 (if Info-merged-map
     nil
@@ -664,6 +730,10 @@ For example, type `^Q^L^Q^J* ' to set this to \&quot;\\f\\n* \&quot;.&quot;
      '(&quot;Info&quot;
        [&quot;Table of Contents&quot; Info-toc
         :help &quot;Go to table of contents&quot;]
+       [&quot;Virtual Book&quot; Info-virtual-book
+        :help &quot;Open table of contents of a virtual book&quot; :active Info-saved-nodes]
+       [&quot;Save Current Node&quot; Info-save-current-node
+        :help &quot;Save current node name for virtual book&quot;]
        [&quot;Find...(Regexp)&quot; Info-search
         :help &quot;Search for regular expression in this Info file&quot;]
        [&quot;Find Case-Sensitively...&quot; Info-search-case-sensitively
@@ -1182,7 +1252,7 @@ or file: `%s'&quot;
 ;; Call `fit-frame' if `Info-fit-frame-flag'.
 ;;
 ;;;###autoload
-(when (&gt;= emacs-major-version 22)
+(when (= emacs-major-version 22)
   (defun Info-find-node-2 (filename nodename &amp;optional no-going-back)
     (buffer-disable-undo (current-buffer))
     (or (eq major-mode 'Info-mode)
@@ -1214,7 +1284,7 @@ or file: `%s'&quot;
                     (info-insert-file-contents filename nil)
                     (setq default-directory (file-name-directory filename))))
                  (set-buffer-modified-p nil)
-
+              
                  ;; Check makeinfo version for index cookie support
                  (let ((found nil))
                    (goto-char (point-min))
@@ -1226,7 +1296,7 @@ or file: `%s'&quot;
                            (setq found t))
                      (error nil))
                    (set (make-local-variable 'Info-file-supports-index-cookies) found))
-
+              
                  ;; See whether file has a tag table.  Record the location if yes.
                  (goto-char (point-max))
                  (forward-line -8)
@@ -1365,6 +1435,185 @@ or file: `%s'&quot;
 
 
 ;; REPLACE ORIGINAL in `info.el':
+;; Call `fit-frame' if `Info-fit-frame-flag'.
+;;
+;;;###autoload
+(when (&gt; emacs-major-version 22)
+  (defun Info-find-node-2 (filename nodename &amp;optional no-going-back)
+    (buffer-disable-undo (current-buffer))
+    (or (eq major-mode 'Info-mode)
+        (Info-mode))
+    (widen)
+    (setq Info-current-node nil)
+    (unwind-protect
+         (let ((case-fold-search t)
+               anchorpos)
+           ;; Switch files if necessary
+           (or (null filename)
+               (equal Info-current-file filename)
+               (let ((inhibit-read-only t))
+                 (setq Info-current-file nil
+                       Info-current-subfile nil
+                       Info-current-file-completions nil
+                       buffer-file-name nil)
+                 (erase-buffer)
+                 (cond
+                   ((eq filename t)
+                    (Info-insert-dir))
+                   ((eq filename 'apropos)
+                    (insert-buffer-substring &quot; *info-apropos*&quot;))
+                   ((eq filename 'history)
+                    (insert-buffer-substring &quot; *info-history*&quot;))
+                   ((eq filename 'toc)
+                    (insert-buffer-substring &quot; *info-toc*&quot;))
+                   (t
+                    (info-insert-file-contents filename nil)
+                    (setq default-directory (file-name-directory filename))))
+                 (set-buffer-modified-p nil)
+                 (set (make-local-variable 'Info-file-supports-index-cookies)
+                      (Info-file-supports-index-cookies filename))
+
+                 ;; See whether file has a tag table.  Record the location if yes.
+                 (goto-char (point-max))
+                 (forward-line -8)
+                 ;; Use string-equal, not equal, to ignore text props.
+                 (if (not (or (string-equal nodename &quot;*&quot;)
+                              (not
+                               (search-forward &quot;\^_\nEnd tag table\n&quot; nil t))))
+                     (let (pos)
+                       ;; We have a tag table.  Find its beginning.
+                       ;; Is this an indirect file?
+                       (search-backward &quot;\nTag table:\n&quot;)
+                       (setq pos (point))
+                       (if (save-excursion
+                             (forward-line 2)
+                             (looking-at &quot;(Indirect)\n&quot;))
+                           ;; It is indirect.  Copy it to another buffer
+                           ;; and record that the tag table is in that buffer.
+                           (let ((buf (current-buffer))
+                                 (tagbuf
+                                  (or Info-tag-table-buffer
+                                      (generate-new-buffer &quot; *info tag table*&quot;))))
+                             (setq Info-tag-table-buffer tagbuf)
+                             (with-current-buffer tagbuf
+                               (buffer-disable-undo (current-buffer))
+                               (setq case-fold-search t)
+                               (erase-buffer)
+                               (insert-buffer-substring buf))
+                             (set-marker Info-tag-table-marker
+                                         (match-end 0) tagbuf))
+                         (set-marker Info-tag-table-marker pos)))
+                   (set-marker Info-tag-table-marker nil))
+                 (setq Info-current-file
+                       (cond
+                         ((eq filename t) &quot;dir&quot;)
+                         (t filename)))
+                 ))
+           ;; Use string-equal, not equal, to ignore text props.
+           (if (string-equal nodename &quot;*&quot;)
+               (progn (setq Info-current-node nodename)
+                      (Info-set-mode-line))
+             ;; Possibilities:
+             ;;
+             ;; 1. Anchor found in tag table
+             ;; 2. Anchor *not* in tag table
+             ;;
+             ;; 3. Node found in tag table
+             ;; 4. Node *not* found in tag table, but found in file
+             ;; 5. Node *not* in tag table, and *not* in file
+             ;;
+             ;; *Or* the same, but in an indirect subfile.
+
+             ;; Search file for a suitable node.
+             (let ((guesspos (point-min))
+                   (regexp (concat &quot;\\(Node:\\|Ref:\\) *\\(&quot;
+                                   (if (stringp nodename)
+                                       (regexp-quote nodename)
+                                     &quot;&quot;)
+                                   &quot;\\) *[,\t\n\177]&quot;)))
+
+               (catch 'foo
+
+                 ;; First, search a tag table, if any
+                 (when (marker-position Info-tag-table-marker)
+                   (let* ((m Info-tag-table-marker)
+                          (found (Info-find-in-tag-table m regexp)))
+
+                     (when found
+                       ;; FOUND is (ANCHOR POS MODE).
+                       (setq guesspos (nth 1 found))
+
+                       ;; If this is an indirect file, determine which
+                       ;; file really holds this node and read it in.
+                       (unless (eq (nth 2 found) 'Info-mode)
+                         ;; Note that the current buffer must be the
+                         ;; *info* buffer on entry to
+                         ;; Info-read-subfile.  Thus the hackery above.
+                         (setq guesspos (Info-read-subfile guesspos)))
+
+                       ;; Handle anchor
+                       (when (nth 0 found)
+                         (goto-char (setq anchorpos guesspos))
+                         (throw 'foo t)))))
+
+                 ;; Else we may have a node, which we search for:
+                 (goto-char (max (point-min)
+                                 (- (byte-to-position guesspos) 1000)))
+
+                 ;; Now search from our advised position (or from beg of
+                 ;; buffer) to find the actual node.  First, check
+                 ;; whether the node is right where we are, in case the
+                 ;; buffer begins with a node.
+                 (let ((pos (Info-find-node-in-buffer regexp)))
+                   (when pos
+                     (goto-char pos)
+                     (throw 'foo t)))
+
+                 (when (string-match &quot;\\([^.]+\\)\\.&quot; nodename)
+                   (let (Info-point-loc)
+                     (Info-find-node-2
+                      filename (match-string 1 nodename) no-going-back))
+                   (widen)
+                   (throw 'foo t))
+
+                 ;; No such anchor in tag table or node in tag table or file
+                 (error &quot;No such node or anchor: %s&quot; nodename))
+
+               (Info-select-node)
+               (goto-char (point-min))
+               (forward-line 1)         ; skip header line
+               (when (&gt; Info-breadcrumbs-depth 0) ; skip breadcrumbs line
+                 (forward-line 1))
+
+               (cond (anchorpos
+                      (let ((new-history (list Info-current-file
+                                               (substring-no-properties nodename))))
+                        ;; Add anchors to the history too
+                        (setq Info-history-list
+                              (cons new-history
+                                    (delete new-history Info-history-list))))
+                      (goto-char anchorpos))
+                     ((numberp Info-point-loc)
+                      (forward-line (- Info-point-loc 2))
+                      (setq Info-point-loc nil))
+                     ((stringp Info-point-loc)
+                      (Info-find-index-name Info-point-loc)
+                      (setq Info-point-loc nil)))))
+           (when (and (one-window-p t) (not (window-minibuffer-p))
+                      (fboundp 'fit-frame) ; Defined in `fit-frame.el'.
+                      Info-fit-frame-flag)
+             (fit-frame)))
+      ;; If we did not finish finding the specified node,
+      ;; go back to the previous one.
+      (or Info-current-node no-going-back (null Info-history)
+          (let ((hist (car Info-history)))
+            (setq Info-history (cdr Info-history))
+            (Info-find-node (nth 0 hist) (nth 1 hist) t)
+            (goto-char (nth 2 hist)))))))
+
+
+
+;; REPLACE ORIGINAL in `info.el':
 ;; BUG FIX (bug reported 2008-10-04).
 ;; 1. Match closing paren, if present.
 ;; 2. If only opening paren and CODE = t, then wrap each file name in ().
@@ -1744,15 +1993,15 @@ to search again for `%s'.&quot;)
                                      nil)))))))))     ; RETURN nil: not found.
 
 ;;;###autoload
-(unless (&gt;= emacs-major-version 22)
+(unless (&gt; emacs-major-version 21)
   ;; REPLACES ORIGINAL in `info.el':
   ;; 1. File name in face `info-file'.
   ;; 2. Node names in face `info-node'.
   ;; 3. Menu items in face `info-menu'.
   ;; 4. Only 5th and 9th menu items have their `*' colored.
   ;; 5. Notes in face `info-xref'.
-  ;; 6. If `Info-fontify-quotations-flag', fontify `...' in face `info-quoted-name'
-  ;;    and &quot;...&quot; in face `info-string'.
+  ;; 6. If `Info-fontify-quotations-flag', fontify `...' in face `info-quoted-name',
+  ;;    &quot;...&quot; in face `info-string', and ' in face `info-single-quote'.
   (defun Info-fontify-node ()
     (save-excursion
       (let ((buffer-read-only nil)
@@ -1809,19 +2058,19 @@ to search again for `%s'.&quot;)
         ;; Fontify `...' and &quot;...&quot;
         (goto-char (point-min))
         (when Info-fontify-quotations-flag (info-fontify-quotations)) ; Fontify `...' and &quot;...&quot;
-
-        ;; Fontify reference items if in Emacs-Lisp manual.
+        ;;  Fontify reference items: `-- Function:', `-- Variable:', etc.
         (goto-char (point-min))
-        (when (string-equal &quot;elisp&quot; (file-name-nondirectory Info-current-file))
-          (info-fontify-reference-items)) ; Fontify -- Function, -- Variable, etc.
+        (when Info-fontify-reference-items-flag (info-fontify-reference-items))
         (set-buffer-modified-p nil)))))
 
+
+
+;; REPLACES ORIGINAL in `info.el':
+;; 1. File name in face `info-file'.
+;; 2. If `Info-fontify-quotations-flag', fontify `...' in face `info-quoted-name',
+;;    &quot;...&quot; in face `info-string', and ' in face `info-single-quote'.
 ;;;###autoload
-(when (&gt;= emacs-major-version 22)
-  ;; REPLACES ORIGINAL in `info.el':
-  ;; 1. File name in face `info-file'.
-  ;; 2. If `Info-fontify-quotations-flag', fontify `...' in face `info-quoted-name'
-  ;;    and  &quot;...&quot; in face `info-string'.
+(when (member emacs-major-version '(21 22))
   (defun Info-fontify-node ()
     &quot;Fontify the node.&quot;
     (save-excursion
@@ -1866,7 +2115,7 @@ to search again for `%s'.&quot;)
                                      ((string-equal (downcase tag) &quot;prev&quot;) Info-prev-link-keymap)
                                      ((string-equal (downcase tag) &quot;next&quot;) Info-next-link-keymap)
                                      ((string-equal (downcase tag) &quot;up&quot;  ) Info-up-link-keymap))))))
-          ;; Add breadcrumbs
+          ;; Add breadcrumbs - my version.
           (unless (string= &quot;Top&quot; Info-current-node)
             (let ((nod Info-current-node)
                   (onode Info-current-node)
@@ -1893,7 +2142,7 @@ to search again for `%s'.&quot;)
                 (Info-goto-node onode))
               (forward-line 1)
               (insert (concat crumbs &quot;\n\n&quot;))))
-
+          
           ;; Treat header line
           (when Info-use-header-line
             (goto-char (point-min))
@@ -1931,12 +2180,9 @@ to search again for `%s'.&quot;)
         (goto-char (point-min))
         (when Info-fontify-quotations-flag (info-fontify-quotations))
 
-        ;; Fontify reference items if in Emacs-Lisp manual.
+        ;;  Fontify reference items: `-- Function:', `-- Variable:', etc.
         (goto-char (point-min))
-        (when (string-equal &quot;elisp&quot; (file-name-nondirectory (if (symbolp Info-current-file)
-                                                                (symbol-name Info-current-file)
-                                                              Info-current-file)))
-          (info-fontify-reference-items)) ; Fontify -- Function, -- Variable, etc.
+        (when Info-fontify-reference-items-flag (info-fontify-reference-items))
 
         ;; Fontify titles
         (goto-char (point-min))
@@ -2236,57 +2482,449 @@ to search again for `%s'.&quot;)
         (set-buffer-modified-p nil)))))
 
 
-;; The regexp has these parts: double-quoted string or single-quoted stuff.
-;;
-;; String has, inside &quot;...&quot;, zero or more of these characters:
-;;   - any character except \ and &quot;
+
+;; REPLACES ORIGINAL in `info.el':
+;; 1. File name in face `info-file'.
+;; 2. If `Info-fontify-quotations-flag', fontify `...' in face `info-quoted-name',
+;;    &quot;...&quot; in face `info-string', and ' in face `info-single-quote'.
+;;;###autoload
+(when (&gt; emacs-major-version 22)
+  (defun Info-fontify-node ()
+    &quot;Fontify the node.&quot;
+    (save-excursion
+      (let* ((inhibit-read-only t)
+             (case-fold-search t)
+             paragraph-markers
+             (not-fontified-p           ; the node hasn't already been fontified
+              (not (let ((where (next-single-property-change (point-min)
+                                                             'font-lock-face)))
+                     (and where (not (= where (point-max)))))))
+             (fontify-visited-p         ; visited nodes need to be re-fontified
+              (and Info-fontify-visited-nodes
+                   ;; Don't take time to refontify visited nodes in huge nodes
+                   Info-fontify-maximum-menu-size
+                   (&lt; (- (point-max) (point-min)) Info-fontify-maximum-menu-size)))
+             rbeg rend)
+
+        ;; Fontify header line
+        (goto-char (point-min))
+        (when (and not-fontified-p (looking-at &quot;^File: \\([^,: \t]+\\),?[ \t]+&quot;))
+          (put-text-property (match-beginning 1) (match-end 1) 'face 'info-file))
+        (goto-char (point-min))
+        (when (and not-fontified-p (looking-at &quot;^\\(File: [^,: \t]+,?[ \t]+\\)?&quot;))
+          (while (looking-at &quot;[ \t]*\\([^:, \t\n]+\\):[ \t]+\\([^:,\t\n]+\\),?&quot;)
+            (goto-char (match-end 0))
+            (let* ((nbeg (match-beginning 2))
+                   (nend (match-end 2))
+                   (tbeg (match-beginning 1))
+                   (tag (match-string 1)))
+              (if (string-equal (downcase tag) &quot;node&quot;)
+                  (put-text-property nbeg nend 'font-lock-face 'info-header-node)
+                (put-text-property nbeg nend 'font-lock-face 'info-header-xref)
+                (put-text-property tbeg nend 'mouse-face 'highlight)
+                (put-text-property tbeg nend
+                                   'help-echo
+                                   (concat &quot;mouse-2: Go to node &quot;
+                                           (buffer-substring nbeg nend)))
+                ;; Always set up the text property keymap.
+                ;; It will either be used in the buffer
+                ;; or copied in the header line.
+                (put-text-property tbeg nend 'keymap
+                                   (cond
+                                     ((string-equal (downcase tag) &quot;prev&quot;) Info-prev-link-keymap)
+                                     ((string-equal (downcase tag) &quot;next&quot;) Info-next-link-keymap)
+                                     ((string-equal (downcase tag) &quot;up&quot;  ) Info-up-link-keymap))))))
+          (when (&gt; Info-breadcrumbs-depth 0) (Info-insert-breadcrumbs))
+          
+          ;; Treat header line.
+          (when Info-use-header-line
+            (goto-char (point-min))
+            (let* ((header-end (line-end-position))
+                   (header
+                    ;; If we find neither Next: nor Prev: link, show the entire
+                    ;; node header.  Otherwise, don't show the File: and Node:
+                    ;; parts, to avoid wasting precious space on information that
+                    ;; is available in the mode line.
+                    (if (re-search-forward
+                         &quot;\\(next\\|up\\|prev[ious]*\\): &quot;
+                         header-end t)
+                        (progn
+                          (goto-char (match-beginning 1))
+                          (buffer-substring (point) header-end))
+                      (if (re-search-forward &quot;node:[ \t]*[^ \t]+[ \t]*&quot;
+                                             header-end t)
+                          (concat &quot;No next, prev or up links  --  &quot;
+                                  (buffer-substring (point) header-end))
+                        (buffer-substring (point) header-end)))))
+              (put-text-property (point-min) (1+ (point-min))
+                                 'header-line
+                                 (replace-regexp-in-string
+                                  &quot;%&quot;
+                                  ;; Preserve text properties on duplicated `%'.
+                                  (lambda (s) (concat s s)) header))
+              ;; Hide the part of the first line
+              ;; that is in the header, if it is just part.
+              (cond
+                ((&gt; Info-breadcrumbs-depth 0)
+                 (put-text-property (point-min) (1+ header-end) 'invisible t))
+                ((not (bobp))
+                 ;; Hide the punctuation at the end, too.
+                 (skip-chars-backward &quot; \t,&quot;)
+                 (put-text-property (point) header-end 'invisible t))))))
+
+        ;; Fontify `...' and &quot;...&quot;
+        (goto-char (point-min))
+        (when Info-fontify-quotations-flag (info-fontify-quotations))
+
+        ;;  Fontify reference items: `-- Function:', `-- Variable:', etc.
+        (goto-char (point-min))
+        (when Info-fontify-reference-items-flag (info-fontify-reference-items))
+
+        ;; Fontify titles
+        (goto-char (point-min))
+        (when (and font-lock-mode not-fontified-p)
+          (while (and (re-search-forward &quot;\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$&quot;
+                                         nil t)
+                      ;; Only consider it as an underlined title if the ASCII
+                      ;; underline has the same size as the text.  A typical
+                      ;; counter example is when a continuation &quot;...&quot; is alone
+                      ;; on a line.
+                      (= (string-width (match-string 1))
+                         (string-width (match-string 2))))
+            (let* ((c (preceding-char))
+                   (face
+                    (cond ((= c ?*) 'Info-title-1-face)
+                          ((= c ?=) 'Info-title-2-face)
+                          ((= c ?-) 'Info-title-3-face)
+                          (t        'Info-title-4-face))))
+              (put-text-property (match-beginning 1) (match-end 1)
+                                 'font-lock-face face))
+            ;; This is a serious problem for trying to handle multiple
+            ;; frame types at once.  We want this text to be invisible
+            ;; on frames that can display the font above.
+            (when (memq (framep (selected-frame)) '(x pc w32 ns))
+              (add-text-properties (1- (match-beginning 2)) (match-end 2)
+                                   '(invisible t front-sticky nil rear-nonsticky t)))))
+
+        ;; Fontify cross references
+        (goto-char (point-min))
+        (when (or not-fontified-p fontify-visited-p)
+          (while (re-search-forward
+                  &quot;\\(\\*Note[ \n\t]+\\)\\([^:]*\\)\\(:[ \t]*\\([^.,:(]*\\)\\(\\(([^)]\
+*)\\)[^.,:]*\\)?[,:]?\n?\\)&quot;
+                  nil t)
+            (let ((start (match-beginning 0))
+                  (next (point))
+                  other-tag)
+              (when not-fontified-p
+                (when Info-hide-note-references
+                  (when (and (not (eq Info-hide-note-references 'hide))
+                             (&gt; (line-number-at-pos) 4)) ; Skip breadcrumbs
+                    ;; *Note is often used where *note should have been
+                    (goto-char start)
+                    (skip-syntax-backward &quot; &quot;)
+                    (when (memq (char-before) '(?\( ?\[ ?\{))
+                      ;; Check whether the paren is preceded by
+                      ;; an end of sentence
+                      (skip-syntax-backward &quot; (&quot;))
+                    (setq other-tag
+                          (cond ((save-match-data (looking-back &quot;\\&lt;see&quot;))
+                                 &quot;&quot;)
+                                ((save-match-data (looking-back &quot;\\&lt;in&quot;))
+                                 &quot;&quot;)
+                                ((memq (char-before) '(nil ?\. ?! ??))
+                                 &quot;See &quot;)
+                                ((save-match-data
+                                   (save-excursion
+                                     (search-forward &quot;\n\n&quot; start t)))
+                                 &quot;See &quot;)
+                                (t &quot;see &quot;))))
+                  (goto-char next)
+                  (add-text-properties
+                   (match-beginning 1)
+                   (or (save-match-data
+                         ;; Don't hide \n after *Note
+                         (let ((start1 (match-beginning 1)))
+                           (if (string-match &quot;\n&quot; (match-string 1))
+                               (+ start1 (match-beginning 0)))))
+                       (match-end 1))
+                   (if other-tag
+                       `(display ,other-tag front-sticky nil rear-nonsticky t)
+                     '(invisible t front-sticky nil rear-nonsticky t))))
+                (add-text-properties
+                 (match-beginning 2) (match-end 2)
+                 (list
+                  'help-echo (if (or (match-end 5)
+                                     (not (equal (match-string 4) &quot;&quot;)))
+                                 (concat &quot;mouse-2: go to &quot; (or (match-string 5)
+                                                               (match-string 4)))
+                               &quot;mouse-2: go to this node&quot;)
+                  'mouse-face 'highlight)))
+              (when (or not-fontified-p fontify-visited-p)
+                (setq rbeg (match-beginning 2)
+                      rend (match-end 2))
+                (put-text-property
+                 rbeg rend
+                 'font-lock-face
+                 ;; Display visited nodes in a different face
+                 (if (and Info-fontify-visited-nodes
+                          (save-match-data
+                            (let* ((node (replace-regexp-in-string
+                                          &quot;^[ \t]+&quot; &quot;&quot;
+                                          (replace-regexp-in-string
+                                           &quot;[ \t\n]+&quot; &quot; &quot;
+                                           (or (match-string-no-properties 5)
+                                               (and (not (equal (match-string 4) &quot;&quot;))
+                                                    (match-string-no-properties 4))
+                                               (match-string-no-properties 2)))))
+                                   (external-link-p
+                                    (string-match &quot;(\\([^)]+\\))\\([^)]*\\)&quot; node))
+                                   (file (if external-link-p
+                                             (file-name-nondirectory
+                                              (match-string-no-properties 1 node))
+                                           Info-current-file))
+                                   (hl Info-history-list)
+                                   res)
+                              (if external-link-p
+                                  (setq node (if (equal (match-string 2 node) &quot;&quot;)
+                                                 &quot;Top&quot;
+                                               (match-string-no-properties 2 node))))
+                              (while hl
+                                (if (and (string-equal node (nth 1 (car hl)))
+                                         (equal file
+                                                (if (and external-link-p
+                                                         (stringp (caar hl)))
+                                                    (file-name-nondirectory
+                                                     (caar hl))
+                                                  (caar hl))))
+                                    (setq res (car hl) hl nil)
+                                  (setq hl (cdr hl))))
+                              res))) 'info-xref-visited 'info-xref))
+                ;; For multiline ref, unfontify newline and surrounding whitespace
+                (save-excursion
+                  (goto-char rbeg)
+                  (save-match-data
+                    (while (re-search-forward &quot;\\s-*\n\\s-*&quot; rend t nil)
+                      (remove-text-properties (match-beginning 0)
+                                              (match-end 0)
+                                              '(font-lock-face t))))))
+              (when not-fontified-p
+                (when (memq Info-hide-note-references '(t hide))
+                  (add-text-properties (match-beginning 3) (match-end 3)
+                                       '(invisible t front-sticky nil rear-nonsticky t))
+                  ;; Unhide the file name of the external reference in parens
+                  (if (and (match-string 6)
+                           (not (eq Info-hide-note-references 'hide)))
+                      (remove-text-properties
+                       (match-beginning 6) (match-end 6)
+                       '(invisible t front-sticky nil rear-nonsticky t)))
+                  ;; Unhide newline because hidden newlines cause too long lines
+                  (save-match-data
+                    (let ((beg3 (match-beginning 3))
+                          (end3 (match-end 3)))
+                      (if (and (string-match &quot;\n[ \t]*&quot; (match-string 3))
+                               (not (save-match-data
+                                      (save-excursion
+                                        (goto-char (1+ end3))
+                                        (looking-at &quot;[.)]*$&quot;)))))
+                          (remove-text-properties
+                           (+ beg3 (match-beginning 0))
+                           (+ beg3 (match-end 0))
+                           '(invisible t front-sticky nil rear-nonsticky t))))))
+                (when (and Info-refill-paragraphs Info-hide-note-references)
+                  (push (set-marker (make-marker) start) paragraph-markers))))))
+
+        ;; Refill paragraphs (experimental feature)
+        (when (and not-fontified-p
+                   Info-refill-paragraphs
+                   paragraph-markers)
+          (let ((fill-nobreak-invisible t)
+                (fill-individual-varying-indent nil)
+                (paragraph-start &quot;\f\\|[ \t]*[-*]\\|[ \t]*$&quot;)
+                (paragraph-separate &quot;.*\\.[ \t]*\n[ \t]\\|[ \t]*[-*]\\|[ \t\f]*$&quot;)
+                (adaptive-fill-mode nil))
+            (goto-char (point-max))
+            (dolist (m paragraph-markers)
+              (when (&lt; m (point))
+                (goto-char m)
+                (beginning-of-line)
+                (let ((beg (point)))
+                  (when (zerop (forward-paragraph))
+                    (fill-individual-paragraphs beg (point) nil nil)
+                    (goto-char beg))))
+              (set-marker m nil))))
+
+        ;; Fontify menu items
+        (goto-char (point-min))
+        (when (and (or not-fontified-p fontify-visited-p)
+                   (search-forward &quot;\n* Menu:&quot; nil t)
+                   ;; Don't take time to annotate huge menus
+                   Info-fontify-maximum-menu-size
+                   (&lt; (- (point-max) (point)) Info-fontify-maximum-menu-size))
+          (let ((n 0)
+                cont)
+            (while (re-search-forward
+                    (concat &quot;^\\* Menu:\\|\\(?:^\\* +\\(&quot; Info-menu-entry-name-re &quot;\\)\\(:&quot;
+                            Info-node-spec-re &quot;\\([ \t]*\\)\\)\\)&quot;)
+                    nil t)
+              (when (match-beginning 1)
+                (when not-fontified-p
+                  (setq n (1+ n))
+                  (if (and (&lt;= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys
+                      (put-text-property (match-beginning 0)
+                                         (1+ (match-beginning 0))
+                                         'font-lock-face 'info-menu-5)))
+                (when not-fontified-p
+                  (add-text-properties
+                   (match-beginning 1) (match-end 1)
+                   (list
+                    'help-echo (if (and (match-end 3)
+                                        (not (equal (match-string 3) &quot;&quot;)))
+                                   (concat &quot;mouse-2: go to &quot; (match-string 3))
+                                 &quot;mouse-2: go to this node&quot;)
+                    'mouse-face 'highlight)))
+                (when (or not-fontified-p fontify-visited-p)
+                  (put-text-property
+                   (match-beginning 1) (match-end 1)
+                   'font-lock-face
+                   ;; Display visited menu items in a different face
+                   (if (and Info-fontify-visited-nodes
+                            (save-match-data
+                              (let* ((node (if (equal (match-string 3) &quot;&quot;)
+                                               (match-string-no-properties 1)
+                                             (match-string-no-properties 3)))
+                                     (external-link-p
+                                      (string-match &quot;(\\([^)]+\\))\\([^)]*\\)&quot; node))
+                                     (file (if external-link-p
+                                               (file-name-nondirectory
+                                                (match-string-no-properties 1 node))
+                                             Info-current-file))
+                                     (hl Info-history-list)
+                                     res)
+                                (if external-link-p
+                                    (setq node (if (equal (match-string 2 node) &quot;&quot;)
+                                                   &quot;Top&quot;
+                                                 (match-string-no-properties 2 node))))
+                                (while hl
+                                  (if (and (string-equal node (nth 1 (car hl)))
+                                           (equal file
+                                                  (if (and external-link-p
+                                                           (stringp (caar hl)))
+                                                      (file-name-nondirectory
+                                                       (caar hl))
+                                                    (caar hl))))
+                                      (setq res (car hl) hl nil)
+                                    (setq hl (cdr hl))))
+                                res))) 'info-xref-visited 'info-xref)))
+                (when (and not-fontified-p
+                           (memq Info-hide-note-references '(t hide))
+                           (not (Info-index-node)))
+                  (put-text-property (match-beginning 2) (1- (match-end 6))
+                                     'invisible t)
+                  ;; Unhide the file name in parens
+                  (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.)))
+                      (remove-text-properties (match-beginning 4) (match-end 4)
+                                              '(invisible t)))
+                  ;; We need a stretchable space like :align-to but with
+                  ;; a minimum value.
+                  (put-text-property (1- (match-end 6)) (match-end 6) 'display
+                                     (if (&gt;= 22 (- (match-end 1)
+                                                   (match-beginning 0)))
+                                         '(space :align-to 24)
+                                       '(space :width 2)))
+                  (setq cont (looking-at &quot;.&quot;))
+                  (while (and (= (forward-line 1) 0)
+                              (looking-at &quot;\\([ \t]+\\)[^*\n]&quot;))
+                    (put-text-property (match-beginning 1) (1- (match-end 1))
+                                       'invisible t)
+                    (put-text-property (1- (match-end 1)) (match-end 1)
+                                       'display
+                                       (if cont
+                                           '(space :align-to 26)
+                                         '(space :align-to 24)))
+                    (setq cont t)))))))
+
+        ;; Fontify menu headers
+        ;; Add the face `info-menu-header' to any header before a menu entry
+        (goto-char (point-min))
+        (when (and not-fontified-p (re-search-forward &quot;^\\* Menu:&quot; nil t))
+          (put-text-property (match-beginning 0) (match-end 0)
+                             'font-lock-face 'info-menu-header)
+          (while (re-search-forward &quot;\n\n\\([^*\n ].*\\)\n\n?[*]&quot; nil t)
+            (put-text-property (match-beginning 1) (match-end 1)
+                               'font-lock-face 'info-menu-header)))
+
+        ;; Hide index line numbers
+        (goto-char (point-min))
+        (when (and not-fontified-p (Info-index-node))
+          (while (re-search-forward &quot;[ \t\n]*(line +[0-9]+)&quot; nil t)
+            (put-text-property (match-beginning 0) (match-end 0)
+                               'invisible t)))
+
+        ;; Fontify http and ftp references
+        (goto-char (point-min))
+        (when not-fontified-p
+          (while (re-search-forward &quot;\\(https?\\|ftp\\)://[^ \t\n\&quot;`({&lt;&gt;})']+&quot; nil t)
+            (add-text-properties (match-beginning 0) (match-end 0)
+                                 '(font-lock-face info-xref
+                                   mouse-face highlight
+                                   help-echo &quot;mouse-2: go to this URL&quot;))))
+
+        (set-buffer-modified-p nil)))))
+
+;; Match has, inside &quot;...&quot; or `...', zero or more of these characters:
+;;   - any character except &quot; or ', respectively
 ;;   - \ followed by any character
 ;;
-;; Single-quoted stuff has, inside `...': any character except '
-;;
-;; The regexp matches `...' or &quot;...&quot;. The latter case also includes
-;; pseudo-strings that start with \&quot;. The second branch of the
-;; conditional tests this: if that is the match, then it moves past
-;; the \.
-(if (&lt; emacs-major-version 21)
-    (defun info-fontify-quotations ()
-      &quot;Fontify text between double-quotes (\&quot;...\&quot;) and single-quotes (`...')
-For single-quotes, use face `info-quoted-name'.
-For double-quotes, use face `info-string'.&quot;
-      (while (condition-case nil
-                 (re-search-forward         ; Match `...' or &quot;...&quot;
-                  &quot;\&quot;\\([^\\\&quot;]\\|\\\\\\(.\\|[\n]\\)\\)*\&quot;\\|`[^']+'&quot;
-                  nil t)
-               (error nil))
-        (cond ((eq ?` (aref (match-string 0) 0)) ; `...'
-               (put-text-property (1+ (match-beginning 0)) (1- (match-end 0))
-                                  'face 'info-quoted-name))
-              ((and (goto-char (match-beginning 0)) ; &quot;...&quot;: If preceded by \, skip it
-                    (= 1 (mod (save-excursion (skip-chars-backward &quot;\\\\&quot;)) 2)))
-               (forward-char 1))
-              ((goto-char (match-end 0))
-               (put-text-property (match-beginning 0) (match-end 0) 'face 'info-string)))))
-  (defun info-fontify-quotations ()
-    &quot;Fontify text between double-quotes (\&quot;...\&quot;) and single-quotes (`...')
-For single-quotes, use face `info-quoted-name'.
-For double-quotes, use face `info-string'.&quot;
-    (while (condition-case nil
-               (re-search-forward           ; Match `...' or &quot;...&quot;
-                &quot;\&quot;\\(?:[^\\\&quot;]\\|\\\\\\(?:.\\|[\n]\\)\\)*\&quot;\\|`[^']+'&quot;
-                nil t)
-             (error nil))
-      (cond ((eq ?` (aref (match-string 0) 0)) ; `...'
-             (put-text-property (1+ (match-beginning 0)) (1- (match-end 0))
-                                'font-lock-face 'info-quoted-name))
-            ((and (goto-char (match-beginning 0)) ; &quot;...&quot;: If preceded by \, skip it
-                  (= 1 (mod (save-excursion (skip-chars-backward &quot;\\\\&quot;)) 2)))
-             (forward-char 1))
-            ((goto-char (match-end 0))  ; &quot;...&quot; not preceded by \
+;; The `... in `...' is optional, so the regexp can also match just '. 
+;;
+;; The regexp matches also `...' and &quot;...&quot; where at least one of the `, ', or &quot;
+;; is escaped by a backslash.  So we check those cases explicitly and don't highlight them.
+(defvar info-quotation-regexp
+  (if (&lt; emacs-major-version 21)
+      (concat &quot;\&quot;\\([^\&quot;]\\|\\\\\\(.\\|[\n]\\)\\)*\&quot;\\|&quot; ; &quot;...&quot;
+              &quot;\\(`[^']*\\|\\\\\\(.\\|[\n]\\)\\)*'&quot;) ; `...'
+    (concat &quot;\&quot;\\(?:[^\&quot;]\\|\\\\\\(?:.\\|[\n]\\)\\)*\&quot;\\|&quot; ; &quot;...&quot;
+            &quot;\\(`[^']*\\|\\\\\\(.\\|[\n]\\)\\)*'&quot;)) ; `...'
+
+  &quot;Regexp to match `...', \&quot;...\&quot;, or just '.
+If ... contains \&quot; or ' then that character must be backslashed.&quot;)
+
+(defun info-fontify-quotations ()
+  &quot;Fontify `...', \&quot;...\&quot;, and if `Info-fontify-single-quote-flag', just '.
+ `...'\t- use face `info-quoted-name'
+ \&quot;...\&quot;\t- use face `info-string'
+ '\t- use face `info-single-quote'&quot;
+  (let ((regexp    info-quotation-regexp)
+        (property  (if (&lt; emacs-major-version 21) 'face 'font-lock-face)))
+    (while (condition-case nil (re-search-forward regexp nil t) (error nil))
+      (cond ((and (eq ?` (aref (match-string 0) 0)) ; Single-quoted backslashes: `\', `\\', `\\\', etc.
+                  (goto-char (match-beginning 0))
+                  (save-match-data (looking-at &quot;\\(`\\\\+'\\)&quot;)))
+             (put-text-property (1+ (match-beginning 0)) (1- (match-end 0)) property 'info-quoted-name)
+             (goto-char (match-end 0)))
+            ((and (eq ?` (aref (match-string 0) 0)) ; `...': If ` is preceded by \, then skip it
+                  (goto-char (match-beginning 0))
+                  (&lt; (save-excursion (skip-chars-backward &quot;\\\\&quot;)) 0))
+             (goto-char (1+ (match-beginning 0))))
+            ((eq ?` (aref (match-string 0) 0)) ; `...'
+             (put-text-property (1+ (match-beginning 0)) (1- (match-end 0)) property 'info-quoted-name)
+             (goto-char (match-end 0)) (forward-char 1))
+            ((and (goto-char (match-beginning 0)) ; &quot;...&quot;: If &quot; preceded by \, then skip it
+                  (&lt; (save-excursion (skip-chars-backward &quot;\\\\&quot;)) 0))
+             (goto-char (1+ (match-beginning 0))))
+            ((and Info-fontify-single-quote-flag
+                  (string= &quot;'&quot; (buffer-substring (match-beginning 0) (match-end 0)))) ; Single ': 'foo
+             (put-text-property (match-beginning 0) (match-end 0)
+                                property 'info-single-quote)
+             (goto-char (match-end 0)) (forward-char 1))
+            (t                          ; &quot;...&quot;
              (put-text-property (match-beginning 0) (match-end 0)
-                                'font-lock-face 'info-string))))))
+                                property 'info-string)
+             (goto-char (match-end 0)) (forward-char 1))))))
 
 (defun info-fontify-reference-items ()
-  &quot;Fontify reference items such as \&quot;Function:\&quot; in Emacs Lisp Info buffer.&quot;
+  &quot;Fontify reference items such as \&quot;Function:\&quot; in Info buffer.&quot;
   (while
       (re-search-forward
        &quot;^ --? \\(Function:\\|Variable:\\|Special Form:\\|\
@@ -2297,14 +2935,14 @@ Command:\\|User Option:\\|Macro:\\|Syntax class:\\)\\(.*\\)&quot;
                          (match-end 1)
                          'face
                          (case symb
-                           ('Function:       'info-elisp-function-ref-item)
-                           ('Variable:       'info-elisp-variable-ref-item)
-                           ('Special\ Form:  'info-elisp-special-form-ref-item)
-                           ('Command:        'info-elisp-command-ref-item)
-                           ('User\ Option:   'info-elisp-user-option-ref-item)
-                           ('Macro:          'info-elisp-macro-ref-item)
-                           ('Syntax\ class:  'info-elisp-syntax-class-item)))
-      (put-text-property (match-beginning 2) (match-end 2) 'face 'info-elisp-reference-item))))
+                           ('Function:       'info-function-ref-item)
+                           ('Variable:       'info-variable-ref-item)
+                           ('Special\ Form:  'info-special-form-ref-item)
+                           ('Command:        'info-command-ref-item)
+                           ('User\ Option:   'info-user-option-ref-item)
+                           ('Macro:          'info-macro-ref-item)
+                           ('Syntax\ class:  'info-syntax-class-item)))
+      (put-text-property (match-beginning 2) (match-end 2) 'face 'info-reference-item))))
 
 
 
@@ -2404,7 +3042,7 @@ To remove the highlighting, just start an incremental search: \
 ;; 2. Highlights the found regexp if `search-highlight'.
 ;;
 ;;;###autoload
-(when (&gt;= emacs-major-version 22)
+(when (= emacs-major-version 22)
   (defun Info-search (regexp &amp;optional bound noerror count direction)
     &quot;Search for REGEXP, starting from point, and select node it's found in.
 If DIRECTION is `backward', search in the reverse direction.
@@ -2599,6 +3237,193 @@ To remove the highlighting, just start an incremental search: \
                    regexp))))))
 
 
+
+;; REPLACES ORIGINAL in `info.el':
+;; 1. Fits frame if `one-window-p'.
+;; 2. Highlights the found regexp if `search-highlight'.
+;;
+;;;###autoload
+(when (&gt; emacs-major-version 22)
+  (defun Info-search (regexp &amp;optional bound noerror count direction)
+    &quot;Search for REGEXP, starting from point, and select node it's found in.
+If DIRECTION is `backward', search in the reverse direction.
+Fits frame if `one-window-p'.
+Highlights current location of found regexp if `search-highlight'.
+Note that the highlighting remains, after the search is over.
+To remove the highlighting, just start an incremental search: \
+`\\[isearch-forward]'.&quot;
+    (interactive
+     (list (let ((prompt (if Info-search-history
+                             (format &quot;Regexp search%s (default `%s'): &quot;
+                                     (if case-fold-search &quot;&quot; &quot; case-sensitively&quot;)
+                                     (car Info-search-history))
+                           (format &quot;Regexp search%s: &quot;
+                                   (if case-fold-search &quot;&quot; &quot; case-sensitively&quot;)))))
+             (if (fboundp 'icicle-read-string-completing)
+                 (icicle-read-string-completing prompt nil nil 'Info-search-history)
+               (read-string prompt nil 'Info-search-history)))))
+    (deactivate-mark)
+    (when (equal regexp &quot;&quot;)
+      (setq regexp (car Info-search-history)))
+    (when regexp
+      (prog1
+          (let (found beg-found give-up
+                      (backward (eq direction 'backward))
+                      (onode Info-current-node)
+                      (ofile Info-current-file)
+                      (opoint (point))
+                      (opoint-min (point-min))
+                      (opoint-max (point-max))
+                      (ostart (window-start))
+                      (osubfile Info-current-subfile))
+            (setq Info-search-case-fold case-fold-search) ; `Info-search-case-fold' is free here.
+            (save-excursion
+              (save-restriction
+                (widen)
+                (when backward
+                  ;; Hide Info file header for backward search
+                  (narrow-to-region (save-excursion
+                                      (goto-char (point-min))
+                                      (search-forward &quot;\n\^_&quot;)
+                                      (1- (point)))
+                                    (point-max)))
+                (while (and (not give-up)
+                            (or (null found)
+                                (not (funcall isearch-filter-predicate beg-found found))))
+                  (let ((search-spaces-regexp
+                         (if (or (not isearch-mode) isearch-regexp)
+                             Info-search-whitespace-regexp))) ; `Info-*' is free here.
+                    (if (if backward
+                            (re-search-backward regexp bound t)
+                          (re-search-forward regexp bound t))
+                        (setq found (point) beg-found (if backward (match-end 0)
+                                                        (match-beginning 0)))
+                      (setq give-up t))))))
+
+            (when (and isearch-mode Info-isearch-search ; `Info-isearch-search' is free here.
+                       (not Info-isearch-initial-node) ; `Info-isearch-initial-node' is free here.
+                       (not bound)
+                       (or give-up (and found (not (and (&gt; found opoint-min)
+                                                        (&lt; found opoint-max))))))
+              (signal 'search-failed (list regexp &quot;initial node&quot;)))
+
+            ;; If no subfiles, give error now.
+            (if give-up
+                (if (null Info-current-subfile)
+                    (let ((search-spaces-regexp ; `Info-*' free here.
+                           (if (or (not isearch-mode) isearch-regexp)
+                               Info-search-whitespace-regexp)))
+                      (if backward
+                          (re-search-backward regexp)
+                        (re-search-forward regexp)))
+                  (setq found nil)))
+
+            (if (and bound (not found))
+                (signal 'search-failed (list regexp)))
+
+            (unless (or found bound)
+              (unwind-protect
+                   ;; Try other subfiles.
+                   (let ((list ()))
+                     (with-current-buffer (marker-buffer Info-tag-table-marker)
+                       (goto-char (point-min))
+                       (search-forward &quot;\n\^_\nIndirect:&quot;)
+                       (save-restriction
+                         (narrow-to-region (point)
+                                           (progn (search-forward &quot;\n\^_&quot;)
+                                                  (1- (point))))
+                         (goto-char (point-min))
+                         ;; Find the subfile we just searched.
+                         (search-forward (concat &quot;\n&quot; osubfile &quot;: &quot;))
+                         ;; Skip that one.
+                         (forward-line (if backward 0 1))
+                         (if backward (forward-char -1))
+                         ;; Make a list of all following subfiles.
+                         ;; Each elt has the form (VIRT-POSITION . SUBFILENAME).
+                         (while (not (if backward (bobp) (eobp)))
+                           (if backward
+                               (re-search-backward &quot;\\(^.*\\): [0-9]+$&quot;)
+                             (re-search-forward &quot;\\(^.*\\): [0-9]+$&quot;))
+                           (goto-char (+ (match-end 1) 2))
+                           (setq list (cons (cons (+ (point-min)
+                                                     (read (current-buffer)))
+                                                  (match-string-no-properties 1))
+                                            list))
+                           (goto-char (if backward
+                                          (1- (match-beginning 0))
+                                        (1+ (match-end 0)))))
+                         ;; Put in forward order
+                         (setq list (nreverse list))))
+                     (while list
+                       (message &quot;Searching subfile %s...&quot; (cdr (car list)))
+                       (Info-read-subfile (car (car list)))
+                       (when backward
+                         ;; Hide Info file header for backward search
+                         (narrow-to-region (save-excursion
+                                             (goto-char (point-min))
+                                             (search-forward &quot;\n\^_&quot;)
+                                             (1- (point)))
+                                           (point-max))
+                         (goto-char (point-max)))
+                       (setq list (cdr list))
+                       (setq give-up nil found nil)
+                       (while (and (not give-up)
+                                   (or (null found)
+                                       (not (funcall isearch-filter-predicate beg-found found))))
+                         (let ((search-spaces-regexp
+                                (if (or (not isearch-mode) isearch-regexp)
+                                    Info-search-whitespace-regexp))) ; Free var.
+                           (if (if backward
+                                   (re-search-backward regexp nil t)
+                                 (re-search-forward regexp nil t))
+                               (setq found (point) beg-found (if backward (match-end 0)
+                                                               (match-beginning 0)))
+                             (setq give-up t))))
+                       (if give-up
+                           (setq found nil))
+                       (if found
+                           (setq list nil)))
+                     (if found
+                         (message &quot;&quot;)
+                       (signal 'search-failed (list regexp))))
+                (if (not found)
+                    (progn (Info-read-subfile osubfile)
+                           (goto-char opoint)
+                           (Info-select-node)
+                           (set-window-start (selected-window) ostart)))))
+
+            (if (and (string= osubfile Info-current-subfile)
+                     (&gt; found opoint-min)
+                     (&lt; found opoint-max))
+                ;; Search landed in the same node
+                (goto-char found)
+              (widen)
+              (goto-char found)
+              (save-match-data (Info-select-node)))
+
+            ;; Highlight regexp.
+            (when search-highlight
+              (isearch-highlight (match-beginning 0) (match-end 0)))
+
+            ;; Use string-equal, not equal, to ignore text props.
+            (or (and (string-equal onode Info-current-node)
+                     (equal ofile Info-current-file))
+                (and isearch-mode isearch-wrapped
+                     (eq opoint (if isearch-forward opoint-min opoint-max)))
+                (setq Info-history (cons (list ofile onode opoint)
+                                         Info-history)))
+
+            ;; Fit the frame, if appropriate.
+            (when (and (one-window-p t) (not (window-minibuffer-p))
+                       (fboundp 'fit-frame) ; Defined in `fit-frame.el'.
+                       Info-fit-frame-flag)
+              (fit-frame)))
+        (unless isearch-mode
+          (message (substitute-command-keys
+                    &quot;Use \\&lt;Info-mode-map&gt;`\\[Info-search] RET' to search again for `%s'.&quot;)
+                   regexp))))))
+
+
 ;; REPLACES ORIGINAL in `info.el':
 ;; Added optional arg FORK.
 ;;
@@ -2619,6 +3444,7 @@ With a prefix argument, open the node in a separate window.&quot;
 
 
 ;; REPLACES ORIGINAL in `info.el':
+;; Use `Info-mode-syntax-table' (bug #3312).
 ;; Doc string changed: displays all bindings.
 ;;
 ;;;###autoload
@@ -2676,7 +3502,7 @@ this node.
 
 Other navigation commands
 -------------------------
-\\[Info-goto-node]\tGo to a node with a given name.  (No completion available.)
+\\[Info-goto-node]\tGo to a node with a given name.
 \tYou may include a filename as well, as \&quot;(FILENAME)NODENAME\&quot;.
 \\[universal-argument] \\[info]\tGo to a new Info file.  (Completion \
 available.)
@@ -2689,11 +3515,7 @@ sequence.
 
 Other commands
 --------------
-\\[Info-search]\tSearch through nodes of this Info file for specified regexp,
-\tand go to node where next occurrence is found.
-\tNote that other search functions (e.g. `\\[isearch-forward]') will only \
-search
-\twithin the current node.
+\\[Info-search]\tSearch this Info manual for a regexp.
 \\[Info-edit]\tEdit contents of current node.  \
 \(\\&lt;Info-edit-map&gt;`\\[Info-cease-edit]'\\&lt;Info-mode-map&gt; to end editing.)
 \tEditing is enabled only if `Info-enable-edit' is non-nil.
@@ -2714,8 +3536,9 @@ Faces you can customize
 `info-node'   - Face used for node heading labels
 `info-menu'   - Face used for menu items
 `info-xref'   - Face used for cross reference \&quot;Note\&quot; links
-`info-string'      - Face used for strings (e.g. \&quot;toto\&quot;).
-`info-quoted-name' - Face used for quoted names (e.g. `toto').
+`info-string'       - Face used for strings (e.g. \&quot;toto\&quot;).
+`info-quoted-name'  - Face used for quoted names (e.g. `toto').
+`info-single-quote' - Face used for isolated single-quote (e.g. 'foo).
 
 These are all of the current Info Mode bindings:
 
@@ -2727,7 +3550,7 @@ These are all of the current Info Mode bindings:
     (use-local-map Info-mode-map)
     (make-local-hook 'activate-menubar-hook)
     (add-hook 'activate-menubar-hook 'Info-menu-update nil t)
-    (set-syntax-table text-mode-syntax-table)
+    (set-syntax-table Info-mode-syntax-table)
     (setq local-abbrev-table text-mode-abbrev-table)
     (setq case-fold-search t)
     (setq buffer-read-only t)
@@ -2749,10 +3572,11 @@ These are all of the current Info Mode bindings:
 
 
 ;; REPLACES ORIGINAL in `info.el':
-;; Only the doc string is changed: displays all bindings.
+;; Use `Info-mode-syntax-table' (bug #3312).
+;; Doc string changed: displays all bindings.
 ;;
 ;;;###autoload
-(when (eq emacs-major-version 21)
+(when (= emacs-major-version 21)
 
   ;; For some reason, this doesn't seem to be bound when `tool-bar.el' is loaded (?) in Emacs 21.
   (defvar tool-bar-map (make-sparse-keymap) ; Taken from `tool-bar.el'.
@@ -2815,7 +3639,7 @@ this node.
 Other navigation commands
 -------------------------
 \\[Info-exit]\tQuit Info.
-\\[Info-goto-node]\tGo to a node with a given name.  (No completion available.)
+\\[Info-goto-node]\tGo to a node with a given name.
 \tYou may include a filename as well, as \&quot;(FILENAME)NODENAME\&quot;.
 \\[universal-argument] \\[info]\tGo to a new Info file.  (Completion \
 available.)
@@ -2829,8 +3653,7 @@ sequence.
 
 Other commands
 --------------
-\\[Info-search]\tSearch this Info file for specified regexp, and go to node
-\twith next occurrence. (Not case-sensitive.)
+\\[Info-search]\tSearch this Info manual for a regexp.
 \\[Info-search-case-sensitively]\tLike \\[Info-search], but case-sensitive.
 \\[Info-copy-current-node-name]\tPut name of current info node in the kill ring.
 \\[clone-buffer]\tSelect a new cloned Info buffer in another window.
@@ -2850,8 +3673,9 @@ User options you can customize
 Faces you can customize
 -----------------------
 `info-file'   - Face used for file heading labels
-`info-string'      - Face used for strings (e.g. \&quot;toto\&quot;).
-`info-quoted-name' - Face used for quoted names (e.g. `toto').
+`info-string'       - Face used for strings (e.g. \&quot;toto\&quot;).
+`info-quoted-name'  - Face used for quoted names (e.g. `toto').
+`info-single-quote' - Face used for isolated single-quote (e.g. 'foo).
 
 These are all of the current Info Mode bindings:
 
@@ -2862,7 +3686,7 @@ These are all of the current Info Mode bindings:
     (setq tab-width 8)
     (use-local-map Info-mode-map)
     (add-hook 'activate-menubar-hook 'Info-menu-update nil t)
-    (set-syntax-table text-mode-syntax-table)
+    (set-syntax-table Info-mode-syntax-table)
     (setq local-abbrev-table text-mode-abbrev-table)
     (setq case-fold-search t)
     (setq buffer-read-only t)
@@ -2886,10 +3710,11 @@ These are all of the current Info Mode bindings:
 
 
 ;; REPLACES ORIGINAL in `info.el':
+;; Use `Info-mode-syntax-table' (bug #3312).
 ;; Doc string changed: displays all bindings.
 ;;
 ;;;###autoload
-(when (&gt;= emacs-major-version 22)
+(when (= emacs-major-version 22)
   (defun Info-mode ()
     &quot;Provides commands for browsing through the Info documentation tree.
 Documentation in Info is divided into \&quot;nodes\&quot;, each of which discusses
@@ -2947,7 +3772,7 @@ this node.
 Other navigation commands
 -------------------------
 \\[Info-exit]\tQuit Info.
-\\[Info-goto-node]\tGo to a node with a given name.  (No completion available.)
+\\[Info-goto-node]\tGo to a node with a given name.
 \tYou may include a filename as well, as \&quot;(FILENAME)NODENAME\&quot;.
 \\[universal-argument] \\[info]\tGo to a new Info file.  (Completion \
 available.)
@@ -2962,9 +3787,9 @@ sequence.
 Other commands
 --------------
 \\[Info-save-current-node]\tSave current node name for use by `\\[Info-virtual-book]'.
-\\[Info-virtual-book]\tOpen a virtual Info book of nodes saved using `\\[Info-save-current-node]'.
-\\[Info-search]\tSearch this Info file for specified regexp, and go to node
-\twith next occurrence. (Not case-sensitive.)
+\\[Info-virtual-book]\tOpen a virtual book saved using `\\[Info-save-current-node]' \
+\(`C-u': bookmarks too).
+\\[Info-search]\tSearch this Info manual for a regexp.
 \\[Info-search-case-sensitively]\tLike \\[Info-search], but case-sensitive.
 \\[info-apropos]\tLook for a string in the indexes of all manuals.
 \\[Info-copy-current-node-name]\tPut name of current info node in the kill ring.
@@ -2986,8 +3811,9 @@ User options you can customize
 Faces you can customize
 -----------------------
 `info-file'   - Face used for file heading labels
-`info-string'      - Face used for strings (e.g. \&quot;toto\&quot;).
-`info-quoted-name' - Face used for quoted names (e.g. `toto').
+`info-string'       - Face used for strings (e.g. \&quot;toto\&quot;).
+`info-quoted-name'  - Face used for quoted names (e.g. `toto').
+`info-single-quote' - Face used for isolated single-quote (e.g. 'foo).
 
 These are all of the current Info Mode bindings:
 
@@ -2998,7 +3824,7 @@ These are all of the current Info Mode bindings:
     (setq tab-width 8)
     (use-local-map Info-mode-map)
     (add-hook 'activate-menubar-hook 'Info-menu-update nil t)
-    (set-syntax-table text-mode-syntax-table)
+    (set-syntax-table Info-mode-syntax-table)
     (setq local-abbrev-table text-mode-abbrev-table)
     (setq case-fold-search t)
     (setq buffer-read-only t)
@@ -3039,6 +3865,163 @@ These are all of the current Info Mode bindings:
     (run-mode-hooks 'Info-mode-hook)))
 
 
+
+;; REPLACES ORIGINAL in `info.el':
+;; Use `Info-mode-syntax-table' (bug #3312).
+;; Doc string changed: displays all bindings.
+;;
+;;;###autoload
+(when (&gt; emacs-major-version 22)
+  (defun Info-mode ()
+    &quot;Provides commands for browsing through the Info documentation tree.
+Documentation in Info is divided into \&quot;nodes\&quot;, each of which discusses
+one topic and contains hyperlink references to other nodes that discuss
+related topics.  Info has commands to follow the references.
+The most important commands to know are: \
+\\&lt;Info-mode-map&gt;\
+`\\[Info-exit]', `\\[Info-mouse-follow-nearest-node]', `\\[Info-history-back]', and `\\[Info-search]'.
+
+Help commands
+-------------
+\\[describe-mode]\tDisplay this help.
+\\[Info-help]\tThe Info tutorial.  Learn about Info while using it.
+
+Selecting other nodes (basic)
+-----------------------------
+\\[Info-mouse-follow-nearest-node]\tFollow a node reference you click.
+\tThis works with menu items, cross references, \&quot;Next\&quot;,
+\t\&quot;Previous\&quot; and \&quot;Up\&quot; references.
+\tAt end of node's text, goes to \&quot;Next\&quot;, or \&quot;Up\&quot; if no \&quot;Next\&quot;.
+\\[Info-follow-nearest-node]\tLike `\\[Info-mouse-follow-nearest-node]', \
+except cursor location, not mouse location.
+\\[Info-history-back]\tGo back to the last node you were at. (chronological)
+\\[Info-history-forward]\tGo forward to where you were before using \\[Info-history-back].
+\\[Info-history]\tGo to menu of visited nodes.
+\\[Info-toc]\tGo to table of contents of the current Info file.
+\\[Info-index]\tLook up a topic in this file's Index and move to its node.
+\\[Info-index-next]\t(comma) Go to the next match from a previous \
+`\\[Info-index]' command.
+
+Structural navigation commands
+------------------------------
+\\[Info-menu]\tGo to a menu item's node.  Completion available for its name.
+1\tGo to first menu item's node.
+2, 3, 4, 5, 6, 7, 8, 9\tGo to second...ninth menu item's node.
+\\[Info-next]\tGo to this node's \&quot;Next\&quot; node.
+\\[Info-prev]\tGo to this node's \&quot;Previous\&quot; node.  (*not* chronological)
+\\[Info-up]\tGo \&quot;Up\&quot; from this node to its parent node.
+\\[Info-directory]\tGo to the Info directory (root) node.
+\\[Info-follow-reference]\tFollow a cross reference. Prompts for name.
+
+Moving within a node
+--------------------
+\\[Info-scroll-up]\tNormally, scroll forward a full screen.
+\tIf node's menu appears below cursor, go to first menu item.
+\tIf node's menu appears above cursor, go to parent node.
+\\[Info-scroll-down]\tNormally, scroll backward.  If beginning of buffer is \
+already
+\tvisible, go to previous menu entry, or up if there is none.
+\\[beginning-of-buffer]\tGo to beginning of node.
+\\[Info-next-reference]\tMove cursor to next cross-reference or menu item in \
+this node.
+\\[Info-prev-reference]\tMove cursor to previous cross-reference or menu item.
+
+Other navigation commands
+-------------------------
+\\[Info-exit]\tQuit Info.
+\\[Info-goto-node]\tGo to a node with a given name.
+\tYou may include a filename as well, as \&quot;(FILENAME)NODENAME\&quot;.
+\\[universal-argument] \\[info]\tGo to a new Info file.  (Completion \
+available.)
+\\[universal-argument] N \\[info]\tOpen Info with number in buffer name: *info*&lt;N&gt;.
+\\[Info-top-node]\tGo to first node (\&quot;Top\&quot;) of current Info file.
+\\[Info-final-node]\tGo to final node of current Info file.
+\\[Info-forward-node]\tGo forward a node, considering all nodes as one \
+sequence.
+\\[Info-backward-node]\tGo backward a node, considering all nodes as one \
+sequence.
+
+Other commands
+--------------
+\\[Info-save-current-node]\tSave current node name for use by `\\[Info-virtual-book]'.
+\\[Info-virtual-book]\tOpen a virtual Info book of nodes saved using `\\[Info-save-current-node]'.
+\\[isearch-forward]\tIsearch this Info manual for a literal string.
+\\[isearch-forward-regexp]\tIsearch this Info manual for a regexp.
+\\[Info-search]\tSearch this Info manual for a regexp
+\\[Info-search-case-sensitively]\tLike `\\[Info-search]', but case-sensitive.
+\\[info-apropos]\tLook for a string in the indexes of all manuals.
+\\[Info-copy-current-node-name]\tPut name of current info node in the kill ring.
+\\[clone-buffer]\tSelect a new cloned Info buffer in another window.
+\\[Info-merge-subnodes]\tIntegrate current node with nodes referred to \
+in its Menu.
+\tDisplay the result outside of Info.  `\\[universal-argument]': Recursively.
+\\[Info-edit]\tEdit contents of current node.  \
+\(\\&lt;Info-edit-map&gt;`\\[Info-cease-edit]'\\&lt;Info-mode-map&gt; to end editing.)
+\tEditing is enabled only if `Info-enable-edit' is non-nil.
+
+User options you can customize
+------------------------------
+`Info-fontify-quotations-flag' -
+  Fontify quoted names (`...') and strings (\&quot;...\&quot;).
+`Info-saved-nodes' - Node names you can visit using `\\[Info-virtual-book]'.
+`Info-subtree-separator' - See `Info-merge-subnodes'.
+
+Faces you can customize
+-----------------------
+`info-file'   - Face used for file heading labels
+`info-string'       - Face used for strings (e.g. \&quot;toto\&quot;).
+`info-quoted-name'  - Face used for quoted names (e.g. `toto').
+`info-single-quote' - Face used for isolated single-quote (e.g. 'foo).
+
+These are all of the current Info Mode bindings:
+
+\\{Info-mode-map}&quot;
+    (kill-all-local-variables)
+    (setq major-mode 'Info-mode)
+    (setq mode-name &quot;Info&quot;)
+    (setq tab-width 8)
+    (use-local-map Info-mode-map)
+    (add-hook 'activate-menubar-hook 'Info-menu-update nil t)
+    (set-syntax-table Info-mode-syntax-table)
+    (setq local-abbrev-table text-mode-abbrev-table)
+    (setq case-fold-search t)
+    (setq buffer-read-only t)
+    (make-local-variable 'Info-current-file)
+    (make-local-variable 'Info-current-subfile)
+    (make-local-variable 'Info-current-node)
+    (make-local-variable 'Info-tag-table-marker)
+    (setq Info-tag-table-marker (make-marker))
+    (make-local-variable 'Info-tag-table-buffer)
+    (setq Info-tag-table-buffer nil)
+    (make-local-variable 'Info-history)
+    (make-local-variable 'Info-history-forward)
+    (make-local-variable 'Info-index-alternatives)
+    (when Info-use-header-line    ; do not override global header lines
+      (setq header-line-format
+ 	    '(:eval (get-text-property (point-min) 'header-line))))
+    (set (make-local-variable 'tool-bar-map) info-tool-bar-map)
+    ;; This is for the sake of the invisible text we use handling titles.
+    (make-local-variable 'line-move-ignore-invisible)
+    (setq line-move-ignore-invisible t)
+    (make-local-variable 'desktop-save-buffer)
+    (make-local-variable 'widen-automatically)
+    (setq widen-automatically nil)      ; `widen-automatically' is free here.
+    (setq desktop-save-buffer 'Info-desktop-buffer-misc-data)
+    (add-hook 'kill-buffer-hook 'Info-kill-buffer nil t)
+    (add-hook 'clone-buffer-hook 'Info-clone-buffer nil t)
+    (add-hook 'change-major-mode-hook 'font-lock-defontify nil t)
+    (add-hook 'isearch-mode-hook 'Info-isearch-start nil t)
+    ;; The `Info-*' variables are free here.
+    (set (make-local-variable 'isearch-search-fun-function) 'Info-isearch-search)
+    (set (make-local-variable 'isearch-wrap-function) 'Info-isearch-wrap)
+    (set (make-local-variable 'isearch-push-state-function) 'Info-isearch-push-state)
+    (set (make-local-variable 'isearch-filter-predicate) 'Info-isearch-filter)
+    (set (make-local-variable 'search-whitespace-regexp) Info-search-whitespace-regexp)
+    (set (make-local-variable 'revert-buffer-function) 'Info-revert-buffer-function)
+    (Info-set-mode-line)
+    (set (make-local-variable 'bookmark-make-record-function) 'Info-bookmark-make-record)
+    (run-mode-hooks 'Info-mode-hook)))
+
 (defun Info-display-node-default-header ()
   &quot;Insert node name as header.&quot;
   ;; `node-name' is free here - bound in `Info-merge-subnodes'.
@@ -3070,7 +4053,7 @@ easily using `\\&lt;Info-mode-map&gt;\\[Info-save-current-node]'.&quot;
     :type '(repeat (string :tag &quot;Node name&quot;)) :group 'info))
 
 (when (&gt; emacs-major-version 21)
-  (defun Info-virtual-book (book nodes)
+  (defun Info-virtual-book (book nodes &amp;optional include-bookmark-nodes-p)
     &quot;Open a virtual Info BOOK, with a menu of Info NODES.
 BOOK is a string naming the virtual book.
 NODES is a list of strings naming Info nodes.
@@ -3078,14 +4061,28 @@ NODES is a list of strings naming Info nodes.
   filename-plus-nodename string such as \&quot;(emacs)Basic\&quot;.  But if you
   call this command from an Info buffer, then a node name can be
   relative, such as \&quot;Basic\&quot;.
+Non-nil optional arg INCLUDE-BOOKMARK-NODES-P means that all Info
+nodes recorded as bookmarks are included in the virtual book.
 
-Interactively, you are prompted for then name of the virtual book, and
-the nodes are those in `Info-saved-nodes'.&quot;
+Interactively, you are prompted for the name of the virtual book, and
+the nodes are those in `Info-saved-nodes'.  Interactively, a prefix
+argument says to include Info nodes recorded as bookmarks.&quot;
     (interactive (list (read-from-minibuffer &quot;Virtual book name: &quot; nil nil nil nil &quot;Virtual Book&quot;)
-                       Info-saved-nodes))
+                       Info-saved-nodes
+                       current-prefix-arg))
     (unless nodes (setq nodes  Info-saved-nodes))
+    (when include-bookmark-nodes-p
+      (unless (require 'bookmark+ nil t) (require 'bookmark nil t))
+      (bookmark-maybe-load-default-file)
+      (let ((bm-nodes  ())
+            node file)
+        (dolist (bm  bookmark-alist)
+          (when (setq node  (cdr (assq 'info-node bm)))
+            (setq file  (bookmark-get-filename bm))
+            (push (concat &quot;(&quot; (file-name-nondirectory (cdr (assq 'filename bm))) &quot;)&quot; node) bm-nodes)))
+        (setq nodes  (append nodes bm-nodes))))
     (unless (and nodes (stringp (car nodes))) ; Minimal sanity check.
-      (error (if (interactive-p) &quot;No saved Info nodes (`Info-saved-nodes')&quot; &quot;No Info nodes&quot;)))
+      (error (if (interactive-p) &quot;No saved Info nodes&quot; &quot;No Info nodes&quot;)))
     (unless (stringp book) (setq book  &quot;Virtual Book&quot;)) ; Non-interactive - NODESET is a list.
     (let ((file  (and (stringp Info-current-file)
                       (concat &quot;(&quot; (file-name-nondirectory Info-current-file) &quot;)&quot;))))
@@ -3126,7 +4123,6 @@ the nodes are those in `Info-saved-nodes'.&quot;
     (unless (eq major-mode 'Info-mode) (error &quot;You must be in Info to use this command&quot;))
     (unless Info-current-node (error &quot;No current Info node&quot;))
     (unless Info-current-file (error &quot;No Info file&quot;))
-    ;;;@@@(when (string= Info-current-node &quot;Top&quot;) (error &quot;Cannot save node `Top'&quot;))
     (add-to-list 'Info-saved-nodes (concat &quot;(&quot; (file-name-nondirectory Info-current-file) &quot;)&quot;
                                            Info-current-node))
     (message (format &quot;Node `%s' saved&quot; Info-current-node))))
@@ -3238,11 +4234,11 @@ subnodes (outside Info)? &quot;)
                                     strg)))) ; Insert main node's contents.
 
       (unless  (string-match &quot;\\s-*Index$&quot; node-name) ; Don't recurse down Index menus.
-
+        
         ;; Insert menu items and possibly their subnodes.
         (save-excursion
           (while more
-
+          
             ;; Info buffer: Get menu item token.
             (set-buffer buf)
             (end-of-line)
@@ -3277,7 +4273,7 @@ subnodes (outside Info)? &quot;)
               (if (&gt;= emacs-major-version 22)
                   (Info-history-back)
                 (Info-last))
-              (let ((inhibit-read-only t)) ; Get untabified menu-item line, so can count
+              (let ((inhibit-read-only t)) ; Get untabified menu-item line, so can count 
                 (buffer-enable-undo) (undo-start) ; chars to underline.
                 (untabify (point) (save-excursion (forward-line 1) (point)))
                 (setq menu-item-line
@@ -3303,7 +4299,7 @@ subnodes (outside Info)? &quot;)
               ;; Again, though, don't recurse down Index menus.
               (when (and recursive-display-p (not (string-match &quot;\\s-*Index$&quot; token)))
                 (save-excursion
-
+                
                   ;; Info buffer: Go back to subnode.
                   ;; If it has a menu, then treat its subnodes, recursively.
                   (set-buffer buf)
@@ -3317,13 +4313,13 @@ subnodes (outside Info)? &quot;)
                                     (point) &quot;\\* &quot;
                                     &quot;\\* [^:]*:[ \t]+\\([^\t,.\n]+\\)[\t,.\n]&quot;)))
                       (Info-merge-subnodes recursive-display-p node-name)))
-
+                
                   ;; Info buffer: Go back to parent node.
                   (set-buffer buf)
                   (if (&gt;= emacs-major-version 22)
                       (Info-history-back)
                     (Info-last))))
-
+            
               ;; Info buffer
               (set-buffer buf))))))
 </diff>
      <filename>_emacs.d/lib/info+.el</filename>
    </modified>
    <modified>
      <diff>@@ -346,7 +346,7 @@
 (setq gnus-message-archive-group
       '((if (message-news-p)
             (concat &quot;news.&quot; (format-time-string &quot;%Y-%m&quot; (current-time)))
-          (list gnus-newsgroup-name
+          (list ;; gnus-newsgroup-name
                 (concat &quot;mail.&quot; (format-time-string &quot;%Y-%m&quot; (current-time)))))))
 
 (setq</diff>
      <filename>_gnus.el</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,7 @@ escape ^zz
 
 # monitor activity in each window by default
 defmonitor on
+msgwait .5
 
 # don't wipe out dead windows. Use &quot;c&quot; to close, and &quot;r&quot; to revive&quot;
 zombie cr</diff>
      <filename>_screenrc</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,8 @@ alias ls='command ls -F --color=auto'
 
 alias ll='ls -l'
 
-alias grep='command grep --color'
+#alias grep='command grep --color'
+alias grep='command ack-grep'
 
 alias git='PAGER=less git'
 </diff>
      <filename>_zsh/aliases</filename>
    </modified>
    <modified>
      <diff>@@ -119,7 +119,7 @@ WATCHFMT=&quot;[%B%t%b] %B%n%b has %a %B%l%b from %B%M%b&quot;
 
 export JDK_HOME=/usr/lib/jvm/java-1.5.0-sun
 export JAVA_HOME=$JDK_HOME
-export PYTHONPATH=.:~/apps/python:~/apps/pyVC/vmodl
+export PYTHONPATH=.:~/apps/python:~/Projects/git/vsimu
 export INFOPATH=/usr/share/info:/usr/local/share/info:~/share/info
 export XDG_CONFIG_HOME=~/.config
 export XDG_DATA_HOME=~/.data
@@ -155,11 +155,10 @@ PATH=$QTDIR/bin:$KDEDIR/bin:$PATH
 export PATH=.:~/bin/:~/apps/bin/:/usr/local/bin:/usr/games/:$GEM_HOME/bin:$JAVA_HOME/bin:$LLVM_HOME/Release/bin:$PATH
 
 export P4CONFIG=.p4config
-export P4CLIENT=git-p4
+export P4CLIENT=yhodique-git-p4
 export P4PORT=build-p4proxy.eng.vmware.com:1667
 export P4USER=yhodique
 
-export ECLIPSE_HOME=/home/yann/apps/eclipse/
 export VMO_SERVER=10.23.167.21
 export VMO_USER=lcmadmin
 export VMO_PASSWORD=admin
@@ -175,12 +174,13 @@ export TCROOT=/build/toolchain
 export BUILDAPPSROOT=/build/apps
 export SCMTREESROOT=/build/trees/bin
 
-export TWSRCROOT=~/Projects/git/vmware/testware/vmo-testware-buzzell
-export VMTREE=~/Projects/git/vmware/testware/vmo-testware-buzzell/bora-make
-export MAINSRCROOT=~/Projects/p4/bfg-main/bora
-export KROOT=~/apps/kroot
+export TWSRCROOT=~/Projects/git/workspace/testware/
+export VMTREE=$TWSRCROOT/bora-make
+export VMQAHOME=$TWSRCROOT/build/vmqa
 
-export VMQAHOME=~/git/vmware/testware/vmo-testware-buzzell/build/vmqa
+export BORA=~/Projects/git/workspace/bora
+export MAINSRCROOT=$BORA
+export KROOT=~/Projects/git/workspace/kroot
 
 export PATH=$BUILDAPPSROOT/bin:$SCMTREESROOT:$PATH
 </diff>
      <filename>_zsh/config</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f4924d251081609db0dbdebc92fce17fc9167f53</id>
    </parent>
  </parents>
  <author>
    <name>Yann Hodique</name>
    <email>yhodique@vmware.com</email>
  </author>
  <url>http://github.com/sigma/dotfiles/commit/31a78c662c9741237c3c32fcd7bccabb011582cd</url>
  <id>31a78c662c9741237c3c32fcd7bccabb011582cd</id>
  <committed-date>2009-10-27T02:17:17-07:00</committed-date>
  <authored-date>2009-10-27T02:17:17-07:00</authored-date>
  <message>update config from work</message>
  <tree>76c7be570d4a0a5df1c11e4a44b36b213fa81c72</tree>
  <committer>
    <name>Yann Hodique</name>
    <email>yhodique@vmware.com</email>
  </committer>
</commit>
