Now on revision 114259. ------------------------------------------------------------ revno: 114259 committer: Glenn Morris branch nick: trunk timestamp: Thu 2013-09-12 23:56:35 -0700 message: * lisp/progmodes/gdb-mi.el (gud-cont, gud-step): Declare. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-13 06:03:06 +0000 +++ lisp/ChangeLog 2013-09-13 06:56:35 +0000 @@ -1,3 +1,7 @@ +2013-09-13 Glenn Morris + + * progmodes/gdb-mi.el (gud-cont, gud-step): Declare. + 2013-09-13 Michael Albinus * net/tramp.el (tramp-check-proper-method-and-host): Rename it from === modified file 'lisp/progmodes/gdb-mi.el' --- lisp/progmodes/gdb-mi.el 2013-08-05 14:26:57 +0000 +++ lisp/progmodes/gdb-mi.el 2013-09-13 06:56:35 +0000 @@ -3257,11 +3257,16 @@ gud-stop-subjob "Interrupt thread at current line.") +;; Defined opaquely in M-x gdb via gud-def. +(declare-function gud-cont "gdb-mi" (arg) t) + (def-gdb-thread-buffer-gud-command gdb-continue-thread gud-cont "Continue thread at current line.") +(declare-function gud-step "gdb-mi" (arg) t) + (def-gdb-thread-buffer-gud-command gdb-step-thread gud-step ------------------------------------------------------------ revno: 114258 fixes bug: http://debbugs.gnu.org/14522 committer: Glenn Morris branch nick: trunk timestamp: Thu 2013-09-12 23:37:39 -0700 message: * cedet/semantic/ia.el (semantic-ia-complete-symbol-menu): Comment it out, since it cannot work. diff: === modified file 'lisp/cedet/ChangeLog' --- lisp/cedet/ChangeLog 2013-09-12 17:23:48 +0000 +++ lisp/cedet/ChangeLog 2013-09-13 06:37:39 +0000 @@ -1,3 +1,8 @@ +2013-09-13 Glenn Morris + + * semantic/ia.el (semantic-ia-complete-symbol-menu): + Comment it out, since it cannot work. (Bug#14522) + 2013-09-12 Glenn Morris * semantic/find.el (semantic-find-first-tag-by-name): === modified file 'lisp/cedet/semantic/ia.el' --- lisp/cedet/semantic/ia.el 2013-01-01 09:11:05 +0000 +++ lisp/cedet/semantic/ia.el 2013-09-13 06:37:39 +0000 @@ -149,44 +149,45 @@ :group 'semantic :type semantic-format-tag-custom-list) -;;;###autoload -(defun semantic-ia-complete-symbol-menu (point) - "Complete the current symbol via a menu based at POINT. -Completion options are calculated with `semantic-analyze-possible-completions'." - (interactive "d") - (require 'imenu) - (let* ((a (semantic-analyze-current-context point)) - (syms (semantic-analyze-possible-completions a)) - ) - ;; Complete this symbol. - (if (not syms) - (progn - (message "No smart completions found. Trying Senator.") - (when (semantic-analyze-context-p a) - ;; This is a quick way of getting a nice completion list - ;; in the menu if the regular context mechanism fails. - (senator-completion-menu-popup))) - - (let* ((menu - (mapcar - (lambda (tag) - (cons - (funcall semantic-ia-completion-menu-format-tag-function tag) - (vector tag))) - syms)) - (ans - (imenu--mouse-menu - ;; XEmacs needs that the menu has at least 2 items. So, - ;; include a nil item that will be ignored by imenu. - (cons nil menu) - (senator-completion-menu-point-as-event) - "Completions"))) - (when ans - (if (not (semantic-tag-p ans)) - (setq ans (aref (cdr ans) 0))) - (delete-region (car (oref a bounds)) (cdr (oref a bounds))) - (semantic-ia-insert-tag ans)) - )))) +;; Disabled - see http://debbugs.gnu.org/14522 +;; ;;;###autoload +;; (defun semantic-ia-complete-symbol-menu (point) +;; "Complete the current symbol via a menu based at POINT. +;; Completion options are calculated with `semantic-analyze-possible-completions'." +;; (interactive "d") +;; (require 'imenu) +;; (let* ((a (semantic-analyze-current-context point)) +;; (syms (semantic-analyze-possible-completions a)) +;; ) +;; ;; Complete this symbol. +;; (if (not syms) +;; (progn +;; (message "No smart completions found. Trying Senator.") +;; (when (semantic-analyze-context-p a) +;; ;; This is a quick way of getting a nice completion list +;; ;; in the menu if the regular context mechanism fails. +;; (senator-completion-menu-popup))) +;; +;; (let* ((menu +;; (mapcar +;; (lambda (tag) +;; (cons +;; (funcall semantic-ia-completion-menu-format-tag-function tag) +;; (vector tag))) +;; syms)) +;; (ans +;; (imenu--mouse-menu +;; ;; XEmacs needs that the menu has at least 2 items. So, +;; ;; include a nil item that will be ignored by imenu. +;; (cons nil menu) +;; (senator-completion-menu-point-as-event) +;; "Completions"))) +;; (when ans +;; (if (not (semantic-tag-p ans)) +;; (setq ans (aref (cdr ans) 0))) +;; (delete-region (car (oref a bounds)) (cdr (oref a bounds))) +;; (semantic-ia-insert-tag ans)) +;; )))) ;;; Completions Tip ;; ------------------------------------------------------------ revno: 114257 committer: Michael Albinus branch nick: trunk timestamp: Fri 2013-09-13 08:03:06 +0200 message: * net/tramp.el (tramp-check-proper-method-and-host): Rename it from `tramp-check-proper-host'. Check for a valid method name. * net/tramp-adb.el (tramp-adb-maybe-open-connection): * net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection): * net/tramp-sh.el (tramp-maybe-open-connection): * net/tramp-smb.el (tramp-smb-maybe-open-connection): Call it. * net/tramp-cache.el (tramp-cache-print): Don't print text properties also for hash values. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-12 20:21:41 +0000 +++ lisp/ChangeLog 2013-09-13 06:03:06 +0000 @@ -1,3 +1,16 @@ +2013-09-13 Michael Albinus + + * net/tramp.el (tramp-check-proper-method-and-host): Rename it from + `tramp-check-proper-host'. Check for a valid method name. + + * net/tramp-adb.el (tramp-adb-maybe-open-connection): + * net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection): + * net/tramp-sh.el (tramp-maybe-open-connection): + * net/tramp-smb.el (tramp-smb-maybe-open-connection): Call it. + + * net/tramp-cache.el (tramp-cache-print): Don't print text properties + also for hash values. + 2013-09-12 Stefan Monnier * term/ns-win.el (parameters): Don't declare as dynamic. === modified file 'lisp/net/tramp-adb.el' --- lisp/net/tramp-adb.el 2013-09-10 07:45:33 +0000 +++ lisp/net/tramp-adb.el 2013-09-13 06:03:06 +0000 @@ -1092,7 +1092,7 @@ "Maybe open a connection VEC. Does not do anything if a connection is already open, but re-opens the connection if a previous connection has died for some reason." - (tramp-check-proper-host vec) + (tramp-check-proper-method-and-host vec) (let* ((buf (tramp-get-connection-buffer vec)) (p (get-buffer-process buf)) === modified file 'lisp/net/tramp-cache.el' --- lisp/net/tramp-cache.el 2013-09-08 15:04:10 +0000 +++ lisp/net/tramp-cache.el 2013-09-13 06:03:06 +0000 @@ -285,16 +285,18 @@ (let (result) (maphash (lambda (key value) - ;; Remove text properties from KEY. - (when (vectorp key) - (dotimes (i (length key)) - (when (stringp (aref key i)) - (aset key i - (funcall - ;; `substring-no-properties' does not exist in XEmacs. - (if (functionp 'substring-no-properties) - 'substring-no-properties 'identity) - (aref key i)))))) + ;; Remove text properties from KEY and VALUE. + ;; `substring-no-properties' does not exist in XEmacs. + (when (functionp 'substring-no-properties) + (when (vectorp key) + (dotimes (i (length key)) + (when (stringp (aref key i)) + (aset key i (funcall 'substring-no-properties (aref key i)))))) + (when (stringp key) + (setq key (funcall 'substring-no-properties key))) + (when (stringp value) + (setq value (funcall 'substring-no-properties value)))) + ;; Dump. (let ((tmp (format "(%s %s)" (if (processp key) === modified file 'lisp/net/tramp-gvfs.el' --- lisp/net/tramp-gvfs.el 2013-09-08 15:04:10 +0000 +++ lisp/net/tramp-gvfs.el 2013-09-13 06:03:06 +0000 @@ -1465,7 +1465,7 @@ "Maybe open a connection VEC. Does not do anything if a connection is already open, but re-opens the connection if a previous connection has died for some reason." - (tramp-check-proper-host vec) + (tramp-check-proper-method-and-host vec) ;; We set the file name, in case there are incoming D-Bus signals or ;; D-Bus errors. === modified file 'lisp/net/tramp-sh.el' --- lisp/net/tramp-sh.el 2013-09-10 07:45:33 +0000 +++ lisp/net/tramp-sh.el 2013-09-13 06:03:06 +0000 @@ -4286,7 +4286,7 @@ "Maybe open a connection VEC. Does not do anything if a connection is already open, but re-opens the connection if a previous connection has died for some reason." - (tramp-check-proper-host vec) + (tramp-check-proper-method-and-host vec) (let ((p (tramp-get-connection-process vec)) (process-name (tramp-get-connection-property vec "process-name" nil)) === modified file 'lisp/net/tramp-smb.el' --- lisp/net/tramp-smb.el 2013-09-10 07:45:33 +0000 +++ lisp/net/tramp-smb.el 2013-09-13 06:03:06 +0000 @@ -1566,7 +1566,7 @@ connection if a previous connection has died for some reason. If ARGUMENT is non-nil, use it as argument for `tramp-smb-winexe-program', and suppress any checks." - (tramp-check-proper-host vec) + (tramp-check-proper-method-and-host vec) (let* ((share (tramp-smb-get-share vec)) (buf (tramp-get-connection-buffer vec)) === modified file 'lisp/net/tramp.el' --- lisp/net/tramp.el 2013-09-10 07:45:33 +0000 +++ lisp/net/tramp.el 2013-09-13 06:03:06 +0000 @@ -1265,15 +1265,19 @@ lhost) tramp-default-host)) -(defun tramp-check-proper-host (vec) - "Check host name of VEC." +(defun tramp-check-proper-method-and-host (vec) + "Check method and host name of VEC." (let ((method (tramp-file-name-method vec)) (user (tramp-file-name-user vec)) - (host (tramp-file-name-host vec))) + (host (tramp-file-name-host vec)) + (methods (mapcar 'car tramp-methods))) + (when (and method (not (member method methods))) + (tramp-cleanup-connection vec) + (tramp-user-error vec "Unknown method \"%s\"" method)) (when (and (equal tramp-syntax 'ftp) host (or (null method) (get-text-property 0 'tramp-default method)) (or (null user) (get-text-property 0 'tramp-default user)) - (member host (mapcar 'car tramp-methods))) + (member host methods)) (tramp-cleanup-connection vec) (tramp-user-error vec "Host name must not match method \"%s\"" host)))) ------------------------------------------------------------ revno: 114256 committer: Dmitry Antipov branch nick: trunk timestamp: Fri 2013-09-13 10:00:20 +0400 message: * xterm.h (x_window_to_frame, x_any_window_to_frame) (x_menubar_window_to_frame): Remove prototypes. * xfns.c (x_window_to_frame, x_any_window_to_frame) (x_menubar_window_to_frame, x_top_window_to_frame): Move from here... * xterm.c (x_window_to_frame, x_any_window_to_frame) (x_menubar_window_to_frame, x_top_window_to_frame): ...to here and convert all but the last to static. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-12 16:05:12 +0000 +++ src/ChangeLog 2013-09-13 06:00:20 +0000 @@ -1,3 +1,14 @@ +2013-09-13 Dmitry Antipov + + * xterm.h (x_window_to_frame, x_any_window_to_frame) + (x_menubar_window_to_frame): Remove prototypes. + * xfns.c (x_window_to_frame, x_any_window_to_frame) + (x_menubar_window_to_frame, x_top_window_to_frame): + Move from here... + * xterm.c (x_window_to_frame, x_any_window_to_frame) + (x_menubar_window_to_frame, x_top_window_to_frame): + ...to here and convert all but the last to static. + 2013-09-12 Eli Zaretskii * lisp.mk (lisp): Add w32-common-fns.elc. === modified file 'src/xfns.c' --- src/xfns.c 2013-09-11 17:31:29 +0000 +++ src/xfns.c 2013-09-13 06:00:20 +0000 @@ -179,187 +179,6 @@ return dpyinfo; } - -/* Return the Emacs frame-object corresponding to an X window. - It could be the frame's main window or an icon window. */ - -/* This function can be called during GC, so use GC_xxx type test macros. */ - -struct frame * -x_window_to_frame (struct x_display_info *dpyinfo, int wdesc) -{ - Lisp_Object tail, frame; - struct frame *f; - - if (wdesc == None) - return NULL; - - FOR_EACH_FRAME (tail, frame) - { - f = XFRAME (frame); - if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) - continue; - if (f->output_data.x->hourglass_window == wdesc) - return f; -#ifdef USE_X_TOOLKIT - if ((f->output_data.x->edit_widget - && XtWindow (f->output_data.x->edit_widget) == wdesc) - /* A tooltip frame? */ - || (!f->output_data.x->edit_widget - && FRAME_X_WINDOW (f) == wdesc) - || f->output_data.x->icon_desc == wdesc) - return f; -#else /* not USE_X_TOOLKIT */ -#ifdef USE_GTK - if (f->output_data.x->edit_widget) - { - GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); - struct x_output *x = f->output_data.x; - if (gwdesc != 0 && gwdesc == x->edit_widget) - return f; - } -#endif /* USE_GTK */ - if (FRAME_X_WINDOW (f) == wdesc - || f->output_data.x->icon_desc == wdesc) - return f; -#endif /* not USE_X_TOOLKIT */ - } - return 0; -} - -#if defined (USE_X_TOOLKIT) || defined (USE_GTK) -/* Like x_window_to_frame but also compares the window with the widget's - windows. */ - -struct frame * -x_any_window_to_frame (struct x_display_info *dpyinfo, int wdesc) -{ - Lisp_Object tail, frame; - struct frame *f, *found = NULL; - struct x_output *x; - - if (wdesc == None) - return NULL; - - FOR_EACH_FRAME (tail, frame) - { - if (found) - break; - f = XFRAME (frame); - if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo) - { - /* This frame matches if the window is any of its widgets. */ - x = f->output_data.x; - if (x->hourglass_window == wdesc) - found = f; - else if (x->widget) - { -#ifdef USE_GTK - GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); - if (gwdesc != 0 - && gtk_widget_get_toplevel (gwdesc) == x->widget) - found = f; -#else - if (wdesc == XtWindow (x->widget) - || wdesc == XtWindow (x->column_widget) - || wdesc == XtWindow (x->edit_widget)) - found = f; - /* Match if the window is this frame's menubar. */ - else if (lw_window_is_in_menubar (wdesc, x->menubar_widget)) - found = f; -#endif - } - else if (FRAME_X_WINDOW (f) == wdesc) - /* A tooltip frame. */ - found = f; - } - } - - return found; -} - -/* Likewise, but consider only the menu bar widget. */ - -struct frame * -x_menubar_window_to_frame (struct x_display_info *dpyinfo, XEvent *event) -{ - Window wdesc = event->xany.window; - Lisp_Object tail, frame; - struct frame *f; - struct x_output *x; - - if (wdesc == None) - return NULL; - - FOR_EACH_FRAME (tail, frame) - { - f = XFRAME (frame); - if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) - continue; - x = f->output_data.x; -#ifdef USE_GTK - if (x->menubar_widget && xg_event_is_for_menubar (f, event)) - return f; -#else - /* Match if the window is this frame's menubar. */ - if (x->menubar_widget - && lw_window_is_in_menubar (wdesc, x->menubar_widget)) - return f; -#endif - } - return 0; -} - -/* Return the frame whose principal (outermost) window is WDESC. - If WDESC is some other (smaller) window, we return 0. */ - -struct frame * -x_top_window_to_frame (struct x_display_info *dpyinfo, int wdesc) -{ - Lisp_Object tail, frame; - struct frame *f; - struct x_output *x; - - if (wdesc == None) - return NULL; - - FOR_EACH_FRAME (tail, frame) - { - f = XFRAME (frame); - if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) - continue; - x = f->output_data.x; - - if (x->widget) - { - /* This frame matches if the window is its topmost widget. */ -#ifdef USE_GTK - GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); - if (gwdesc == x->widget) - return f; -#else - if (wdesc == XtWindow (x->widget)) - return f; -#if 0 /* I don't know why it did this, - but it seems logically wrong, - and it causes trouble for MapNotify events. */ - /* Match if the window is this frame's menubar. */ - if (x->menubar_widget - && wdesc == XtWindow (x->menubar_widget)) - return f; -#endif -#endif - } - else if (FRAME_X_WINDOW (f) == wdesc) - /* Tooltip frame. */ - return f; - } - return 0; -} -#endif /* USE_X_TOOLKIT || USE_GTK */ - - - /* Store the screen positions of frame F into XPTR and YPTR. These are the positions of the containing window manager window, not Emacs's own window. */ === modified file 'src/xterm.c' --- src/xterm.c 2013-09-12 07:29:33 +0000 +++ src/xterm.c 2013-09-13 06:00:20 +0000 @@ -3389,6 +3389,181 @@ } } +/* Return the Emacs frame-object corresponding to an X window. + It could be the frame's main window or an icon window. */ + +static struct frame * +x_window_to_frame (struct x_display_info *dpyinfo, int wdesc) +{ + Lisp_Object tail, frame; + struct frame *f; + + if (wdesc == None) + return NULL; + + FOR_EACH_FRAME (tail, frame) + { + f = XFRAME (frame); + if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) + continue; + if (f->output_data.x->hourglass_window == wdesc) + return f; +#ifdef USE_X_TOOLKIT + if ((f->output_data.x->edit_widget + && XtWindow (f->output_data.x->edit_widget) == wdesc) + /* A tooltip frame? */ + || (!f->output_data.x->edit_widget + && FRAME_X_WINDOW (f) == wdesc) + || f->output_data.x->icon_desc == wdesc) + return f; +#else /* not USE_X_TOOLKIT */ +#ifdef USE_GTK + if (f->output_data.x->edit_widget) + { + GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); + struct x_output *x = f->output_data.x; + if (gwdesc != 0 && gwdesc == x->edit_widget) + return f; + } +#endif /* USE_GTK */ + if (FRAME_X_WINDOW (f) == wdesc + || f->output_data.x->icon_desc == wdesc) + return f; +#endif /* not USE_X_TOOLKIT */ + } + return 0; +} + +#if defined (USE_X_TOOLKIT) || defined (USE_GTK) + +/* Like x_window_to_frame but also compares the window with the widget's + windows. */ + +static struct frame * +x_any_window_to_frame (struct x_display_info *dpyinfo, int wdesc) +{ + Lisp_Object tail, frame; + struct frame *f, *found = NULL; + struct x_output *x; + + if (wdesc == None) + return NULL; + + FOR_EACH_FRAME (tail, frame) + { + if (found) + break; + f = XFRAME (frame); + if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo) + { + /* This frame matches if the window is any of its widgets. */ + x = f->output_data.x; + if (x->hourglass_window == wdesc) + found = f; + else if (x->widget) + { +#ifdef USE_GTK + GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); + if (gwdesc != 0 + && gtk_widget_get_toplevel (gwdesc) == x->widget) + found = f; +#else + if (wdesc == XtWindow (x->widget) + || wdesc == XtWindow (x->column_widget) + || wdesc == XtWindow (x->edit_widget)) + found = f; + /* Match if the window is this frame's menubar. */ + else if (lw_window_is_in_menubar (wdesc, x->menubar_widget)) + found = f; +#endif + } + else if (FRAME_X_WINDOW (f) == wdesc) + /* A tooltip frame. */ + found = f; + } + } + + return found; +} + +/* Likewise, but consider only the menu bar widget. */ + +static struct frame * +x_menubar_window_to_frame (struct x_display_info *dpyinfo, XEvent *event) +{ + Window wdesc = event->xany.window; + Lisp_Object tail, frame; + struct frame *f; + struct x_output *x; + + if (wdesc == None) + return NULL; + + FOR_EACH_FRAME (tail, frame) + { + f = XFRAME (frame); + if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) + continue; + x = f->output_data.x; +#ifdef USE_GTK + if (x->menubar_widget && xg_event_is_for_menubar (f, event)) + return f; +#else + /* Match if the window is this frame's menubar. */ + if (x->menubar_widget + && lw_window_is_in_menubar (wdesc, x->menubar_widget)) + return f; +#endif + } + return 0; +} + +/* Return the frame whose principal (outermost) window is WDESC. + If WDESC is some other (smaller) window, we return 0. */ + +struct frame * +x_top_window_to_frame (struct x_display_info *dpyinfo, int wdesc) +{ + Lisp_Object tail, frame; + struct frame *f; + struct x_output *x; + + if (wdesc == None) + return NULL; + + FOR_EACH_FRAME (tail, frame) + { + f = XFRAME (frame); + if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo) + continue; + x = f->output_data.x; + + if (x->widget) + { + /* This frame matches if the window is its topmost widget. */ +#ifdef USE_GTK + GtkWidget *gwdesc = xg_win_to_widget (dpyinfo->display, wdesc); + if (gwdesc == x->widget) + return f; +#else + if (wdesc == XtWindow (x->widget)) + return f; +#endif + } + else if (FRAME_X_WINDOW (f) == wdesc) + /* Tooltip frame. */ + return f; + } + return 0; +} + +#else /* !USE_X_TOOLKIT && !USE_GTK */ + +#define x_any_window_to_frame(d, i) x_window_to_frame (d, i) +#define x_top_window_to_frame(d, i) x_window_to_frame (d, i) + +#endif /* USE_X_TOOLKIT || USE_GTK */ + /* The focus may have changed. Figure out if it is a real focus change, by checking both FocusIn/Out and Enter/LeaveNotify events. === modified file 'src/xterm.h' --- src/xterm.h 2013-09-12 07:29:33 +0000 +++ src/xterm.h 2013-09-13 06:00:20 +0000 @@ -376,20 +376,6 @@ extern int use_xim; #endif -extern struct frame *x_window_to_frame (struct x_display_info *, int); -extern struct frame *x_any_window_to_frame (struct x_display_info *, int); -extern struct frame *x_menubar_window_to_frame (struct x_display_info *, - XEvent *); -extern struct frame *x_top_window_to_frame (struct x_display_info *, int); - -extern struct frame *x_menubar_window_to_frame (struct x_display_info *, - XEvent *); - -#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) -#define x_any_window_to_frame x_window_to_frame -#define x_top_window_to_frame x_window_to_frame -#endif - /* This is a chain of structures for all the X displays currently in use. */ extern struct x_display_info *x_display_list; @@ -400,7 +386,7 @@ extern Lisp_Object x_display_name_list; extern struct x_display_info *x_display_info_for_display (Display *); - +extern struct frame *x_top_window_to_frame (struct x_display_info *, int); extern struct x_display_info *x_term_init (Lisp_Object, char *, char *); extern bool x_display_ok (const char *); ------------------------------------------------------------ revno: 114255 committer: Glenn Morris branch nick: trunk timestamp: Thu 2013-09-12 20:55:56 -0700 message: * test/automated/eshell.el (with-temp-eshell): Use a temp directory for eshell-directory-name. It seems we don't have permission to write to HOME on hydra. diff: === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-12 20:42:40 +0000 +++ test/ChangeLog 2013-09-13 03:55:56 +0000 @@ -1,3 +1,8 @@ +2013-09-13 Glenn Morris + + * automated/eshell.el (with-temp-eshell): + Use a temp directory for eshell-directory-name. + 2013-09-12 Glenn Morris * automated/eshell.el (with-temp-eshell): Avoid hangs in batch mode === modified file 'test/automated/eshell.el' --- test/automated/eshell.el 2013-09-12 20:39:13 +0000 +++ test/automated/eshell.el 2013-09-13 03:55:56 +0000 @@ -30,12 +30,15 @@ (defmacro with-temp-eshell (&rest body) "Evaluate BODY in a temporary Eshell buffer." - `(let ((eshell-buffer (eshell t))) + `(let* ((eshell-directory-name (make-temp-file "eshell" t)) + (eshell-history-file-name nil) + (eshell-buffer (eshell t))) (unwind-protect (with-current-buffer eshell-buffer ,@body) (let (kill-buffer-query-functions) - (kill-buffer eshell-buffer))))) + (kill-buffer eshell-buffer) + (delete-directory eshell-directory-name t))))) (defun eshell-insert-command (text &optional func) "Insert a command at the end of the buffer." ------------------------------------------------------------ revno: 114254 committer: Glenn Morris branch nick: trunk timestamp: Thu 2013-09-12 16:42:40 -0400 message: ChangeLog typo fix diff: === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-12 20:39:13 +0000 +++ test/ChangeLog 2013-09-12 20:42:40 +0000 @@ -1,7 +1,7 @@ 2013-09-12 Glenn Morris * automated/eshell.el (with-temp-eshell): Avoid hangs in batch mode - due to "has a running proces; kill it?" prompts. + due to "has a running process; kill it?" prompts. 2013-09-12 Stefan Monnier ------------------------------------------------------------ revno: 114253 committer: Glenn Morris branch nick: trunk timestamp: Thu 2013-09-12 16:39:13 -0400 message: * test/automated/eshell.el (with-temp-eshell): Avoid hangs in batch mode due to "has a running proces; kill it?" prompts. diff: === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-12 20:15:53 +0000 +++ test/ChangeLog 2013-09-12 20:39:13 +0000 @@ -1,3 +1,8 @@ +2013-09-12 Glenn Morris + + * automated/eshell.el (with-temp-eshell): Avoid hangs in batch mode + due to "has a running proces; kill it?" prompts. + 2013-09-12 Stefan Monnier * automated/eshell.el: Rename from eshell.el. === modified file 'test/automated/eshell.el' --- test/automated/eshell.el 2013-09-12 20:15:53 +0000 +++ test/automated/eshell.el 2013-09-12 20:39:13 +0000 @@ -34,7 +34,8 @@ (unwind-protect (with-current-buffer eshell-buffer ,@body) - (kill-buffer eshell-buffer)))) + (let (kill-buffer-query-functions) + (kill-buffer eshell-buffer))))) (defun eshell-insert-command (text &optional func) "Insert a command at the end of the buffer." ------------------------------------------------------------ revno: 114252 committer: Stefan Monnier branch nick: trunk timestamp: Thu 2013-09-12 16:38:35 -0400 message: * eshell/em-cmpl.el: Undo accidental part of last commit. diff: === modified file 'lisp/eshell/em-cmpl.el' --- lisp/eshell/em-cmpl.el 2013-09-12 20:15:53 +0000 +++ lisp/eshell/em-cmpl.el 2013-09-12 20:38:35 +0000 @@ -297,16 +297,19 @@ (define-key eshell-mode-map [(meta tab)] 'eshell-complete-lisp-symbol) (define-key eshell-mode-map [(meta control ?i)] 'eshell-complete-lisp-symbol) (define-key eshell-command-map [(meta ?h)] 'eshell-completion-help) + (define-key eshell-command-map [tab] 'pcomplete-expand-and-complete) (define-key eshell-command-map [(control ?i)] 'pcomplete-expand-and-complete) (define-key eshell-command-map [space] 'pcomplete-expand) (define-key eshell-command-map [? ] 'pcomplete-expand) - (define-key eshell-mode-map [(control ?i)] 'pcomplete) + (define-key eshell-mode-map [tab] 'eshell-pcomplete) + (define-key eshell-mode-map [(control ?i)] 'eshell-pcomplete) (add-hook 'completion-at-point-functions #'pcomplete-completions-at-point nil t) ;; jww (1999-10-19): Will this work on anything but X? - (define-key eshell-mode-map (if (featurep 'xemacs) [iso-left-tab] [backtab]) - 'pcomplete-reverse) + (if (featurep 'xemacs) + (define-key eshell-mode-map [iso-left-tab] 'pcomplete-reverse) + (define-key eshell-mode-map [backtab] 'pcomplete-reverse)) (define-key eshell-mode-map [(meta ??)] 'pcomplete-list)) (defun eshell-completion-command-name () @@ -455,7 +458,16 @@ (all-completions filename obarray 'functionp)) completions))))))) -(define-obsolete-function-alias 'eshell-pcomplete 'completion-at-point) +(defun eshell-pcomplete (&optional interactively) + "Eshell wrapper for `pcomplete'." + (interactive "p") + ;; Pretend to be pcomplete so that cycling works (bug#13293). + (setq this-command 'pcomplete) + (condition-case nil + (if interactively + (call-interactively 'pcomplete) + (pcomplete)) + (text-read-only (completion-at-point)))) ; Workaround for bug#12838. (provide 'em-cmpl) ------------------------------------------------------------ revno: 114251 committer: Stefan Monnier branch nick: trunk timestamp: Thu 2013-09-12 16:21:41 -0400 message: * lisp/term/ns-win.el (parameters): Don't declare as dynamic. (before-make-frame-hook): Don't add ineffective function. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-12 20:15:53 +0000 +++ lisp/ChangeLog 2013-09-12 20:21:41 +0000 @@ -1,5 +1,8 @@ 2013-09-12 Stefan Monnier + * term/ns-win.el (parameters): Don't declare as dynamic. + (before-make-frame-hook): Don't add ineffective function. + * eshell/*.el: Use lexical-binding (bug#15231). 2013-09-12 Kenichi Handa === modified file 'lisp/term/ns-win.el' --- lisp/term/ns-win.el 2013-09-12 01:32:45 +0000 +++ lisp/term/ns-win.el 2013-09-12 20:21:41 +0000 @@ -556,29 +556,9 @@ (interactive) (other-frame -1)) -;; If no position specified, make new frame offset by 25 from current. -;; You'd think this was a window manager's job, but apparently without -;; this, new frames open exactly on top of old ones (?). -;; http://lists.gnu.org/archive/html/emacs-devel/2010-10/msg00988.html -;; Note that AFAICS it is not documented that functions on -;; before-make-frame-hook can access PARAMETERS. -(defvar parameters) ; dynamically bound in make-frame -(add-hook 'before-make-frame-hook - (lambda () - (let ((left (cdr (assq 'left (frame-parameters)))) - (top (cdr (assq 'top (frame-parameters))))) - (if (consp left) (setq left (cadr left))) - (if (consp top) (setq top (cadr top))) - (cond - ((or (assq 'top parameters) (assq 'left parameters))) - ((or (not left) (not top))) - (t - (setq parameters (cons (cons 'left (+ left 25)) - (cons (cons 'top (+ top 25)) - parameters)))))))) - -;; frame will be focused anyway, so select it +;; Frame will be focused anyway, so select it ;; (if this is not done, mode line is dimmed until first interaction) +;; FIXME: Sounds like we're working around a bug in the underlying code. (add-hook 'after-make-frame-functions 'select-frame) (defvar tool-bar-mode) ------------------------------------------------------------ revno: 114250 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15231 committer: Stefan Monnier branch nick: trunk timestamp: Thu 2013-09-12 16:15:53 -0400 message: * lisp/eshell/*.el: Use lexical-binding. * test/automated/eshell.el: Move from test/eshell.el. (eshell-test/for-loop, eshell-test/for-name-loop): New tests. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-12 14:48:18 +0000 +++ lisp/ChangeLog 2013-09-12 20:15:53 +0000 @@ -1,7 +1,10 @@ +2013-09-12 Stefan Monnier + + * eshell/*.el: Use lexical-binding (bug#15231). + 2013-09-12 Kenichi Handa - * composite.el (compose-gstring-for-graphic): Handle enclosing - mark. + * composite.el (compose-gstring-for-graphic): Handle enclosing mark. 2013-09-12 Glenn Morris === modified file 'lisp/eshell/em-alias.el' --- lisp/eshell/em-alias.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/em-alias.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-alias.el --- creation and management of command aliases +;;; em-alias.el --- creation and management of command aliases -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-banner.el' --- lisp/eshell/em-banner.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/em-banner.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-banner.el --- sample module that displays a login banner +;;; em-banner.el --- sample module that displays a login banner -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-basic.el' --- lisp/eshell/em-basic.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/em-basic.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-basic.el --- basic shell builtin commands +;;; em-basic.el --- basic shell builtin commands -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-cmpl.el' --- lisp/eshell/em-cmpl.el 2013-06-01 18:00:14 +0000 +++ lisp/eshell/em-cmpl.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-cmpl.el --- completion using the TAB key +;;; em-cmpl.el --- completion using the TAB key -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. @@ -297,19 +297,16 @@ (define-key eshell-mode-map [(meta tab)] 'eshell-complete-lisp-symbol) (define-key eshell-mode-map [(meta control ?i)] 'eshell-complete-lisp-symbol) (define-key eshell-command-map [(meta ?h)] 'eshell-completion-help) - (define-key eshell-command-map [tab] 'pcomplete-expand-and-complete) (define-key eshell-command-map [(control ?i)] 'pcomplete-expand-and-complete) (define-key eshell-command-map [space] 'pcomplete-expand) (define-key eshell-command-map [? ] 'pcomplete-expand) - (define-key eshell-mode-map [tab] 'eshell-pcomplete) - (define-key eshell-mode-map [(control ?i)] 'eshell-pcomplete) + (define-key eshell-mode-map [(control ?i)] 'pcomplete) (add-hook 'completion-at-point-functions #'pcomplete-completions-at-point nil t) ;; jww (1999-10-19): Will this work on anything but X? - (if (featurep 'xemacs) - (define-key eshell-mode-map [iso-left-tab] 'pcomplete-reverse) - (define-key eshell-mode-map [backtab] 'pcomplete-reverse)) + (define-key eshell-mode-map (if (featurep 'xemacs) [iso-left-tab] [backtab]) + 'pcomplete-reverse) (define-key eshell-mode-map [(meta ??)] 'pcomplete-list)) (defun eshell-completion-command-name () @@ -458,16 +455,7 @@ (all-completions filename obarray 'functionp)) completions))))))) -(defun eshell-pcomplete (&optional interactively) - "Eshell wrapper for `pcomplete'." - (interactive "p") - ;; Pretend to be pcomplete so that cycling works (bug#13293). - (setq this-command 'pcomplete) - (condition-case nil - (if interactively - (call-interactively 'pcomplete) - (pcomplete)) - (text-read-only (completion-at-point)))) ; Workaround for bug#12838. +(define-obsolete-function-alias 'eshell-pcomplete 'completion-at-point) (provide 'em-cmpl) === modified file 'lisp/eshell/em-dirs.el' --- lisp/eshell/em-dirs.el 2013-06-09 06:39:40 +0000 +++ lisp/eshell/em-dirs.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-dirs.el --- directory navigation commands +;;; em-dirs.el --- directory navigation commands -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-glob.el' --- lisp/eshell/em-glob.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/em-glob.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-glob.el --- extended file name globbing +;;; em-glob.el --- extended file name globbing -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-hist.el' --- lisp/eshell/em-hist.el 2013-05-07 07:57:02 +0000 +++ lisp/eshell/em-hist.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-hist.el --- history list management +;;; em-hist.el --- history list management -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-ls.el' --- lisp/eshell/em-ls.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/em-ls.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-ls.el --- implementation of ls in Lisp +;;; em-ls.el --- implementation of ls in Lisp -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-pred.el' --- lisp/eshell/em-pred.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/em-pred.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-pred.el --- argument predicates and modifiers (ala zsh) +;;; em-pred.el --- argument predicates and modifiers (ala zsh) -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-prompt.el' --- lisp/eshell/em-prompt.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/em-prompt.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-prompt.el --- command prompts +;;; em-prompt.el --- command prompts -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-rebind.el' --- lisp/eshell/em-rebind.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/em-rebind.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-rebind.el --- rebind keys when point is at current input +;;; em-rebind.el --- rebind keys when point is at current input -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-script.el' --- lisp/eshell/em-script.el 2013-06-09 06:39:40 +0000 +++ lisp/eshell/em-script.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-script.el --- Eshell script files +;;; em-script.el --- Eshell script files -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-smart.el' --- lisp/eshell/em-smart.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/em-smart.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-smart.el --- smart display of output +;;; em-smart.el --- smart display of output -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-term.el' --- lisp/eshell/em-term.el 2013-06-10 02:41:49 +0000 +++ lisp/eshell/em-term.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-term.el --- running visual commands +;;; em-term.el --- running visual commands -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-tramp.el' --- lisp/eshell/em-tramp.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/em-tramp.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-tramp.el --- Eshell features that require TRAMP +;;; em-tramp.el --- Eshell features that require TRAMP -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-unix.el' --- lisp/eshell/em-unix.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/em-unix.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-unix.el --- UNIX command aliases +;;; em-unix.el --- UNIX command aliases -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/em-xtra.el' --- lisp/eshell/em-xtra.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/em-xtra.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; em-xtra.el --- extra alias functions +;;; em-xtra.el --- extra alias functions -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-arg.el' --- lisp/eshell/esh-arg.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/esh-arg.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-arg.el --- argument processing +;;; esh-arg.el --- argument processing -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-cmd.el' --- lisp/eshell/esh-cmd.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/esh-cmd.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-cmd.el --- command invocation +;;; esh-cmd.el --- command invocation -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-ext.el' --- lisp/eshell/esh-ext.el 2013-06-02 09:19:09 +0000 +++ lisp/eshell/esh-ext.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-ext.el --- commands external to Eshell +;;; esh-ext.el --- commands external to Eshell -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-io.el' --- lisp/eshell/esh-io.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/esh-io.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-io.el --- I/O management +;;; esh-io.el --- I/O management -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-mode.el' --- lisp/eshell/esh-mode.el 2013-09-11 16:00:37 +0000 +++ lisp/eshell/esh-mode.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-mode.el --- user interface +;;; esh-mode.el --- user interface -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-module.el' --- lisp/eshell/esh-module.el 2013-01-01 09:11:05 +0000 +++ lisp/eshell/esh-module.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-module.el --- Eshell modules +;;; esh-module.el --- Eshell modules -*- lexical-binding:t -*- ;; Copyright (C) 1999-2000, 2002-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-opt.el' --- lisp/eshell/esh-opt.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/esh-opt.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-opt.el --- command options processing +;;; esh-opt.el --- command options processing -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-proc.el' --- lisp/eshell/esh-proc.el 2013-05-23 04:57:27 +0000 +++ lisp/eshell/esh-proc.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-proc.el --- process management +;;; esh-proc.el --- process management -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-util.el' --- lisp/eshell/esh-util.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/esh-util.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-util.el --- general utilities +;;; esh-util.el --- general utilities -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/esh-var.el' --- lisp/eshell/esh-var.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/esh-var.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; esh-var.el --- handling of variables +;;; esh-var.el --- handling of variables -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'lisp/eshell/eshell.el' --- lisp/eshell/eshell.el 2013-09-12 05:20:07 +0000 +++ lisp/eshell/eshell.el 2013-09-12 20:15:53 +0000 @@ -1,4 +1,4 @@ -;;; eshell.el --- the Emacs command shell +;;; eshell.el --- the Emacs command shell -*- lexical-binding:t -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-01 02:12:32 +0000 +++ test/ChangeLog 2013-09-12 20:15:53 +0000 @@ -1,3 +1,8 @@ +2013-09-12 Stefan Monnier + + * automated/eshell.el: Rename from eshell.el. + (eshell-test/for-loop, eshell-test/for-name-loop): New tests (bug#15231). + 2013-09-01 Glenn Morris * automated/Makefile.in (setwins): Avoid leading space in $wins. @@ -164,25 +169,25 @@ 2013-07-05 Michael Albinus * automated/file-notify-tests.el - (file-notify-test-remote-temporary-file-directory): Use - `null-device' on w32. + (file-notify-test-remote-temporary-file-directory): + Use `null-device' on w32. (file-notify--test-tmpfile, file-notify--test-tmpfile1) (file-notify--test-results, file-notify--test-event) (file-notify--deftest-remote, file-notify--event-test) (file-notify--test-event-handler) - (file-notify--test-make-temp-name): Renamed, in order to mark them + (file-notify--test-make-temp-name): Rename, in order to mark them internal. (tramp-message-show-message, tramp-read-passwd): Tweak them for better fitting in noninteractive tests. - (file-notify-test00-availability): Renamed from `file-notify-test0'. - (file-notify-test01-add-watch): Renamed from `file-notify-test1'. + (file-notify-test00-availability): Rename from `file-notify-test0'. + (file-notify-test01-add-watch): Rename from `file-notify-test1'. Use `temporary-file-directory '. (file-notify-test01-add-watch-remote): New test. - (file-notify-test02-events): Renamed from `file-notify-test2'. - (file-notify-test02-events-remote): Renamed from `file-notify-test3'. - (file-notify-test03-autorevert): Renamed from + (file-notify-test02-events): Rename from `file-notify-test2'. + (file-notify-test02-events-remote): Rename from `file-notify-test3'. + (file-notify-test03-autorevert): Rename from `file-notify-test4'. Use timeouts. - (file-notify-test03-autorevert-remote): Renamed from + (file-notify-test03-autorevert-remote): Rename from `file-notify-test5'. 2013-07-04 Michael Albinus @@ -192,7 +197,7 @@ 2013-06-28 Kenichi Handa * automated/decoder-tests.el (decoder-tests-gen-file): New arg FILE. - (decoder-tests-ao-gen-file): Renamed from decoder-tests-filename. + (decoder-tests-ao-gen-file): Rename from decoder-tests-filename. Callers changed. (decoder-tests-filename): New function. (decoder-tests-prefer-utf-8-read) === renamed file 'test/eshell.el' => 'test/automated/eshell.el' --- test/eshell.el 2013-05-26 07:54:01 +0000 +++ test/automated/eshell.el 2013-09-12 20:15:53 +0000 @@ -62,6 +62,14 @@ "Test `eshell-command-result' with an elisp command." (should (equal (eshell-command-result "(+ 1 2)") 3))) +(ert-deftest eshell-test/for-loop () + "Test `eshell-command-result' with an elisp command." + (should (equal (eshell-command-result "for foo in 5 { echo $foo }") 5))) + +(ert-deftest eshell-test/for-name-loop () ;Bug#15231 + "Test `eshell-command-result' with an elisp command." + (should (equal (eshell-command-result "for name in 3 { echo $name }") 3))) + (ert-deftest eshell-test/lisp-command-args () "Test `eshell-command-result' with elisp and trailing args. Test that trailing arguments outside the S-expression are ------------------------------------------------------------ revno: 114249 committer: Glenn Morris branch nick: trunk timestamp: Thu 2013-09-12 13:23:48 -0400 message: * lisp/cedet/semantic/find.el (semantic-find-first-tag-by-name): Replace obsolete function assoc-ignore-case with assoc-string. diff: === modified file 'lisp/cedet/ChangeLog' --- lisp/cedet/ChangeLog 2013-09-11 03:31:56 +0000 +++ lisp/cedet/ChangeLog 2013-09-12 17:23:48 +0000 @@ -1,3 +1,8 @@ +2013-09-12 Glenn Morris + + * semantic/find.el (semantic-find-first-tag-by-name): + Replace obsolete function assoc-ignore-case with assoc-string. + 2013-09-11 Stefan Monnier * semantic/grammar.el (semantic-grammar-mode): Use define-derived-mode. === modified file 'lisp/cedet/semantic/find.el' --- lisp/cedet/semantic/find.el 2013-03-21 22:11:03 +0000 +++ lisp/cedet/semantic/find.el 2013-09-12 17:23:48 +0000 @@ -265,9 +265,9 @@ "Find the first tag with NAME in TABLE. NAME is a string. TABLE is a semantic tags table. See `semantic-something-to-tag-table'. -This routine uses `assoc' to quickly find the first matching entry." - (funcall (if semantic-case-fold 'assoc-ignore-case 'assoc) - name (semantic-something-to-tag-table table))) +Respects `semantic-case-fold'." + (assoc-string name (semantic-something-to-tag-table table) + semantic-case-fold)) (defmacro semantic-find-tags-by-name (name &optional table) "Find all tags with NAME in TABLE. ------------------------------------------------------------ revno: 114248 committer: Eli Zaretskii branch nick: trunk timestamp: Thu 2013-09-12 19:05:12 +0300 message: lisp.mk (lisp): Add w32-common-fns.elc. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-12 13:12:39 +0000 +++ src/ChangeLog 2013-09-12 16:05:12 +0000 @@ -1,3 +1,7 @@ +2013-09-12 Eli Zaretskii + + * lisp.mk (lisp): Add w32-common-fns.elc. + 2013-09-12 Xue Fuqiao * charset.c (char_charset): Document an exception for char-charset. === modified file 'src/lisp.mk' --- src/lisp.mk 2013-08-05 18:05:46 +0000 +++ src/lisp.mk 2013-09-12 16:05:12 +0000 @@ -152,6 +152,7 @@ $(lispsource)/term/w32-win.elc \ $(lispsource)/ls-lisp.elc \ $(lispsource)/disp-table.elc \ + $(lispsource)/w32-common-fns.elc \ $(lispsource)/dos-w32.elc \ $(lispsource)/w32-fns.elc \ $(lispsource)/dos-fns.elc \ ------------------------------------------------------------ revno: 114247 [merge] committer: K. Handa branch nick: trunk timestamp: Thu 2013-09-12 23:49:14 +0900 message: composite.el (compose-gstring-for-graphic): Handle enclosing mark. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-12 06:58:57 +0000 +++ lisp/ChangeLog 2013-09-12 14:48:18 +0000 @@ -1,3 +1,8 @@ +2013-09-12 Kenichi Handa + + * composite.el (compose-gstring-for-graphic): Handle enclosing + mark. + 2013-09-12 Glenn Morris * vc/vc-svn.el (vc-svn-dir-status-files, vc-svn-dir-extra-headers) === modified file 'lisp/composite.el' --- lisp/composite.el 2013-06-21 12:24:37 +0000 +++ lisp/composite.el 2013-09-12 14:45:28 +0000 @@ -555,7 +555,11 @@ (rbearing (lglyph-rbearing glyph)) (lbearing (lglyph-lbearing glyph)) (center (/ (+ lbearing rbearing) 2)) + ;; Artificial vertical gap between the glyphs. (gap (round (* (font-get (lgstring-font gstring) :size) 0.1)))) + (if (= gap 0) + ;; Assure at least 1 pixel vertical gap. + (setq gap 1)) (dotimes (i nchars) (setq glyph (lgstring-glyph gstring i)) (when (> i 0) @@ -566,8 +570,10 @@ (as (lglyph-ascent glyph)) (de (lglyph-descent glyph)) (ce (/ (+ lb rb) 2)) + (w (lglyph-width glyph)) xoff yoff) - (when (and class (>= class 200) (<= class 240)) + (cond + ((and class (>= class 200) (<= class 240)) (setq xoff 0 yoff 0) (cond ((= class 200) @@ -621,6 +627,38 @@ rb (+ lb xoff) as (- as yoff) de (+ de yoff))) + ((and (= class 0) + (eq (get-char-code-property (lglyph-char glyph) + 'general-category) 'Me)) + ;; Artificially layouting glyphs in an enclosing + ;; mark is difficult. All we can do is to adjust + ;; the x-offset and width of the base glyph to + ;; align it at the center of the glyph of the + ;; enclosing mark hoping that the enclosing mark + ;; is big enough. We also have to adjust the + ;; x-offset and width of the mark ifself properly + ;; depending on how the glyph is designed + + ;; (non-spacing or not). For instance, when we + ;; have these glyphs: + ;; X position | + ;; base: <-*-> lbearing=0 rbearing=5 width=5 + ;; mark: <----------.> lb=-11 rb=2 w=0 + ;; we get a correct layout by moving them as this: + ;; base: <-*-> XOFF=4 WAD=9 + ;; mark: <----------.> xoff=2 wad=4 + ;; we have moved the base to the left by 4-pixel + ;; and make its width 9-pixel, then move the mark + ;; to the left 2-pixel and make its width 4-pixel. + (let* (;; Adjustment for the base glyph + (XOFF (/ (- rb lb width) 2)) + (WAD (+ width XOFF)) + ;; Adjustment for the enclosing mark glyph + (xoff (- (+ lb WAD))) + (wad (- rb lb WAD))) + (lglyph-set-adjustment glyph xoff 0 wad) + (setq glyph (lgstring-glyph gstring 0)) + (lglyph-set-adjustment glyph XOFF 0 WAD)))) (if (< ascent as) (setq ascent as)) (if (< descent de) ------------------------------------------------------------ revno: 114246 committer: Xue Fuqiao branch nick: trunk timestamp: Thu 2013-09-12 22:21:21 +0800 message: Comments. diff: === modified file 'doc/lispref/nonascii.texi' --- doc/lispref/nonascii.texi 2013-09-11 23:05:21 +0000 +++ doc/lispref/nonascii.texi 2013-09-12 14:21:21 +0000 @@ -686,6 +686,7 @@ system (@pxref{Coding Systems}). @end defun +@c TODO: Explain the properties here and add indexes such as ‘charset property’. @defun charset-plist charset This function returns the property list of the character set @var{charset}. Although @var{charset} is a symbol, this is not the @@ -851,6 +852,8 @@ value of this variable, if non-@code{nil}, is applied after them. @end defvar +@c FIXME: This variable is obsolete since 23.1. We should mention +@c that here or simply remove this defvar. --xfq @defvar translation-table-for-input Self-inserting characters are translated through this translation table before they are inserted. Search commands also translate their ------------------------------------------------------------ revno: 114245 committer: Xue Fuqiao branch nick: trunk timestamp: Thu 2013-09-12 21:12:39 +0800 message: * src/charset.c (char_charset): Document an exception for char-charset. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-12 07:29:33 +0000 +++ src/ChangeLog 2013-09-12 13:12:39 +0000 @@ -1,3 +1,7 @@ +2013-09-12 Xue Fuqiao + + * charset.c (char_charset): Document an exception for char-charset. + 2013-09-12 Dmitry Antipov * xterm.h (x_display_info): New field last_user_time... === modified file 'src/charset.c' --- src/charset.c 2013-07-18 02:12:59 +0000 +++ src/charset.c 2013-09-12 13:12:39 +0000 @@ -2053,6 +2053,8 @@ DEFUN ("char-charset", Fchar_charset, Schar_charset, 1, 2, 0, doc: /* Return the charset of highest priority that contains CH. +ASCII characters are an exception: for them, this function always +returns `ascii'. If optional 2nd arg RESTRICTION is non-nil, it is a list of charsets from which to find the charset. It may also be a coding system. In that case, find the charset from what supported by that coding system. */) ------------------------------------------------------------ revno: 114244 committer: Xue Fuqiao branch nick: trunk timestamp: Thu 2013-09-12 20:22:17 +0800 message: * doc/lispref/functions.texi (Obsolete Functions): Add an index for obsolete functions. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-09-11 23:05:21 +0000 +++ doc/lispref/ChangeLog 2013-09-12 12:22:17 +0000 @@ -1,3 +1,7 @@ +2013-09-12 Xue Fuqiao + + * functions.texi (Obsolete Functions): Add an index for obsolete functions. + 2013-09-11 Xue Fuqiao * nonascii.texi (Character Properties): Character properties fix === modified file 'doc/lispref/functions.texi' --- doc/lispref/functions.texi 2013-08-02 13:52:10 +0000 +++ doc/lispref/functions.texi 2013-09-12 12:22:17 +0000 @@ -1135,6 +1135,7 @@ @node Obsolete Functions @section Declaring Functions Obsolete +@cindex obsolete functions You can mark a named function as @dfn{obsolete}, meaning that it may be removed at some point in the future. This causes Emacs to warn ------------------------------------------------------------ revno: 114243 committer: Xue Fuqiao branch nick: trunk timestamp: Thu 2013-09-12 20:04:18 +0800 message: * doc/emacs/text.texi (Enriched Justification): Explain values of default-justification. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-09-04 00:39:34 +0000 +++ doc/emacs/ChangeLog 2013-09-12 12:04:18 +0000 @@ -1,3 +1,7 @@ +2013-09-12 Xue Fuqiao + + * text.texi (Enriched Justification): Explain values of default-justification. + 2013-09-04 Xue Fuqiao * maintaining.texi (VC Ignore): Mention `vc-ignore' with prefix argument. === modified file 'doc/emacs/text.texi' --- doc/emacs/text.texi 2013-08-17 02:45:22 +0000 +++ doc/emacs/text.texi 2013-09-12 12:04:18 +0000 @@ -2086,6 +2086,7 @@ commands, including Auto Fill (@pxref{Auto Fill}), insert only soft newlines and delete only soft newlines, leaving hard newlines alone. +@c FIXME: I don't see ‘unfilled’ in that node. --xfq Thus, when editing with Enriched mode, you should not use @key{RET} or @kbd{C-o} to break lines in the middle of filled paragraphs. Use Auto Fill mode or explicit fill commands (@pxref{Fill Commands}) @@ -2294,13 +2295,13 @@ still indent the left margin. @end table -@c FIXME: We should explain the effect of these symbols. --xfq @vindex default-justification You can also specify justification styles using the Justification submenu in the Text Properties menu. The default justification style is specified by the per-buffer variable @code{default-justification}. Its value should be one of the symbols @code{left}, @code{right}, -@code{full}, @code{center}, or @code{none}. +@code{full}, @code{center}, or @code{none}; their meanings correspond +to the commands above. @node Enriched Properties @subsection Setting Other Text Properties ------------------------------------------------------------ revno: 114242 committer: Dmitry Antipov branch nick: trunk timestamp: Thu 2013-09-12 11:29:33 +0400 message: * xterm.h (x_display_info): New field last_user_time... * xterm.c (toplevel): ...to replace static last_user_time. (handle_one_xevent, x_ewmh_activate_frame): Adjust users. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-12 06:29:13 +0000 +++ src/ChangeLog 2013-09-12 07:29:33 +0000 @@ -1,5 +1,11 @@ 2013-09-12 Dmitry Antipov + * xterm.h (x_display_info): New field last_user_time... + * xterm.c (toplevel): ...to replace static last_user_time. + (handle_one_xevent, x_ewmh_activate_frame): Adjust users. + +2013-09-12 Dmitry Antipov + * xterm.c (x_set_scroll_bar_thumb) [USE_LUCID && !HAVE_XAW3D]: Clip scroll bar values to prevent thumb from disappear and update comment. === modified file 'src/xterm.c' --- src/xterm.c 2013-09-12 06:29:13 +0000 +++ src/xterm.c 2013-09-12 07:29:33 +0000 @@ -230,10 +230,6 @@ static Time last_mouse_movement_time; -/* Time for last user interaction as returned in X events. */ - -static Time last_user_time; - /* Incremented by XTread_socket whenever it really tries to read events. */ @@ -5979,7 +5975,7 @@ break; case SelectionNotify: - last_user_time = event.xselection.time; + dpyinfo->last_user_time = event.xselection.time; #ifdef USE_X_TOOLKIT if (! x_window_to_frame (dpyinfo, event.xselection.requestor)) goto OTHER; @@ -5988,7 +5984,7 @@ break; case SelectionClear: /* Someone has grabbed ownership. */ - last_user_time = event.xselectionclear.time; + dpyinfo->last_user_time = event.xselectionclear.time; #ifdef USE_X_TOOLKIT if (! x_window_to_frame (dpyinfo, event.xselectionclear.window)) goto OTHER; @@ -6004,7 +6000,7 @@ break; case SelectionRequest: /* Someone wants our selection. */ - last_user_time = event.xselectionrequest.time; + dpyinfo->last_user_time = event.xselectionrequest.time; #ifdef USE_X_TOOLKIT if (!x_window_to_frame (dpyinfo, event.xselectionrequest.owner)) goto OTHER; @@ -6023,7 +6019,7 @@ break; case PropertyNotify: - last_user_time = event.xproperty.time; + dpyinfo->last_user_time = event.xproperty.time; f = x_top_window_to_frame (dpyinfo, event.xproperty.window); if (f && event.xproperty.atom == dpyinfo->Xatom_net_wm_state) if (x_handle_net_wm_state (f, &event.xproperty) @@ -6223,7 +6219,7 @@ case KeyPress: - last_user_time = event.xkey.time; + dpyinfo->last_user_time = event.xkey.time; ignore_next_mouse_click_timeout = 0; #if defined (USE_X_TOOLKIT) || defined (USE_GTK) @@ -6554,7 +6550,7 @@ #endif case KeyRelease: - last_user_time = event.xkey.time; + dpyinfo->last_user_time = event.xkey.time; #ifdef HAVE_X_I18N /* Don't dispatch this event since XtDispatchEvent calls XFilterEvent, and two calls in a row may freeze the @@ -6565,7 +6561,7 @@ #endif case EnterNotify: - last_user_time = event.xcrossing.time; + dpyinfo->last_user_time = event.xcrossing.time; x_detect_focus_change (dpyinfo, &event, &inev.ie); f = x_any_window_to_frame (dpyinfo, event.xcrossing.window); @@ -6590,7 +6586,7 @@ goto OTHER; case LeaveNotify: - last_user_time = event.xcrossing.time; + dpyinfo->last_user_time = event.xcrossing.time; x_detect_focus_change (dpyinfo, &event, &inev.ie); f = x_top_window_to_frame (dpyinfo, event.xcrossing.window); @@ -6624,7 +6620,7 @@ case MotionNotify: { - last_user_time = event.xmotion.time; + dpyinfo->last_user_time = event.xmotion.time; previous_help_echo_string = help_echo_string; help_echo_string = Qnil; @@ -6767,9 +6763,9 @@ by the rest of Emacs, we put it here. */ bool tool_bar_p = 0; - memset (&compose_status, 0, sizeof (compose_status)); + memset (&compose_status, 0, sizeof (compose_status)); last_mouse_glyph_frame = 0; - last_user_time = event.xbutton.time; + dpyinfo->last_user_time = event.xbutton.time; if (dpyinfo->grabbed && last_mouse_frame @@ -8859,8 +8855,9 @@ Lisp_Object frame; XSETFRAME (frame, f); x_send_client_event (frame, make_number (0), frame, - dpyinfo->Xatom_net_active_window, - make_number (32), list2i (1, last_user_time)); + dpyinfo->Xatom_net_active_window, + make_number (32), + list2i (1, dpyinfo->last_user_time)); } } === modified file 'src/xterm.h' --- src/xterm.h 2013-09-11 13:35:28 +0000 +++ src/xterm.h 2013-09-12 07:29:33 +0000 @@ -301,6 +301,9 @@ minibuffer. */ struct frame *x_highlight_frame; + /* Time of last user interaction as returned in X events on this display. */ + Time last_user_time; + /* The gray pixmap. */ Pixmap gray; ------------------------------------------------------------ revno: 114241 committer: Glenn Morris branch nick: trunk timestamp: Thu 2013-09-12 00:00:52 -0700 message: Remove superflous comment diff: === modified file 'lisp/play/spook.el' --- lisp/play/spook.el 2013-01-01 09:11:05 +0000 +++ lisp/play/spook.el 2013-09-12 07:00:52 +0000 @@ -69,10 +69,6 @@ "Checking authorization..." "Checking authorization...Approved")) -;; Note: the implementation that used to take up most of this file has been -;; cleaned up, generalized, gratuitously broken by esr, and now resides in -;; cookie1.el. - (provide 'spook) ;;; spook.el ends here ------------------------------------------------------------ revno: 114240 committer: Glenn Morris branch nick: trunk timestamp: Wed 2013-09-11 23:58:57 -0700 message: * vc/vc-dispatcher.el (vc-dir-refresh): Declare. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-12 06:55:15 +0000 +++ lisp/ChangeLog 2013-09-12 06:58:57 +0000 @@ -15,6 +15,8 @@ * progmodes/cperl-mode.el (Info-find-node): * vc/ediff.el (Info-goto-node): Update declarations. + * vc/vc-dispatcher.el (vc-dir-refresh): Declare. + * vc/vc-bzr.el (vc-compilation-mode): Declare. (vc-bzr-pull): Require vc-dispatcher. * vc/vc-git.el (vc-compilation-mode): Declare. === modified file 'lisp/vc/vc-dispatcher.el' --- lisp/vc/vc-dispatcher.el 2013-09-05 03:05:44 +0000 +++ lisp/vc/vc-dispatcher.el 2013-09-12 06:58:57 +0000 @@ -398,6 +398,8 @@ (set (make-local-variable 'compilation-error-regexp-alist) error-regexp-alist))) +(declare-function vc-dir-refresh "vc-dir" ()) + (defun vc-set-async-update (process-buffer) "Set a `vc-exec-after' action appropriate to the current buffer. This action will update the current buffer after the current ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.