aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuanma Barranquero2010-10-12 01:57:49 +0200
committerJuanma Barranquero2010-10-12 01:57:49 +0200
commit4c14013dbec3a2f130a38e61e885f1e8cc6c325b (patch)
treeb74121c8de587c217f0d146752e8893d0874aae7
parentf0b7f5a884806112b6a938b9c31607ea005431d3 (diff)
parenta2e35ef5d52031e0fa184d1863fe7cb7043ef637 (diff)
downloademacs-4c14013dbec3a2f130a38e61e885f1e8cc6c325b.tar.gz
emacs-4c14013dbec3a2f130a38e61e885f1e8cc6c325b.zip
Merge changes from emacs-23 branch.
-rw-r--r--ChangeLog4
-rw-r--r--doc/man/ChangeLog8
-rw-r--r--doc/man/emacs.127
-rw-r--r--etc/NEWS.233
-rw-r--r--lisp/ChangeLog29
-rw-r--r--lisp/cus-start.el8
-rw-r--r--lisp/emacs-lisp/lisp.el86
-rw-r--r--lisp/emacs-lisp/shadow.el11
-rw-r--r--lisp/hi-lock.el25
-rw-r--r--lisp/mail/mail-utils.el2
-rw-r--r--lisp/term/ns-win.el3
-rwxr-xr-xmake-dist2
-rw-r--r--src/ChangeLog11
-rw-r--r--src/nsterm.m32
14 files changed, 165 insertions, 86 deletions
diff --git a/ChangeLog b/ChangeLog
index b859353b083..eb12c7d97c2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12010-10-12 Eli Zaretskii <eliz@gnu.org>
2
3 * make-dist: Don't distribute src/buildobj.h. (Bug#7167)
4
12010-10-10 Dan Nicolaescu <dann@ics.uci.edu> 52010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
2 6
3 * configure.in (PROFILING_LDFLAGS): Do not define, remove all uses. 7 * configure.in (PROFILING_LDFLAGS): Do not define, remove all uses.
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index 16e61208955..f2810be7f97 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -1,3 +1,11 @@
12010-10-12 Glenn Morris <rgm@gnu.org>
2
3 * emacs.1: Small fixes.
4
52010-10-12 Ulrich Mueller <ulm@gentoo.org>
6
7 * emacs.1: Update license description.
8
12010-10-09 Glenn Morris <rgm@gnu.org> 92010-10-09 Glenn Morris <rgm@gnu.org>
2 10
3 * b2m.1: Remove file. 11 * b2m.1: Remove file.
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
index 2ad9e2c543a..ae2bc82c920 100644
--- a/doc/man/emacs.1
+++ b/doc/man/emacs.1
@@ -41,9 +41,9 @@ CTRL-h or F1 enters the Help facility.
41Help Tutorial (CTRL-h t) starts an interactive tutorial to quickly 41Help Tutorial (CTRL-h t) starts an interactive tutorial to quickly
42teach beginners the fundamentals of 42teach beginners the fundamentals of
43.I Emacs. 43.I Emacs.
44Help Apropos (CTRL-h a) helps you find a command given its 44Help Apropos (CTRL-h a) helps you find a command with a name matching
45functionality, Help Key (CTRL-h k) describes a given key sequence, and 45a given pattern, Help Key (CTRL-h k) describes a given key sequence,
46Help Function (CTRL-h f) describes a given Lisp function. 46and Help Function (CTRL-h f) describes a given Lisp function.
47.PP 47.PP
48.IR "GNU Emacs" 's 48.IR "GNU Emacs" 's
49many special packages handle mail reading (RMail) and sending (Mail), 49many special packages handle mail reading (RMail) and sending (Mail),
@@ -531,12 +531,12 @@ is the number of color planes.
531.SH MANUALS 531.SH MANUALS
532You can order printed copies of the GNU Emacs Manual from the Free 532You can order printed copies of the GNU Emacs Manual from the Free
533Software Foundation, which develops GNU software. 533Software Foundation, which develops GNU software.
534See the file ORDERS for ordering information. 534See the online store at <http://shop.fsf.org/>.
535.br 535.br
536Your local Emacs maintainer might also have copies available. 536Your local administrator might also have copies available.
537As with all software and publications from FSF, everyone is permitted 537As with all software and publications from FSF, everyone is permitted
538to make and distribute copies of the Emacs manual. 538to make and distribute copies of the Emacs manual.
539The TeX source to the manual is also included in the Emacs source 539The Texinfo source to the manual is also included in the Emacs source
540distribution. 540distribution.
541. 541.
542. 542.
@@ -545,7 +545,8 @@ distribution.
545The complete text of the Emacs reference manual is included in a 545The complete text of the Emacs reference manual is included in a
546convenient tree structured form. 546convenient tree structured form.
547Also includes the Emacs Lisp Reference Manual, useful to anyone 547Also includes the Emacs Lisp Reference Manual, useful to anyone
548wishing to write programs in the Emacs Lisp extension language. 548wishing to write programs in the Emacs Lisp extension language,
549and the Introduction to Programming in Emacs Lisp.
549 550
550/usr/local/share/emacs/$VERSION/lisp \(em Lisp source files and 551/usr/local/share/emacs/$VERSION/lisp \(em Lisp source files and
551compiled files that define most editing commands. 552compiled files that define most editing commands.
@@ -572,9 +573,8 @@ There is a mailing list, bug-gnu-emacs@gnu.org, for reporting Emacs
572bugs and fixes. 573bugs and fixes.
573But before reporting something as a bug, please try to be sure that 574But before reporting something as a bug, please try to be sure that
574it really is a bug, not a misunderstanding or a deliberate feature. 575it really is a bug, not a misunderstanding or a deliberate feature.
575We ask you to read the section ``Reporting Emacs Bugs'' near the 576We ask you to read the section ``Reporting Bugs'' in the Emacs manual
576end of the reference manual (or Info system) for hints on how and 577for hints on how and when to report bugs.
577when to report bugs.
578Also, include the version number of the Emacs you are running in 578Also, include the version number of the Emacs you are running in
579\fIevery\fR bug report that you send in. 579\fIevery\fR bug report that you send in.
580Bugs tend actually to be fixed if they can be isolated, so it is 580Bugs tend actually to be fixed if they can be isolated, so it is
@@ -596,10 +596,7 @@ file /usr/local/share/emacs/$VERSION/etc/MAILINGLISTS.
596.I Emacs 596.I Emacs
597is free; anyone may redistribute copies of 597is free; anyone may redistribute copies of
598.I Emacs 598.I Emacs
599to 599to anyone under the terms stated in the GNU General Public License,
600anyone under the terms stated in the
601.I Emacs
602General Public License,
603a copy of which accompanies each copy of 600a copy of which accompanies each copy of
604.I Emacs 601.I Emacs
605and which also 602and which also
@@ -611,7 +608,7 @@ may sometimes be received packaged with distributions of Unix systems,
611but it is never included in the scope of any license covering those 608but it is never included in the scope of any license covering those
612systems. 609systems.
613Such inclusion violates the terms on which distribution is permitted. 610Such inclusion violates the terms on which distribution is permitted.
614In fact, the primary purpose of the General Public License is to 611In fact, the primary purpose of the GNU General Public License is to
615prohibit anyone from attaching any other restrictions to 612prohibit anyone from attaching any other restrictions to
616redistribution of 613redistribution of
617.IR Emacs . 614.IR Emacs .
diff --git a/etc/NEWS.23 b/etc/NEWS.23
index bee89d368b5..25236d0f3d2 100644
--- a/etc/NEWS.23
+++ b/etc/NEWS.23
@@ -21,6 +21,9 @@ with a prefix argument or by typing C-u C-h C-n.
21 21
22* Changes in Emacs 23.3 22* Changes in Emacs 23.3
23 23
24** The nextstep port can have different modifiers for the left and right
25alt/option key by customizing the value for ns-right-alternate-modifier.
26
24 27
25* Editing Changes in Emacs 23.3 28* Editing Changes in Emacs 23.3
26 29
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6136b3ab2ea..e639ebb5bf2 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,32 @@
12010-10-12 Jan Djärv <jan.h.d@swipnet.se>
2
3 * term/ns-win.el (ns-right-alternate-modifier): New defvar.
4 (ns-right-option-modifier): New alias for ns-right-alternate-modifier.
5 (mac-right-option-modifier): New alias for ns-right-option-modifier.
6
7 * cus-start.el (all): ns-right-alternate-modifier is new.
8
92010-10-12 Stefan Monnier <monnier@iro.umontreal.ca>
10
11 * emacs-lisp/lisp.el (lisp-completion-at-point):
12 Use emacs-lisp-mode-syntax-table for the whole function.
13
142010-10-12 David Koppelman <koppel@ece.lsu.edu>
15
16 * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified
17 instead of font-lock-mode before adding keywords.
18 Remove hi-lock-mode off code. Remove inhibit hack.
19 (hi-lock-set-pattern): Only add keywords if font-lock-fontified
20 non-nil; removed hook inhibit hack.
21
222010-10-12 Glenn Morris <rgm@gnu.org>
23
24 * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it...
25 (load-path-shadows-find): ... to this.
26 (list-load-path-shadows): Update for above change.
27
28 * mail/mail-utils.el (mail-mbox-from): Also try return-path.
29
12010-10-11 Katsumi Yamaoka <yamaoka@jpl.org> 302010-10-11 Katsumi Yamaoka <yamaoka@jpl.org>
2 31
3 * mail/hashcash.el, net/imap.el, pgg-parse.el, pgg.el: 32 * mail/hashcash.el, net/imap.el, pgg-parse.el, pgg.el:
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 161de5e78ec..a43525f8245 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -272,6 +272,14 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
272 (const control) (const meta) 272 (const control) (const meta)
273 (const alt) (const hyper) 273 (const alt) (const hyper)
274 (const super)) "23.1") 274 (const super)) "23.1")
275 (ns-right-alternate-modifier
276 ns
277 (choice (const :tag "No modifier (work as alternate/option)" none)
278 (const :tag "Use the value of ns-alternate-modifier"
279 left)
280 (const control) (const meta)
281 (const alt) (const hyper)
282 (const super)) "23.3")
275 (ns-function-modifier 283 (ns-function-modifier
276 ns 284 ns
277 (choice (const :tag "No modifier (work as function)" none) 285 (choice (const :tag "No modifier (work as function)" none)
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index cfb56eb3232..d0d1520a677 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -646,49 +646,49 @@ considered."
646(defun lisp-completion-at-point (&optional predicate) 646(defun lisp-completion-at-point (&optional predicate)
647 "Function used for `completion-at-point-functions' in `emacs-lisp-mode'." 647 "Function used for `completion-at-point-functions' in `emacs-lisp-mode'."
648 ;; FIXME: the `end' could be after point? 648 ;; FIXME: the `end' could be after point?
649 (let* ((pos (point)) 649 (with-syntax-table emacs-lisp-mode-syntax-table
650 (beg (with-syntax-table emacs-lisp-mode-syntax-table 650 (let* ((pos (point))
651 (condition-case nil 651 (beg (condition-case nil
652 (save-excursion 652 (save-excursion
653 (backward-sexp 1) 653 (backward-sexp 1)
654 (skip-syntax-forward "'") 654 (skip-syntax-forward "'")
655 (point)) 655 (point))
656 (scan-error pos)))) 656 (scan-error pos)))
657 (predicate 657 (predicate
658 (or predicate 658 (or predicate
659 (save-excursion 659 (save-excursion
660 (goto-char beg) 660 (goto-char beg)
661 (if (not (eq (char-before) ?\()) 661 (if (not (eq (char-before) ?\())
662 (lambda (sym) ;why not just nil ? -sm 662 (lambda (sym) ;why not just nil ? -sm
663 (or (boundp sym) (fboundp sym) 663 (or (boundp sym) (fboundp sym)
664 (symbol-plist sym))) 664 (symbol-plist sym)))
665 ;; Looks like a funcall position. Let's double check. 665 ;; Looks like a funcall position. Let's double check.
666 (if (condition-case nil 666 (if (condition-case nil
667 (progn (up-list -2) (forward-char 1) 667 (progn (up-list -2) (forward-char 1)
668 (eq (char-after) ?\()) 668 (eq (char-after) ?\())
669 (error nil)) 669 (error nil))
670 ;; If the first element of the parent list is an open 670 ;; If the first element of the parent list is an open
671 ;; parenthesis we are probably not in a funcall position. 671 ;; paren we are probably not in a funcall position.
672 ;; Maybe a `let' varlist or something. 672 ;; Maybe a `let' varlist or something.
673 nil 673 nil
674 ;; Else, we assume that a function name is expected. 674 ;; Else, we assume that a function name is expected.
675 'fboundp))))) 675 'fboundp)))))
676 (end 676 (end
677 (unless (or (eq beg (point-max)) 677 (unless (or (eq beg (point-max))
678 (member (char-syntax (char-after beg)) '(?\" ?\( ?\)))) 678 (member (char-syntax (char-after beg)) '(?\" ?\( ?\))))
679 (condition-case nil 679 (condition-case nil
680 (save-excursion 680 (save-excursion
681 (goto-char beg) 681 (goto-char beg)
682 (forward-sexp 1) 682 (forward-sexp 1)
683 (when (>= (point) pos) 683 (when (>= (point) pos)
684 (point))) 684 (point)))
685 (scan-error pos))))) 685 (scan-error pos)))))
686 (when end 686 (when end
687 (list beg end obarray 687 (list beg end obarray
688 :predicate predicate 688 :predicate predicate
689 :annotate-function 689 :annotate-function
690 (unless (eq predicate 'fboundp) 690 (unless (eq predicate 'fboundp)
691 (lambda (str) (if (fboundp (intern-soft str)) " <f>"))))))) 691 (lambda (str) (if (fboundp (intern-soft str)) " <f>"))))))))
692 692
693;; arch-tag: aa7fa8a4-2e6f-4e9b-9cd9-fef06340e67e 693;; arch-tag: aa7fa8a4-2e6f-4e9b-9cd9-fef06340e67e
694;;; lisp.el ends here 694;;; lisp.el ends here
diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el
index 850c1e89682..e690cbaa1bc 100644
--- a/lisp/emacs-lisp/shadow.el
+++ b/lisp/emacs-lisp/shadow.el
@@ -24,7 +24,7 @@
24 24
25;;; Commentary: 25;;; Commentary:
26 26
27;; The functions in this file detect (`find-emacs-lisp-shadows') 27;; The functions in this file detect (`load-path-shadows-find')
28;; and display (`list-load-path-shadows') potential load-path 28;; and display (`list-load-path-shadows') potential load-path
29;; problems that arise when Emacs Lisp files "shadow" each other. 29;; problems that arise when Emacs Lisp files "shadow" each other.
30;; 30;;
@@ -65,7 +65,7 @@ This is slower, but filters out some innocuous shadowing."
65 :type 'boolean 65 :type 'boolean
66 :group 'lisp-shadow) 66 :group 'lisp-shadow)
67 67
68(defun find-emacs-lisp-shadows (&optional path) 68(defun load-path-shadows-find (&optional path)
69 "Return a list of Emacs Lisp files that create shadows. 69 "Return a list of Emacs Lisp files that create shadows.
70This function does the work for `list-load-path-shadows'. 70This function does the work for `list-load-path-shadows'.
71 71
@@ -141,6 +141,9 @@ See the documentation for `list-load-path-shadows' for further information."
141 ;; Return the list of shadowings. 141 ;; Return the list of shadowings.
142 shadows)) 142 shadows))
143 143
144(define-obsolete-function-alias 'find-emacs-lisp-shadows
145 'load-path-shadows-find "23.3")
146
144;; Return true if neither file exists, or if both exist and have identical 147;; Return true if neither file exists, or if both exist and have identical
145;; contents. 148;; contents.
146(defun load-path-shadows-same-file-or-nonexistent (f1 f2) 149(defun load-path-shadows-same-file-or-nonexistent (f1 f2)
@@ -224,7 +227,7 @@ XXX.elc in an early directory \(that does not contain XXX.el\) is
224considered to shadow a later file XXX.el, and vice-versa. 227considered to shadow a later file XXX.el, and vice-versa.
225 228
226Shadowings are located by calling the (non-interactive) companion 229Shadowings are located by calling the (non-interactive) companion
227function, `find-emacs-lisp-shadows'." 230function, `load-path-shadows-find'."
228 (interactive) 231 (interactive)
229 (let* ((path (copy-sequence load-path)) 232 (let* ((path (copy-sequence load-path))
230 (tem path) 233 (tem path)
@@ -248,7 +251,7 @@ function, `find-emacs-lisp-shadows'."
248 (setq tem nil))) 251 (setq tem nil)))
249 (setq tem (cdr tem))))) 252 (setq tem (cdr tem)))))
250 253
251 (let* ((shadows (find-emacs-lisp-shadows path)) 254 (let* ((shadows (load-path-shadows-find path))
252 (n (/ (length shadows) 2)) 255 (n (/ (length shadows) 2))
253 (msg (format "%s Emacs Lisp load-path shadowing%s found" 256 (msg (format "%s Emacs Lisp load-path shadowing%s found"
254 (if (zerop n) "No" (concat "\n" (number-to-string n))) 257 (if (zerop n) "No" (concat "\n" (number-to-string n)))
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index de4e2ff0dfd..0273de14edd 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -564,23 +564,15 @@ not suitable."
564 'face-name-history 564 'face-name-history
565 (cdr hi-lock-face-defaults)))) 565 (cdr hi-lock-face-defaults))))
566 566
567(defvar hi-lock--inhibit-font-lock-hook nil
568 "Inhibit the action of `hi-lock-font-lock-hook'.
569This is used by `hi-lock-set-pattern'.")
570
571(defun hi-lock-set-pattern (regexp face) 567(defun hi-lock-set-pattern (regexp face)
572 "Highlight REGEXP with face FACE." 568 "Highlight REGEXP with face FACE."
573 (let ((pattern (list regexp (list 0 (list 'quote face) t))) 569 (let ((pattern (list regexp (list 0 (list 'quote face) t))))
574 ;; The call to `font-lock-add-keywords' below might disable
575 ;; and re-enable font-lock mode. If so, we don't want
576 ;; `hi-lock-font-lock-hook' to run. This can be removed once
577 ;; Bug#635 is fixed. -- cyd
578 (hi-lock--inhibit-font-lock-hook t))
579 (unless (member pattern hi-lock-interactive-patterns) 570 (unless (member pattern hi-lock-interactive-patterns)
580 (font-lock-add-keywords nil (list pattern) t)
581 (push pattern hi-lock-interactive-patterns) 571 (push pattern hi-lock-interactive-patterns)
582 (if font-lock-fontified 572 (if font-lock-fontified
583 (font-lock-fontify-buffer) 573 (progn
574 (font-lock-add-keywords nil (list pattern) t)
575 (font-lock-fontify-buffer))
584 (let* ((serial (hi-lock-string-serialize regexp)) 576 (let* ((serial (hi-lock-string-serialize regexp))
585 (range-min (- (point) (/ hi-lock-highlight-range 2))) 577 (range-min (- (point) (/ hi-lock-highlight-range 2)))
586 (range-max (+ (point) (/ hi-lock-highlight-range 2))) 578 (range-max (+ (point) (/ hi-lock-highlight-range 2)))
@@ -641,12 +633,9 @@ This is used by `hi-lock-set-pattern'.")
641 633
642(defun hi-lock-font-lock-hook () 634(defun hi-lock-font-lock-hook ()
643 "Add hi-lock patterns to font-lock's." 635 "Add hi-lock patterns to font-lock's."
644 (unless hi-lock--inhibit-font-lock-hook 636 (when font-lock-fontified
645 (if font-lock-mode 637 (font-lock-add-keywords nil hi-lock-file-patterns t)
646 (progn 638 (font-lock-add-keywords nil hi-lock-interactive-patterns t)))
647 (font-lock-add-keywords nil hi-lock-file-patterns t)
648 (font-lock-add-keywords nil hi-lock-interactive-patterns t))
649 (hi-lock-mode -1))))
650 639
651(defvar hi-lock-string-serialize-hash 640(defvar hi-lock-string-serialize-hash
652 (make-hash-table :test 'equal) 641 (make-hash-table :test 'equal)
diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el
index 1c527f22113..a8def04100e 100644
--- a/lisp/mail/mail-utils.el
+++ b/lisp/mail/mail-utils.el
@@ -401,6 +401,7 @@ The buffer should be narrowed to just the header."
401 (let ((from (or (mail-fetch-field "from") 401 (let ((from (or (mail-fetch-field "from")
402 (mail-fetch-field "really-from") 402 (mail-fetch-field "really-from")
403 (mail-fetch-field "sender") 403 (mail-fetch-field "sender")
404 (mail-fetch-field "return-path")
404 "unknown")) 405 "unknown"))
405 (date (mail-fetch-field "date"))) 406 (date (mail-fetch-field "date")))
406 (format "From %s %s\n" (mail-strip-quoted-names from) 407 (format "From %s %s\n" (mail-strip-quoted-names from)
@@ -411,5 +412,4 @@ The buffer should be narrowed to just the header."
411 412
412(provide 'mail-utils) 413(provide 'mail-utils)
413 414
414;; arch-tag: b24aec2f-fd65-4ceb-9e39-3cc2827036fd
415;;; mail-utils.el ends here 415;;; mail-utils.el ends here
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index dd386fe1338..4cc26326659 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -66,6 +66,7 @@
66;; nsterm.m 66;; nsterm.m
67(defvar ns-version-string) 67(defvar ns-version-string)
68(defvar ns-alternate-modifier) 68(defvar ns-alternate-modifier)
69(defvar ns-right-alternate-modifier)
69 70
70;;;; Command line argument handling. 71;;;; Command line argument handling.
71 72
@@ -284,6 +285,7 @@ The properties returned may include `top', `left', `height', and `width'."
284(defvaralias 'mac-command-modifier 'ns-command-modifier) 285(defvaralias 'mac-command-modifier 'ns-command-modifier)
285(defvaralias 'mac-control-modifier 'ns-control-modifier) 286(defvaralias 'mac-control-modifier 'ns-control-modifier)
286(defvaralias 'mac-option-modifier 'ns-option-modifier) 287(defvaralias 'mac-option-modifier 'ns-option-modifier)
288(defvaralias 'mac-right-option-modifier 'ns-right-option-modifier)
287(defvaralias 'mac-function-modifier 'ns-function-modifier) 289(defvaralias 'mac-function-modifier 'ns-function-modifier)
288(declare-function ns-do-applescript "nsfns.m" (script)) 290(declare-function ns-do-applescript "nsfns.m" (script))
289(defalias 'do-applescript 'ns-do-applescript) 291(defalias 'do-applescript 'ns-do-applescript)
@@ -815,6 +817,7 @@ unless the current buffer is a scratch buffer."
815 817
816;; You say tomAYto, I say tomAHto.. 818;; You say tomAYto, I say tomAHto..
817(defvaralias 'ns-option-modifier 'ns-alternate-modifier) 819(defvaralias 'ns-option-modifier 'ns-alternate-modifier)
820(defvaralias 'ns-right-option-modifier 'ns-right-alternate-modifier)
818 821
819(defun ns-do-hide-emacs () 822(defun ns-do-hide-emacs ()
820 (interactive) 823 (interactive)
diff --git a/make-dist b/make-dist
index 76bec92978e..20052db6d0c 100755
--- a/make-dist
+++ b/make-dist
@@ -461,7 +461,7 @@ echo "Making links to \`src'"
461 ln makefile.w32-in ../${tempdir}/src 461 ln makefile.w32-in ../${tempdir}/src
462 ln .gdbinit .dbxinit ../${tempdir}/src 462 ln .gdbinit .dbxinit ../${tempdir}/src
463 cd ../${tempdir}/src 463 cd ../${tempdir}/src
464 rm -f config.h epaths.h Makefile 464 rm -f config.h epaths.h Makefile buildobj.h
465 rm -f =* TAGS) 465 rm -f =* TAGS)
466 466
467echo "Making links to \`src/bitmaps'" 467echo "Making links to \`src/bitmaps'"
diff --git a/src/ChangeLog b/src/ChangeLog
index 1c75c758498..da1ce968b62 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,14 @@
12010-10-12 Jan Djärv <jan.h.d@swipnet.se>
2
3 * nsterm.m (Qleft): Declare.
4 (ns_right_alternate_modifier): New variable
5 (NSRightAlternateKeyMask): New define.
6 (EV_MODIFIERS): Parse NSRightAlternateKeyMask if
7 ns_right_alternate_modifier isn't Qleft.
8 (keyDown): If ns_right_alternate_modifier isn't Qleft, use it
9 as emacs modifier for NSRightAlternateKeyMask.
10 (syms_of_nsterm): DEFVAR_LISP ns-right-alternate-modifier.
11
12010-10-10 Lars Magne Ingebrigtsen <larsi@gnus.org> 122010-10-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 13
3 * gnutls.c (emacs_gnutls_write): If we're trying to write before 14 * gnutls.c (emacs_gnutls_write): If we're trying to write before
diff --git a/src/nsterm.m b/src/nsterm.m
index f0efb948ab9..3c146c5d2a6 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -142,13 +142,18 @@ Lisp_Object ns_input_spi_name, ns_input_spi_arg;
142Lisp_Object Vx_toolkit_scroll_bars; 142Lisp_Object Vx_toolkit_scroll_bars;
143static Lisp_Object Qmodifier_value; 143static Lisp_Object Qmodifier_value;
144Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper, Qnone; 144Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper, Qnone;
145extern Lisp_Object Qcursor_color, Qcursor_type, Qns; 145extern Lisp_Object Qcursor_color, Qcursor_type, Qns, Qleft;
146 146
147/* Specifies which emacs modifier should be generated when NS receives 147/* Specifies which emacs modifier should be generated when NS receives
148 the Alternate modifer. May be Qnone or any of the modifier lisp symbols. */ 148 the Alternate modifer. May be Qnone or any of the modifier lisp symbols. */
149Lisp_Object ns_alternate_modifier; 149Lisp_Object ns_alternate_modifier;
150 150
151/* Specifies which emacs modifier should be generated when NS receives 151/* Specifies which emacs modifier should be generated when NS receives
152 the right Alternate modifer. Has same values as ns_alternate_modifier plus
153 the value Qleft which means whatever value ns_alternate_modifier has. */
154Lisp_Object ns_right_alternate_modifier;
155
156/* Specifies which emacs modifier should be generated when NS receives
152 the Command modifer. May be any of the modifier lisp symbols. */ 157 the Command modifer. May be any of the modifier lisp symbols. */
153Lisp_Object ns_command_modifier; 158Lisp_Object ns_command_modifier;
154 159
@@ -218,12 +223,17 @@ static BOOL inNsSelect = 0;
218 223
219/* Convert modifiers in a NeXTSTEP event to emacs style modifiers. */ 224/* Convert modifiers in a NeXTSTEP event to emacs style modifiers. */
220#define NS_FUNCTION_KEY_MASK 0x800000 225#define NS_FUNCTION_KEY_MASK 0x800000
226#define NSRightAlternateKeyMask (0x000040 | NSAlternateKeyMask)
221#define EV_MODIFIERS(e) \ 227#define EV_MODIFIERS(e) \
222 ((([e modifierFlags] & NSHelpKeyMask) ? \ 228 ((([e modifierFlags] & NSHelpKeyMask) ? \
223 hyper_modifier : 0) \ 229 hyper_modifier : 0) \
224 | (([e modifierFlags] & NSAlternateKeyMask) ? \ 230 | (!EQ (ns_right_alternate_modifier, Qleft) && \
231 (([e modifierFlags] & NSRightAlternateKeyMask) \
232 == NSRightAlternateKeyMask) ? \
233 parse_solitary_modifier (ns_right_alternate_modifier) : 0) \
234 | (([e modifierFlags] & NSAlternateKeyMask) ? \
225 parse_solitary_modifier (ns_alternate_modifier) : 0) \ 235 parse_solitary_modifier (ns_alternate_modifier) : 0) \
226 | (([e modifierFlags] & NSShiftKeyMask) ? \ 236 | (([e modifierFlags] & NSShiftKeyMask) ? \
227 shift_modifier : 0) \ 237 shift_modifier : 0) \
228 | (([e modifierFlags] & NSControlKeyMask) ? \ 238 | (([e modifierFlags] & NSControlKeyMask) ? \
229 parse_solitary_modifier (ns_control_modifier) : 0) \ 239 parse_solitary_modifier (ns_control_modifier) : 0) \
@@ -4440,7 +4450,13 @@ ns_term_shutdown (int sig)
4440 emacs_event->modifiers |= 4450 emacs_event->modifiers |=
4441 parse_solitary_modifier (ns_function_modifier); 4451 parse_solitary_modifier (ns_function_modifier);
4442 4452
4443 if (flags & NSAlternateKeyMask) /* default = meta */ 4453 if (!EQ (ns_right_alternate_modifier, Qleft)
4454 && ((flags & NSRightAlternateKeyMask) == NSRightAlternateKeyMask))
4455 {
4456 emacs_event->modifiers |= parse_solitary_modifier
4457 (ns_right_alternate_modifier);
4458 }
4459 else if (flags & NSAlternateKeyMask) /* default = meta */
4444 { 4460 {
4445 if ((NILP (ns_alternate_modifier) || EQ (ns_alternate_modifier, Qnone)) 4461 if ((NILP (ns_alternate_modifier) || EQ (ns_alternate_modifier, Qnone))
4446 && !fnKeysym) 4462 && !fnKeysym)
@@ -6203,6 +6219,14 @@ Set to none means that the alternate / option key is not interpreted by Emacs\n\
6203at all, allowing it to be used at a lower level for accented character entry."); 6219at all, allowing it to be used at a lower level for accented character entry.");
6204 ns_alternate_modifier = Qmeta; 6220 ns_alternate_modifier = Qmeta;
6205 6221
6222 DEFVAR_LISP ("ns-right-alternate-modifier", &ns_right_alternate_modifier,
6223 "This variable describes the behavior of the right alternate or option key.\n\
6224Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\
6225Set to left means be the same key as `ns-alternate-modifier'.\n\
6226Set to none means that the alternate / option key is not interpreted by Emacs\n\
6227at all, allowing it to be used at a lower level for accented character entry.");
6228 ns_right_alternate_modifier = Qleft;
6229
6206 DEFVAR_LISP ("ns-command-modifier", &ns_command_modifier, 6230 DEFVAR_LISP ("ns-command-modifier", &ns_command_modifier,
6207 "This variable describes the behavior of the command key.\n\ 6231 "This variable describes the behavior of the command key.\n\
6208Set to control, meta, alt, super, or hyper means it is taken to be that key."); 6232Set to control, meta, alt, super, or hyper means it is taken to be that key.");