changeset 108445:d6e3aa27b97d

Merge from mainline.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sun, 04 Apr 2010 11:40:27 +0000
parents 8ce523466531 (current diff) 41e0da544208 (diff)
children c3217524a4c1
files
diffstat 8 files changed, 170 insertions(+), 223 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Apr 03 12:47:25 2010 +0000
+++ b/lisp/ChangeLog	Sun Apr 04 11:40:27 2010 +0000
@@ -1,3 +1,38 @@
+2010-04-04  John Wiegley  <jwiegley@gmail.com>
+
+	* ido.el (ido-use-virtual-buffers): New variable to indicate
+	whether "virtual buffer" support is enabled for IDO.  Essentially
+	it works as follows: Say you are visiting a file and the buffer
+	gets cleaned up by mignight.el.  Later, you want to switch to that
+	buffer, but find it's no longer open.  With virtual buffers
+	enabled, the buffer name stays in the buffer list (using the
+	ido-virtual face, and always at the end), and if you select it, it
+	opens the file back up again.  This allows you to think less about
+	whether recently opened files are still open or not.  Most of the
+	time you can quit Emacs, restart, and then switch to a file buffer
+	that was previously open as if it still were.  NOTE: This feature
+	has been present in iswitchb for several years now, and I'm
+	porting the same logic to IDO.
+	(ido-virtual): Face used to indicate virtual buffers in the list.
+	(ido-buffer-internal): If a buffer is chosen, and no such buffer
+	exists, but a virtual buffer of that name does (which would be why
+	it was in the list), recreate the buffer by reopening the file.
+	(ido-make-buffer-list): If virtual buffers are being used, call
+	`ido-add-virtual-buffers-to-list' before the make list hook.
+	(ido-virtual-buffers): New variable which contains a copy of the
+	current contents of the `recentf-list', albeit pared down for the
+	sake of speed, and with proper faces applied.
+	(ido-add-virtual-buffers-to-list): Using the `recentf-list',
+	create a list of "virtual buffers" to present to the user in
+	addition to the currently open set.  Note that this logic could
+	get rather slow if that list is too large.  With the default
+	`recentf-max-saved-items' of 200, there is little speed penalty.
+
+2010-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* font-lock.el: Require CL when compiling.
+	(font-lock-turn-on-thing-lock): Use `case'.
+
 2010-04-03  Eli Zaretskii  <eliz@gnu.org>
 
 	* emacs-lisp/authors.el (authors-fixed-entries): Add entry for Eli
@@ -23,11 +58,11 @@
 	* vc-hg.el (vc-hg-push, vc-hg-pull): Use `apply' when calling
 	`vc-hg-command' with a list of flags.
 
-	* progmodes/bug-reference.el (bug-reference-bug-regexp): Also
-	accept "patch" and "RFE".
+	* progmodes/bug-reference.el (bug-reference-bug-regexp):
+	Also accept "patch" and "RFE".
 	(bug-reference-fontify): `bug-reference-url-format' can also be a
 	function to be able to handle the bug kind.
-	(turn-on-bug-reference-mode, turn-on-bug-reference-prog-mode): Add
+	(turn-on-bug-reference-mode, turn-on-bug-reference-prog-mode): Add.
 
 2010-04-02  Jan Djärv  <jan.h.d@swipnet.se>
 
@@ -36,8 +71,7 @@
 
 2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
 
-	* cus-edit.el (custom-buffer-sort-alphabetically): Update
-	:version.
+	* cus-edit.el (custom-buffer-sort-alphabetically): Update :version.
 
 2010-03-31  Juri Linkov  <juri@jurta.org>
 
--- a/lisp/font-lock.el	Sat Apr 03 12:47:25 2010 +0000
+++ b/lisp/font-lock.el	Sun Apr 04 11:40:27 2010 +0000
@@ -209,6 +209,7 @@
 ;;; Code:
 
 (require 'syntax)
+(eval-when-compile (require 'cl))
 
 ;; Define core `font-lock' group.
 (defgroup font-lock '((jit-lock custom-group))
@@ -902,26 +903,24 @@
 (declare-function lazy-lock-mode "lazy-lock")
 
 (defun font-lock-turn-on-thing-lock ()
-  (let ((thing-mode (font-lock-value-in-major-mode font-lock-support-mode)))
-    (cond ((eq thing-mode 'fast-lock-mode)
-	   (fast-lock-mode t))
-	  ((eq thing-mode 'lazy-lock-mode)
-	   (lazy-lock-mode t))
-	  ((eq thing-mode 'jit-lock-mode)
-	   ;; Prepare for jit-lock
-	   (remove-hook 'after-change-functions
-			'font-lock-after-change-function t)
-	   (set (make-local-variable 'font-lock-fontify-buffer-function)
-		'jit-lock-refontify)
-	   ;; Don't fontify eagerly (and don't abort if the buffer is large).
-	   (set (make-local-variable 'font-lock-fontified) t)
-	   ;; Use jit-lock.
-	   (jit-lock-register 'font-lock-fontify-region
-			      (not font-lock-keywords-only))
-           ;; Tell jit-lock how we extend the region to refontify.
-           (add-hook 'jit-lock-after-change-extend-region-functions
-                     'font-lock-extend-jit-lock-region-after-change
-                     nil t)))))
+  (case (font-lock-value-in-major-mode font-lock-support-mode)
+    (fast-lock-mode (fast-lock-mode t))
+    (lazy-lock-mode (lazy-lock-mode t))
+    (jit-lock-mode
+     ;; Prepare for jit-lock
+     (remove-hook 'after-change-functions
+                  'font-lock-after-change-function t)
+     (set (make-local-variable 'font-lock-fontify-buffer-function)
+          'jit-lock-refontify)
+     ;; Don't fontify eagerly (and don't abort if the buffer is large).
+     (set (make-local-variable 'font-lock-fontified) t)
+     ;; Use jit-lock.
+     (jit-lock-register 'font-lock-fontify-region
+                        (not font-lock-keywords-only))
+     ;; Tell jit-lock how we extend the region to refontify.
+     (add-hook 'jit-lock-after-change-extend-region-functions
+               'font-lock-extend-jit-lock-region-after-change
+               nil t))))
 
 (defun font-lock-turn-off-thing-lock ()
   (cond ((bound-and-true-p fast-lock-mode)
--- a/lisp/ido.el	Sat Apr 03 12:47:25 2010 +0000
+++ b/lisp/ido.el	Sun Apr 04 11:40:27 2010 +0000
@@ -774,6 +774,13 @@
   :type '(repeat string)
   :group 'ido)
 
+(defcustom ido-use-virtual-buffers nil
+  "If non-nil, refer to past buffers as well as existing ones.
+This feature relies upon the `recentf' package, which will be
+enabled if this variable is configured to a non-nil value."
+  :type 'boolean
+  :group 'ido)
+
 (defcustom ido-use-faces t
   "Non-nil means use ido faces to highlighting first match, only match and
 subdirs in the alternatives."
@@ -798,6 +805,10 @@
   "Face used by ido for highlighting subdirs in the alternatives."
   :group 'ido)
 
+(defface ido-virtual '((t (:inherit font-lock-builtin-face)))
+  "Face used by ido for matching virtual buffer names."
+  :group 'ido)
+
 (defface ido-indicator  '((((min-colors 88) (class color))
 				(:foreground "yellow1"
 				 :background "red1"
@@ -2155,7 +2166,8 @@
 	   (ido-directory-too-big nil)
 	   (require-match (confirm-nonexistent-file-or-buffer))
 	   (buf (ido-read-internal 'buffer (or prompt "Buffer: ") 'ido-buffer-history default
-				   require-match initial)))
+				   require-match initial))
+	   filename)
 
       ;; Choose the buffer name: either the text typed in, or the head
       ;; of the list of matches
@@ -2191,6 +2203,16 @@
 		 (point))))
 	  (ido-visit-buffer buf method t)))
 
+       ;; check for a virtual buffer reference
+       ((and ido-use-virtual-buffers ido-virtual-buffers
+	     (setq filename (assoc buf ido-virtual-buffers)))
+	(ido-visit-buffer (find-file-noselect (cdr filename)) method t))
+
+       ((and (eq ido-create-new-buffer 'prompt)
+	     (null require-match)
+	     (not (y-or-n-p (format "No buffer matching `%s', create one? " buf))))
+	nil)
+
        ;; buffer doesn't exist
        ((and (eq ido-create-new-buffer 'never)
 	     (null require-match))
@@ -3350,9 +3372,41 @@
 		(delete default ido-temp-list))
 	  (setq ido-temp-list
 		(cons default ido-temp-list))))
+    (if ido-use-virtual-buffers
+	(ido-add-virtual-buffers-to-list))
     (run-hooks 'ido-make-buffer-list-hook)
     ido-temp-list))
 
+(defvar ido-virtual-buffers nil)
+
+(defun ido-add-virtual-buffers-to-list ()
+  "Add recently visited files, and bookmark files, to the buffer list.
+This is to make them appear as if they were \"virtual buffers\"."
+  ;; If no buffers matched, and virtual buffers are being used, then
+  ;; consult the list of past visited files, to see if we can find
+  ;; the file which the user might thought was still open.
+  (setq ido-virtual-buffers nil)
+  (let ((head recentf-list) name)
+    (while head
+      (if (and (setq name (file-name-nondirectory (car head)))
+	       (null (get-file-buffer (car head)))
+	       (not (assoc name ido-virtual-buffers))
+	       (not (ido-ignore-item-p name ido-ignore-buffers))
+	       ;;(file-exists-p (car head))
+	       )
+	  (setq ido-virtual-buffers
+		(cons (cons name (car head)) ido-virtual-buffers)))
+      (setq head (cdr head))))
+  (when ido-virtual-buffers
+    (if ido-use-faces
+	(dolist (comp ido-virtual-buffers)
+	  (put-text-property 0 (length (car comp))
+			     'face 'ido-virtual
+			     (car comp))))
+    (setq ido-temp-list
+	  (nconc ido-temp-list
+		 (nreverse (mapcar #'car ido-virtual-buffers))))))
+
 (defun ido-make-choice-list (default)
   ;; Return the current list of choices.
   ;; If DEFAULT is non-nil, and corresponds to an element of choices,
--- a/lisp/ldefs-boot.el	Sat Apr 03 12:47:25 2010 +0000
+++ b/lisp/ldefs-boot.el	Sun Apr 04 11:40:27 2010 +0000
@@ -10464,13 +10464,7 @@
 
 ;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
 ;;;;;;  turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-<<<<<<< TREE
 ;;;;;;  "flyspell" "textmodes/flyspell.el" (19370 36541))
-||||||| BASE-REVISION
-;;;;;;  "flyspell" "textmodes/flyspell.el" (19352 21362))
-=======
-;;;;;;  "flyspell" "textmodes/flyspell.el" (19369 7847))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload 'flyspell-prog-mode "flyspell" "\
@@ -10792,7 +10786,6 @@
 
 ;;;***
 
-<<<<<<< TREE
 ;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el"
 ;;;;;;  (19375 49830))
 ;;; Generated autoloads from progmodes/gdb-mi.el
@@ -10803,19 +10796,6 @@
 (custom-autoload 'gdb-enable-debug "gdb-mi" t)
 
 (autoload 'gdb "gdb-mi" "\
-||||||| BASE-REVISION
-;;;### (autoloads (gdb-enable-debug gdb) "gdb-ui" "progmodes/gdb-ui.el"
-;;;;;;  (19352 21362))
-;;; Generated autoloads from progmodes/gdb-ui.el
-
-(autoload 'gdb "gdb-ui" "\
-=======
-;;;### (autoloads (gdb-enable-debug gdb) "gdb-ui" "progmodes/gdb-ui.el"
-;;;;;;  (19372 60979))
-;;; Generated autoloads from progmodes/gdb-ui.el
-
-(autoload 'gdb "gdb-ui" "\
->>>>>>> MERGE-SOURCE
 Run gdb on program FILE in buffer *gud-FILE*.
 The directory containing FILE becomes the initial working directory
 and source-file directory for your debugger.
@@ -13669,16 +13649,8 @@
 ;;;;;;  ido-find-alternate-file ido-find-file-other-window ido-find-file
 ;;;;;;  ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
 ;;;;;;  ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
-<<<<<<< TREE
 ;;;;;;  ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (19292
 ;;;;;;  15231))
-||||||| BASE-REVISION
-;;;;;;  ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (19352
-;;;;;;  21354))
-=======
-;;;;;;  ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (19355
-;;;;;;  62587))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -14170,13 +14142,7 @@
 ;;;;;;  image-dired-jump-thumbnail-buffer image-dired-delete-tag
 ;;;;;;  image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
 ;;;;;;  image-dired-dired-with-window-configuration image-dired-dired-insert-marked-thumbs)
-<<<<<<< TREE
 ;;;;;;  "image-dired" "image-dired.el" (19370 36540))
-||||||| BASE-REVISION
-;;;;;;  "image-dired" "image-dired.el" (19352 21354))
-=======
-;;;;;;  "image-dired" "image-dired.el" (19367 42949))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from image-dired.el
 
 (autoload 'image-dired-dired-insert-marked-thumbs "image-dired" "\
@@ -15428,13 +15394,7 @@
 
 ;;;***
 
-<<<<<<< TREE
 ;;;### (autoloads (js-mode) "js" "progmodes/js.el" (19279 5151))
-||||||| BASE-REVISION
-;;;### (autoloads (js-mode) "js" "progmodes/js.el" (19352 21355))
-=======
-;;;### (autoloads (js-mode) "js" "progmodes/js.el" (19375 48608))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from progmodes/js.el
 
 (autoload 'js-mode "js" "\
@@ -16543,13 +16503,7 @@
 
 ;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode
 ;;;;;;  makefile-gmake-mode makefile-automake-mode makefile-mode)
-<<<<<<< TREE
 ;;;;;;  "make-mode" "progmodes/make-mode.el" (19372 27330))
-||||||| BASE-REVISION
-;;;;;;  "make-mode" "progmodes/make-mode.el" (19352 21355))
-=======
-;;;;;;  "make-mode" "progmodes/make-mode.el" (19370 15152))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from progmodes/make-mode.el
 
 (autoload 'makefile-mode "make-mode" "\
@@ -16781,13 +16735,7 @@
 ;;;;;;  message-forward-make-body message-forward message-recover
 ;;;;;;  message-supersede message-cancel-news message-followup message-wide-reply
 ;;;;;;  message-reply message-news message-mail message-mode) "message"
-<<<<<<< TREE
 ;;;;;;  "gnus/message.el" (19370 36541))
-||||||| BASE-REVISION
-;;;;;;  "gnus/message.el" (19352 21361))
-=======
-;;;;;;  "gnus/message.el" (19374 17766))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from gnus/message.el
 
 (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -17433,13 +17381,7 @@
 ;;;***
 
 ;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu"
-<<<<<<< TREE
 ;;;;;;  "gnus/mm-uu.el" (19279 5150))
-||||||| BASE-REVISION
-;;;;;;  "gnus/mm-uu.el" (19352 21355))
-=======
-;;;;;;  "gnus/mm-uu.el" (19382 2266))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from gnus/mm-uu.el
 
 (autoload 'mm-uu-dissect "mm-uu" "\
@@ -22665,16 +22607,8 @@
 
 ;;;***
 
-<<<<<<< TREE
 ;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (19370
 ;;;;;;  36541))
-||||||| BASE-REVISION
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (19352
-;;;;;;  21358))
-=======
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (19367
-;;;;;;  42950))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from textmodes/reftex-vars.el
 (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
 (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22926,16 +22860,8 @@
 ;;;;;;  rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers
 ;;;;;;  rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers
 ;;;;;;  rmail-dont-reply-to-names rmail-user-mail-address-regexp
-<<<<<<< TREE
 ;;;;;;  rmail-movemail-variant-p) "rmail" "mail/rmail.el" (19370
 ;;;;;;  36541))
-||||||| BASE-REVISION
-;;;;;;  rmail-movemail-variant-p) "rmail" "mail/rmail.el" (19352
-;;;;;;  21360))
-=======
-;;;;;;  rmail-movemail-variant-p) "rmail" "mail/rmail.el" (19363
-;;;;;;  36802))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from mail/rmail.el
 
 (autoload 'rmail-movemail-variant-p "rmail" "\
@@ -23902,13 +23828,7 @@
 ;;;;;;  mail-alias-file mail-default-reply-to mail-archive-file-name
 ;;;;;;  mail-header-separator send-mail-function mail-interactive
 ;;;;;;  mail-self-blind mail-specify-envelope-from mail-from-style)
-<<<<<<< TREE
 ;;;;;;  "sendmail" "mail/sendmail.el" (19338 9841))
-||||||| BASE-REVISION
-;;;;;;  "sendmail" "mail/sendmail.el" (19352 21361))
-=======
-;;;;;;  "sendmail" "mail/sendmail.el" (19374 15070))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from mail/sendmail.el
 
 (defvar mail-from-style 'default "\
@@ -24787,13 +24707,7 @@
 ;;;***
 
 ;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el"
-<<<<<<< TREE
 ;;;;;;  (19370 36541))
-||||||| BASE-REVISION
-;;;;;;  (19352 21358))
-=======
-;;;;;;  (19367 42950))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from gnus/smiley.el
 
 (autoload 'smiley-region "smiley" "\
@@ -26811,13 +26725,7 @@
 ;;;;;;  tex-start-commands tex-start-options slitex-run-command latex-run-command
 ;;;;;;  tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
 ;;;;;;  tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
-<<<<<<< TREE
 ;;;;;;  (19323 49698))
-||||||| BASE-REVISION
-;;;;;;  (19352 21363))
-=======
-;;;;;;  (19371 46148))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from textmodes/tex-mode.el
 
 (defvar tex-shell-file-name nil "\
@@ -27812,13 +27720,7 @@
 ;;;***
 
 ;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
-<<<<<<< TREE
 ;;;;;;  "tmm.el" (19279 5148))
-||||||| BASE-REVISION
-;;;;;;  "tmm.el" (19352 21359))
-=======
-;;;;;;  "tmm.el" (19376 53416))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -28068,13 +27970,7 @@
 ;;;***
 
 ;;;### (autoloads (trace-function-background trace-function trace-buffer)
-<<<<<<< TREE
 ;;;;;;  "trace" "emacs-lisp/trace.el" (19370 36541))
-||||||| BASE-REVISION
-;;;;;;  "trace" "emacs-lisp/trace.el" (19352 21359))
-=======
-;;;;;;  "trace" "emacs-lisp/trace.el" (19367 42950))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from emacs-lisp/trace.el
 
 (defvar trace-buffer (purecopy "*trace-output*") "\
@@ -28111,13 +28007,7 @@
 ;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
 ;;;;;;  tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
 ;;;;;;  tramp-file-name-handler tramp-syntax tramp-mode) "tramp"
-<<<<<<< TREE
 ;;;;;;  "net/tramp.el" (19370 36541))
-||||||| BASE-REVISION
-;;;;;;  "net/tramp.el" (19352 21361))
-=======
-;;;;;;  "net/tramp.el" (19356 59749))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from net/tramp.el
 
 (defvar tramp-mode t "\
@@ -29340,13 +29230,7 @@
 ;;;;;;  vc-create-tag vc-merge vc-insert-headers vc-revision-other-window
 ;;;;;;  vc-root-diff vc-diff vc-version-diff vc-register vc-next-action
 ;;;;;;  vc-before-checkin-hook vc-checkin-hook vc-checkout-hook)
-<<<<<<< TREE
 ;;;;;;  "vc" "vc.el" (19370 36540))
-||||||| BASE-REVISION
-;;;;;;  "vc" "vc.el" (19352 21359))
-=======
-;;;;;;  "vc" "vc.el" (19371 62620))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from vc.el
 
 (defvar vc-checkout-hook nil "\
@@ -31607,13 +31491,7 @@
 ;;;***
 
 ;;;### (autoloads (woman-find-file woman-dired-find-file woman woman-locale)
-<<<<<<< TREE
 ;;;;;;  "woman" "woman.el" (19370 36540))
-||||||| BASE-REVISION
-;;;;;;  "woman" "woman.el" (19352 21359))
-=======
-;;;;;;  "woman" "woman.el" (19359 48737))
->>>>>>> MERGE-SOURCE
 ;;; Generated autoloads from woman.el
 
 (defvar woman-locale nil "\
@@ -31967,7 +31845,6 @@
 ;;;;;;  "cedet/semantic/edit.el" "cedet/semantic/find.el" "cedet/semantic/format.el"
 ;;;;;;  "cedet/semantic/fw.el" "cedet/semantic/grammar-wy.el" "cedet/semantic/grammar.el"
 ;;;;;;  "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el"
-<<<<<<< TREE
 ;;;;;;  "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/java.el"
 ;;;;;;  "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/loaddefs.el"
 ;;;;;;  "cedet/semantic/mru-bookmark.el" "cedet/semantic/sb.el" "cedet/semantic/scope.el"
@@ -31976,25 +31853,6 @@
 ;;;;;;  "cedet/semantic/symref/global.el" "cedet/semantic/symref/grep.el"
 ;;;;;;  "cedet/semantic/symref/idutils.el" "cedet/semantic/symref/list.el"
 ;;;;;;  "cedet/semantic/tag-file.el" "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
-||||||| BASE-REVISION
-;;;;;;  "cedet/semantic/idle.el" "cedet/semantic/java.el" "cedet/semantic/lex-spp.el"
-;;;;;;  "cedet/semantic/lex.el" "cedet/semantic/mru-bookmark.el"
-;;;;;;  "cedet/semantic/sb.el" "cedet/semantic/scope.el" "cedet/semantic/senator.el"
-;;;;;;  "cedet/semantic/sort.el" "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el"
-;;;;;;  "cedet/semantic/symref/filter.el" "cedet/semantic/symref/global.el"
-;;;;;;  "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el"
-;;;;;;  "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el"
-;;;;;;  "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
-=======
-;;;;;;  "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/java.el"
-;;;;;;  "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/mru-bookmark.el"
-;;;;;;  "cedet/semantic/sb.el" "cedet/semantic/scope.el" "cedet/semantic/senator.el"
-;;;;;;  "cedet/semantic/sort.el" "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el"
-;;;;;;  "cedet/semantic/symref/filter.el" "cedet/semantic/symref/global.el"
-;;;;;;  "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el"
-;;;;;;  "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el"
-;;;;;;  "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
->>>>>>> MERGE-SOURCE
 ;;;;;;  "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el"
 ;;;;;;  "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el"
 ;;;;;;  "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el"
@@ -32108,7 +31966,6 @@
 ;;;;;;  "org/org-mac-message.el" "org/org-macs.el" "org/org-mew.el"
 ;;;;;;  "org/org-mhe.el" "org/org-mouse.el" "org/org-protocol.el"
 ;;;;;;  "org/org-rmail.el" "org/org-src.el" "org/org-vm.el" "org/org-w3m.el"
-<<<<<<< TREE
 ;;;;;;  "org/org-wl.el" "patcomp.el" "pcvs-info.el" "pcvs-parse.el"
 ;;;;;;  "pcvs-util.el" "pgg-def.el" "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el"
 ;;;;;;  "play/gamegrid.el" "play/gametree.el" "play/meese.el" "progmodes/ada-prj.el"
@@ -32131,55 +31988,6 @@
 ;;;;;;  "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" "vc-dav.el"
 ;;;;;;  "vcursor.el" "vt-control.el" "vt100-led.el" "w32-fns.el"
 ;;;;;;  "w32-vars.el" "x-dnd.el") (19375 51700 955763))
-||||||| BASE-REVISION
-;;;;;;  "org/org-wl.el" "password-cache.el" "patcomp.el" "pcvs-info.el"
-;;;;;;  "pcvs-parse.el" "pcvs-util.el" "pgg-def.el" "pgg-parse.el"
-;;;;;;  "pgg-pgp.el" "pgg-pgp5.el" "play/gamegrid.el" "play/gametree.el"
-;;;;;;  "play/meese.el" "progmodes/ada-prj.el" "progmodes/cc-align.el"
-;;;;;;  "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" "progmodes/cc-cmds.el"
-;;;;;;  "progmodes/cc-defs.el" "progmodes/cc-fonts.el" "progmodes/cc-langs.el"
-;;;;;;  "progmodes/cc-menus.el" "progmodes/ebnf-abn.el" "progmodes/ebnf-bnf.el"
-;;;;;;  "progmodes/ebnf-dtd.el" "progmodes/ebnf-ebx.el" "progmodes/ebnf-iso.el"
-;;;;;;  "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el"
-;;;;;;  "progmodes/idlw-help.el" "progmodes/idlw-toolbar.el" "progmodes/mantemp.el"
-;;;;;;  "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el"
-;;;;;;  "s-region.el" "saveplace.el" "sb-image.el" "scroll-bar.el"
-;;;;;;  "select.el" "soundex.el" "subdirs.el" "tempo.el" "textmodes/bib-mode.el"
-;;;;;;  "textmodes/makeinfo.el" "textmodes/page-ext.el" "textmodes/refbib.el"
-;;;;;;  "textmodes/refer.el" "textmodes/reftex-auc.el" "textmodes/reftex-dcr.el"
-;;;;;;  "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" "textmodes/reftex-toc.el"
-;;;;;;  "textmodes/texnfo-upd.el" "timezone.el" "tooltip.el" "tree-widget.el"
-;;;;;;  "uniquify.el" "url/url-about.el" "url/url-cookie.el" "url/url-dired.el"
-;;;;;;  "url/url-expand.el" "url/url-ftp.el" "url/url-history.el"
-;;;;;;  "url/url-imap.el" "url/url-methods.el" "url/url-nfs.el" "url/url-proxy.el"
-;;;;;;  "url/url-vars.el" "vc-dav.el" "vcursor.el" "vt-control.el"
-;;;;;;  "vt100-led.el" "w32-fns.el" "w32-vars.el" "x-dnd.el") (19352
-;;;;;;  23109 108328))
-=======
-;;;;;;  "org/org-wl.el" "password-cache.el" "patcomp.el" "pcvs-info.el"
-;;;;;;  "pcvs-parse.el" "pcvs-util.el" "pgg-def.el" "pgg-parse.el"
-;;;;;;  "pgg-pgp.el" "pgg-pgp5.el" "play/gamegrid.el" "play/gametree.el"
-;;;;;;  "play/meese.el" "progmodes/ada-prj.el" "progmodes/cc-align.el"
-;;;;;;  "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" "progmodes/cc-cmds.el"
-;;;;;;  "progmodes/cc-defs.el" "progmodes/cc-fonts.el" "progmodes/cc-langs.el"
-;;;;;;  "progmodes/cc-menus.el" "progmodes/ebnf-abn.el" "progmodes/ebnf-bnf.el"
-;;;;;;  "progmodes/ebnf-dtd.el" "progmodes/ebnf-ebx.el" "progmodes/ebnf-iso.el"
-;;;;;;  "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el"
-;;;;;;  "progmodes/idlw-help.el" "progmodes/idlw-toolbar.el" "progmodes/mantemp.el"
-;;;;;;  "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el"
-;;;;;;  "s-region.el" "saveplace.el" "sb-image.el" "scroll-bar.el"
-;;;;;;  "select.el" "soundex.el" "subdirs.el" "tempo.el" "textmodes/bib-mode.el"
-;;;;;;  "textmodes/makeinfo.el" "textmodes/page-ext.el" "textmodes/refbib.el"
-;;;;;;  "textmodes/refer.el" "textmodes/reftex-auc.el" "textmodes/reftex-dcr.el"
-;;;;;;  "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" "textmodes/reftex-toc.el"
-;;;;;;  "textmodes/texnfo-upd.el" "timezone.el" "tooltip.el" "tree-widget.el"
-;;;;;;  "uniquify.el" "url/url-about.el" "url/url-cookie.el" "url/url-dired.el"
-;;;;;;  "url/url-expand.el" "url/url-ftp.el" "url/url-history.el"
-;;;;;;  "url/url-imap.el" "url/url-methods.el" "url/url-nfs.el" "url/url-proxy.el"
-;;;;;;  "url/url-vars.el" "vc-dav.el" "vcursor.el" "vt-control.el"
-;;;;;;  "vt100-led.el" "w32-fns.el" "w32-vars.el" "x-dnd.el") (19382
-;;;;;;  35538 347447))
->>>>>>> MERGE-SOURCE
 
 ;;;***
 
--- a/src/ChangeLog	Sat Apr 03 12:47:25 2010 +0000
+++ b/src/ChangeLog	Sun Apr 04 11:40:27 2010 +0000
@@ -1,5 +1,14 @@
+2010-04-04  Jan Djärv  <jan.h.d@swipnet.se>
+
+	* xfns.c (set_machine_and_pid_properties): New function.
+	(Fx_create_frame): Call set_machine_and_pid_properties.
+
 2010-04-03  Eli Zaretskii  <eliz@gnu.org>
 
+	* bidi.c (bidi_resolve_explicit, bidi_level_of_next_char): Check
+	bidi_it->bytepos against ZV_BYTE instead of bidi_it->ch against
+	BIDI_EOB.  Fixes infloop with vertical cursor motion at ZV.
+
 	* w32fns.c (x_create_tip_frame): Copy `parms' before we modify it
 	in this function.  (Bug#5703)
 
--- a/src/bidi.c	Sat Apr 03 12:47:25 2010 +0000
+++ b/src/bidi.c	Sun Apr 04 11:40:27 2010 +0000
@@ -1242,7 +1242,7 @@
   if (prev_level < new_level
       && bidi_it->type == WEAK_BN
       && bidi_it->ignore_bn_limit == 0 /* only if not already known */
-      && bidi_it->ch != BIDI_EOB       /* not already at EOB */
+      && bidi_it->bytepos < ZV_BYTE    /* not already at EOB */
       && bidi_explicit_dir_char (FETCH_CHAR (bidi_it->bytepos
 					     + bidi_it->ch_len)))
     {
@@ -1648,7 +1648,7 @@
   if (bidi_it->scan_dir == 1)
     {
       /* There's no sense in trying to advance if we hit end of text.  */
-      if (bidi_it->ch == BIDI_EOB)
+      if (bidi_it->bytepos >= ZV_BYTE)
 	return bidi_it->resolved_level;
 
       /* Record the info about the previous character.  */
--- a/src/xdisp.c	Sat Apr 03 12:47:25 2010 +0000
+++ b/src/xdisp.c	Sun Apr 04 11:40:27 2010 +0000
@@ -6570,7 +6570,10 @@
 /* Scan forward from CHARPOS in the current buffer, until we find a
    stop position > current IT's position.  Then handle the stop
    position before that.  This is called when we bump into a stop
-   position while reordering bidirectional text.  */
+   position while reordering bidirectional text.  CHARPOS should be
+   the last previously processed stop_pos (or BEGV, if none were
+   processed yet) whose position is less that IT's current
+   position.  */
 
 static void
 handle_stop_backwards (it, charpos)
--- a/src/xfns.c	Sat Apr 03 12:47:25 2010 +0000
+++ b/src/xfns.c	Sun Apr 04 11:40:27 2010 +0000
@@ -203,6 +203,10 @@
 
 extern Lisp_Object Vwindow_system_version;
 
+/* In editfns.c */
+
+extern Lisp_Object Vsystem_name;
+
 /* The below are defined in frame.c.  */
 
 #if GLYPH_DEBUG
@@ -3145,6 +3149,37 @@
   return Qnil;
 }
 
+static void
+set_machine_and_pid_properties (struct frame *f)
+{
+  /* See the above comment "Note: Encoding strategy".  */
+  XTextProperty text;
+  int bytes, stringp;
+  int do_free_text_value = 0;
+
+  text.value = x_encode_text (Vsystem_name,
+                              Qcompound_text, 0, &bytes, &stringp,
+                              &do_free_text_value);
+  text.encoding = (stringp ? XA_STRING
+                   : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
+  text.format = 8;
+  text.nitems = bytes;
+  XSetWMClientMachine (FRAME_X_DISPLAY (f),
+                       FRAME_OUTER_WINDOW (f),
+                       &text);
+  if (do_free_text_value)
+    xfree (text.value);
+
+  long pid = (long)getpid();
+  XChangeProperty (FRAME_X_DISPLAY (f),
+                   FRAME_OUTER_WINDOW (f),
+                   XInternAtom (FRAME_X_DISPLAY (f),
+                                "_NET_WM_PID",
+                                False),
+                   XA_CARDINAL, 32, PropModeReplace,
+                   (unsigned char *) &pid, 1);
+}
+
 DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
        1, 1, 0,
        doc: /* Make a new X window, which is called a "frame" in Emacs terms.
@@ -3531,19 +3566,24 @@
 	;
     }
 
+  BLOCK_INPUT;
+                       
+  /* Set machine name and pid for the purpose of window managers.  */
+  set_machine_and_pid_properties(f);
+
   /* Set the WM leader property.  GTK does this itself, so this is not
      needed when using GTK.  */
   if (dpyinfo->client_leader_window != 0)
     {
-      BLOCK_INPUT;
       XChangeProperty (FRAME_X_DISPLAY (f),
                        FRAME_OUTER_WINDOW (f),
                        dpyinfo->Xatom_wm_client_leader,
                        XA_WINDOW, 32, PropModeReplace,
                        (unsigned char *) &dpyinfo->client_leader_window, 1);
-      UNBLOCK_INPUT;
     }
 
+  UNBLOCK_INPUT;
+
   /* Initialize `default-minibuffer-frame' in case this is the first
      frame on this terminal.  */
   if (FRAME_HAS_MINIBUF_P (f)