aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/authors.el7
-rw-r--r--doc/emacs/dired.texi8
-rw-r--r--doc/emacs/help.texi7
-rw-r--r--doc/misc/efaq-w32.texi1
-rw-r--r--etc/NEWS3
-rw-r--r--lisp/ChangeLog.172
-rw-r--r--lisp/dired.el7
-rw-r--r--lisp/emacs-lisp/check-declare.el2
-rw-r--r--lisp/progmodes/grep.el48
-rw-r--r--lisp/progmodes/project.el4
-rw-r--r--lisp/tmm.el16
-rw-r--r--lisp/vc/log-view.el2
-rw-r--r--lisp/vc/vc-hooks.el2
-rw-r--r--src/w32fns.c38
-rw-r--r--src/w32term.c2
-rw-r--r--src/xterm.c2
16 files changed, 101 insertions, 50 deletions
diff --git a/admin/authors.el b/admin/authors.el
index ecdd5ca7741..f1aa2fa4428 100644
--- a/admin/authors.el
+++ b/admin/authors.el
@@ -279,7 +279,7 @@ Changes to files matching one of the regexps in this list are not listed.")
279 "ChangeLog.nextstep" "Emacs.clr" "spec.txt" 279 "ChangeLog.nextstep" "Emacs.clr" "spec.txt"
280 "gfdl.1" 280 "gfdl.1"
281 "texi/Makefile.in" 281 "texi/Makefile.in"
282 "lwlib/autodeps.mk" 282 "autodeps.mk"
283 "oldXMenu/autodeps.mk" 283 "oldXMenu/autodeps.mk"
284 "src/autodeps.mk" 284 "src/autodeps.mk"
285 "Imakefile" "icons/sink.ico" "aixcc.lex" 285 "Imakefile" "icons/sink.ico" "aixcc.lex"
@@ -371,7 +371,7 @@ Changes to files matching one of the regexps in this list are not listed.")
371 "lib/qset-acl.c" "lib/qcopy-acl.c" "lib/file-has-acl.c" 371 "lib/qset-acl.c" "lib/qcopy-acl.c" "lib/file-has-acl.c"
372 ;; files from old MS Windows build procedures 372 ;; files from old MS Windows build procedures
373 "makefile.w32-in" 373 "makefile.w32-in"
374 "admin/unidata/makefile.w32-in" 374 "unidata/makefile.w32-in"
375 "lib/makefile.w32-in" 375 "lib/makefile.w32-in"
376 "leim/makefile.w32-in" 376 "leim/makefile.w32-in"
377 "src/makefile.w32-in" 377 "src/makefile.w32-in"
@@ -691,7 +691,8 @@ Changes to files in this list are not listed.")
691 "mh-exec.el" "mh-init.el" "mh-customize.el" 691 "mh-exec.el" "mh-init.el" "mh-customize.el"
692 "net/zone-mode.el" "xesam.el" 692 "net/zone-mode.el" "xesam.el"
693 "term/mac-win.el" "sup-mouse.el" 693 "term/mac-win.el" "sup-mouse.el"
694 "term/vt102.el" "term/vt201.el" "term/vt220.el" "term/vt300.el" 694 "term/apollo.el"
695 "term/vt102.el" "term/vt125.el" "term/vt201.el" "term/vt220.el" "term/vt300.el"
695 "term/vt320.el" "term/vt400.el" "term/vt420.el" 696 "term/vt320.el" "term/vt400.el" "term/vt420.el"
696 "url-https.el" 697 "url-https.el"
697 "org-mac-message.el" "org-mew.el" "org-w3m.el" "org-vm.el" "org-wl.el" 698 "org-mac-message.el" "org-mew.el" "org-w3m.el" "org-vm.el" "org-wl.el"
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 60542df1097..d2de6795c6b 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -550,7 +550,13 @@ Mark (with @samp{*}) all files whose @emph{contents} contain a match for
550the regular expression @var{regexp} 550the regular expression @var{regexp}
551(@code{dired-mark-files-containing-regexp}). This command is like 551(@code{dired-mark-files-containing-regexp}). This command is like
552@kbd{% m}, except that it searches the file contents instead of the file 552@kbd{% m}, except that it searches the file contents instead of the file
553name. 553name. Note that if a file is visited in an Emacs buffer, this command
554will look in the buffer without revisiting the file, so the results
555might be inconsistent with the file on disk if its contents has changed
556since it was last visited. If you don't want this, you may wish
557reverting the files you have visited in your buffers, or turning on
558the @code{auto-revert} mode in those buffers, before invoking this
559command. @xref{Reverting}.
554 560
555@item C-/ 561@item C-/
556@itemx C-x u 562@itemx C-x u
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index ed813ff0bf6..172d058f857 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -410,6 +410,8 @@ Follow a hyperlink that you click on.
410@item C-c C-c 410@item C-c C-c
411Show all documentation about the symbol at point 411Show all documentation about the symbol at point
412(@code{help-follow-symbol}). 412(@code{help-follow-symbol}).
413@item C-c C-f
414Go forward to the next help topic (@code{help-go-forward}).
413@item C-c C-b 415@item C-c C-b
414Go back to the previous help topic (@code{help-go-back}). 416Go back to the previous help topic (@code{help-go-back}).
415@end table 417@end table
@@ -417,15 +419,18 @@ Go back to the previous help topic (@code{help-go-back}).
417@cindex hyperlink 419@cindex hyperlink
418@findex help-follow 420@findex help-follow
419@findex help-go-back 421@findex help-go-back
422@findex help-go-forward
420@kindex RET @r{(Help mode)} 423@kindex RET @r{(Help mode)}
421@kindex C-c C-b @r{(Help mode)} 424@kindex C-c C-b @r{(Help mode)}
425@kindex C-c C-f @r{(Help mode)}
422 When a function name, variable name, or face name (@pxref{Faces}) 426 When a function name, variable name, or face name (@pxref{Faces})
423appears in the documentation in the help buffer, it is normally an 427appears in the documentation in the help buffer, it is normally an
424underlined @dfn{hyperlink}. To view the associated documentation, 428underlined @dfn{hyperlink}. To view the associated documentation,
425move point there and type @key{RET} (@code{help-follow}), or click on 429move point there and type @key{RET} (@code{help-follow}), or click on
426the hyperlink with @kbd{Mouse-1} or @kbd{Mouse-2}. Doing so replaces 430the hyperlink with @kbd{Mouse-1} or @kbd{Mouse-2}. Doing so replaces
427the contents of the help buffer; to retrace your steps, type @kbd{C-c 431the contents of the help buffer; to retrace your steps, type @kbd{C-c
428C-b} (@code{help-go-back}). 432C-b} (@code{help-go-back}). While retracing your steps, you can go
433forward by using @kbd{C-c C-b} (@code{help-go-forward}).
429 434
430@cindex URL, viewing in help 435@cindex URL, viewing in help
431@cindex help, viewing web pages 436@cindex help, viewing web pages
diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi
index fe65da6d612..28c09f69744 100644
--- a/doc/misc/efaq-w32.texi
+++ b/doc/misc/efaq-w32.texi
@@ -2061,7 +2061,6 @@ Jonathan Arnold has written an
2061@cindex mercurial, version control integration with Emacs 2061@cindex mercurial, version control integration with Emacs
2062@cindex hg, version control integration with Emacs 2062@cindex hg, version control integration with Emacs
2063@cindex monotone, version control integration with Emacs 2063@cindex monotone, version control integration with Emacs
2064@cindex mcvs, version control integration with Emacs
2065 2064
2066If you are using a graphical revision control tool already, check if 2065If you are using a graphical revision control tool already, check if
2067it comes with command-line tools. Many such GUI tools are just 2066it comes with command-line tools. Many such GUI tools are just
diff --git a/etc/NEWS b/etc/NEWS
index 6c7c9de4d5e..a03f74dec6f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1418,6 +1418,9 @@ customization group.
1418"Copyright-paperwork-exempt: yes". Set 'log-edit-rewrite-tiny-change' 1418"Copyright-paperwork-exempt: yes". Set 'log-edit-rewrite-tiny-change'
1419nil to disable this. 1419nil to disable this.
1420 1420
1421+++
1422*** vc-mcvs.el has been removed.
1423
1421--- 1424---
1422** VHDL mode now supports VHDL'08. 1425** VHDL mode now supports VHDL'08.
1423 1426
diff --git a/lisp/ChangeLog.17 b/lisp/ChangeLog.17
index ee03661ece0..29081d3f3cd 100644
--- a/lisp/ChangeLog.17
+++ b/lisp/ChangeLog.17
@@ -6835,7 +6835,7 @@
6835 console as well (bug#18629). 6835 console as well (bug#18629).
6836 * w32-common-fns.el: Remove. 6836 * w32-common-fns.el: Remove.
6837 * loadup.el: Don't load w32-common-fns.el. 6837 * loadup.el: Don't load w32-common-fns.el.
6838 * w32-fns.elc: Don't require w32-common-fns. 6838 * w32-fns.el: Don't require w32-common-fns.
6839 6839
6840 * icomplete.el: Move Iswitchb autoload here. Much simpler. 6840 * icomplete.el: Move Iswitchb autoload here. Much simpler.
6841 * obsolete/iswitchb.el (iswitchb-mode): Use normal autoload cookie. 6841 * obsolete/iswitchb.el (iswitchb-mode): Use normal autoload cookie.
diff --git a/lisp/dired.el b/lisp/dired.el
index 2a65bd09cc5..38979b5244d 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3357,7 +3357,12 @@ object files--just `.o' will mark more than you might think."
3357(defun dired-mark-files-containing-regexp (regexp &optional marker-char) 3357(defun dired-mark-files-containing-regexp (regexp &optional marker-char)
3358 "Mark all files with contents containing REGEXP for use in later commands. 3358 "Mark all files with contents containing REGEXP for use in later commands.
3359A prefix argument means to unmark them instead. 3359A prefix argument means to unmark them instead.
3360`.' and `..' are never marked." 3360`.' and `..' are never marked.
3361
3362Note that if a file is visited in an Emacs buffer, this command will
3363look in the buffer without revisiting the file, so the results might
3364be inconsistent with the file on disk if its contents has changed
3365since it was last visited."
3361 (interactive 3366 (interactive
3362 (list (read-regexp (concat (if current-prefix-arg "Unmark" "Mark") 3367 (list (read-regexp (concat (if current-prefix-arg "Unmark" "Mark")
3363 " files containing (regexp): ") 3368 " files containing (regexp): ")
diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el
index b8a00b3fb4e..b6fa0546088 100644
--- a/lisp/emacs-lisp/check-declare.el
+++ b/lisp/emacs-lisp/check-declare.el
@@ -339,7 +339,7 @@ Returns non-nil if any false statements are found."
339 errlist files) 339 errlist files)
340 (message "%s" m) 340 (message "%s" m)
341 (message "%s" m2) 341 (message "%s" m2)
342 (setq files (process-lines grep-find-program root 342 (setq files (process-lines find-program root
343 "-name" "*.el" 343 "-name" "*.el"
344 "-exec" grep-program 344 "-exec" grep-program
345 "-l" "^[ \t]*(declare-function" "{}" ";")) 345 "-l" "^[ \t]*(declare-function" "{}" ";"))
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index a478c95eb4f..2b44b58f245 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -427,34 +427,21 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
427This gets tacked on the end of the generated expressions.") 427This gets tacked on the end of the generated expressions.")
428 428
429;;;###autoload 429;;;###autoload
430(defcustom grep-program (purecopy "grep") 430(defvar grep-program (purecopy "grep")
431 "The default grep program for `grep-command' and `grep-find-command'. 431 "The default grep program for `grep-command' and `grep-find-command'.
432This variable's value takes effect when `grep-compute-defaults' is called." 432This variable's value takes effect when `grep-compute-defaults' is called.")
433 :type 'string
434 :version "25.1"
435 :group 'grep)
436 433
437;;;###autoload 434;;;###autoload
438(defcustom grep-find-program (purecopy "find") 435(defvar find-program (purecopy "find")
439 "The default find program. 436 "The default find program.
440This is used by commands like `grep-find-command', `find-dired' 437This is used by commands like `grep-find-command', `find-dired'
441and others." 438and others.")
442 :type 'string
443 :version "25.1"
444 :group 'grep)
445
446(define-obsolete-variable-alias 'find-program 'grep-find-program "25.1")
447 439
448;;;###autoload 440;;;###autoload
449(defcustom grep-xargs-program (purecopy "xargs") 441(defvar xargs-program (purecopy "xargs")
450 "The default xargs program for `grep-find-command'. 442 "The default xargs program for `grep-find-command'.
451See `grep-find-use-xargs'. 443See `grep-find-use-xargs'.
452This variable's value takes effect when `grep-compute-defaults' is called." 444This variable's value takes effect when `grep-compute-defaults' is called.")
453 :type 'string
454 :version "25.1"
455 :group 'grep)
456
457(define-obsolete-variable-alias 'xargs-program 'grep-xargs-program "25.1")
458 445
459;;;###autoload 446;;;###autoload
460(defvar grep-find-use-xargs nil 447(defvar grep-find-use-xargs nil
@@ -624,14 +611,13 @@ This function is called from `compilation-filter-hook'."
624 (unless grep-find-use-xargs 611 (unless grep-find-use-xargs
625 (setq grep-find-use-xargs 612 (setq grep-find-use-xargs
626 (cond 613 (cond
627 ((grep-probe grep-find-program 614 ((grep-probe find-program
628 `(nil nil nil ,null-device "-exec" "echo" 615 `(nil nil nil ,null-device "-exec" "echo"
629 "{}" "+")) 616 "{}" "+"))
630 'exec-plus) 617 'exec-plus)
631 ((and 618 ((and
632 (grep-probe grep-find-program 619 (grep-probe find-program `(nil nil nil ,null-device "-print0"))
633 `(nil nil nil ,null-device "-print0")) 620 (grep-probe xargs-program `(nil nil nil "-0" "echo")))
634 (grep-probe grep-xargs-program `(nil nil nil "-0" "echo")))
635 'gnu) 621 'gnu)
636 (t 622 (t
637 'exec)))) 623 'exec))))
@@ -642,11 +628,10 @@ This function is called from `compilation-filter-hook'."
642 ;; after the pipe symbol be quoted if they use 628 ;; after the pipe symbol be quoted if they use
643 ;; forward slashes as directory separators. 629 ;; forward slashes as directory separators.
644 (format "%s . -type f -print0 | \"%s\" -0 %s" 630 (format "%s . -type f -print0 | \"%s\" -0 %s"
645 grep-find-program grep-xargs-program 631 find-program xargs-program grep-command))
646 grep-command))
647 ((memq grep-find-use-xargs '(exec exec-plus)) 632 ((memq grep-find-use-xargs '(exec exec-plus))
648 (let ((cmd0 (format "%s . -type f -exec %s" 633 (let ((cmd0 (format "%s . -type f -exec %s"
649 grep-find-program grep-command)) 634 find-program grep-command))
650 (null (if grep-use-null-device 635 (null (if grep-use-null-device
651 (format "%s " null-device) 636 (format "%s " null-device)
652 ""))) 637 "")))
@@ -658,8 +643,7 @@ This function is called from `compilation-filter-hook'."
658 (1+ (length cmd0))))) 643 (1+ (length cmd0)))))
659 (t 644 (t
660 (format "%s . -type f -print | \"%s\" %s" 645 (format "%s . -type f -print | \"%s\" %s"
661 grep-find-program grep-xargs-program 646 find-program xargs-program grep-command)))))
662 grep-command)))))
663 (unless grep-find-template 647 (unless grep-find-template
664 (setq grep-find-template 648 (setq grep-find-template
665 (let ((gcmd (format "%s <C> %s <R>" 649 (let ((gcmd (format "%s <C> %s <R>"
@@ -669,17 +653,17 @@ This function is called from `compilation-filter-hook'."
669 ""))) 653 "")))
670 (cond ((eq grep-find-use-xargs 'gnu) 654 (cond ((eq grep-find-use-xargs 'gnu)
671 (format "%s <D> <X> -type f <F> -print0 | \"%s\" -0 %s" 655 (format "%s <D> <X> -type f <F> -print0 | \"%s\" -0 %s"
672 grep-find-program grep-xargs-program gcmd)) 656 find-program xargs-program gcmd))
673 ((eq grep-find-use-xargs 'exec) 657 ((eq grep-find-use-xargs 'exec)
674 (format "%s <D> <X> -type f <F> -exec %s {} %s%s" 658 (format "%s <D> <X> -type f <F> -exec %s {} %s%s"
675 grep-find-program gcmd null 659 find-program gcmd null
676 (shell-quote-argument ";"))) 660 (shell-quote-argument ";")))
677 ((eq grep-find-use-xargs 'exec-plus) 661 ((eq grep-find-use-xargs 'exec-plus)
678 (format "%s <D> <X> -type f <F> -exec %s %s{} +" 662 (format "%s <D> <X> -type f <F> -exec %s %s{} +"
679 grep-find-program gcmd null)) 663 find-program gcmd null))
680 (t 664 (t
681 (format "%s <D> <X> -type f <F> -print | \"%s\" %s" 665 (format "%s <D> <X> -type f <F> -print | \"%s\" %s"
682 grep-find-program grep-xargs-program gcmd)))))))) 666 find-program xargs-program gcmd))))))))
683 667
684 ;; Save defaults for this host. 668 ;; Save defaults for this host.
685 (setq grep-host-defaults-alist 669 (setq grep-host-defaults-alist
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 82059c91363..9c8a88c80fc 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -162,7 +162,7 @@ end it with `/'. DIR must be one of `project-roots' or
162DIRS is a list of absolute directories; it should be some 162DIRS is a list of absolute directories; it should be some
163subset of the project roots and external roots. 163subset of the project roots and external roots.
164 164
165The default implementation uses `grep-find-program'. PROJECT is used 165The default implementation uses `find-program'. PROJECT is used
166to find the list of ignores for each directory." 166to find the list of ignores for each directory."
167 ;; FIXME: Uniquely abbreviate the roots? 167 ;; FIXME: Uniquely abbreviate the roots?
168 (require 'xref) 168 (require 'xref)
@@ -171,7 +171,7 @@ to find the list of ignores for each directory."
171 (lambda (dir) 171 (lambda (dir)
172 (let ((command 172 (let ((command
173 (format "%s %s %s -type f -print0" 173 (format "%s %s %s -type f -print0"
174 grep-find-program 174 find-program
175 dir 175 dir
176 (xref--find-ignores-arguments 176 (xref--find-ignores-arguments
177 (project-ignores project dir) 177 (project-ignores project dir)
diff --git a/lisp/tmm.el b/lisp/tmm.el
index 714de9230e7..d1a08ab2623 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -72,13 +72,15 @@ to invoke `tmm-menubar' instead, customize the variable
72 (tmm-get-keybind [menu-bar])) 72 (tmm-get-keybind [menu-bar]))
73 (setq menu-bar `(keymap ,@(nreverse menu-bar) ,@(nreverse menu-end))) 73 (setq menu-bar `(keymap ,@(nreverse menu-bar) ,@(nreverse menu-end)))
74 (if x-position 74 (if x-position
75 (let ((column 0)) 75 (let ((column 0)
76 prev-key)
76 (catch 'done 77 (catch 'done
77 (map-keymap 78 (map-keymap
78 (lambda (key binding) 79 (lambda (key binding)
79 (when (> column x-position) 80 (when (> column x-position)
80 (setq menu-bar-item key) 81 (setq menu-bar-item prev-key)
81 (throw 'done nil)) 82 (throw 'done nil))
83 (setq prev-key key)
82 (pcase binding 84 (pcase binding
83 ((or `(,(and (pred stringp) name) . ,_) ;Simple menu item. 85 ((or `(,(and (pred stringp) name) . ,_) ;Simple menu item.
84 `(menu-item ,name ,_cmd ;Extended menu item. 86 `(menu-item ,name ,_cmd ;Extended menu item.
@@ -187,7 +189,6 @@ Its value should be an event that has a binding in MENU."
187 ((vectorp elt) 189 ((vectorp elt)
188 (dotimes (i (length elt)) 190 (dotimes (i (length elt))
189 (tmm-get-keymap (cons i (aref elt i)) not-menu)))))) 191 (tmm-get-keymap (cons i (aref elt i)) not-menu))))))
190 (setq tmm-km-list (nreverse tmm-km-list))
191 ;; Choose an element of tmm-km-list; put it in choice. 192 ;; Choose an element of tmm-km-list; put it in choice.
192 (if (and not-menu (= 1 (length tmm-km-list))) 193 (if (and not-menu (= 1 (length tmm-km-list)))
193 ;; If this is the top-level of an x-popup-menu menu, 194 ;; If this is the top-level of an x-popup-menu menu,
@@ -239,10 +240,17 @@ Its value should be an event that has a binding in MENU."
239 (if default-item 240 (if default-item
240 (car (nth index-of-default tmm-km-list)) 241 (car (nth index-of-default tmm-km-list))
241 (minibuffer-with-setup-hook #'tmm-add-prompt 242 (minibuffer-with-setup-hook #'tmm-add-prompt
243 ;; tmm-km-list is reversed, because history
244 ;; needs it in LIFO order. But completion
245 ;; needs it in non-reverse order, so that the
246 ;; menu items are displayed as completion
247 ;; candidates in the order they are shown on
248 ;; the menu bar. So pass completing-read the
249 ;; reversed copy of the list.
242 (completing-read 250 (completing-read
243 (concat gl-str 251 (concat gl-str
244 " (up/down to change, PgUp to menu): ") 252 " (up/down to change, PgUp to menu): ")
245 (tmm--completion-table tmm-km-list) nil t nil 253 (tmm--completion-table (reverse tmm-km-list)) nil t nil
246 (cons 'tmm--history 254 (cons 'tmm--history
247 (- (* 2 history-len) index-of-default)))))))) 255 (- (* 2 history-len) index-of-default))))))))
248 (setq choice (cdr (assoc out tmm-km-list))) 256 (setq choice (cdr (assoc out tmm-km-list)))
diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el
index 34ffb3c93b5..63d50033eec 100644
--- a/lisp/vc/log-view.el
+++ b/lisp/vc/log-view.el
@@ -542,7 +542,7 @@ If called interactively, visit the version at point."
542 (setq en (point)) 542 (setq en (point))
543 (or (log-view-current-entry nil t) 543 (or (log-view-current-entry nil t)
544 (throw 'beginning-of-buffer nil)) 544 (throw 'beginning-of-buffer nil))
545 (cond ((memq backend '(SCCS RCS CVS MCVS SVN)) 545 (cond ((memq backend '(SCCS RCS CVS SVN))
546 (forward-line 2)) 546 (forward-line 2))
547 ((eq backend 'Hg) 547 ((eq backend 'Hg)
548 (forward-line 4) 548 (forward-line 4)
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 0535565db28..4047bca046a 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -122,7 +122,7 @@ An empty list disables VC altogether."
122 :group 'vc) 122 :group 'vc)
123 123
124;; Note: we don't actually have a darcs back end yet. 124;; Note: we don't actually have a darcs back end yet.
125;; Also, Meta-CVS (corresponding to MCVS) and Arch are unsupported. 125;; Also, Arch is unsupported, and the Meta-CVS back end has been removed.
126;; The Arch back end will be retrieved and fixed if it is ever required. 126;; The Arch back end will be retrieved and fixed if it is ever required.
127(defcustom vc-directory-exclusion-list (purecopy '("SCCS" "RCS" "CVS" "MCVS" 127(defcustom vc-directory-exclusion-list (purecopy '("SCCS" "RCS" "CVS" "MCVS"
128 ".src" ".svn" ".git" ".hg" ".bzr" 128 ".src" ".svn" ".git" ".hg" ".bzr"
diff --git a/src/w32fns.c b/src/w32fns.c
index 111f1fb6562..ede8f6be292 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -3540,9 +3540,45 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
3540 SHORT r = VkKeyScanW (*b), bitmap = 0x1FF; 3540 SHORT r = VkKeyScanW (*b), bitmap = 0x1FF;
3541 3541
3542 FPRINTF_WM_CHARS((stderr, "VkKeyScanW %#06x %#04x\n", (int)r, 3542 FPRINTF_WM_CHARS((stderr, "VkKeyScanW %#06x %#04x\n", (int)r,
3543 wParam)); 3543 wParam));
3544 if ((r & 0xFF) == wParam) 3544 if ((r & 0xFF) == wParam)
3545 bitmap = r>>8; /* *b is reachable via simple interface */ 3545 bitmap = r>>8; /* *b is reachable via simple interface */
3546 else
3547 {
3548 /* VkKeyScanW() (essentially) returns the FIRST key with
3549 the specified character; so here the pressed key is the
3550 SECONDARY key producing the character.
3551
3552 Essentially, we have no information about the "role" of
3553 modifiers on this key: which contribute into the
3554 produced character (so "are consumed"), and which are
3555 "extra" (must attache to bindable events).
3556
3557 The default above would consume ALL modifiers, so the
3558 character is reported "as is". However, on many layouts
3559 the ordering of the keys (in the layout table) is not
3560 thought out well, so the "secondary" keys are often those
3561 which the users would prefer to use with Alt-CHAR.
3562 (Moreover - with e.g. Czech-QWERTY - the ASCII
3563 punctuation is accessible from two equally [nu]preferable
3564 AltGr-keys.)
3565
3566 SO: Heuristic: if the reported char is ASCII, AND Meta
3567 modifier is a candidate, behave as if Meta is present
3568 (fallback to the legacy branch; bug#23251).
3569
3570 (This would break layouts
3571 - delivering ASCII characters
3572 - on SECONDARY keys
3573 - with not Shift/AltGr-like modifier combinations.
3574 All 3 conditions together must be pretty exotic
3575 cases - and a workaround exists: use "primary" keys!) */
3576 if (*b < 0x80
3577 && (wmsg.dwModifiers
3578 & (alt_modifier | meta_modifier
3579 | super_modifier | hyper_modifier)))
3580 return 0;
3581 }
3546 if (*type_CtrlAlt == 'a') /* Simple Alt seen */ 3582 if (*type_CtrlAlt == 'a') /* Simple Alt seen */
3547 { 3583 {
3548 if ((bitmap & ~1) == 0) /* 1: KBDSHIFT */ 3584 if ((bitmap & ~1) == 0) /* 1: KBDSHIFT */
diff --git a/src/w32term.c b/src/w32term.c
index 8955ce26b4b..74ea6b543bd 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -6245,6 +6245,8 @@ x_set_window_size (struct frame *f, bool change_gravity,
6245 } 6245 }
6246 6246
6247 unblock_input (); 6247 unblock_input ();
6248
6249 do_pending_window_change (false);
6248} 6250}
6249 6251
6250/* Mouse warping. */ 6252/* Mouse warping. */
diff --git a/src/xterm.c b/src/xterm.c
index 7108207f257..28856cfe192 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10742,6 +10742,8 @@ x_set_window_size (struct frame *f, bool change_gravity,
10742 cancel_mouse_face (f); 10742 cancel_mouse_face (f);
10743 10743
10744 unblock_input (); 10744 unblock_input ();
10745
10746 do_pending_window_change (false);
10745} 10747}
10746 10748
10747/* Move the mouse to position pixel PIX_X, PIX_Y relative to frame F. */ 10749/* Move the mouse to position pixel PIX_X, PIX_Y relative to frame F. */