annotate lisp/term/ns-win.el @ 102538:d1b49e289bbf

m-v corrections.
author Deepak Goel <deego@gnufans.org>
date Fri, 13 Mar 2009 20:33:27 +0000
parents 8a3d30f9b513
children 291f6c889881
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1 ;;; ns-win.el --- lisp side of interface with NeXT/Open/GNUstep/MacOS X window system
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
2
100908
a9dc0e7c3f2b Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 99638
diff changeset
3 ;; Copyright (C) 1993, 1994, 2005, 2006, 2007, 2008, 2009
96805
f38d566bd19b Add 2007 to copyright years, since was available then.
Glenn Morris <rgm@gnu.org>
parents: 96799
diff changeset
4 ;; Free Software Foundation, Inc.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
5
101087
ffd82d2cb8ec Comments (minor fixes of some header conventions).
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
6 ;; Authors: Carl Edman
ffd82d2cb8ec Comments (minor fixes of some header conventions).
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
7 ;; Christian Limpach
ffd82d2cb8ec Comments (minor fixes of some header conventions).
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
8 ;; Scott Bender
ffd82d2cb8ec Comments (minor fixes of some header conventions).
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
9 ;; Christophe de Dinechin
ffd82d2cb8ec Comments (minor fixes of some header conventions).
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
10 ;; Adrian Robert
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
11 ;; Keywords: terminals
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
12
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
13 ;; This file is part of GNU Emacs.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
14
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
15 ;; GNU Emacs is free software: you can redistribute it and/or modify
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
16 ;; it under the terms of the GNU General Public License as published by
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
17 ;; the Free Software Foundation, either version 3 of the License, or
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
18 ;; (at your option) any later version.
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
19
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
20 ;; GNU Emacs is distributed in the hope that it will be useful,
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
21 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
22 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
23 ;; GNU General Public License for more details.
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
24
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
25 ;; You should have received a copy of the GNU General Public License
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
26 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
27
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
28 ;;; Commentary:
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
29
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
30 ;; ns-win.el: this file is loaded from ../lisp/startup.el when it
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
31 ;; recognizes that Nextstep windows are to be used. Command line
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
32 ;; switches are parsed and those pertaining to Nextstep are processed
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
33 ;; and removed from the command line. The Nextstep display is opened
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
34 ;; and hooks are set for popping up the initial window.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
35
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
36 ;; startup.el will then examine startup files, and eventually call the hooks
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
37 ;; which create the first window (s).
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
38
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
39 ;; A number of other Nextstep convenience functions are defined in
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
40 ;; this file, which works in close coordination with src/nsfns.m.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
41
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
42 ;;; Code:
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
43
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
44
96921
72d6895432c7 * term/ns-win.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96912
diff changeset
45 (if (not (featurep 'ns))
98512
7d9a5b179102 Fix case of "GNUstep".
Glenn Morris <rgm@gnu.org>
parents: 97583
diff changeset
46 (error "%s: Loading ns-win.el but not compiled for GNUstep/MacOS"
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
47 (invocation-name)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
48
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
49 (eval-when-compile (require 'cl))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
50
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
51 ;; Documentation-purposes only: actually loaded in loadup.el
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
52 (require 'frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
53 (require 'mouse)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
54 (require 'faces)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
55 (require 'easymenu)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
56 (require 'menu-bar)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
57 (require 'fontset)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
58
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
59 ;; Not needed?
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
60 ;;(require 'ispell)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
61
101783
9f9c03710f3b (ns): Define as a custom group.
Glenn Morris <rgm@gnu.org>
parents: 101741
diff changeset
62 (defgroup ns nil
9f9c03710f3b (ns): Define as a custom group.
Glenn Morris <rgm@gnu.org>
parents: 101741
diff changeset
63 "GNUstep/Mac OS X specific features."
9f9c03710f3b (ns): Define as a custom group.
Glenn Morris <rgm@gnu.org>
parents: 101741
diff changeset
64 :group 'environment)
9f9c03710f3b (ns): Define as a custom group.
Glenn Morris <rgm@gnu.org>
parents: 101741
diff changeset
65
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
66 ;; nsterm.m
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
67 (defvar ns-version-string)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
68 (defvar ns-expand-space)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
69 (defvar ns-alternate-modifier)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
70
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
71 ;;;; Command line argument handling.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
72
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
73 (defvar ns-invocation-args nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
74 (defvar ns-command-line-resources nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
75
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
76 ;; Handler for switches of the form "-switch value" or "-switch".
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
77 (defun ns-handle-switch (switch &optional numeric)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
78 (let ((aelt (assoc switch command-line-ns-option-alist)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
79 (if aelt
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
80 (setq default-frame-alist
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
81 (cons (cons (nth 3 aelt)
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
82 (if numeric
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
83 (string-to-number (pop ns-invocation-args))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
84 (or (nth 4 aelt) (pop ns-invocation-args))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
85 default-frame-alist)))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
86
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
87 ;; Handler for switches of the form "-switch n"
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
88 (defun ns-handle-numeric-switch (switch)
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
89 (ns-handle-switch switch t))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
90
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
91 ;; Make -iconic apply only to the initial frame!
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
92 (defun ns-handle-iconic (switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
93 (setq initial-frame-alist
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
94 (cons '(visibility . icon) initial-frame-alist)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
95
96799
6cfed26789b7 (ns-submit-bug-report): Function removed. Bug
Chong Yidong <cyd@stupidchicken.com>
parents: 96792
diff changeset
96 ;; Handle the -name option, set the name of the initial frame.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
97 (defun ns-handle-name-switch (switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
98 (or (consp ns-invocation-args)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
99 (error "%s: missing argument to `%s' option" (invocation-name) switch))
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
100 (setq initial-frame-alist (cons (cons 'name (pop ns-invocation-args))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
101 initial-frame-alist)))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
102
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
103 ;; Set (but not used?) in frame.el.
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
104 (defvar x-display-name nil
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
105 "The name of the Nextstep display on which Emacs was started.")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
106
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
107 ;; nsterm.m.
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
108 (defvar ns-input-file)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
109
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
110 (defun ns-handle-nxopen (switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
111 (setq unread-command-events (append unread-command-events '(ns-open-file))
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
112 ns-input-file (append ns-input-file (list (pop ns-invocation-args)))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
113
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
114 (defun ns-handle-nxopentemp (switch)
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
115 (setq unread-command-events (append unread-command-events
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
116 '(ns-open-temp-file))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
117 ns-input-file (append ns-input-file (list (pop ns-invocation-args)))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
118
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
119 (defun ns-ignore-1-arg (switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
120 (setq ns-invocation-args (cdr ns-invocation-args)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
121 (defun ns-ignore-2-arg (switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
122 (setq ns-invocation-args (cddr ns-invocation-args)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
123
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
124 (defun ns-handle-args (args)
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
125 "Process Nextstep-related command line options.
96799
6cfed26789b7 (ns-submit-bug-report): Function removed. Bug
Chong Yidong <cyd@stupidchicken.com>
parents: 96792
diff changeset
126 This is run before the user's startup file is loaded.
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
127 The options in ARGS are copied to `ns-invocation-args'.
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
128 The Nextstep-related settings are then applied using the handlers
96799
6cfed26789b7 (ns-submit-bug-report): Function removed. Bug
Chong Yidong <cyd@stupidchicken.com>
parents: 96792
diff changeset
129 defined in `command-line-ns-option-alist'.
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
130 The return value is ARGS minus the number of arguments processed."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
131 ;; We use ARGS to accumulate the args that we don't handle here, to return.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
132 (setq ns-invocation-args args
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
133 args nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
134 (while ns-invocation-args
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
135 (let* ((this-switch (pop ns-invocation-args))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
136 (orig-this-switch this-switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
137 completion argval aelt handler)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
138 ;; Check for long options with attached arguments
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
139 ;; and separate out the attached option argument into argval.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
140 (if (string-match "^--[^=]*=" this-switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
141 (setq argval (substring this-switch (match-end 0))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
142 this-switch (substring this-switch 0 (1- (match-end 0)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
143 ;; Complete names of long options.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
144 (if (string-match "^--" this-switch)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
145 (progn
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
146 (setq completion (try-completion this-switch
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
147 command-line-ns-option-alist))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
148 (if (eq completion t)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
149 ;; Exact match for long option.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
150 nil
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
151 (if (stringp completion)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
152 (let ((elt (assoc completion command-line-ns-option-alist)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
153 ;; Check for abbreviated long option.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
154 (or elt
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
155 (error "Option `%s' is ambiguous" this-switch))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
156 (setq this-switch completion))))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
157 (setq aelt (assoc this-switch command-line-ns-option-alist))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
158 (if aelt (setq handler (nth 2 aelt)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
159 (if handler
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
160 (if argval
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
161 (let ((ns-invocation-args
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
162 (cons argval ns-invocation-args)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
163 (funcall handler this-switch))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
164 (funcall handler this-switch))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
165 (setq args (cons orig-this-switch args)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
166 (nreverse args))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
167
97447
378d7afbbe93 (ns-parse-geometry): Rename from x-parse-geometry.
Chong Yidong <cyd@stupidchicken.com>
parents: 97423
diff changeset
168 (defun ns-parse-geometry (geom)
97423
04e6451326c5 (x-parse-geometry): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 97422
diff changeset
169 "Parse a Nextstep-style geometry string GEOM.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
170 Returns an alist of the form ((top . TOP), (left . LEFT) ... ).
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
171 The properties returned may include `top', `left', `height', and `width'."
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
172 (when (string-match "\\([0-9]+\\)\\( \\([0-9]+\\)\\( \\([0-9]+\\)\
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
173 \\( \\([0-9]+\\) ?\\)?\\)?\\)?"
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
174 geom)
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
175 (apply
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
176 'append
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
177 (list
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
178 (list (cons 'top (string-to-number (match-string 1 geom))))
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
179 (if (match-string 3 geom)
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
180 (list (cons 'left (string-to-number (match-string 3 geom)))))
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
181 (if (match-string 5 geom)
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
182 (list (cons 'height (string-to-number (match-string 5 geom)))))
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
183 (if (match-string 7 geom)
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
184 (list (cons 'width (string-to-number (match-string 7 geom)))))))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
185
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
186 ;;;; Keyboard mapping.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
187
97541
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
188 ;; These tell read-char how to convert these special chars to ASCII.
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
189 ;;TODO: all terms have these, and at least the return mapping is necessary
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
190 ;; for tramp to recognize the enter key.
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
191 ;; Perhaps they should be moved into common code somewhere
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
192 ;; (when a window system is active).
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
193 ;; Remove if no problems for some time after 2008-08-06.
97541
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
194 (put 'backspace 'ascii-character 127)
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
195 (put 'delete 'ascii-character 127)
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
196 (put 'tab 'ascii-character ?\t)
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
197 (put 'S-tab 'ascii-character (logior 16 ?\t))
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
198 (put 'linefeed 'ascii-character ?\n)
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
199 (put 'clear 'ascii-character 12)
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
200 (put 'return 'ascii-character 13)
33164d8e9921 Uncomment 'put backspace ascii-character...' and friends, they are needed for tramp.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97447
diff changeset
201 (put 'escape 'ascii-character ?\e)
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
202
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
203
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
204 (defvar ns-alternatives-map
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
205 (let ((map (make-sparse-keymap)))
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
206 ;; Map certain keypad keys into ASCII characters
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
207 ;; that people usually expect.
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
208 (define-key map [backspace] [?\d])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
209 (define-key map [delete] [?\d])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
210 (define-key map [tab] [?\t])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
211 (define-key map [S-tab] [25])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
212 (define-key map [linefeed] [?\n])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
213 (define-key map [clear] [?\C-l])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
214 (define-key map [return] [?\C-m])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
215 (define-key map [escape] [?\e])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
216 (define-key map [M-backspace] [?\M-\d])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
217 (define-key map [M-delete] [?\M-\d])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
218 (define-key map [M-tab] [?\M-\t])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
219 (define-key map [M-linefeed] [?\M-\n])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
220 (define-key map [M-clear] [?\M-\C-l])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
221 (define-key map [M-return] [?\M-\C-m])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
222 (define-key map [M-escape] [?\M-\e])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
223 map)
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
224 "Keymap of alternative meanings for some keys under NS.")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
225
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
226 ;; Here are some Nextstep-like bindings for command key sequences.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
227 (define-key global-map [?\s-,] 'ns-popup-prefs-panel)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
228 (define-key global-map [?\s-'] 'next-multiframe-window)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
229 (define-key global-map [?\s-`] 'other-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
230 (define-key global-map [?\s--] 'center-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
231 (define-key global-map [?\s-:] 'ispell)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
232 (define-key global-map [?\s-\;] 'ispell-next)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
233 (define-key global-map [?\s-?] 'info)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
234 (define-key global-map [?\s-^] 'kill-some-buffers)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
235 (define-key global-map [?\s-&] 'kill-this-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
236 (define-key global-map [?\s-C] 'ns-popup-color-panel)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
237 (define-key global-map [?\s-D] 'dired)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
238 (define-key global-map [?\s-E] 'edit-abbrevs)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
239 (define-key global-map [?\s-L] 'shell-command)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
240 (define-key global-map [?\s-M] 'manual-entry)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
241 (define-key global-map [?\s-S] 'ns-write-file-using-panel)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
242 (define-key global-map [?\s-a] 'mark-whole-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
243 (define-key global-map [?\s-c] 'ns-copy-including-secondary)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
244 (define-key global-map [?\s-d] 'isearch-repeat-backward)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
245 (define-key global-map [?\s-e] 'isearch-yank-kill)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
246 (define-key global-map [?\s-f] 'isearch-forward)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
247 (define-key global-map [?\s-g] 'isearch-repeat-forward)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
248 (define-key global-map [?\s-h] 'ns-do-hide-emacs)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
249 (define-key global-map [?\s-H] 'ns-do-hide-others)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
250 (define-key global-map [?\s-j] 'exchange-point-and-mark)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
251 (define-key global-map [?\s-k] 'kill-this-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
252 (define-key global-map [?\s-l] 'goto-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
253 (define-key global-map [?\s-m] 'iconify-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
254 (define-key global-map [?\s-n] 'make-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
255 (define-key global-map [?\s-o] 'ns-open-file-using-panel)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
256 (define-key global-map [?\s-p] 'ns-print-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
257 (define-key global-map [?\s-q] 'save-buffers-kill-emacs)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
258 (define-key global-map [?\s-s] 'save-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
259 (define-key global-map [?\s-t] 'ns-popup-font-panel)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
260 (define-key global-map [?\s-u] 'revert-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
261 (define-key global-map [?\s-v] 'yank)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
262 (define-key global-map [?\s-w] 'delete-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
263 (define-key global-map [?\s-x] 'kill-region)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
264 (define-key global-map [?\s-y] 'ns-paste-secondary)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
265 (define-key global-map [?\s-z] 'undo)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
266 (define-key global-map [?\s-|] 'shell-command-on-region)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
267 (define-key global-map [s-kp-bar] 'shell-command-on-region)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
268 ;; (as in Terminal.app)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
269 (define-key global-map [s-right] 'ns-next-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
270 (define-key global-map [s-left] 'ns-prev-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
271
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
272 (define-key global-map [home] 'beginning-of-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
273 (define-key global-map [end] 'end-of-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
274 (define-key global-map [kp-home] 'beginning-of-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
275 (define-key global-map [kp-end] 'end-of-buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
276 (define-key global-map [kp-prior] 'scroll-down)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
277 (define-key global-map [kp-next] 'scroll-up)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
278
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
279 ;;; Allow shift-clicks to work similarly to under Nextstep
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
280 (define-key global-map [S-mouse-1] 'mouse-save-then-kill)
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
281 (global-unset-key [S-down-mouse-1])
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
282
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
283
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
284 ;; Special Nextstep-generated events are converted to function keys. Here
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
285 ;; are the bindings for them.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
286 (define-key global-map [ns-power-off]
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
287 (lambda () (interactive) (save-buffers-kill-emacs t)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
288 (define-key global-map [ns-open-file] 'ns-find-file)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
289 (define-key global-map [ns-open-temp-file] [ns-open-file])
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
290 (define-key global-map [ns-drag-file] 'ns-insert-file)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
291 (define-key global-map [ns-drag-color] 'ns-set-foreground-at-mouse)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
292 (define-key global-map [S-ns-drag-color] 'ns-set-background-at-mouse)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
293 (define-key global-map [ns-drag-text] 'ns-insert-text)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
294 (define-key global-map [ns-change-font] 'ns-respond-to-change-font)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
295 (define-key global-map [ns-open-file-line] 'ns-open-file-select-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
296 (define-key global-map [ns-spi-service-call] 'ns-spi-service-call)
97279
76ed169d532c Dock menu customization, based on a patch by Ken Raeburn, plus some other fixes.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97044
diff changeset
297 (define-key global-map [ns-new-frame] 'make-frame)
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
298 (define-key global-map [ns-toggle-toolbar] 'ns-toggle-toolbar)
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
299 (define-key global-map [ns-info-prefs] 'ns-show-preferences-help)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
300
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
301
96792
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
302 ;; Functions to set environment variables by running a subshell.
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
303 ;;; Idea based on Nextstep 4.2 distribution, this version of code
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
304 ;;; based on mac-read-environment-vars-from-shell () by David Reitter.
96792
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
305 ;;; Mostly used only under ns-extended-platform-support-mode.
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
306
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
307 (defun ns-make-command-string (cmdlist)
96805
f38d566bd19b Add 2007 to copyright years, since was available then.
Glenn Morris <rgm@gnu.org>
parents: 96799
diff changeset
308 (mapconcat 'identity cmdlist " ; "))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
309
96792
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
310 ;;;###autoload
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
311 (defun ns-grabenv (&optional shell-path startup)
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
312 "Set the Emacs environment using the output of a shell command.
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
313 This runs a shell subprocess, and interpret its output as a
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
314 series of environment variables to insert into the emacs
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
315 environment.
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
316 SHELL-PATH gives the path to the shell; if nil, this defaults to
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
317 the current setting of `shell-file-name'.
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
318 STARTUP is a list of commands for the shell to execute; if nil,
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
319 this defaults to \"printenv\"."
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
320 (interactive)
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
321 (with-temp-buffer
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
322 (let ((shell-file-name (if shell-path shell-path shell-file-name))
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
323 (cmd (ns-make-command-string (if startup startup '("printenv")))))
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
324 (shell-command cmd t)
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
325 (while (search-forward-regexp "^\\([A-Za-z_0-9]+\\)=\\(.*\\)$" nil t)
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
326 (setenv (match-string 1)
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
327 (if (equal (match-string 1) "PATH")
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
328 (concat (getenv "PATH") ":" (match-string 2))
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
329 (match-string 2)))))))
96788
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
330
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
331 ;; Set up a number of aliases and other layers to pretend we're using
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
332 ;; the Choi/Mitsuharu Carbon port.
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
333
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
334 (defvaralias 'mac-allow-anti-aliasing 'ns-antialias-text)
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
335 (defvaralias 'mac-command-modifier 'ns-command-modifier)
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
336 (defvaralias 'mac-control-modifier 'ns-control-modifier)
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
337 (defvaralias 'mac-option-modifier 'ns-option-modifier)
c4b6acf322cc Contents of ns-carbon-compat.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96767
diff changeset
338 (defvaralias 'mac-function-modifier 'ns-function-modifier)
99588
a61ecfde8504 (ns-do-applescript, ns-popup-font-panel): Declare.
Glenn Morris <rgm@gnu.org>
parents: 98512
diff changeset
339 (declare-function ns-do-applescript "nsfns.m" (script))
97044
68cf271f3d30 rename do-applescript,do_applescript in keeping with NS code conventions
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97042
diff changeset
340 (defalias 'do-applescript 'ns-do-applescript)
68cf271f3d30 rename do-applescript,do_applescript in keeping with NS code conventions
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97042
diff changeset
341
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
342
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
343 (defvar menu-bar-ns-file-menu) ; below
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
344
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
345 ;; Toggle some additional Nextstep-like features that may interfere
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
346 ;; with users' expectations coming from emacs on other platforms.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
347 (define-minor-mode ns-extended-platform-support-mode
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
348 "Toggle Nextstep extended platform support features.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
349 When this mode is active (no modeline indicator):
96707
e2bc3521cdab remove easy-mmode from loadup.el before ns-win; correct docs in ns-win
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96699
diff changeset
350 - File menu is altered slightly in keeping with conventions.
e2bc3521cdab remove easy-mmode from loadup.el before ns-win; correct docs in ns-win
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96699
diff changeset
351 - Screen position is preserved in scrolling.
e2bc3521cdab remove easy-mmode from loadup.el before ns-win; correct docs in ns-win
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96699
diff changeset
352 - Transient mark mode is activated"
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
353 :init-value nil
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
354 :global t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
355 :group 'ns
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
356 (if ns-extended-platform-support-mode
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
357 (progn
99588
a61ecfde8504 (ns-do-applescript, ns-popup-font-panel): Declare.
Glenn Morris <rgm@gnu.org>
parents: 98512
diff changeset
358 (defun ns-show-manual () "Show Emacs.app section in the Emacs manual"
a61ecfde8504 (ns-do-applescript, ns-popup-font-panel): Declare.
Glenn Morris <rgm@gnu.org>
parents: 98512
diff changeset
359 (interactive)
101354
8802a9b050fb * term/ns-win.el (ns-show-manual): Fix node name. (x-open-connection) Fix typo in declaration filename.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101087
diff changeset
360 (info "(emacs) Mac OS / GNUstep"))
97042
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
361 (setq where-is-preferred-modifier 'super)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
362 (setq scroll-preserve-screen-position t)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
363 (transient-mark-mode 1)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
364
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
365 ;; Change file menu to simplify and add a couple of
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
366 ;; Nextstep-specific items
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
367 (easy-menu-remove-item global-map '("menu-bar") 'file)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
368 (easy-menu-add-item global-map '(menu-bar)
97042
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
369 (cons "File" menu-bar-ns-file-menu) 'edit)
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
370 (define-key menu-bar-help-menu [ns-manual]
99638
56895e0ffbd6 (ns-extended-platform-support-mode): Tweak menu entry from previous change.
Glenn Morris <rgm@gnu.org>
parents: 99588
diff changeset
371 '(menu-item "Read the Emacs.app Manual Chapter" ns-show-manual)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
372 (progn
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
373 ;; Undo everything above.
97042
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
374 (fmakunbound 'ns-show-manual)
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
375 (setq where-is-preferred-modifier 'nil)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
376 (setq scroll-preserve-screen-position nil)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
377 (transient-mark-mode 0)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
378 (easy-menu-remove-item global-map '("menu-bar") 'file)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
379 (easy-menu-add-item global-map '(menu-bar)
97042
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
380 (cons "File" menu-bar-file-menu) 'edit)
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
381 (easy-menu-remove-item global-map '("menu-bar" "help-menu") 'ns-manual)
0ac199626cb9 fix up ns-extended-platform-support-mode
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96921
diff changeset
382 )))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
383
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
384
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
385 (defun x-setup-function-keys (frame)
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
386 "Set up function Keys for Nextstep for frame FRAME."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
387 (unless (terminal-parameter frame 'x-setup-function-keys)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
388 (with-selected-frame frame
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
389 (setq interprogram-cut-function 'x-select-text
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
390 interprogram-paste-function 'x-cut-buffer-or-selection-value)
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
391 (let ((map (copy-keymap ns-alternatives-map)))
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
392 (set-keymap-parent map (keymap-parent local-function-key-map))
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
393 (set-keymap-parent local-function-key-map map))
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
394 (setq system-key-alist
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
395 (list
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
396 (cons (logior (lsh 0 16) 1) 'ns-power-off)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
397 (cons (logior (lsh 0 16) 2) 'ns-open-file)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
398 (cons (logior (lsh 0 16) 3) 'ns-open-temp-file)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
399 (cons (logior (lsh 0 16) 4) 'ns-drag-file)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
400 (cons (logior (lsh 0 16) 5) 'ns-drag-color)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
401 (cons (logior (lsh 0 16) 6) 'ns-drag-text)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
402 (cons (logior (lsh 0 16) 7) 'ns-change-font)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
403 (cons (logior (lsh 0 16) 8) 'ns-open-file-line)
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
404 ; (cons (logior (lsh 0 16) 9) 'ns-insert-working-text)
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
405 ; (cons (logior (lsh 0 16) 10) 'ns-delete-working-text)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
406 (cons (logior (lsh 0 16) 11) 'ns-spi-service-call)
97279
76ed169d532c Dock menu customization, based on a patch by Ken Raeburn, plus some other fixes.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97044
diff changeset
407 (cons (logior (lsh 0 16) 12) 'ns-new-frame)
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
408 (cons (logior (lsh 0 16) 13) 'ns-toggle-toolbar)
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
409 (cons (logior (lsh 0 16) 14) 'ns-info-prefs)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
410 (cons (logior (lsh 1 16) 32) 'f1)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
411 (cons (logior (lsh 1 16) 33) 'f2)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
412 (cons (logior (lsh 1 16) 34) 'f3)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
413 (cons (logior (lsh 1 16) 35) 'f4)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
414 (cons (logior (lsh 1 16) 36) 'f5)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
415 (cons (logior (lsh 1 16) 37) 'f6)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
416 (cons (logior (lsh 1 16) 38) 'f7)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
417 (cons (logior (lsh 1 16) 39) 'f8)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
418 (cons (logior (lsh 1 16) 40) 'f9)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
419 (cons (logior (lsh 1 16) 41) 'f10)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
420 (cons (logior (lsh 1 16) 42) 'f11)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
421 (cons (logior (lsh 1 16) 43) 'f12)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
422 (cons (logior (lsh 1 16) 44) 'kp-insert)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
423 (cons (logior (lsh 1 16) 45) 'kp-delete)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
424 (cons (logior (lsh 1 16) 46) 'kp-home)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
425 (cons (logior (lsh 1 16) 47) 'kp-end)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
426 (cons (logior (lsh 1 16) 48) 'kp-prior)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
427 (cons (logior (lsh 1 16) 49) 'kp-next)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
428 (cons (logior (lsh 1 16) 50) 'print-screen)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
429 (cons (logior (lsh 1 16) 51) 'scroll-lock)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
430 (cons (logior (lsh 1 16) 52) 'pause)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
431 (cons (logior (lsh 1 16) 53) 'system)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
432 (cons (logior (lsh 1 16) 54) 'break)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
433 (cons (logior (lsh 1 16) 56) 'please-tell-carl-what-this-key-is-called-56)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
434 (cons (logior (lsh 1 16) 61) 'please-tell-carl-what-this-key-is-called-61)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
435 (cons (logior (lsh 1 16) 62) 'please-tell-carl-what-this-key-is-called-62)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
436 (cons (logior (lsh 1 16) 63) 'please-tell-carl-what-this-key-is-called-63)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
437 (cons (logior (lsh 1 16) 64) 'please-tell-carl-what-this-key-is-called-64)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
438 (cons (logior (lsh 1 16) 69) 'please-tell-carl-what-this-key-is-called-69)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
439 (cons (logior (lsh 1 16) 70) 'please-tell-carl-what-this-key-is-called-70)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
440 (cons (logior (lsh 1 16) 71) 'please-tell-carl-what-this-key-is-called-71)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
441 (cons (logior (lsh 1 16) 72) 'please-tell-carl-what-this-key-is-called-72)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
442 (cons (logior (lsh 1 16) 73) 'please-tell-carl-what-this-key-is-called-73)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
443 (cons (logior (lsh 2 16) 3) 'kp-enter)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
444 (cons (logior (lsh 2 16) 9) 'kp-tab)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
445 (cons (logior (lsh 2 16) 28) 'kp-quit)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
446 (cons (logior (lsh 2 16) 35) 'kp-hash)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
447 (cons (logior (lsh 2 16) 42) 'kp-multiply)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
448 (cons (logior (lsh 2 16) 43) 'kp-add)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
449 (cons (logior (lsh 2 16) 44) 'kp-separator)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
450 (cons (logior (lsh 2 16) 45) 'kp-subtract)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
451 (cons (logior (lsh 2 16) 46) 'kp-decimal)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
452 (cons (logior (lsh 2 16) 47) 'kp-divide)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
453 (cons (logior (lsh 2 16) 48) 'kp-0)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
454 (cons (logior (lsh 2 16) 49) 'kp-1)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
455 (cons (logior (lsh 2 16) 50) 'kp-2)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
456 (cons (logior (lsh 2 16) 51) 'kp-3)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
457 (cons (logior (lsh 2 16) 52) 'kp-4)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
458 (cons (logior (lsh 2 16) 53) 'kp-5)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
459 (cons (logior (lsh 2 16) 54) 'kp-6)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
460 (cons (logior (lsh 2 16) 55) 'kp-7)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
461 (cons (logior (lsh 2 16) 56) 'kp-8)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
462 (cons (logior (lsh 2 16) 57) 'kp-9)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
463 (cons (logior (lsh 2 16) 60) 'kp-less)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
464 (cons (logior (lsh 2 16) 61) 'kp-equal)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
465 (cons (logior (lsh 2 16) 62) 'kp-more)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
466 (cons (logior (lsh 2 16) 64) 'kp-at)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
467 (cons (logior (lsh 2 16) 92) 'kp-backslash)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
468 (cons (logior (lsh 2 16) 96) 'kp-backtick)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
469 (cons (logior (lsh 2 16) 124) 'kp-bar)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
470 (cons (logior (lsh 2 16) 126) 'kp-tilde)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
471 (cons (logior (lsh 2 16) 157) 'kp-mu)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
472 (cons (logior (lsh 2 16) 165) 'kp-yen)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
473 (cons (logior (lsh 2 16) 167) 'kp-paragraph)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
474 (cons (logior (lsh 2 16) 172) 'left)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
475 (cons (logior (lsh 2 16) 173) 'up)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
476 (cons (logior (lsh 2 16) 174) 'right)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
477 (cons (logior (lsh 2 16) 175) 'down)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
478 (cons (logior (lsh 2 16) 176) 'kp-ring)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
479 (cons (logior (lsh 2 16) 201) 'kp-square)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
480 (cons (logior (lsh 2 16) 204) 'kp-cube)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
481 (cons (logior (lsh 3 16) 8) 'backspace)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
482 (cons (logior (lsh 3 16) 9) 'tab)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
483 (cons (logior (lsh 3 16) 10) 'linefeed)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
484 (cons (logior (lsh 3 16) 11) 'clear)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
485 (cons (logior (lsh 3 16) 13) 'return)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
486 (cons (logior (lsh 3 16) 18) 'pause)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
487 (cons (logior (lsh 3 16) 25) 'S-tab)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
488 (cons (logior (lsh 3 16) 27) 'escape)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
489 (cons (logior (lsh 3 16) 127) 'delete)
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
490 )))
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
491 (set-terminal-parameter frame 'x-setup-function-keys t)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
492
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
493
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
494
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
495 ;; Must come after keybindings.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
496
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
497 (fmakunbound 'clipboard-yank)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
498 (fmakunbound 'clipboard-kill-ring-save)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
499 (fmakunbound 'clipboard-kill-region)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
500 (fmakunbound 'menu-bar-enable-clipboard)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
501
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
502 ;; Add a couple of menus and rearrange some others; easiest just to redo toplvl
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
503 ;; Note keymap defns must be given last-to-first
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
504 (define-key global-map [menu-bar] (make-sparse-keymap "menu-bar"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
505
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
506 (setq menu-bar-final-items
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
507 (cond ((eq system-type 'darwin)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
508 '(buffer windows services help-menu))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
509 ;; Otherwise, GNUstep.
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
510 (t
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
511 '(buffer windows services hide-app quit))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
512
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
513 ;; Add standard top-level items to GNUstep menu.
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
514 (unless (eq system-type 'darwin)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
515 (define-key global-map [menu-bar quit] '("Quit" . save-buffers-kill-emacs))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
516 (define-key global-map [menu-bar hide-app] '("Hide" . ns-do-hide-emacs)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
517
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
518 (define-key global-map [menu-bar services]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
519 (cons "Services" (make-sparse-keymap "Services")))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
520 (define-key global-map [menu-bar windows] (make-sparse-keymap "Windows"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
521 (define-key global-map [menu-bar buffer]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
522 (cons "Buffers" global-buffers-menu-map))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
523 ;; (cons "Buffers" (make-sparse-keymap "Buffers")))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
524 (define-key global-map [menu-bar tools] (cons "Tools" menu-bar-tools-menu))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
525 (define-key global-map [menu-bar options] (cons "Options" menu-bar-options-menu))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
526 (define-key global-map [menu-bar edit] (cons "Edit" menu-bar-edit-menu))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
527 (define-key global-map [menu-bar file] (cons "File" menu-bar-file-menu))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
528
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
529 ;; If running under GNUstep, rename "Help" to "Info"
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
530 (cond ((eq system-type 'darwin)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
531 (define-key global-map [menu-bar help-menu]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
532 (cons "Help" menu-bar-help-menu)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
533 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
534 (let ((contents (reverse (cdr menu-bar-help-menu))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
535 (setq menu-bar-help-menu
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
536 (append (list 'keymap) (cdr contents) (list "Info"))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
537 (define-key global-map [menu-bar help-menu]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
538 (cons "Info" menu-bar-help-menu))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
539
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
540 (if (not (eq system-type 'darwin))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
541 ;; in OS X it's in the app menu already
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
542 (define-key menu-bar-help-menu [info-panel]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
543 '("About Emacs..." . ns-do-emacs-info-panel)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
544
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
545
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
546 ;;;; File menu, replaces standard under ns-extended-platform-support
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
547 (defvar menu-bar-ns-file-menu (make-sparse-keymap "File"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
548 (define-key menu-bar-ns-file-menu [one-window]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
549 '("Remove Splits" . delete-other-windows))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
550 (define-key menu-bar-ns-file-menu [split-window]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
551 '("Split Window" . split-window-vertically))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
552
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
553 (define-key menu-bar-ns-file-menu [separator-print] '("--"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
554
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
555 (defvar ns-ps-print-menu-map (make-sparse-keymap "Postscript Print"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
556 (define-key ns-ps-print-menu-map [ps-print-region]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
557 '("Region (B+W)" . ps-print-region))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
558 (define-key ns-ps-print-menu-map [ps-print-buffer]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
559 '("Buffer (B+W)" . ps-print-buffer))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
560 (define-key ns-ps-print-menu-map [ps-print-region-faces]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
561 '("Region" . ps-print-region-with-faces))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
562 (define-key ns-ps-print-menu-map [ps-print-buffer-faces]
96814
2ae5159088f5 fix typo ns-ps-print-buffer-with-faces pointed out by Vinicius Jose Latorre
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96805
diff changeset
563 '("Buffer" . ps-print-buffer-with-faces))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
564 (define-key menu-bar-ns-file-menu [postscript-print]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
565 (cons "Postscript Print" ns-ps-print-menu-map))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
566
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
567 (define-key menu-bar-ns-file-menu [print-region]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
568 '("Print Region" . print-region))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
569 (define-key menu-bar-ns-file-menu [print-buffer]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
570 '("Print Buffer" . ns-print-buffer))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
571
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
572 (define-key menu-bar-ns-file-menu [separator-save] '("--"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
573
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
574 (define-key menu-bar-ns-file-menu [recover-session]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
575 '("Recover Crashed Session" . recover-session))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
576 (define-key menu-bar-ns-file-menu [revert-buffer]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
577 '("Revert Buffer" . revert-buffer))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
578 (define-key menu-bar-ns-file-menu [write-file]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
579 '("Save Buffer As..." . ns-write-file-using-panel))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
580 (define-key menu-bar-ns-file-menu [save-buffer] '("Save Buffer" . save-buffer))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
581
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
582 (define-key menu-bar-ns-file-menu [kill-buffer]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
583 '("Kill Current Buffer" . kill-this-buffer))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
584 (define-key menu-bar-ns-file-menu [delete-this-frame]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
585 '("Close Frame" . delete-frame))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
586
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
587 (define-key menu-bar-ns-file-menu [separator-open] '("--"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
588
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
589 (define-key menu-bar-ns-file-menu [insert-file]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
590 '("Insert File..." . insert-file))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
591 (define-key menu-bar-ns-file-menu [dired]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
592 '("Open Directory..." . ns-open-file-using-panel))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
593 (define-key menu-bar-ns-file-menu [open-file]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
594 '("Open File..." . ns-open-file-using-panel))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
595 (define-key menu-bar-ns-file-menu [make-frame]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
596 '("New Frame" . make-frame))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
597
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
598
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
599 ;;;; Edit menu: Modify slightly
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
600
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
601 ;; Substitute a Copy function that works better under X (for GNUstep).
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
602 (easy-menu-remove-item global-map '("menu-bar" "edit") 'copy)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
603 (define-key-after menu-bar-edit-menu [copy]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
604 '(menu-item "Copy" ns-copy-including-secondary
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
605 :enable mark-active
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
606 :help "Copy text in region between mark and current position")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
607 'cut)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
608
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
609 ;; Change to same precondition as select-and-paste, as we don't have
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
610 ;; `x-selection-exists-p'.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
611 (easy-menu-remove-item global-map '("menu-bar" "edit") 'paste)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
612 (define-key-after menu-bar-edit-menu [paste]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
613 '(menu-item "Paste" yank
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
614 :enable (and (cdr yank-menu) (not buffer-read-only))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
615 :help "Paste (yank) text most recently cut/copied")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
616 'copy)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
617
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
618 ;; Change text to be more consistent with surrounding menu items `paste', etc.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
619 (easy-menu-remove-item global-map '("menu-bar" "edit") 'paste-from-menu)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
620 (define-key-after menu-bar-edit-menu [select-paste]
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
621 '(menu-item "Select and Paste" yank-menu
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
622 :enable (and (cdr yank-menu) (not buffer-read-only))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
623 :help "Choose a string from the kill ring and paste it")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
624 'paste)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
625
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
626 ;; Separate undo from cut/paste section, add spell for platform consistency.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
627 (define-key-after menu-bar-edit-menu [separator-undo] '("--") 'undo)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
628 (define-key-after menu-bar-edit-menu [spell] '("Spell" . ispell-menu-map) 'fill)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
629
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
630 (defun menu-bar-update-frames ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
631 ;; If user discards the Windows item, play along.
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
632 (when (lookup-key (current-global-map) [menu-bar windows])
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
633 (let ((frames (frame-list))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
634 (frames-menu (make-sparse-keymap "Select Frame")))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
635 (setcdr frames-menu
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
636 (nconc
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
637 (mapcar (lambda (frame)
101427
1b7286db7263 * term/ns-win.el (menu-bar-select-frame): Drop this override.\n\t(menu-bar-update-frames): Update call to menu-bar-select-frame.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101401
diff changeset
638 (list*
1b7286db7263 * term/ns-win.el (menu-bar-select-frame): Drop this override.\n\t(menu-bar-update-frames): Update call to menu-bar-select-frame.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101401
diff changeset
639 (frame-parameter frame 'window-id)
1b7286db7263 * term/ns-win.el (menu-bar-select-frame): Drop this override.\n\t(menu-bar-update-frames): Update call to menu-bar-select-frame.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101401
diff changeset
640 (frame-parameter frame 'name)
1b7286db7263 * term/ns-win.el (menu-bar-select-frame): Drop this override.\n\t(menu-bar-update-frames): Update call to menu-bar-select-frame.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101401
diff changeset
641 `(lambda ()
1b7286db7263 * term/ns-win.el (menu-bar-select-frame): Drop this override.\n\t(menu-bar-update-frames): Update call to menu-bar-select-frame.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101401
diff changeset
642 (interactive) (menu-bar-select-frame ,frame))))
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
643 frames)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
644 (cdr frames-menu)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
645 (define-key frames-menu [separator-frames] '("--"))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
646 (define-key frames-menu [popup-color-panel]
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
647 '("Colors..." . ns-popup-color-panel))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
648 (define-key frames-menu [popup-font-panel]
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
649 '("Font Panel..." . ns-popup-font-panel))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
650 (define-key frames-menu [separator-arrange] '("--"))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
651 (define-key frames-menu [arrange-all-frames]
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
652 '("Arrange All Frames" . ns-arrange-all-frames))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
653 (define-key frames-menu [arrange-visible-frames]
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
654 '("Arrange Visible Frames" . ns-arrange-visible-frames))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
655 ;; Don't use delete-frame as event name
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
656 ;; because that is a special event.
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
657 (define-key (current-global-map) [menu-bar windows]
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
658 (cons "Windows" frames-menu)))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
659
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
660 (defun force-menu-bar-update-buffers ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
661 ;; This is a hack to get around fact that we already checked
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
662 ;; frame-or-buffer-changed-p and reset it, so menu-bar-update-buffers
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
663 ;; does not pick up any change.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
664 (menu-bar-update-buffers t))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
665
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
666 (add-hook 'menu-bar-update-fab-hook 'menu-bar-update-frames)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
667 (add-hook 'menu-bar-update-fab-hook 'force-menu-bar-update-buffers)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
668
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
669 (defun menu-bar-update-frames-and-buffers ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
670 (if (frame-or-buffer-changed-p)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
671 (run-hooks 'menu-bar-update-fab-hook)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
672
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
673 (setq menu-bar-update-hook
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
674 (delq 'menu-bar-update-buffers menu-bar-update-hook))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
675 (add-hook 'menu-bar-update-hook 'menu-bar-update-frames-and-buffers)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
676
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
677 (menu-bar-update-frames-and-buffers)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
678
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
679
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
680 ;; ns-arrange functions contributed
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
681 ;; by Eberhard Mandler <mandler@dbag.ulm.DaimlerBenz.COM>
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
682 (defun ns-arrange-all-frames ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
683 "Arranges all frames according to topline"
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
684 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
685 (ns-arrange-frames t))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
686
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
687 (defun ns-arrange-visible-frames ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
688 "Arranges all visible frames according to topline"
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
689 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
690 (ns-arrange-frames nil))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
691
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
692 (defun ns-arrange-frames (vis)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
693 (let ((frame (next-frame))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
694 (end-frame (selected-frame))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
695 (inc-x 20) ;relative position of frames
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
696 (inc-y 22)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
697 (x-pos 100) ;start position
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
698 (y-pos 40)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
699 (done nil))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
700 (while (not done) ;cycle through all frames
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
701 (if (not (or vis (eq (frame-visible-p frame) t)))
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
702 (setq x-pos x-pos); do nothing; true case
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
703 (set-frame-position frame x-pos y-pos)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
704 (setq x-pos (+ x-pos inc-x))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
705 (setq y-pos (+ y-pos inc-y))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
706 (raise-frame frame))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
707 (select-frame frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
708 (setq frame (next-frame))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
709 (setq done (equal frame end-frame)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
710 (set-frame-position end-frame x-pos y-pos)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
711 (raise-frame frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
712 (select-frame frame)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
713
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
714
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
715 ;;;; Services
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
716 (declare-function ns-perform-service "nsfns.m" (service send))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
717
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
718 (defun ns-define-service (path)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
719 (let ((mapping [menu-bar services])
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
720 (service (mapconcat 'identity path "/"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
721 (name (intern
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
722 (subst-char-in-string
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
723 ?\s ?-
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
724 (mapconcat 'identity (cons "ns-service" path) "-")))))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
725 ;; This defines the function.
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
726 (defalias name
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
727 (lexical-let ((service service))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
728 (lambda (arg)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
729 (interactive "p")
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
730 (let* ((in-string
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
731 (cond ((stringp arg) arg)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
732 (mark-active
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
733 (buffer-substring (region-beginning) (region-end)))))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
734 (out-string (ns-perform-service service in-string)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
735 (cond
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
736 ((stringp arg) out-string)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
737 ((and out-string (or (not in-string)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
738 (not (string= in-string out-string))))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
739 (if mark-active (delete-region (region-beginning) (region-end)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
740 (insert out-string)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
741 (setq deactivate-mark nil)))))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
742 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
743 ((lookup-key global-map mapping)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
744 (while (cdr path)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
745 (setq mapping (vconcat mapping (list (intern (car path)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
746 (if (not (keymapp (lookup-key global-map mapping)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
747 (define-key global-map mapping
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
748 (cons (car path) (make-sparse-keymap (car path)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
749 (setq path (cdr path)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
750 (setq mapping (vconcat mapping (list (intern (car path)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
751 (define-key global-map mapping (cons (car path) name))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
752 name))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
753
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
754 ;; nsterm.m
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
755 (defvar ns-input-spi-name)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
756 (defvar ns-input-spi-arg)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
757
97422
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
758 (declare-function dnd-open-file "dnd" (uri action))
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
759
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
760 (defun ns-spi-service-call ()
96799
6cfed26789b7 (ns-submit-bug-report): Function removed. Bug
Chong Yidong <cyd@stupidchicken.com>
parents: 96792
diff changeset
761 "Respond to a service request."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
762 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
763 (cond ((string-equal ns-input-spi-name "open-selection")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
764 (switch-to-buffer (generate-new-buffer "*untitled*"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
765 (insert ns-input-spi-arg))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
766 ((string-equal ns-input-spi-name "open-file")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
767 (dnd-open-file ns-input-spi-arg nil))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
768 ((string-equal ns-input-spi-name "mail-selection")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
769 (compose-mail)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
770 (rfc822-goto-eoh)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
771 (forward-line 1)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
772 (insert ns-input-spi-arg))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
773 ((string-equal ns-input-spi-name "mail-to")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
774 (compose-mail ns-input-spi-arg))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
775 (t (error (concat "Service " ns-input-spi-name " not recognized")))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
776
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
777
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
778 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
779
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
780
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
781
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
782 ;; Composed key sequence handling for Nextstep system input methods.
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
783 ;; (On Nextstep systems, input methods are provided for CJK
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
784 ;; characters, etc. which require multiple keystrokes, and during
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
785 ;; entry a partial ("working") result is typically shown in the
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
786 ;; editing window.)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
787
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
788 (defface ns-working-text-face
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
789 '((t :underline t))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
790 "Face used to highlight working text during compose sequence insert."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
791 :group 'ns)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
792
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
793 (defvar ns-working-overlay nil
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
794 "Overlay used to highlight working text during compose sequence insert.
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
795 When text is in th echo area, this just stores the length of the working text.")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
796
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
797 (defvar ns-working-text) ; nsterm.m
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
798
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
799 ;; Test if in echo area, based on mac-win.el 2007/08/26 unicode-2.
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
800 ;; This will fail if called from a NONASCII_KEYSTROKE event on the global map.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
801 (defun ns-in-echo-area ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
802 "Whether, for purposes of inserting working composition text, the minibuffer
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
803 is currently being used."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
804 (or isearch-mode
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
805 (and cursor-in-echo-area (current-message))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
806 ;; Overlay strings are not shown in some cases.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
807 (get-char-property (point) 'invisible)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
808 (and (not (bobp))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
809 (or (and (get-char-property (point) 'display)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
810 (eq (get-char-property (1- (point)) 'display)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
811 (get-char-property (point) 'display)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
812 (and (get-char-property (point) 'composition)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
813 (eq (get-char-property (1- (point)) 'composition)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
814 (get-char-property (point) 'composition)))))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
815
101401
93936c347fa1 * term/ns-win.el (ns-insert-working-text, ns-put-working-text): Switch names and update comments for clarity.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101354
diff changeset
816 ;; The 'interactive' here stays for subinvocations, so the ns-in-echo-area
93936c347fa1 * term/ns-win.el (ns-insert-working-text, ns-put-working-text): Switch names and update comments for clarity.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101354
diff changeset
817 ;; always returns nil for some reason. If this WASN'T the case, we could
93936c347fa1 * term/ns-win.el (ns-insert-working-text, ns-put-working-text): Switch names and update comments for clarity.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101354
diff changeset
818 ;; map this to [ns-insert-working-text] and eliminate Fevals in nsterm.m.
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
819 ;; These functions test whether in echo area and delegate accordingly.
101401
93936c347fa1 * term/ns-win.el (ns-insert-working-text, ns-put-working-text): Switch names and update comments for clarity.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101354
diff changeset
820 (defun ns-put-working-text ()
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
821 (interactive)
101401
93936c347fa1 * term/ns-win.el (ns-insert-working-text, ns-put-working-text): Switch names and update comments for clarity.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101354
diff changeset
822 (if (ns-in-echo-area) (ns-echo-working-text) (ns-insert-working-text)))
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
823 (defun ns-unput-working-text ()
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
824 (interactive)
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
825 (ns-delete-working-text))
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
826
101401
93936c347fa1 * term/ns-win.el (ns-insert-working-text, ns-put-working-text): Switch names and update comments for clarity.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101354
diff changeset
827 (defun ns-insert-working-text ()
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
828 "Insert contents of `ns-working-text' as UTF8 string and mark with
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
829 `ns-working-overlay'. Any previously existing working text is cleared first.
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
830 The overlay is assigned the face `ns-working-text-face'."
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
831 ;; FIXME: if buffer is read-only, don't try to insert anything
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
832 ;; and if text is bound to a command, execute that instead (Bug#1453)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
833 (interactive)
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
834 (ns-delete-working-text)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
835 (let ((start (point)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
836 (insert ns-working-text)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
837 (overlay-put (setq ns-working-overlay (make-overlay start (point)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
838 (current-buffer) nil t))
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
839 'face 'ns-working-text-face)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
840
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
841 (defun ns-echo-working-text ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
842 "Echo contents of ns-working-text in message display area.
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
843 See `ns-insert-working-text'."
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
844 (ns-delete-working-text)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
845 (let* ((msg (current-message))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
846 (msglen (length msg))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
847 message-log-max)
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
848 (setq ns-working-overlay (length ns-working-text))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
849 (setq msg (concat msg ns-working-text))
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
850 (put-text-property msglen (+ msglen ns-working-overlay)
101427
1b7286db7263 * term/ns-win.el (menu-bar-select-frame): Drop this override.\n\t(menu-bar-update-frames): Update call to menu-bar-select-frame.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101401
diff changeset
851 'face 'ns-working-text-face msg)
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
852 (message "%s" msg)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
853
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
854 (defun ns-delete-working-text()
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
855 "Delete working text and clear `ns-working-overlay'."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
856 (interactive)
102253
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
857 (cond
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
858 ((and (overlayp ns-working-overlay)
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
859 ;; Still alive?
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
860 (overlay-buffer ns-working-overlay))
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
861 (with-current-buffer (overlay-buffer ns-working-overlay)
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
862 (delete-region (overlay-start ns-working-overlay)
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
863 (overlay-end ns-working-overlay))
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
864 (delete-overlay ns-working-overlay)))
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
865 ((integerp ns-working-overlay)
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
866 (let ((msg (current-message))
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
867 message-log-max)
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
868 (setq msg (substring msg 0 (- (length msg) ns-working-overlay)))
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
869 (message "%s" msg))))
8a3d30f9b513 (ns-working-overlay): Don't make it buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 101783
diff changeset
870 (setq ns-working-overlay nil))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
871
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
872
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
873 (declare-function ns-convert-utf8-nfd-to-nfc "nsfns.m" (str))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
874
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
875 ;;;; OS X file system Unicode UTF-8 NFD (decomposed form) support
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
876 ;; Lisp code based on utf-8m.el, by Seiji Zenitani, Eiji Honjoh, and
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
877 ;; Carsten Bormann.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
878 (if (eq system-type 'darwin)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
879 (progn
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
880
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
881 (defun ns-utf8-nfd-post-read-conversion (length)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
882 "Calls ns-convert-utf8-nfd-to-nfc to compose char sequences."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
883 (save-excursion
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
884 (save-restriction
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
885 (narrow-to-region (point) (+ (point) length))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
886 (let ((str (buffer-string)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
887 (delete-region (point-min) (point-max))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
888 (insert (ns-convert-utf8-nfd-to-nfc str))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
889 (- (point-max) (point-min))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
890 ))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
891
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
892 (define-coding-system 'utf-8-nfd
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
893 "UTF-8 NFD (decomposed) encoding."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
894 :coding-type 'utf-8
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
895 :mnemonic ?U
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
896 :charset-list '(unicode)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
897 :post-read-conversion 'ns-utf8-nfd-post-read-conversion)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
898 (set-file-name-coding-system 'utf-8-nfd)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
899
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
900 ;; PENDING: disable composition-based display for Indic scripts as it
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
901 ;; is not working well under Nextstep for some reason
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
902 (set-char-table-range composition-function-table
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
903 '(#x0900 . #x0DFF) nil)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
904
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
905
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
906 ;;;; Inter-app communications support.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
907
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
908 (defvar ns-input-text) ; nsterm.m
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
909
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
910 (defun ns-insert-text ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
911 "Insert contents of ns-input-text at point."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
912 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
913 (insert ns-input-text)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
914 (setq ns-input-text nil))
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
915
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
916 (defun ns-insert-file ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
917 "Insert contents of file ns-input-file like insert-file but with less
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
918 prompting. If file is a directory perform a find-file on it."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
919 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
920 (let ((f))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
921 (setq f (car ns-input-file))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
922 (setq ns-input-file (cdr ns-input-file))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
923 (if (file-directory-p f)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
924 (find-file f)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
925 (push-mark (+ (point) (car (cdr (insert-file-contents f))))))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
926
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
927 (defvar ns-select-overlay nil
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
928 "Overlay used to highlight areas in files requested by Nextstep apps.")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
929 (make-variable-buffer-local 'ns-select-overlay)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
930
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
931 (defvar ns-input-line) ; nsterm.m
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
932
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
933 (defun ns-open-file-select-line ()
96792
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
934 "Open a buffer containing the file `ns-input-file'.
50bfb208e018 Contents of ns-grabenv.el moved here.
Chong Yidong <cyd@stupidchicken.com>
parents: 96788
diff changeset
935 Lines are highlighted according to `ns-input-line'."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
936 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
937 (ns-find-file)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
938 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
939 ((and ns-input-line (buffer-modified-p))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
940 (if ns-select-overlay
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
941 (setq ns-select-overlay (delete-overlay ns-select-overlay)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
942 (deactivate-mark)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
943 (goto-line (if (consp ns-input-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
944 (min (car ns-input-line) (cdr ns-input-line))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
945 ns-input-line)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
946 (ns-input-line
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
947 (if (not ns-select-overlay)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
948 (overlay-put (setq ns-select-overlay (make-overlay (point-min) (point-min)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
949 'face 'highlight))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
950 (let ((beg (save-excursion
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
951 (goto-line (if (consp ns-input-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
952 (min (car ns-input-line) (cdr ns-input-line))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
953 ns-input-line))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
954 (point)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
955 (end (save-excursion
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
956 (goto-line (+ 1 (if (consp ns-input-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
957 (max (car ns-input-line) (cdr ns-input-line))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
958 ns-input-line)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
959 (point))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
960 (move-overlay ns-select-overlay beg end)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
961 (deactivate-mark)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
962 (goto-char beg)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
963 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
964 (if ns-select-overlay
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
965 (setq ns-select-overlay (delete-overlay ns-select-overlay))))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
966
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
967 (defun ns-unselect-line ()
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
968 "Removes any Nextstep highlight a buffer may contain."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
969 (if ns-select-overlay
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
970 (setq ns-select-overlay (delete-overlay ns-select-overlay))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
971
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
972 (add-hook 'first-change-hook 'ns-unselect-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
973
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
974
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
975
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
976 ;;;; Preferences handling.
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
977 (declare-function ns-get-resource "nsfns.m" (owner name))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
978
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
979 (defun get-lisp-resource (arg1 arg2)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
980 (let ((res (ns-get-resource arg1 arg2)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
981 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
982 ((not res) 'unbound)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
983 ((string-equal (upcase res) "YES") t)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
984 ((string-equal (upcase res) "NO") nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
985 (t (read res)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
986
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
987 ;; nsterm.m
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
988 (defvar ns-command-modifier)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
989 (defvar ns-control-modifier)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
990 (defvar ns-function-modifier)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
991 (defvar ns-antialias-text)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
992 (defvar ns-use-qd-smoothing)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
993 (defvar ns-use-system-highlight-color)
101741
57277ecc1e6e * term/ns-win.el (ns-save-preferences): Save ns-confirm-quit option.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101491
diff changeset
994 (defvar ns-confirm-quit)
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
995
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
996 (declare-function ns-set-resource "nsfns.m" (owner name value))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
997 (declare-function ns-font-name "nsfns.m" (name))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
998 (declare-function ns-read-file-name "nsfns.m"
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
999 (prompt &optional dir isLoad init))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1000
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1001 (defun ns-save-preferences ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1002 "Set all the defaults."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1003 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1004 ;; Global preferences
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1005 (ns-set-resource nil "AlternateModifier" (symbol-name ns-alternate-modifier))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1006 (ns-set-resource nil "CommandModifier" (symbol-name ns-command-modifier))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1007 (ns-set-resource nil "ControlModifier" (symbol-name ns-control-modifier))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1008 (ns-set-resource nil "FunctionModifier" (symbol-name ns-function-modifier))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1009 (ns-set-resource nil "ExpandSpace"
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1010 (if ns-expand-space
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1011 (number-to-string ns-expand-space)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1012 "NO"))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1013 (ns-set-resource nil "GSFontAntiAlias" (if ns-antialias-text "YES" "NO"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1014 (ns-set-resource nil "UseQuickdrawSmoothing"
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1015 (if ns-use-qd-smoothing "YES" "NO"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1016 (ns-set-resource nil "UseSystemHighlightColor"
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1017 (if ns-use-system-highlight-color "YES" "NO"))
101741
57277ecc1e6e * term/ns-win.el (ns-save-preferences): Save ns-confirm-quit option.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101491
diff changeset
1018 (ns-set-resource nil "ConfirmQuit"
57277ecc1e6e * term/ns-win.el (ns-save-preferences): Save ns-confirm-quit option.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101491
diff changeset
1019 (if ns-confirm-quit "YES" "NO"))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1020 ;; Default frame parameters
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1021 (let ((p (frame-parameters))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1022 v)
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1023 (if (setq v (assq 'font p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1024 (ns-set-resource nil "Font" (ns-font-name (cdr v))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1025 (if (setq v (assq 'fontsize p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1026 (ns-set-resource nil "FontSize" (number-to-string (cdr v))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1027 (if (setq v (assq 'foreground-color p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1028 (ns-set-resource nil "Foreground" (cdr v)))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1029 (if (setq v (assq 'background-color p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1030 (ns-set-resource nil "Background" (cdr v)))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1031 (if (setq v (assq 'cursor-color p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1032 (ns-set-resource nil "CursorColor" (cdr v)))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1033 (if (setq v (assq 'cursor-type p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1034 (ns-set-resource nil "CursorType" (if (symbolp (cdr v))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1035 (symbol-name (cdr v))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1036 (cdr v))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1037 (if (setq v (assq 'underline p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1038 (ns-set-resource nil "Underline"
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1039 (case (cdr v)
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1040 ((t) "YES")
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1041 ((nil) "NO")
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1042 (t (cdr v)))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1043 (if (setq v (assq 'internal-border-width p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1044 (ns-set-resource nil "InternalBorderWidth"
96805
f38d566bd19b Add 2007 to copyright years, since was available then.
Glenn Morris <rgm@gnu.org>
parents: 96799
diff changeset
1045 (number-to-string (cdr v))))
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1046 (if (setq v (assq 'vertical-scroll-bars p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1047 (ns-set-resource nil "VerticalScrollBars"
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1048 (case (cdr v)
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1049 ((t) "YES")
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1050 ((nil) "NO")
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1051 ((left) "left")
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1052 ((right) "right")
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1053 (t nil))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1054 (if (setq v (assq 'height p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1055 (ns-set-resource nil "Height" (number-to-string (cdr v))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1056 (if (setq v (assq 'width p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1057 (ns-set-resource nil "Width" (number-to-string (cdr v))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1058 (if (setq v (assq 'top p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1059 (ns-set-resource nil "Top" (number-to-string (cdr v))))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1060 (if (setq v (assq 'left p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1061 (ns-set-resource nil "Left" (number-to-string (cdr v))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1062 ;; These not fully supported
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1063 (if (setq v (assq 'auto-raise p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1064 (ns-set-resource nil "AutoRaise" (if (cdr v) "YES" "NO")))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1065 (if (setq v (assq 'auto-lower p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1066 (ns-set-resource nil "AutoLower" (if (cdr v) "YES" "NO")))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1067 (if (setq v (assq 'menu-bar-lines p))
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1068 (ns-set-resource nil "Menus" (if (cdr v) "YES" "NO")))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1069 )
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1070 (let ((fl (face-list)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1071 (while (consp fl)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1072 (or (eq 'default (car fl))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1073 ;; dont save Default* since it causes all created faces to
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1074 ;; inherit its values. The properties of the default face
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1075 ;; have already been saved from the frame-parameters anyway.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1076 (let* ((name (symbol-name (car fl)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1077 (font (face-font (car fl)))
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1078 ;; (fontsize (face-fontsize (car fl)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1079 (foreground (face-foreground (car fl)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1080 (background (face-background (car fl)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1081 (underline (face-underline-p (car fl)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1082 (italic (face-italic-p (car fl)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1083 (bold (face-bold-p (car fl)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1084 (stipple (face-stipple (car fl))))
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1085 ;; (ns-set-resource nil (concat name ".attributeFont")
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1086 ;; (if font font nil))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1087 ;; (ns-set-resource nil (concat name ".attributeFontSize")
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1088 ;; (if fontsize (number-to-string fontsize) nil))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1089 (ns-set-resource nil (concat name ".attributeForeground")
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1090 (if foreground foreground nil))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1091 (ns-set-resource nil (concat name ".attributeBackground")
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1092 (if background background nil))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1093 (ns-set-resource nil (concat name ".attributeUnderline")
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1094 (if underline "YES" nil))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1095 (ns-set-resource nil (concat name ".attributeItalic")
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1096 (if italic "YES" nil))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1097 (ns-set-resource nil (concat name ".attributeBold")
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1098 (if bold "YES" nil))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1099 (and stipple
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1100 (or (stringp stipple)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1101 (setq stipple (prin1-to-string stipple))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1102 (ns-set-resource nil (concat name ".attributeStipple")
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1103 (if stipple stipple nil))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1104 (setq fl (cdr fl)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1105
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1106 (declare-function menu-bar-options-save-orig "ns-win" () t)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1107
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1108 ;; call ns-save-preferences when menu-bar-options-save is called
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1109 (fset 'menu-bar-options-save-orig (symbol-function 'menu-bar-options-save))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1110 (defun ns-save-options ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1111 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1112 (menu-bar-options-save-orig)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1113 (ns-save-preferences))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1114 (fset 'menu-bar-options-save (symbol-function 'ns-save-options))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1115
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1116
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1117 ;;;; File handling.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1118
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1119 (defun ns-open-file-using-panel ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1120 "Pop up open-file panel, and load the result in a buffer."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1121 (interactive)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1122 ;; Prompt dir defaultName isLoad initial.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1123 (setq ns-input-file (ns-read-file-name "Select File to Load" nil t nil))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1124 (if ns-input-file
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1125 (and (setq ns-input-file (list ns-input-file)) (ns-find-file))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1126
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1127 (defun ns-write-file-using-panel ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1128 "Pop up save-file panel, and save buffer in resulting name."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1129 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1130 (let (ns-output-file)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1131 ;; Prompt dir defaultName isLoad initial.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1132 (setq ns-output-file (ns-read-file-name "Save As" nil nil nil))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1133 (message ns-output-file)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1134 (if ns-output-file (write-file ns-output-file))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1135
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1136 (defvar ns-pop-up-frames 'fresh
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1137 "*Non-nil means open files upon request from the Workspace in a new frame.
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1138 If t, always do so. Any other non-nil value means open a new frame
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1139 unless the current buffer is a scratch buffer.")
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1140
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1141 (declare-function ns-hide-emacs "nsfns.m" (on))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1142
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1143 (defun ns-find-file ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1144 "Do a find-file with the ns-input-file as argument."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1145 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1146 (let ((f) (file) (bufwin1) (bufwin2))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1147 (setq f (file-truename (car ns-input-file)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1148 (setq ns-input-file (cdr ns-input-file))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1149 (setq file (find-file-noselect f))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1150 (setq bufwin1 (get-buffer-window file 'visible))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1151 (setq bufwin2 (get-buffer-window "*scratch*" 'visibile))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1152 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1153 (bufwin1
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1154 (select-frame (window-frame bufwin1))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1155 (raise-frame (window-frame bufwin1))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1156 (select-window bufwin1))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1157 ((and (eq ns-pop-up-frames 'fresh) bufwin2)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1158 (ns-hide-emacs 'activate)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1159 (select-frame (window-frame bufwin2))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1160 (raise-frame (window-frame bufwin2))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1161 (select-window bufwin2)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1162 (find-file f))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1163 (ns-pop-up-frames
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1164 (ns-hide-emacs 'activate)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1165 (let ((pop-up-frames t)) (pop-to-buffer file nil)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1166 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1167 (ns-hide-emacs 'activate)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1168 (find-file f)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1169
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1170
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1171
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1172 ;;;; Frame-related functions.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1173
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1174 ;; Don't show the frame name; that's redundant with Nextstep.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1175 (setq-default mode-line-frame-identification '(" "))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1176
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1177 ;; You say tomAYto, I say tomAHto..
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1178 (defvaralias 'ns-option-modifier 'ns-alternate-modifier)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1179
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1180 (defun ns-do-hide-emacs ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1181 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1182 (ns-hide-emacs t))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1183
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1184 (declare-function ns-hide-others "nsfns.m" ())
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1185
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1186 (defun ns-do-hide-others ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1187 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1188 (ns-hide-others))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1189
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1190 (declare-function ns-emacs-info-panel "nsfns.m" ())
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1191
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1192 (defun ns-do-emacs-info-panel ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1193 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1194 (ns-emacs-info-panel))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1195
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1196 (defun ns-next-frame ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1197 "Switch to next visible frame."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1198 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1199 (other-frame 1))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1200 (defun ns-prev-frame ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1201 "Switch to previous visible frame."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1202 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1203 (other-frame -1))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1204
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1205 ;; If no position specified, make new frame offset by 25 from current.
96767
970848353475 (parameters): Declare for compiler.
Glenn Morris <rgm@gnu.org>
parents: 96757
diff changeset
1206 (defvar parameters) ; dynamically bound in make-frame
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1207 (add-hook 'before-make-frame-hook
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1208 (lambda ()
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1209 (let ((left (cdr (assq 'left (frame-parameters))))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1210 (top (cdr (assq 'top (frame-parameters)))))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1211 (if (consp left) (setq left (cadr left)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1212 (if (consp top) (setq top (cadr top)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1213 (cond
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1214 ((or (assq 'top parameters) (assq 'left parameters)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1215 ((or (not left) (not top)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1216 (t
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1217 (setq parameters (cons (cons 'left (+ left 25))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1218 (cons (cons 'top (+ top 25))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1219 parameters))))))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1220
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1221 ;; frame will be focused anyway, so select it
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
1222 ;; (if this is not done, modeline is dimmed until first interaction)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1223 (add-hook 'after-make-frame-functions 'select-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1224
97422
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
1225 (defvar tool-bar-mode)
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
1226 (declare-function tool-bar-mode "tool-bar" (&optional arg))
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
1227
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1228 ;; Based on a function by David Reitter <dreitter@inf.ed.ac.uk> ;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1229 ;; see http://lists.gnu.org/archive/html/emacs-devel/2005-09/msg00681.html .
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1230 (defun ns-toggle-toolbar (&optional frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1231 "Switches the tool bar on and off in frame FRAME.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1232 If FRAME is nil, the change applies to the selected frame."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1233 (interactive)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1234 (modify-frame-parameters
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1235 frame (list (cons 'tool-bar-lines
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1236 (if (> (or (frame-parameter frame 'tool-bar-lines) 0) 0)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1237 0 1)) ))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1238 (if (not tool-bar-mode) (tool-bar-mode t)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1239
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1240
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1241
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1242 ;;;; Dialog-related functions.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1243
101491
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
1244
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
1245 (defun ns-show-preferences-help ()
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
1246 "Show NS Preferences panel section in the Emacs manual"
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
1247 (interactive)
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
1248 (info "(emacs)Mac / GNUstep Customization"))
305655dc1e3a * term/ns-win.el (ns-insert-working-text, ns-delete-working-text):
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101427
diff changeset
1249
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1250 ;; Ask user for confirm before printing. Due to Kevin Rodgers.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1251 (defun ns-print-buffer ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1252 "Interactive front-end to `print-buffer': asks for user confirmation first."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1253 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1254 (if (and (interactive-p)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1255 (or (listp last-nonmenu-event)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1256 (and (char-or-string-p (event-basic-type last-command-event))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1257 (memq 'super (event-modifiers last-command-event)))))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1258 (let ((last-nonmenu-event (if (listp last-nonmenu-event)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1259 last-nonmenu-event
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1260 ;; Fake it:
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1261 `(mouse-1 POSITION 1))))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1262 (if (y-or-n-p (format "Print buffer %s? " (buffer-name)))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1263 (print-buffer)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1264 (error "Cancelled")))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1265 (print-buffer)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1266
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1267
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1268 ;;;; Font support.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1269
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1270 ;; Needed for font listing functions under both backend and normal
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1271 (setq scalable-fonts-allowed t)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1272
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1273 ;; Set to use font panel instead
99588
a61ecfde8504 (ns-do-applescript, ns-popup-font-panel): Declare.
Glenn Morris <rgm@gnu.org>
parents: 98512
diff changeset
1274 (declare-function ns-popup-font-panel "nsfns.m" (&optional frame))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1275 (defalias 'generate-fontset-menu 'ns-popup-font-panel)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1276 (defalias 'mouse-set-font 'ns-popup-font-panel)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1277
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1278 ;; nsterm.m
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1279 (defvar ns-input-font)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1280 (defvar ns-input-fontsize)
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1281
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1282 (defun ns-respond-to-change-font ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1283 "Respond to changeFont: event, expecting ns-input-font and\n\
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1284 ns-input-fontsize of new font."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1285 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1286 (modify-frame-parameters (selected-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1287 (list (cons 'font ns-input-font)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1288 (cons 'fontsize ns-input-fontsize)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1289 (set-frame-font ns-input-font))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1290
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1291
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1292 ;; Default fontset for Mac OS X. This is mainly here to show how a fontset
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1293 ;; can be set up manually. Ordinarily, fontsets are auto-created whenever
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1294 ;; a font is chosen by
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1295 (defvar ns-standard-fontset-spec
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1296 ;; Only some code supports this so far, so use uglier XLFD version
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1297 ;; "-ns-*-*-*-*-*-10-*-*-*-*-*-fontset-standard,latin:Courier,han:Kai"
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1298 (mapconcat 'identity
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1299 '("-ns-*-*-*-*-*-10-*-*-*-*-*-fontset-standard"
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1300 "latin:-*-Courier-*-*-*-*-10-*-*-*-*-*-iso10646-1"
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1301 "han:-*-Kai-*-*-*-*-10-*-*-*-*-*-iso10646-1"
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1302 "cyrillic:-*-Trebuchet$MS-*-*-*-*-10-*-*-*-*-*-iso10646-1")
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1303 ",")
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1304 "String of fontset spec of the standard fontset.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1305 This defines a fontset consisting of the Courier and other fonts that
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1306 come with OS X\".
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1307 See the documentation of `create-fontset-from-fontset-spec for the format.")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1308
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1309 ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1310 (if (fboundp 'new-fontset)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1311 (progn
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1312 ;; Setup the default fontset.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1313 (setup-default-fontset)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1314 ;; Create the standard fontset.
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1315 (create-fontset-from-fontset-spec ns-standard-fontset-spec t)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1316
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1317 ;;(push (cons 'font "-ns-*-*-*-*-*-10-*-*-*-*-*-fontset-standard")
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1318 ;; default-frame-alist)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1319
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1320 ;; Add some additional scripts to var we use for fontset generation.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1321 (setq script-representative-chars
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1322 (cons '(kana #xff8a)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1323 (cons '(symbol #x2295 #x2287 #x25a1)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1324 script-representative-chars)))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1325
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1326
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1327 ;;;; Pasteboard support.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1328
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1329 (declare-function ns-get-cut-buffer-internal "nsselect.m" (buffer))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1330
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1331 (defun ns-get-pasteboard ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1332 "Returns the value of the pasteboard."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1333 (ns-get-cut-buffer-internal 'PRIMARY))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1334
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1335 (declare-function ns-store-cut-buffer-internal "nsselect.m" (buffer string))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1336
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1337 (defun ns-set-pasteboard (string)
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1338 "Store STRING into the pasteboard of the Nextstep display server."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1339 ;; Check the data type of STRING.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1340 (if (not (stringp string)) (error "Nonstring given to pasteboard"))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1341 (ns-store-cut-buffer-internal 'PRIMARY string))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1342
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1343 ;; We keep track of the last text selected here, so we can check the
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1344 ;; current selection against it, and avoid passing back our own text
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
1345 ;; from x-cut-buffer-or-selection-value.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1346 (defvar ns-last-selected-text nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1347
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
1348 (defun x-select-text (text &optional push)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1349 "Put TEXT, a string, on the pasteboard."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1350 ;; Don't send the pasteboard too much text.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1351 ;; It becomes slow, and if really big it causes errors.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1352 (ns-set-pasteboard text)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1353 (setq ns-last-selected-text text))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1354
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1355 ;; Return the value of the current Nextstep selection. For
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1356 ;; compatibility with older Nextstep applications, this checks cut
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1357 ;; buffer 0 before retrieving the value of the primary selection.
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
1358 (defun x-cut-buffer-or-selection-value ()
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1359 (let (text)
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1360
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1361 ;; Consult the selection, then the cut buffer. Treat empty strings
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1362 ;; as if they were unset.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1363 (or text (setq text (ns-get-pasteboard)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1364 (if (string= text "") (setq text nil))
96757
18b856a0216f (ns-handle-switch): Simplify. Handle the numeric case.
Glenn Morris <rgm@gnu.org>
parents: 96748
diff changeset
1365
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1366 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1367 ((not text) nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1368 ((eq text ns-last-selected-text) nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1369 ((string= text ns-last-selected-text)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1370 ;; Record the newer string, so subsequent calls can use the `eq' test.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1371 (setq ns-last-selected-text text)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1372 nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1373 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1374 (setq ns-last-selected-text text)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1375
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1376 (defun ns-copy-including-secondary ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1377 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1378 (call-interactively 'kill-ring-save)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1379 (ns-store-cut-buffer-internal 'SECONDARY
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1380 (buffer-substring (point) (mark t))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1381 (defun ns-paste-secondary ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1382 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1383 (insert (ns-get-cut-buffer-internal 'SECONDARY)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1384
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1385 ;; PENDING: not sure what to do here.. for now interprog- are set in
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1386 ;; init-fn-keys, and unsure whether these x- settings have an effect.
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
1387 ;;(setq interprogram-cut-function 'x-select-text
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
1388 ;; interprogram-paste-function 'x-cut-buffer-or-selection-value)
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1389 ;; These only needed if above not working.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1390
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1391 (set-face-background 'region "ns_selection_color")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1392
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1393
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1394
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1395 ;;;; Scrollbar handling.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1396
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1397 (global-set-key [vertical-scroll-bar down-mouse-1] 'ns-handle-scroll-bar-event)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1398 (global-unset-key [vertical-scroll-bar mouse-1])
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1399 (global-unset-key [vertical-scroll-bar drag-mouse-1])
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1400
97422
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
1401 (declare-function scroll-bar-scale "scroll-bar" (num-denom whole))
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
1402
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1403 (defun ns-scroll-bar-move (event)
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
1404 "Scroll the frame according to a Nextstep scroller event."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1405 (interactive "e")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1406 (let* ((pos (event-end event))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1407 (window (nth 0 pos))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1408 (scale (nth 2 pos)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1409 (save-excursion
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1410 (set-buffer (window-buffer window))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1411 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1412 ((eq (car scale) (cdr scale))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1413 (goto-char (point-max)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1414 ((= (car scale) 0)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1415 (goto-char (point-min)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1416 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1417 (goto-char (+ (point-min) 1
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1418 (scroll-bar-scale scale (- (point-max) (point-min)))))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1419 (beginning-of-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1420 (set-window-start window (point))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1421 (vertical-motion (/ (window-height window) 2) window))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1422
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1423 (defun ns-handle-scroll-bar-event (event)
97348
bf45b2dcafff * startup.el (command-line-ns-option-alist): Use ignore instead of ns-ignore-0-arg. * term/ns-win.el (ns-ignore-0-arg, mouse-extend-region) (ns-win-suspend-error, ns-yes-or-no-p, colors): Drop. (ns-alternatives-map): New variable. (x-set-up-function-keys): Use it. (global): Comment out 'put backspace ascii-character...' and friends. Move function-key-map into ns-alternatives-map. Don't call precompute-menubar-bindings. Don't set anything connected with browse-url. (after-make-frame-functions): Clarify comment why a hook is added.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97279
diff changeset
1424 "Handle scroll bar EVENT to emulate Nextstep style scrolling."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1425 (interactive "e")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1426 (let* ((position (event-start event))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1427 (bar-part (nth 4 position))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1428 (window (nth 0 position))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1429 (old-window (selected-window)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1430 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1431 ((eq bar-part 'ratio)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1432 (ns-scroll-bar-move event))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1433 ((eq bar-part 'handle)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1434 (if (eq window (selected-window))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1435 (track-mouse (ns-scroll-bar-move event))
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1436 ;; track-mouse faster for selected window, slower for unselected.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1437 (ns-scroll-bar-move event)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1438 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1439 (select-window window)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1440 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1441 ((eq bar-part 'up)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1442 (goto-char (window-start window))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1443 (scroll-down 1))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1444 ((eq bar-part 'above-handle)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1445 (scroll-down))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1446 ((eq bar-part 'below-handle)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1447 (scroll-up))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1448 ((eq bar-part 'down)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1449 (goto-char (window-start window))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1450 (scroll-up 1)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1451 (select-window old-window)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1452
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1453
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1454 ;;;; Color support.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1455
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1456 (declare-function ns-list-colors "nsfns.m" (&optional frame))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1457
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1458 (defvar x-colors (ns-list-colors)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1459 "The list of colors defined in non-PANTONE color files.")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1460
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
1461 (defun xw-defined-colors (&optional frame)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1462 "Return a list of colors supported for a particular frame.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1463 The argument FRAME specifies which frame to try.
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1464 The value may be different for frames on different Nextstep displays."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1465 (or frame (setq frame (selected-frame)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1466 (let ((all-colors x-colors)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1467 (this-color nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1468 (defined-colors nil))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1469 (while all-colors
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1470 (setq this-color (car all-colors)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1471 all-colors (cdr all-colors))
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1472 ;; (and (face-color-supported-p frame this-color t)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1473 (setq defined-colors (cons this-color defined-colors))) ;;)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1474 defined-colors))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1475
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1476 (declare-function ns-set-alpha "nsfns.m" (color alpha))
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1477
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1478 ;; Convenience and work-around for fact that set color fns now require named.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1479 (defun ns-set-background-alpha (alpha)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1480 "Sets alpha (opacity) of background.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1481 Set from 0.0 (fully transparent) to 1.0 (fully opaque; default).
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1482 Note, tranparency works better on Tiger (10.4) and higher."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1483 (interactive "nSet background alpha to: ")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1484 (let ((bgcolor (cdr (assq 'background-color (frame-parameters)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1485 (set-frame-parameter (selected-frame)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1486 'background-color (ns-set-alpha bgcolor alpha))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1487
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1488 ;; Functions for color panel + drag
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1489 (defun ns-face-at-pos (pos)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1490 (let* ((frame (car pos))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1491 (frame-pos (cons (cadr pos) (cddr pos)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1492 (window (window-at (car frame-pos) (cdr frame-pos) frame))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1493 (window-pos (coordinates-in-window-p frame-pos window))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1494 (buffer (window-buffer window))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1495 (edges (window-edges window)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1496 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1497 ((not window-pos)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1498 nil)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1499 ((eq window-pos 'mode-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1500 'modeline)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1501 ((eq window-pos 'vertical-line)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1502 'default)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1503 ((consp window-pos)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1504 (save-excursion
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1505 (set-buffer buffer)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1506 (let ((p (car (compute-motion (window-start window)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1507 (cons (nth 0 edges) (nth 1 edges))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1508 (window-end window)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1509 frame-pos
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1510 (- (window-width window) 1)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1511 nil
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1512 window))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1513 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1514 ((eq p (window-point window))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1515 'cursor)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1516 ((and mark-active (< (region-beginning) p) (< p (region-end)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1517 'region)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1518 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1519 (let ((faces (get-char-property p 'face window)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1520 (if (consp faces) (car faces) faces)))))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1521 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1522 nil))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1523
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1524 (defvar ns-input-color) ; nsterm.m
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1525
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1526 (defun ns-set-foreground-at-mouse ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1527 "Set the foreground color at the mouse location to ns-input-color."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1528 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1529 (let* ((pos (mouse-position))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1530 (frame (car pos))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1531 (face (ns-face-at-pos pos)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1532 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1533 ((eq face 'cursor)
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1534 (modify-frame-parameters frame (list (cons 'cursor-color
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1535 ns-input-color))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1536 ((not face)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1537 (modify-frame-parameters frame (list (cons 'foreground-color
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1538 ns-input-color))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1539 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1540 (set-face-foreground face ns-input-color frame)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1541
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1542 (defun ns-set-background-at-mouse ()
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1543 "Set the background color at the mouse location to ns-input-color."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1544 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1545 (let* ((pos (mouse-position))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1546 (frame (car pos))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1547 (face (ns-face-at-pos pos)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1548 (cond
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1549 ((eq face 'cursor)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1550 (modify-frame-parameters frame (list (cons 'cursor-color
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1551 ns-input-color))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1552 ((not face)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1553 (modify-frame-parameters frame (list (cons 'background-color
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1554 ns-input-color))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1555 (t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1556 (set-face-background face ns-input-color frame)))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1557
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1558 ;; Set some options to be as Nextstep-like as possible.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1559 (setq frame-title-format t
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1560 icon-title-format t)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1561
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1562
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1563 (defvar ns-initialized nil
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1564 "Non-nil if Nextstep windowing has been initialized.")
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1565
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1566 (declare-function ns-list-services "nsfns.m" ())
101354
8802a9b050fb * term/ns-win.el (ns-show-manual): Fix node name. (x-open-connection) Fix typo in declaration filename.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 101087
diff changeset
1567 (declare-function x-open-connection "nsfns.m"
97422
6e551caf98f6 Add declarations for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 97348
diff changeset
1568 (display &optional xrm-string must-succeed))
96699
05aeed7284d3 Fix header format and permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
1569
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1570 ;; Do the actual Nextstep Windows setup here; the above code just
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1571 ;; defines functions and variables that we use now.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1572 (defun ns-initialize-window-system ()
96859
2e1af3a60ab7 Standardize references to "Nextstep" in comments, messages, and docstrings.
Chong Yidong <cyd@stupidchicken.com>
parents: 96814
diff changeset
1573 "Initialize Emacs for Nextstep (Cocoa / GNUstep) windowing."
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1574
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1575 ;; PENDING: not needed?
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1576 (setq command-line-args (ns-handle-args command-line-args))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1577
96870
30f1368d9cf6 * term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96859
diff changeset
1578 (x-open-connection (system-name) nil t)
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1579
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1580 (dolist (service (ns-list-services))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1581 (if (eq (car service) 'undefined)
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1582 (ns-define-service (cdr service))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1583 (define-key global-map (vector (car service))
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1584 (ns-define-service (cdr service)))))
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1585
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1586 (if (and (eq (get-lisp-resource nil "NXAutoLaunch") t)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1587 (eq (get-lisp-resource nil "HideOnAutoLaunch") t))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1588 (add-hook 'after-init-hook 'ns-do-hide-emacs))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1589
96748
92f7bbffcb45 Require CL; fix up comment style; reindent.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96707
diff changeset
1590 ;; FIXME: This will surely lead to "MODIFIED OUTSIDE CUSTOM" warnings.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1591 (menu-bar-mode (if (get-lisp-resource nil "Menus") 1 -1))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1592 (mouse-wheel-mode 1)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1593
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1594 (setq ns-initialized t))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1595
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1596 (add-to-list 'handle-args-function-alist '(ns . ns-handle-args))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1597 (add-to-list 'frame-creation-function-alist '(ns . x-create-frame-with-faces))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1598 (add-to-list 'window-system-initialization-alist '(ns . ns-initialize-window-system))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1599
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1600
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1601 (provide 'ns-win)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1602
96684
9a85c163883d Add arch tagline
Miles Bader <miles@gnu.org>
parents: 96675
diff changeset
1603 ;; arch-tag: eb138a45-4e2e-4d68-b1c9-a39665731644
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1604 ;;; ns-win.el ends here