-*- indented-text -*-
+to 21.2.12 "Clio"
+-- event-stream unification for MS Windows from Andy Piper
+-- Determine best visual to use to avoid flashing from IENAGA Kazuyuki
+-- Fix for new Berkeley DB library from Paul Keusemann/Gregory Neal Shapiro
+-- Various package-ui fixes from Jan Vroonhof
+-- Fix for doubled font-locking during buffer reversion
+-- KFM browsing support from Neal Becker
+-- info fix from Didier Verna
+-- Build bug fixes from Martin Buchholz
+-- Various Documentation updates
+-- X-Face support for MS Windows native build from Gleb Arshinov
+
to 21.2 beta11 "Calliope"
-- Dialog box fix from Jan Vroonhof
-- unified mswindows and tty event loops from Andy Piper
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
+1999-03-04 Martin Buchholz <martin@xemacs.org>
+
+ * Makefile.in.in (top_distclean): Remove confdefs.h as well.
+
+1999-03-03 Martin Buchholz <martin@xemacs.org>
+
+ * configure.in:
+ `uname -v` -> "`uname -v`":
+ backquoted expressions need additional double
+ quotes to be a single token.
+ Use separate if's to avoid extra process invocations.
+
+1999-01-05 Gunnar Evermann <ge204@eng.cam.ac.uk>
+
+ * PROBLEMS: Document crashes on SPARC with gcc 2.8.1.
+
1999-03-01 XEmacs Build Bot <builds@cvs.xemacs.org>
* XEmacs 21.2.11 is released
* config.guess: Synched with latest FSF version.
-1998-07-12 Björn Torkelsson <torkel@hpc2n.umu.se>
+1998-07-12 Bjrn Torkelsson <torkel@hpc2n.umu.se>
* Makefile.in: added LDFLAGS.
## `make distclean' should leave only the files that were in the
## distribution.
top_distclean=\
- $(RM) config.status config.log config-tmp-* build-install Installation ; \
+ $(RM) config.status config.log confdefs.h config-tmp-* build-install Installation ; \
$(RM) core .sbinit lock/* GNUmakefile Makefile Makefile.in ; \
$(RM) lisp/finder-inf.el* Installation.el Installation.elc ; \
$(RM) packages mule-packages site-lisp
===============================
** General
+*** Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
+without also using `-fno-schedule-insns'.
+
+gcc will generate incorrect code otherwise, typically resulting in
+crashes in the function skip-syntax-backward.
+
*** egcs-1.1
There have been reports of egcs-1.1 not compiling XEmacs correctly on
case "$with_dialogs" in
motif )
echo " Using Motif dialog boxes."
- if test "$unexec" = "unexaix.o" -a `uname -v` = 4 -a `uname -r` -ge 3; then
+ if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
echo " *WARNING* The Motif dialog boxes cause problems on AIX 4.3 and higher."
echo " We recommend using the Athena dialog boxes instead."
echo " Install libXaw and re-run configure with --with-dialogs='athena'."
echo " Read the PROBLEMS file for more information."
- fi
+ fi; fi
;;
athena ) echo " Using Athena dialog boxes." ;;
athena3d ) echo " Using Athena-3d dialog boxes." ;;
case "$with_dialogs" in
motif )
echo " Using Motif dialog boxes."
- if test "$unexec" = "unexaix.o" -a `uname -v` = 4 -a `uname -r` -ge 3; then
+ if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
echo " *WARNING* The Motif dialog boxes cause problems on AIX 4.3 and higher."
echo " We recommend using the Athena dialog boxes instead."
echo " Install libXaw and re-run configure with --with-dialogs='athena'."
echo " Read the PROBLEMS file for more information."
- fi
+ fi; fi
;;
athena ) echo " Using Athena dialog boxes." ;;
athena3d ) echo " Using Athena-3d dialog boxes." ;;
(package-get-update-base-entry (quote
(ediff
(standards-version 1.0
- version "1.17"
+ version "1.18"
author-version "2.72"
- date "1999-02-16"
- build-date "1999-03-01"
+ date "1999-03-03"
+ build-date "1999-03-05"
maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
distribution stable
priority medium
category "prog"
dump nil
description "Interface over GNU patch."
- filename "ediff-1.17-pkg.tar.gz"
- md5sum "b69c621d1943a9b668374f0babd243f3"
- size 281481
+ filename "ediff-1.18-pkg.tar.gz"
+ md5sum "ece3aca382d80a7c03d71766987b9f2f"
+ size 281635
provides (ediff)
requires (pcl-cvs elib dired xemacs-base)
type regular
(package-get-update-base-entry (quote
(locale
(standards-version 1.0
- version "1.11"
- author-version "21.0b62"
- date "1998-07-24"
- build-date "1999-02-02"
+ version "1.12"
+ author-version "21.0b64"
+ date "1999-02-02"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution mule
priority high
category "mule"
dump nil
description "Localized menubars and localized splash screens."
- filename "locale-1.11-pkg.tar.gz"
- md5sum "245f5110c2adb4411e3f4e2db014c4bc"
- size 32690
+ filename "locale-1.12-pkg.tar.gz"
+ md5sum "fbdb329b8e57e5eaf8c8fb9488357312"
+ size 33900
provides ()
requires (mule-base)
type regular
(package-get-update-base-entry (quote
(psgml
(standards-version 1.0
- version "1.11"
+ version "1.12"
author-version "1.01"
- date "1998-07-06"
- build-date "1999-02-02"
+ date "1999-03-05"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution stable
priority medium
category "oa"
dump nil
description "Validated HTML/SGML editing."
- filename "psgml-1.11-pkg.tar.gz"
- md5sum "e6d5a593138aa8861a5a178097c05594"
- size 425005
+ filename "psgml-1.12-pkg.tar.gz"
+ md5sum "7303b3a604659b64f24b0847b3a686d5"
+ size 425458
provides (psgml sgml)
requires (edit-utils)
type regular
(package-get-update-base-entry (quote
(viper
(standards-version 1.0
- version "1.13"
+ version "1.14"
author-version "3.061"
- date "1999-02-17"
- build-date "1999-03-01"
+ date "1999-03-03"
+ build-date "1999-03-05"
maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
distribution stable
priority low
category "wp"
dump nil
description "VI emulation support."
- filename "viper-1.13-pkg.tar.gz"
- md5sum "b369c53c499c3ab2e1478031ddaf6071"
- size 317868
+ filename "viper-1.14-pkg.tar.gz"
+ md5sum "0e118822906e195dc352f28c8efc01e0"
+ size 317899
provides (viper)
requires (xemacs-base)
type regular
(package-get-update-base-entry (quote
(reftex
(standards-version 1.0
- version "1.11"
- author-version "3.42"
- date "1998-08-11"
- build-date "1999-02-02"
+ version "1.12"
+ author-version "3.43"
+ date "1999-03-01"
+ build-date "1999-03-02"
maintainer "Carsten Dominik <dominik@strw.LeidenUniv.nl>"
distribution stable
priority medium
category "wp"
dump nil
description "Emacs support for LaTeX cross-references, citations.."
- filename "reftex-1.11-pkg.tar.gz"
- md5sum "efe43ac8ef52b9f8cf949783e30bb4a9"
- size 209331
+ filename "reftex-1.12-pkg.tar.gz"
+ md5sum "73efb58d055143d9322024d97fcca479"
+ size 215874
provides (reftex)
requires (fsf-compat xemacs-base)
type regular
(package-get-update-base-entry (quote
(c-support
(standards-version 1.0
- version "1.11"
- author-version "21.0b63"
- date "1999-02-06"
- build-date "1999-03-01"
+ version "1.12"
+ author-version "21.0b64"
+ date "1999-03-02"
+ build-date "1999-03-02"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution contrib
priority low
category "prog"
dump nil
description "Basic single-file add-ons for editing C code."
- filename "c-support-1.11-pkg.tar.gz"
- md5sum "d93566b09c3d9e79ac12a644250e7ca0"
- size 69876
+ filename "c-support-1.12-pkg.tar.gz"
+ md5sum "a793cd83bb595d34771332a46d2abfd4"
+ size 69913
provides (c-comment-edit cmacexp ctypes hideif hideshow)
requires (cc-mode xemacs-base)
type regular
(package-get-update-base-entry (quote
(misc-games
(standards-version 1.0
- version "1.09"
- author-version "21.0b62"
- date "1998-03-22"
- build-date "1999-02-02"
+ version "1.10"
+ author-version "21.0b64"
+ date "1999-03-04"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution stable
priority low
category "games"
dump nil
description "Other amusements and diversions."
- filename "misc-games-1.09-pkg.tar.gz"
- md5sum "a4e7e18e7cf3ce771ad65dae24967603"
- size 165698
+ filename "misc-games-1.10-pkg.tar.gz"
+ md5sum "d5d5c6c074fab908ba48a8a6ccdc4273"
+ size 165902
provides (decipher gomoku hanoi life morse rot13)
requires (xemacs-base)
type single
(package-get-update-base-entry (quote
(gnus
(standards-version 1.0
- version "1.38"
- author-version "5.6.45"
+ version "1.39"
+ author-version "5.6.45x1"
date "1999-02-17"
- build-date "1999-03-01"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution stable
priority medium
category "comm"
dump nil
description "The Gnus Newsreader and Mailreader."
- filename "gnus-1.38-pkg.tar.gz"
- md5sum "22f00c391c4680d0a4fe53a5e6b85f40"
- size 1869217
+ filename "gnus-1.39-pkg.tar.gz"
+ md5sum "5413e7508693bfcb16c5a4a0e0bce7c7"
+ size 1869261
provides (gnus message)
requires (gnus tm apel w3 mh-e mailcrypt rmail mail-lib xemacs-base)
type regular
(package-get-update-base-entry (quote
(w3
(standards-version 1.0
- version "1.12"
- author-version "4.0pre39"
- date "1999-01-08"
- build-date "1999-03-01"
+ version "1.13"
+ author-version "4.0pre39x1"
+ date "1999-03-02"
+ build-date "1999-03-02"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution experimental
priority high
category "comm"
dump nil
description "A Web browser."
- filename "w3-1.12-pkg.tar.gz"
- md5sum "e7afce350e99f71dfde7ec752290670c"
- size 679826
+ filename "w3-1.13-pkg.tar.gz"
+ md5sum "8e9f70ef2c4b43090cfbf86974517c66"
+ size 682040
provides (w3 url)
requires (w3 mail-lib xemacs-base)
type regular
(package-get-update-base-entry (quote
(vm
(standards-version 1.0
- version "1.16"
+ version "1.17"
author-version "6.67"
date "1998-09-22"
- build-date "1999-03-01"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution stable
priority medium
category "comm"
dump nil
description "An Emacs mailer."
- filename "vm-1.16-pkg.tar.gz"
- md5sum "e5ad7011473b17f7d1e9521407199b64"
- size 603773
+ filename "vm-1.17-pkg.tar.gz"
+ md5sum "9a95c6264135124db979bce745bf0e07"
+ size 609688
provides (vm)
requires (mail-lib xemacs-base)
type regular
(package-get-update-base-entry (quote
(sounds-wav
(standards-version 1.0
- version "1.06"
- author-version "21.0b62"
- date "1998-06-30"
- build-date "1999-02-02"
+ version "1.07"
+ author-version "21.0b64"
+ date "1999-02-02"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution stable
priority high
category "libs"
dump nil
description "XEmacs Microsoft sound files."
- filename "sounds-wav-1.06-pkg.tar.gz"
- md5sum "7f3dfd84e88b418ea58233bde7d859fc"
- size 148545
+ filename "sounds-wav-1.07-pkg.tar.gz"
+ md5sum "60a70b85e8711fb1c9a1c7d0f4bf8ee0"
+ size 149045
provides ()
requires ()
type regular
(package-get-update-base-entry (quote
(sounds-au
(standards-version 1.0
- version "1.06"
- author-version "21.0b62"
- date "1998-06-30"
- build-date "1999-02-02"
+ version "1.07"
+ author-version "21.0b64"
+ date "1999-02-02"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution stable
priority high
category "libs"
dump nil
description "XEmacs Sun sound files."
- filename "sounds-au-1.06-pkg.tar.gz"
- md5sum "aa4a6080061e802b72156f4ce59e9561"
- size 125744
+ filename "sounds-au-1.07-pkg.tar.gz"
+ md5sum "4b5acd296b50102e50565650d9d7ec0b"
+ size 126184
provides ()
requires ()
type regular
(package-get-update-base-entry (quote
(mail-lib
(standards-version 1.0
- version "1.21"
- author-version "21.0b62"
- date "1999-01-20"
- build-date "1999-02-02"
+ version "1.22"
+ author-version "21.0b64"
+ date "1999-03-05"
+ build-date "1999-03-05"
maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
distribution stable
priority medium
category "libs"
dump nil
description "Fundamental lisp files for providing email support."
- filename "mail-lib-1.21-pkg.tar.gz"
- md5sum "4011698f9a440406af74ee1694e5539b"
- size 131218
+ filename "mail-lib-1.22-pkg.tar.gz"
+ md5sum "70a947a1980887430c53032e3dfcbe4f"
+ size 131476
provides (browse-url highlight-headers mail-abbrevs mail-extr mail-utils reporter rfc822 rmail-mini rmailout sendmail smtpmail)
requires (xemacs-base)
type regular
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
1999-03-01 XEmacs Build Bot <builds@cvs.xemacs.org>
* XEmacs 21.2.11 is released
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
+1999-03-05 SL Baur <steve@xemacs.org>
+
+ * menubar-items.el (default-menubar): Add kfm browsing support.
+ From Neal Becker <nbecker@fred.net>
+
+1999-03-03 Steven Baur <steve@gneiss.etl.go.jp>
+
+ * font-lock.el (font-lock-revert-cleanup): Null out to avoid repeated
+ calls to font-lock during buffer reversion.
+
+1999-02-12 Didier Verna <verna@inf.enst.fr>
+
+ * info.el (Info-build-node-completions): unconditionally widen the
+ tag table buffer.
+
+1999-02-19 Paul Stodghill <stodghil@cs.cornell.edu>
+
+ * x-faces.el (x-init-face-from-resources):
+ Only set fonts in the 'x locale.
+
+1999-03-04 Adrian Aichner <aichner@ecf.teradyne.com>
+
+ * package-ui.el (pui-install-selected-packages): Don't throw on
+ `package-admin-delete-binary-package' returning nil since it's
+ normal. Reindent function.
+ (pui-add-required-packages): Handle case where packages selected
+ for installation have never been installed.
+
+1999-03-03 Martin Buchholz <martin@xemacs.org>
+
+ * menubar-items.el (default-menubar):
+ Implement the ``Mule->Set coding system of process'' menu item.
+
+1999-02-18 Martin Buchholz <martin@xemacs.org>
+
+ * files.el (auto-mode-alist): Use c-mode for *.i pre-processed cpp
+ files
+ - Change some `if's to `when's
+
1999-03-01 XEmacs Build Bot <builds@cvs.xemacs.org>
* XEmacs 21.2.11 is released
;; If any elt of directory-abbrev-alist matches this name,
;; abbreviate accordingly.
(while tail
- (if (string-match (car (car tail)) filename)
- (setq filename
- (concat (cdr (car tail)) (substring filename (match-end 0)))))
+ (when (string-match (car (car tail)) filename)
+ (setq filename
+ (concat (cdr (car tail)) (substring filename (match-end 0)))))
(setq tail (cdr tail))))
- (if hack-homedir
- (progn
- ;; Compute and save the abbreviated homedir name.
- ;; We defer computing this until the first time it's needed, to
- ;; give time for directory-abbrev-alist to be set properly.
- ;; We include a slash at the end, to avoid spurious matches
- ;; such as `/usr/foobar' when the home dir is `/usr/foo'.
- (or abbreviated-home-dir
- (setq abbreviated-home-dir
- (let ((abbreviated-home-dir "$foo"))
- (concat "\\`" (regexp-quote (abbreviate-file-name
- (expand-file-name "~")))
- "\\(/\\|\\'\\)"))))
- ;; If FILENAME starts with the abbreviated homedir,
- ;; make it start with `~' instead.
- (if (and (string-match abbreviated-home-dir filename)
- ;; If the home dir is just /, don't change it.
- (not (and (= (match-end 0) 1) ;#### unix-specific
- (= (aref filename 0) ?/)))
- (not (and (memq system-type '(ms-dos windows-nt))
- (save-match-data
- (string-match "^[a-zA-Z]:/$" filename)))))
- (setq filename
- (concat "~"
- (substring filename
- (match-beginning 1) (match-end 1))
- (substring filename (match-end 0)))))))
+ (when hack-homedir
+ ;; Compute and save the abbreviated homedir name.
+ ;; We defer computing this until the first time it's needed, to
+ ;; give time for directory-abbrev-alist to be set properly.
+ ;; We include a slash at the end, to avoid spurious matches
+ ;; such as `/usr/foobar' when the home dir is `/usr/foo'.
+ (or abbreviated-home-dir
+ (setq abbreviated-home-dir
+ (let ((abbreviated-home-dir "$foo"))
+ (concat "\\`" (regexp-quote (abbreviate-file-name
+ (expand-file-name "~")))
+ "\\(/\\|\\'\\)"))))
+ ;; If FILENAME starts with the abbreviated homedir,
+ ;; make it start with `~' instead.
+ (if (and (string-match abbreviated-home-dir filename)
+ ;; If the home dir is just /, don't change it.
+ (not (and (= (match-end 0) 1) ;#### unix-specific
+ (= (aref filename 0) ?/)))
+ (not (and (memq system-type '(ms-dos windows-nt))
+ (save-match-data
+ (string-match "^[a-zA-Z]:/$" filename)))))
+ (setq filename
+ (concat "~"
+ (substring filename
+ (match-beginning 1) (match-end 1))
+ (substring filename (match-end 0))))))
filename)))
(defcustom find-file-not-true-dirname-list nil
(defvar auto-mode-alist
'(("\\.te?xt\\'" . text-mode)
- ("\\.[ch]\\'" . c-mode)
+ ("\\.[chi]\\'" . c-mode)
("\\.el\\'" . emacs-lisp-mode)
("\\.\\(?:[CH]\\|cc\\|hh\\)\\'" . c++-mode)
("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode)
;; If the buffer has just been reverted, normally that turns off
;; Font Lock mode. So turn the mode back on if necessary.
-(defalias 'font-lock-revert-cleanup 'turn-on-font-lock)
+;; sb 1999-03-03 -- The above comment no longer appears to be operative as
+;; the first call to normal-mode *will* restore the font-lock state and
+;; this call forces a second font-locking to occur when reverting a buffer,
+;; which is wasteful at best.
+;(defalias 'font-lock-revert-cleanup 'turn-on-font-lock)
+(defun font-lock-revert-cleanup ())
\f
;; Various functions.
(let ((compl (Info-build-annotation-completions)))
(save-excursion
(save-restriction
+ (widen)
(if (marker-buffer Info-tag-table-marker)
(progn
(set-buffer (marker-buffer Info-tag-table-marker))
(cons (list (buffer-substring (match-beginning 1)
(match-end 1)))
compl))))
- (widen)
(goto-char (point-min))
(while (search-forward "\n\^_" nil t)
(forward-line 1)
["Show Message Log" show-message-log]
)
- ,@(if (featurep 'mule)
- '(("Mule"
- ("Describe language support")
- ("Set language environment")
- "--"
- ["Toggle input method" toggle-input-method]
- ["Select input method" select-input-method]
- ["Describe input method" describe-input-method]
- "--"
- ["Describe current coding systems"
- describe-current-coding-system]
- ["Set coding system of buffer file"
- set-buffer-file-coding-system]
- ;; not implemented yet
- ["Set coding system of terminal"
- set-terminal-coding-system :active nil]
- ;; not implemented yet
- ["Set coding system of keyboard"
- set-keyboard-coding-system :active nil]
- ;; not implemented yet
- ["Set coding system of process"
- set-current-process-coding-system :active nil]
- "--"
- ["Show character table" view-charset-by-menu]
- ;; not implemented yet
- ["Show diagnosis for MULE" mule-diag :active nil]
- ["Show many languages" view-hello-file])))
+ ,@(when (featurep 'mule)
+ '(("Mule"
+ ("Describe language support")
+ ("Set language environment")
+ "--"
+ ["Toggle input method" toggle-input-method]
+ ["Select input method" select-input-method]
+ ["Describe input method" describe-input-method]
+ "--"
+ ["Describe current coding systems"
+ describe-current-coding-system]
+ ["Set coding system of buffer file"
+ set-buffer-file-coding-system]
+ ;; not implemented yet
+ ["Set coding system of terminal"
+ set-terminal-coding-system :active nil]
+ ;; not implemented yet
+ ["Set coding system of keyboard"
+ set-keyboard-coding-system :active nil]
+ ["Set coding system of process"
+ set-buffer-process-coding-system
+ :active (get-buffer-process (current-buffer))]
+ "--"
+ ["Show character table" view-charset-by-menu]
+ ;; not implemented yet
+ ["Show diagnosis for MULE" mule-diag :active nil]
+ ["Show many languages" view-hello-file])))
("Apps"
["Read Mail (VM)..." vm
["Set..." customize-customized]
["Apropos..." customize-apropos]
["Browse..." customize-browse])
-
+
("Manage Packages"
("Add Download Site"
:filter (lambda (&rest junk)
["Help" (Info-goto-node "(xemacs)Packages")])
"---"
-
+
("Editing Options"
["Overstrike"
(progn
(setq overwrite-mode (if overwrite-mode nil 'overwrite-mode-textual))
(customize-set-variable 'overwrite-mode overwrite-mode))
:style toggle :selected overwrite-mode]
- ["Case Sensitive Search"
- (customize-set-variable 'case-fold-search
+ ["Case Sensitive Search"
+ (customize-set-variable 'case-fold-search
(setq case-fold-search (not case-fold-search)))
:style toggle :selected (not case-fold-search)]
- ["Case Matching Replace"
+ ["Case Matching Replace"
(customize-set-variable 'case-replace (not case-replace))
:style toggle :selected case-replace]
["Auto Delete Selection"
:style toggle
:selected (and (boundp 'pending-delete-mode) pending-delete-mode)
:active (boundp 'pending-delete-mode)]
- ["Active Regions"
+ ["Active Regions"
(customize-set-variable 'zmacs-regions (not zmacs-regions))
:style toggle :selected zmacs-regions]
- ["Mouse Paste At Text Cursor"
+ ["Mouse Paste At Text Cursor"
(customize-set-variable 'mouse-yank-at-point (not mouse-yank-at-point))
:style toggle :selected mouse-yank-at-point]
("Newline at end of file..."
(customize-set-variable 'require-final-newline 'ask)
:style radio :selected (and require-final-newline
(not (eq require-final-newline t)))])
- ["Add Newline When Moving Past End"
- (customize-set-variable 'next-line-add-newlines
+ ["Add Newline When Moving Past End"
+ (customize-set-variable 'next-line-add-newlines
(not next-line-add-newlines))
:style toggle :selected next-line-add-newlines]
)
("General Options"
- ["Teach Extended Commands"
+ ["Teach Extended Commands"
(customize-set-variable 'teach-extended-commands-p
(not teach-extended-commands-p))
:style toggle :selected teach-extended-commands-p]
["Debug On Error"
(customize-set-variable 'debug-on-error (not debug-on-error))
:style toggle :selected debug-on-error]
- ["Debug On Quit"
+ ["Debug On Quit"
(customize-set-variable 'debug-on-quit (not debug-on-quit))
:style toggle :selected debug-on-quit]
)
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'statement))
:active (boundp 'ps-paper-type)]
- ["Executive"
+ ["Executive"
(customize-set-variable 'ps-paper-type 'executive)
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'executive))
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'tabloid))
:active (boundp 'ps-paper-type)]
- ["Ledger"
+ ["Ledger"
(customize-set-variable 'ps-paper-type 'ledger)
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'ledger))
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a3))
:active (boundp 'ps-paper-type)]
- ["A4"
+ ["A4"
(customize-set-variable 'ps-paper-type 'a4)
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4))
:active (boundp 'ps-paper-type)]
- ["A4small"
+ ["A4small"
(customize-set-variable 'ps-paper-type 'a4small)
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4small))
:active (boundp 'ps-paper-type)]
- ["B4"
+ ["B4"
(customize-set-variable 'ps-paper-type 'b4)
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b4))
:active (boundp 'ps-paper-type)]
- ["B5"
+ ["B5"
(customize-set-variable 'ps-paper-type 'b5)
:style radio
:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b5))
(set-face-background 'default original-face-background)))
(t
(customize-set-variable 'ps-print-color-p t)
- (setq original-face-background
+ (setq original-face-background
(face-background-instance 'default))
(set-face-background 'default "white")))
- :style toggle
+ :style toggle
:selected (and (boundp 'ps-print-color-p) ps-print-color-p)
:active (boundp 'ps-print-color-p)])
("\"Other Window\" Location"
["Always in Same Frame"
- (customize-set-variable
+ (customize-set-variable
'get-frame-for-buffer-default-instance-limit nil)
:style radio
:selected (null get-frame-for-buffer-default-instance-limit)]
:selected (eq 0 get-frame-for-buffer-default-instance-limit)]
"-----"
["Temp Buffers Always in Same Frame"
- (customize-set-variable 'temp-buffer-show-function
+ (customize-set-variable 'temp-buffer-show-function
'show-temp-buffer-in-current-frame)
:style radio
:selected (eq temp-buffer-show-function
)
"-----"
("Syntax Highlighting"
- ["In This Buffer"
+ ["In This Buffer"
(progn ;; becomes buffer local
(font-lock-mode)
(customize-set-variable 'font-lock-mode font-lock-mode))
- :style toggle
+ :style toggle
:selected (and (boundp 'font-lock-mode) font-lock-mode)
:active (boundp 'font-lock-mode)]
["Automatic"
:selected (and (boundp 'font-lock-auto-fontify) font-lock-auto-fontify)
:active (fboundp 'font-lock-mode)]
"-----"
- ["Fonts"
+ ["Fonts"
(progn
(require 'font-lock)
(font-lock-use-default-fonts)
(not (eq t font-lock-maximum-decoration)))
(and (integerp font-lock-maximum-decoration)
(<= font-lock-maximum-decoration 0))))]
- ["More"
+ ["More"
(progn
(require 'font-lock)
(if (and (integerp font-lock-maximum-decoration)
:selected (and (boundp 'font-lock-maximium-decoration)
(integerp font-lock-maximum-decoration)
(= 1 font-lock-maximum-decoration))]
- ["Even More"
+ ["Even More"
(progn
(require 'font-lock)
(if (and (integerp font-lock-maximum-decoration)
;; be a redisplay bug lurking somewhere (or
;; possibly another event handler bug)
(redraw-modeline))
- :active (and (boundp 'font-lock-mode) (boundp 'lazy-shot-mode)
+ :active (and (boundp 'font-lock-mode) (boundp 'lazy-shot-mode)
font-lock-mode)
:style toggle
:selected (and (boundp 'lazy-shot-mode) lazy-shot-mode)]
("Paren Highlighting"
["None"
(customize-set-variable 'paren-mode nil)
- :style radio
+ :style radio
:selected (and (boundp 'paren-mode) (not paren-mode))
:active (boundp 'paren-mode)]
["Blinking Paren"
:active (boundp 'paren-mode)]
["Steady Paren"
(customize-set-variable 'paren-mode 'paren)
- :style radio
+ :style radio
:selected (and (boundp 'paren-mode) (eq paren-mode 'paren))
:active (boundp 'paren-mode)]
["Expression"
(customize-set-variable 'paren-mode 'sexp)
- :style radio
+ :style radio
:selected (and (boundp 'paren-mode) (eq paren-mode 'sexp))
:active (boundp 'paren-mode)]
-;; ["Nested Shading"
+;; ["Nested Shading"
;; (customize-set-variable 'paren-mode 'nested)
-;; :style radio
+;; :style radio
;; :selected (and (boundp 'paren-mode) (eq paren-mode 'nested))
;; :active (boundp 'paren-mode)]
)
"-----"
("Frame Appearance"
- ["Frame-Local Font Menu"
+ ["Frame-Local Font Menu"
(customize-set-variable 'font-menu-this-frame-only-p
(not font-menu-this-frame-only-p))
- :style toggle
+ :style toggle
:selected (and (boundp 'font-menu-this-frame-only-p)
font-menu-this-frame-only-p)]
,@(if (featurep 'scrollbar)
'(["Scrollbars"
(customize-set-variable 'scrollbars-visible-p
(not scrollbars-visible-p))
- :style toggle
+ :style toggle
:selected scrollbars-visible-p]))
;; I don't think this is of any interest. - dverna apr. 98
;; #### I beg to differ! Many FSFmacs converts hate the 3D
;; off through the Options menu. I would have uncommented this
;; source, but the code for saving options would not save the
;; modeline 3D-ness. Grrr. --hniksic
-;; ["3D Modeline"
-;; (progn
+;; ["3D Modeline"
+;; (progn
;; (if (zerop (specifier-instance modeline-shadow-thickness))
;; (set-specifier modeline-shadow-thickness 2)
;; (set-specifier modeline-shadow-thickness 0))
-;; (redraw-modeline t))
-;; :style toggle
-;; :selected (let ((thickness
+;; (redraw-modeline t))
+;; :style toggle
+;; :selected (let ((thickness
;; (specifier-instance modeline-shadow-thickness)))
;; (and (integerp thickness)
;; (> thickness 0)))]
:selected (and (boundp 'blink-cursor-mode) blink-cursor-mode)
:active (boundp 'blink-cursor-mode)]
"-----"
- ["Block cursor"
+ ["Block cursor"
(progn
(customize-set-variable 'bar-cursor nil)
(force-cursor-redisplay))
:style radio
:selected (null bar-cursor)]
- ["Bar cursor (1 pixel)"
+ ["Bar cursor (1 pixel)"
(progn
(customize-set-variable 'bar-cursor t)
(force-cursor-redisplay))
:style radio
:selected (eq bar-cursor t)]
- ["Bar cursor (2 pixels)"
+ ["Bar cursor (2 pixels)"
(progn
(customize-set-variable 'bar-cursor 2)
(force-cursor-redisplay))
- :style radio
+ :style radio
:selected (and bar-cursor (not (eq bar-cursor t)))]
"------"
["Line Numbers"
(customize-set-variable
'buffers-menu-max-size
;; would it be better to open a customization buffer ?
- (let ((val
+ (let ((val
(read-number
"Enter number of buffers to display (or 0 for unlimited): ")))
(if (eq val 0) nil val)))]
buffers-menu-sort-function)]
["By Major Mode, Then Alphabetically"
(progn
- (customize-set-variable
+ (customize-set-variable
'buffers-menu-sort-function
'sort-buffers-menu-by-mode-then-alphabetically)
- (customize-set-variable
+ (customize-set-variable
'buffers-menu-grouping-function
'group-buffers-menu-by-mode-then-alphabetically))
:style radio
["Ignore Scaled Fonts"
(customize-set-variable 'font-menu-ignore-scaled-fonts
(not font-menu-ignore-scaled-fonts))
- :style toggle
+ :style toggle
:selected (and (boundp 'font-menu-ignore-scaled-fonts)
font-menu-ignore-scaled-fonts)]
)
,@(if (featurep 'toolbar)
'(("Toolbar Appearance"
- ["Visible"
+ ["Visible"
(customize-set-variable 'toolbar-visible-p
(not toolbar-visible-p))
:style toggle
:selected toolbar-visible-p]
- ["Captioned"
+ ["Captioned"
(customize-set-variable 'toolbar-captioned-p
(not toolbar-captioned-p))
:style toggle
("Default Location"
["Top"
(customize-set-variable 'default-toolbar-position 'top)
- :style radio
+ :style radio
:selected (eq default-toolbar-position 'top)]
- ["Bottom"
+ ["Bottom"
(customize-set-variable 'default-toolbar-position 'bottom)
:style radio
:selected (eq default-toolbar-position 'bottom)]
)))
("Mouse"
["Avoid Text..."
- (customize-set-variable 'mouse-avoidance-mode
+ (customize-set-variable 'mouse-avoidance-mode
(if mouse-avoidance-mode nil 'banish))
:style toggle
:selected (and (boundp 'mouse-avoidance-mode) mouse-avoidance-mode)
(device-on-window-system-p))]
)
("Open URLs With"
- ["Emacs-W3"
+ ["Emacs-W3"
(customize-set-variable 'browse-url-browser-function 'browse-url-w3)
:style radio
:selected (and (boundp 'browse-url-browser-function)
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-w3)
(fboundp 'w3-fetch))]
- ["Netscape"
- (customize-set-variable 'browse-url-browser-function
+ ["Netscape"
+ (customize-set-variable 'browse-url-browser-function
'browse-url-netscape)
:style radio
:selected (and (boundp 'browse-url-browser-function)
(eq browse-url-browser-function 'browse-url-netscape))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-netscape))]
- ["Mosaic"
+ ["Mosaic"
(customize-set-variable 'browse-url-browser-function
'browse-url-mosaic)
:style radio
(eq browse-url-browser-function 'browse-url-mosaic))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-mosaic))]
- ["Mosaic (CCI)"
+ ["Mosaic (CCI)"
(customize-set-variable 'browse-url-browser-function 'browse-url-cci)
:style radio
:selected (and (boundp 'browse-url-browser-function)
(eq browse-url-browser-function 'browse-url-cci))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-cci))]
- ["IXI Mosaic"
- (customize-set-variable 'browse-url-browser-function
+ ["IXI Mosaic"
+ (customize-set-variable 'browse-url-browser-function
'browse-url-iximosaic)
:style radio
:selected (and (boundp 'browse-url-browser-function)
(eq browse-url-browser-function 'browse-url-iximosaic))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-iximosaic))]
- ["Lynx (xterm)"
+ ["Lynx (xterm)"
(customize-set-variable 'browse-url-browser-function
'browse-url-lynx-xterm)
:style radio
(eq browse-url-browser-function 'browse-url-lynx-emacs))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-lynx-emacs))]
- ["Grail"
+ ["Grail"
(customize-set-variable 'browse-url-browser-function
'browse-url-grail)
:style radio
(eq browse-url-browser-function 'browse-url-grail))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-grail))]
+ ["Kfm"
+ (customize-set-variable 'browse-url-browser-function
+ 'browse-url-kfm)
+ :style radio
+ :selected (and (boundp 'browse-url-browser-function)
+ (eq browse-url-browser-function 'browse-url-kfm))
+ :active (and (boundp 'browse-url-browser-function)
+ (fboundp 'browse-url-kfm))]
)
"-----"
["Edit Faces..." (customize-face nil)]
(symbol-name pkg)
)
pui-deleted-packages)
- 'string<)
- :activate-callback nil
- :help-string "Packages selected for removal:\n"
- :completion-string t
- ))
- (setq tmpbuf (get-buffer-create tmpbuf))
- (display-buffer tmpbuf)
- (setq do-delete (yes-or-no-p "Remove these packages? "))
- (kill-buffer tmpbuf))
+ 'string<)
+ :activate-callback nil
+ :help-string "Packages selected for removal:\n"
+ :completion-string t
+ ))
+ (setq tmpbuf (get-buffer-create tmpbuf))
+ (display-buffer tmpbuf)
+ (setq do-delete (yes-or-no-p "Remove these packages? "))
+ (kill-buffer tmpbuf))
(when do-delete
(message "Deleting selected packages ...") (sit-for 0)
- (when (catch 'done
- (mapcar (lambda (pkg)
- (if (not
- (package-admin-delete-binary-package
- pkg (package-admin-get-install-dir pkg nil)))
- (throw 'done nil)))
- pui-deleted-packages)
- t)
- (message "Packages deleted")
- ))))
+ (mapcar (lambda (pkg)
+ (package-admin-delete-binary-package
+ pkg (package-admin-get-install-dir pkg nil)))
+ pui-deleted-packages)
+ (message "Packages deleted"))))
(let ( (tmpbuf "*Packages-To-Install*") do-install)
(if pui-selected-packages
(message "Packages installed")
))
)
- (clear-message)
- )
+ (clear-message)
+ )
)
(if pui-deleted-packages
(pui-list-packages)
(package-get-info-find-package
package-get-base pkg) nil)
'version)))
- (if (< (if (stringp installed)
+ (if (or (null installed)
+ (< (if (stringp installed)
(string-to-number installed)
installed)
(if (stringp current)
(string-to-number current)
- current))
+ current)))
pkg
nil)))
(package-get-dependencies pui-selected-packages)))))
;; globally. This means we should override global
;; defaults for all X device classes.
(remove-specifier (face-font face) locale x-tag-set nil))
- (set-face-font face fn locale nil append))
+ (set-face-font face fn locale 'x append))
;; Kludge-o-rooni. Set the foreground and background resources for
;; X devices only -- otherwise things tend to get all messed up
;; if you start up an X frame and then later create a TTY frame.
--- /dev/null
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
+1999-02-18 Martin Buchholz <martin@xemacs.org>
+
+ * lwlib/xlwmenu.c (massage_resource_name): Fix compiler warning
+ - Have to toupper ((int) (unsigned char) x) to be portable.
char ch = massaged_resource_char[(unsigned char) *in++];
if (ch)
{
- *out++ = firstp ? tolower (ch) : toupper (ch);
+ int int_ch = (int) (unsigned char) ch;
+ *out++ = firstp ? tolower (int_ch) : toupper (int_ch);
firstp = False;
while ((ch = massaged_resource_char[(unsigned char) *in++]) != '\0')
*out++ = ch;
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
1999-03-01 XEmacs Build Bot <builds@cvs.xemacs.org>
* XEmacs 21.2.11 is released
the extent. This takes precedence over the @code{text-pointer-glyph}
and @code{nontext-pointer-glyph} variables. If for any reason this
glyph is an invalid pointer, the standard glyphs will be used as
-fallbacks. @xref{Mouse Pointer}
+fallbacks. @xref{Mouse Pointer}.
@item detachable
(Boolean) Whether this extent becomes detached when all of the text it
which allows it to have separate values in particular buffers, frames,
windows, and devices and to further vary according to device type
(X or TTY) and device class (color, mono, or grayscale).
-@xref{Specifiers} for more information.
+@xref{Specifiers}, for more information.
The face named @code{default} is used for ordinary text. The face named
@code{modeline} is used for displaying the modeline. The face named
turn is tried until an image is successfully produced), a cons of a
locale (frame, buffer, etc.) and an instantiator, a list of such conses,
or any other form accepted by @code{canonicalize-spec-list}.
-@xref{Specifiers} for more information about specifiers.
+@xref{Specifiers}, for more information about specifiers.
@var{type} specifies the type of the glyph, which specifies in which
contexts the glyph can be used, and controls the allowable image types
@code{color-pixmap} can be generated by @code{xpm}, @code{gif},
@code{jpeg}, etc.).
- @xref{Image Instances} for a more detailed discussion of image
+ @xref{Image Instances}, for a more detailed discussion of image
instance types.
An image instantiator should be a string or a vector of the form
concept of an @dfn{active region} exists. The region is active when the
corresponding mark is active. Note that only one active region at a
time can exist -- i.e. only one buffer's region is active at a time.
-@xref{The Mark} for more information about active regions.
+@xref{The Mark}, for more information about active regions.
@defopt zmacs-regions
If non-@code{nil} (the default), active regions are used. @xref{The Mark},
@end defun
@defun buffers-menu-filter menu-items
-This function sets up the Buffers menu. @xref{Buffers Menu} for
+This function sets up the Buffers menu. @xref{Buffers Menu}, for
more information.
@end defun
A string can hold extents and properties of the text it contains, in
addition to the characters themselves. This enables programs that copy
text between strings and buffers to preserve the extents and properties
-with no special effort. @xref{Extents}; @xref{Text Properties}.
+with no special effort. @xref{Extents}, @xref{Text Properties}.
Note that FSF GNU Emacs has a special read and print syntax for
strings with text properties, but XEmacs does not currently implement
This function returns the maximum accessible value of point in
@var{buffer}. This is @code{(1+ (buffer-size buffer))}, unless
narrowing is in effect, in which case it is the position of the end of
-the region that you narrowed to. (@xref{Narrowing}). @var{buffer}
+the region that you narrowed to. (@pxref{Narrowing}). @var{buffer}
defaults to the current buffer if omitted.
@end defun
and text properties in the copy are also copied, not shared with the
original. (This means that modifying the extents or text properties of
the original will not affect the copy.) However, the actual values of
-the properties are shared. @xref{Extents}; @xref{Text Properties}.
+the properties are shared. @xref{Extents}, @xref{Text Properties}.
See also @code{append} in @ref{Building Lists}, @code{concat} in
@ref{Creating Strings}, @code{vconcat} in @ref{Vectors}, and
as characters.
@item
-Strings can hold extent and text properties. @xref{Extents}; @xref{Text
+Strings can hold extent and text properties. @xref{Extents}, @xref{Text
Properties}.
@item
@item toolbar
The valid instantiators are toolbar descriptors, which are lists
of toolbar-button descriptors (each of which is a vector of two
-or four elements). @xref{Toolbar} for more information.
+or four elements). @xref{Toolbar}, for more information.
@end table
Color and font instance objects can also be used in turn as
device. If the devices differ, the base color or font of the
instantiating object is effectively used instead as the instantiator.
-@xref{Faces and Window-System Objects} for more information on fonts,
-colors, and face-boolean specifiers. @xref{Glyphs} for more information
-about image specifiers. @xref{Toolbar} for more information on toolbar
+@xref{Faces and Window-System Objects}, for more information on fonts,
+colors, and face-boolean specifiers. @xref{Glyphs}, for more information
+about image specifiers. @xref{Toolbar}, for more information on toolbar
specifiers.
@defun specifier-type specifier
The definition of a word is any sequence of consecutive characters that
are assigned to the word constituent syntax class in the current syntax
-table (@xref{Syntax Class Table}).
+table (@pxref{Syntax Class Table}).
When the argument to @code{capitalize} is a character, @code{capitalize}
has the same result as @code{upcase}.
and query them with @code{specifier-specs} or @code{specifier-instance}.
You will get an error if you try to set them using @code{setq}. The
valid instantiators for these specifiers are toolbar descriptors, as
-described above. @xref{Specifiers} for more information.
+described above. @xref{Specifiers}, for more information.
Most of the time, you will set @code{default-toolbar}, which allows
the user to choose where the toolbar should go.
Do not add the "-mode" to it. You can also select the @b{Paren
Highlighting} option from the @b{Options} menu. After you enable this
command, put your cursor on one of the left parenthesis. The other
-matching parenthesis will start blinking. @xref{Options Menu,} for more
+matching parenthesis will start blinking. @xref{Options Menu}, for more
information on the @b{Paren Highlighting} option.
@end table
The most common way to move or copy text in Emacs is through
@dfn{killing} or @samp{cutting} it and then @dfn{yanking} or
@samp{pasting} it. You can also use the @b{Cut} or @b{Copy} option from
-the @b{Edit} menu for killing and copying respectively. @xref{Edit menu}
+the @b{Edit} menu for killing and copying respectively. @xref{Edit menu},
for reviewing the commands for killing text. All the killed text
in Emacs is recorded in the @dfn{kill ring}. Since there is only one
kill ring in Emacs, you can kill text in one buffer and yank it in
@samp{so} magic cookie on the screen. (It may also be possible to remove a
cookie which is not at the beginning of a line by clearing that line.) The
@samp{xt} capability also has implications for the use of tab characters,
-but in that regard it is obsolete (@xref{Cursor Motion}).
+but in that regard it is obsolete (@pxref{Cursor Motion}).
@table @samp
@item so
How to Obtain @TeX{}
-* New Texinfo Mode Commands:: The updating commands are especially useful.
-* New Commands:: Many newly described @@-commands.
+@c * New Texinfo Mode Commands:: The updating commands are especially useful.
+@c * New Commands:: Many newly described @@-commands.
@end detailmenu
@end menu
@node Q1.3.3, Q1.3.4, Q1.3.2, Introduction
@unnumberedsubsec Q1.3.3: How do I type non-ASCII characters?
-See question 3.5.7 (@xref{Q3.5.7}) in part 3 of this FAQ.
+See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ.
@node Q1.3.4, Q1.3.5, Q1.3.3, Introduction
@unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language?
It's possible that a core file didn't get produced, in which case you're
out of luck. Go complain to your system administrator and tell him not
-to disable core files by default. Also @xref{Q2.1.15} for tips and
+to disable core files by default. Also @xref{Q2.1.15}, for tips and
techniques for dealing with a debugger.
When making a problem report make sure that:
This is fine if you only need a few functions within the lambda body.
If you're doing more it's cleaner to define a separate function as in
-question 3.5.3 (@xref{Q3.5.3}).
+question 3.5.3 (@pxref{Q3.5.3}).
@node Q3.5.2, Q3.5.3, Q3.5.1, Customization
@unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
The key point is that you can only bind simple functions to keys; you
can not bind a key to a function that you're also passing arguments to.
-(@xref{Q3.5.1} for a better answer).
+(@pxref{Q3.5.1} for a better answer).
@node Q3.5.4, Q3.5.5, Q3.5.3, Customization
@unnumberedsubsec Q3.5.4: Globally binding @kbd{Delete}?
VM supports MIME natively.
-You probably want to use the Tools for MIME (tm). @xref{Q4.3.2} for
+You probably want to use the Tools for MIME (tm). @xref{Q4.3.2}, for
details.
@email{trey@@cs.berkeley.edu, Trey Jackson} has an Emacs & MIME web page at
@quotation
The standard TeX modes leave much to be desired, and are somewhat
-leniently maintained. Serious TeX users use AUC TeX (@xref{Q4.7.1}).
+leniently maintained. Serious TeX users use AUC TeX (@pxref{Q4.7.1}).
@end quotation
@node Q5.0.20, Q5.1.1, Q5.0.19, Miscellaneous
@node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous
@unnumberedsubsec Q5.2.3: What's NAS, how do I get it?
-@xref{Q2.0.3} for an explanation of the @dfn{Network Audio System}.
+@xref{Q2.0.3}, for an explanation of the @dfn{Network Audio System}.
@node Q5.2.4, Q5.3.1, Q5.2.3, Miscellaneous
@unnumberedsubsec Q5.2.4: Sunsite sounds don't play.
@table @asis
@item @code{geometry} (class @code{Geometry}): string
-Initial geometry for the frame. @xref{Geometry Resources} for a
+Initial geometry for the frame. @xref{Geometry Resources}, for a
complete discussion of how this works.
@item @code{iconic} (class @code{Iconic}): boolean
@section Representation of Characters
This section briefly discusses how characters are represented in Emacs
-buffers. @xref{Key Sequences} for information on representing key
+buffers. @xref{Key Sequences}, for information on representing key
sequences to create key bindings.
ASCII graphic characters in Emacs buffers are displayed with their
Lisp Reference Manual}.
The bindings between keys and functions are recorded in various tables
-called @dfn{keymaps}. @xref{Key Bindings} for more information on key
-sequences you can bind commands to. @xref{Keymaps} for information on
+called @dfn{keymaps}. @xref{Key Bindings}, for more information on key
+sequences you can bind commands to. @xref{Keymaps}, for information on
creating keymaps.
When we say ``@kbd{C-n} moves down vertically one line'' we are
the variable @code{zmacs-regions} to @code{t}. This makes the current
region (defined by point and mark) highlight and makes it available as
the X clipboard selection, which means you can use the menu bar items on
-it. @xref{Active Regions} for more information.
+it. @xref{Active Regions}, for more information.
@kbd{C-x C-x} is also useful when you are satisfied with the location of
point but want to move the mark; do @kbd{C-x C-x} to put point there and
cannot invoke items that are faded. For example, many commands on the
@b{Edit} menu appear faded until you select text on which they are to
operate; after you select a block of text, edit commands are enabled.
-@xref{Mouse Selection} for information on using the mouse to select
-text. @xref{Using X Selections} for related information.
+@xref{Mouse Selection}, for information on using the mouse to select
+text. @xref{Using X Selections}, for related information.
There are also @kbd{M-x} equivalents for each menu item. To find the
equivalent for any left-button menu item, do the following:
@cindex Buffers menu
The @b{Buffers} menu provides a selection of up to ten buffers and the
item @b{List All Buffers}, which provides a Buffer List. @xref{List
-Buffers} for more information.
+Buffers}, for more information.
@node Tools Menu
@subsection The Tools Menu
The Help Menu gives you access to Emacs Info and provides a menu
equivalent for each of the choices you have when using @kbd{C-h}.
-@xref{Help} for more information.
+@xref{Help}, for more information.
The Help menu also gives access to UNIX online manual pages via the
@b{UNIX Manual Page} option.
During installation, all of these directories may also reside directly
under @file{<root>}, because that is where they are in the XEmacs tarball.
-If XEmacs runs with the @code{-debug-paths} option (@xref{Command
+If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
Switches}), it will print the values of these variables, hopefully
aiding in debugging any problems which come up.
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
+1999-03-03 Gleb Arshinov <gleb@cs.stanford.edu>
+
+ * xemacs.mak (HAVE_XFACE): fix for building without X-Face support
+ provided by Brent B. Powers <bpowers@ms.com>.
+
+ * xemacs.mak (CONFIG_ERROR): Misc error detection for build with
+ X-Face.
+
+1999-02-01 Gleb Arshinov <gleb@cs.stanford.edu>
+
+ * README: Document the X-Face build option.
+
+ * compface.mak: New file
+ Makefile for building compface library under MSVC. Build
+ library only, not executables. Should be extended to build
+ executables and propagated upstream, if possible.
+
+ * xemacs.mak: Link in X-Face/Compface for NT native build.
+
1999-03-01 XEmacs Build Bot <builds@cvs.xemacs.org>
* XEmacs 21.2.11 is released
4. If you want JPEG support grab the latest version of jpegsrc (jpeg-6b at
time of writing) and read the README for details on how to build it.
-5. cd to the nt subdirectory of the xemacs distribution and build xemacs:
+5. If you want X-Face support, grab compface distribution and unpack it
+ somewhere. Copy nt\compface.mak from xemacs sources to the compface
+ directory. cd to that directory and build libcompface with
+ 'nmake -f compface.mak'.
+
+6. cd to the nt subdirectory of the xemacs distribution and build xemacs:
`nmake install -f xemacs.mak`, but read on before hitting Enter.
-6. If you're building with XPM support, add this to the nmake command line:
+7. If you're building with XPM support, add this to the nmake command line:
HAVE_XPM=1 XPM_DIR="x:\location\of\your\xpm\sources"
and similarly for JPEG and TIFF support.
If you want to build with GIF support, add this to the nmake command line:
HAVE_GIF=1
-7. By default, XEmacs will expect to find its packages in the subdirectories
+ If you're building with X-Face support, add this to the nmake command line:
+ HAVE_XFACE=1 COMPFACE_DIR="x:\location\of\your\compface\sources"
+
+8. By default, XEmacs will expect to find its packages in the subdirectories
"site-packages", "mule-packages" and "xemacs-packages" under the package
prefix directory "c:\Program Files\XEmacs". If you want it to look for
these subdirectories elsewhere, add this to the nmake command line:
after you've built XEmacs, delete the file .\obj\emacs.obj and rebuild with
the new PACKAGE_PREFIX.
-8. By default, XEmacs will be installed in directories under the directory
+9. By default, XEmacs will be installed in directories under the directory
"c:\Program Files\XEmacs\XEmacs-21.0". If you want to install it elsewhere,
add this to the nmake command line:
INSTALL_DIR="x:\your\installation\directory"
-9. Now you can press Enter. nmake will build temacs, the DOC file, update the
+10. Now you can press Enter. nmake will build temacs, the DOC file, update the
elc's, dump xemacs and install the relevant files in the directories under
the installation directory. Unless you set INSTALL_DIR above, the file that
you should run to start XEmacs will be installed as
"c:\Program Files\XEmacs\XEmacs-21.0\i386-pc-win32\runemacs.exe". You may
want to create a shortcut to that file from your Desktop or Start Menu.
-10. The build process always creates debugging and "Source Browser" information
+11. The build process always creates debugging and "Source Browser" information
in the source tree for use with MS DevStudio. If you actually want to debug
XEmacs you should run XEmacs from the source directory instead of from the
installation directory. You should probably also build a debug version of
--- /dev/null
+#
+# Compface Makefile for Microsoft NMAKE
+# Based on xpm.mak
+#
+
+!if !defined(DEBUG_XEMACS)
+DEBUG_XEMACS=0
+!endif
+
+!if $(DEBUG_XEMACS)
+OPT=-Od -Zi
+!else
+OPT=-O2 -G5 -Zi
+!endif
+
+WARN_CPP_FLAGS = -W3
+
+#MSVC uses string.h, not strings.h
+DEFINES=-DSYSV32
+
+CC=cl
+CFLAGS=-nologo -DFOR_MSW $(WARN_CPP_FLAGS) $(OPT) $(INCLUDES) $(DEFINES) -Fo$@ -c
+
+OBJS= arith.obj file.obj compress.obj gen.obj uncompface.obj
+
+# nmake rule
+
+.SUFFIXES:
+.SUFFIXES: .c
+
+.c.obj:
+ $(CC) $(CFLAGS) $< -Fo$@
+
+
+# targets
+
+all: libcompface.lib
+
+libcompface.lib: $(OBJS)
+ link.exe -lib -nologo -out:$@ $(OBJS)
!if !defined(HAVE_JPEG)
HAVE_JPEG=0
!endif
+!if !defined(HAVE_XFACE)
+HAVE_XFACE=0
+!endif
!if !defined(HAVE_GIF)
HAVE_GIF=1
!endif
!message Specified JPEG directory does not contain "$(JPEG_DIR)\libjpeg.lib"
CONFIG_ERROR=1
!endif
+!if $(HAVE_MSW) && $(HAVE_XFACE) && !defined(COMPFACE_DIR)
+!message Please specify root directory for your COMPFACE installation: COMPFACE_DIR=path
+CONFIG_ERROR=1
+!endif
+!if $(HAVE_MSW) && $(HAVE_XFACE) && !exist("$(COMPFACE_DIR)\libcompface.lib")
+!message Specified COMPFACE directory does not contain "$(COMPFACE_DIR)\libcompface.lib"
+CONFIG_ERROR=1
+!endif
!if $(HAVE_MSW) && $(HAVE_TOOLBARS) && !$(HAVE_XPM)
!error Toolbars require XPM support
CONFIG_ERROR=1
!if $(HAVE_JPEG)
!message Compiling in support for JPEG images.
!endif
+!if $(HAVE_XFACE)
+!message Compiling in support for X-Face message headers.
+!endif
!if $(HAVE_TOOLBARS)
!message Compiling in support for toolbars.
!endif
MSW_INCLUDES=$(MSW_INCLUDES) -I"$(JPEG_DIR)"
MSW_LIBS=$(MSW_LIBS) "$(JPEG_DIR)\libjpeg.lib"
!endif
+!if $(HAVE_XFACE)
+MSW_DEFINES=$(MSW_DEFINES) -DHAVE_XFACE
+MSW_INCLUDES=$(MSW_INCLUDES) -I"$(COMPFACE_DIR)"
+MSW_LIBS=$(MSW_LIBS) "$(COMPFACE_DIR)\libcompface.lib"
+!endif
!if $(HAVE_TOOLBARS)
MSW_DEFINES=$(MSW_DEFINES) -DHAVE_TOOLBARS
MSW_TOOLBAR_SRC=$(XEMACS)\src\toolbar.c $(XEMACS)\src\toolbar-msw.c
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
+1999-02-16 Kazuyuki IENAGA <ienaga@jsys.co.jp>
+
+ * device-x.c: Support to find best visual without flashing.
+
+1999-03-02 Paul Keusemann <pkeusem@visi.com>
+
+ * database.c (berkdb_map): Add flags argument to cursor call (must
+ be 0 according to docs) required for Berkeley DB 2.6.4 and later.
+
+1999-03-03 Martin Buchholz <martin@xemacs.org>
+
+ * hash.c:
+ * hash.h:
+ General cleanup. Get free-hook.c working again.
+ Remove unused functions:
+ make_strings_hash_table, copy_hash, expand_hash_table.
+
+ * malloc.c:
+ * mem-limits.h:
+ Always use new ANSI-style function prototypes.
+
+ * unexalpha.c (unexec): Never use implicit int.
+
+ * sgiplay.c (close_sound_file):
+ (play_sound_file):
+ (restore_audio_port):
+ (play_sound_data):
+ (audio_initialize):
+ (play_internal):
+ (drain_audio_port):
+ (write_mulaw_8_chunk):
+ (write_linear_chunk):
+ (write_linear_32_chunk):
+ (initialize_audio_port):
+ (open_audio_port):
+ (set_channels):
+ (set_output_format):
+ (adjust_audio_volume):
+ (get_current_volumes):
+ (parse_snd_header):
+ Always use new ANSI-style function prototypes.
+ Use unistd.h for missing prototypes.
+
+ * unexelfsgi.c (round_up):
+ (find_section):
+ (unexec): Always use new ANSI-style function prototypes
+
+ * elhash.c (struct Lisp_Hash_Table): rename golden to golden_ratio
+
+ * console.h (struct console_methods): Always use full ANSI prototypes
+
+ * emacs.c (__sti__iflPNGFile_c___): Always use full ANSI prototypes
+
+1999-03-02 Andy Piper <andy@xemacs.org>
+
+ * event-stream.c (init_event_stream): make sure native mswindows
+ gets an appropriate event loop.
+
+1999-02-22 Andy Piper <andy@xemacs.org>
+
+ * frame-msw.c (mswindows_make_frame_visible): use SW_SHOW rather
+ than SW_SHOWNORMAL to prevent resizing of maximised frames.
+ (mswindows_raise_frame): remove comment.
+
1999-03-01 XEmacs Build Bot <builds@cvs.xemacs.org>
* XEmacs 21.2.11 is released
1999-02-17 Kazuo Oishi <oishi@ae.agr.yamaguchi-u.ac.jp>
- * glyphs-x.c (cononvert_EImage_to_XImage): correct
+ * glyphs-x.c (cononvert_EImage_to_XImage): correct
bytes per pixel counting.
1999-02-15 Andy Piper <andy@xemacs.org>
1999-02-02 Gleb Arshinov <gleb@cs.stanford.edu>
- * process-nt.c (nt_send_process):
+ * process-nt.c (nt_send_process):
Fix for process-send-region/process-send-string breaking when size
of the input > 128 chars: change maximum chunk size for process
stream from 512 to 128, thus guaranteeing that ntpipe_shove_writer
* bytecode.c (funcall_compiled_function): Call
UNBIND_TO_GCPRO instead of UNBIND_TO_GCPRO_VARIABLES_ONLY.
- * backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
+ * backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
#ifdef 0 out unused macro.
1999-01-27 Martin Buchholz <martin@xemacs.org>
* glyphs-eimage.c (gif_instantiate): Correct handling of
interlaced gifs to avoid writing past the end of the eimage
- buffer.
+ buffer.
1999-01-13 Hrvoje Niksic <hniksic@srce.hr>
1999-01-01 <martin@xemacs.org>
- * device-x.c (Fx_set_font_path):
+ * device-x.c (Fx_set_font_path):
Add proper cast to permit compilation under C++.
- * buffer.c (directory_is_current_directory):
+ * buffer.c (directory_is_current_directory):
Add proper casts to permit compilation under C++.
1998-12-30 Damon Lipparelli <lipp@primus.com>
1998-12-29 Martin Buchholz <martin@xemacs.org>
- * file-coding.c (decode_coding_iso2022):
+ * file-coding.c (decode_coding_iso2022):
- Prevent crash when decoding ISO7/Lock detected files
- the usual martin fiddling
Removed compiler warning by removing bss_data variable.
1998-12-18 Jim Radford <radford@robby.caltech.edu>
-
+
* device-x.c (Fx_set_font_path, Fx_get_font_path): New functions
so that packages that distribute their own fonts can access them.
1998-12-28 Martin Buchholz <martin@xemacs.org>
- * editfns.c (get_home_directory):
+ * editfns.c (get_home_directory):
(user-home-directory): Simplify.
-
- * callproc.c (child_setup):
+
+ * callproc.c (child_setup):
- Environment variables were being passed to inferior processes
using internal encoding.
- Convert to external encoding.
- Remove one unneeded GCPRO.
* buffer.h (initial_directory):
- * buffer.c (init_initial_directory):
+ * buffer.c (init_initial_directory):
- use correct conversions between internal and external format.
(directory_is_current_directory): new function
(init_buffer): convert initial_directory to internal format.
(lrecord_type_index): replace abort() with more readable assert().
(reset_lcrecord_stats): remove.
- (sweep_lcrecords_1):
+ (sweep_lcrecords_1):
- replace call to reset_lcrecord_stats() with call to xzero().
1998-12-27 Martin Buchholz <martin@xemacs.org>
void (*mark_device_method) (struct device *, void (*)(Lisp_Object));
void (*asynch_device_change_method) (void);
Lisp_Object (*device_system_metrics_method) (struct device *, enum device_metrics);
- unsigned int (*device_implementation_flags_method) ();
+ unsigned int (*device_implementation_flags_method) (void);
/* frame methods */
Lisp_Object *device_specific_frame_props;
{
DBC *dbcp;
+#if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
+ status = dbp->cursor (dbp, NULL, &dbcp, 0);
+#else
status = dbp->cursor (dbp, NULL, &dbcp);
+#endif
for (status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_FIRST);
status == 0;
status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_NEXT))
device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
dired-msw.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h systime.h
-event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h systime.h syswait.h toolbar.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h
gui-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
validify_resource_component (Dynarr_atp (cda, Dynarr_length (cda) - len), len);
}
+#if 0
+/* compare visual info for qsorting */
+static int
+x_comp_visual_info (const void *elem1, const void *elem2)
+{
+ XVisualInfo *left, *right;
+
+ left = (XVisualInfo *)elem1;
+ right = (XVisualInfo *)elem2;
+
+ if ( left == NULL )
+ return -1;
+ if ( right == NULL )
+ return 1;
+
+ if ( left->depth > right->depth ) {
+ return 1;
+ }
+ else if ( left->depth == right->depth ) {
+ if ( left->colormap_size > right->colormap_size )
+ return 1;
+ if ( left->class > right->class )
+ return 1;
+ else if ( left->class < right->class )
+ return -1;
+ else
+ return 0;
+ }
+ else {
+ return -1;
+ }
+
+}
+#endif /* if 0 */
+
+#define XXX_IMAGE_LIBRARY_IS_SOMEWHAT_BROKEN
+static Visual *
+x_try_best_visual_class (Screen *screen, int scrnum, int visual_class)
+{
+ Display *dpy = DisplayOfScreen (screen);
+ XVisualInfo vi_in;
+ XVisualInfo *vi_out = NULL;
+ int out_count;
+
+ vi_in.class = visual_class;
+ vi_in.screen = scrnum;
+ vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask),
+ &vi_in, &out_count);
+ if ( vi_out )
+ {
+ int i, best;
+ Visual *visual;
+ for (i = 0, best = 0; i < out_count; i++)
+ /* It's better if it's deeper, or if it's the same depth with
+ more cells (does that ever happen? Well, it could...)
+ NOTE: don't allow pseudo color to get larger than 8! */
+ if (((vi_out [i].depth > vi_out [best].depth) ||
+ ((vi_out [i].depth == vi_out [best].depth) &&
+ (vi_out [i].colormap_size > vi_out [best].colormap_size)))
+#ifdef XXX_IMAGE_LIBRARY_IS_SOMEWHAT_BROKEN
+ /* For now, the image library doesn't like PseudoColor visuals
+ of depths other than 1 or 8. Depths greater than 8 only occur
+ on machines which have TrueColor anyway, so probably we'll end
+ up using that (it is the one that `Best' would pick) but if a
+ PseudoColor visual is explicitly specified, pick the 8 bit one.
+ */
+ && (visual_class != PseudoColor ||
+ vi_out [i].depth == 1 ||
+ vi_out [i].depth == 8)
+#endif
+
+ /* SGI has 30-bit deep visuals. Ignore them.
+ (We only have 24-bit data anyway.)
+ */
+ && (vi_out [i].depth <= 24)
+ )
+ best = i;
+ visual = vi_out[best].visual;
+ XFree ((char *) vi_out);
+ return visual;
+ }
+ else
+ return 0;
+}
+
+static int
+x_get_visual_depth (Display *dpy, Visual *visual)
+{
+ XVisualInfo vi_in;
+ XVisualInfo *vi_out;
+ int out_count, d;
+
+ vi_in.visualid = XVisualIDFromVisual (visual);
+ vi_out = XGetVisualInfo (dpy, /*VisualScreenMask|*/VisualIDMask,
+ &vi_in, &out_count);
+ if (! vi_out) abort ();
+ d = vi_out [0].depth;
+ XFree ((char *) vi_out);
+ return d;
+}
+
+static Visual *
+x_try_best_visual (Display *dpy, int scrnum)
+{
+ Visual *visual = NULL;
+ Screen *screen = ScreenOfDisplay (dpy, scrnum);
+ if ((visual = x_try_best_visual_class (screen, scrnum, TrueColor))
+ && x_get_visual_depth (dpy, visual) >= 16 )
+ return visual;
+ if ((visual = x_try_best_visual_class (screen, scrnum, PseudoColor)))
+ return visual;
+ if ((visual = x_try_best_visual_class (screen, scrnum, TrueColor)))
+ return visual;
+#ifdef DIRECTCOLOR_WORKS
+ if ((visual = x_try_best_visual_class (screen, scrnum, DirectColor)))
+ return visual;
+#endif
+
+ visual = DefaultVisualOfScreen (screen);
+ if ( x_get_visual_depth (dpy, visual) >= 8 )
+ return visual;
+
+ if ((visual = x_try_best_visual_class (screen, scrnum, StaticGray)))
+ return visual;
+ if ((visual = x_try_best_visual_class (screen, scrnum, GrayScale)))
+ return visual;
+ return DefaultVisualOfScreen (screen);
+}
+
+
static void
x_init_device (struct device *d, Lisp_Object props)
{
int depth = 8; /* shut up the compiler */
Colormap cmap;
int screen;
+ /* */
+ int best_visual_found = 0;
XSETDEVICE (device, d);
display = DEVICE_CONNECTION (d);
* Break apart the old XtOpenDisplay call into XOpenDisplay and
* XtDisplayInitialize so we can figure out whether there
* are any XEmacs resources in the resource database before
- * we intitialize Xt. This is so we can automagically support
+ * we initialize Xt. This is so we can automagically support
* both `Emacs' and `XEmacs' application classes.
*/
slow_down_interrupts ();
}
if (visual == NULL)
{
- visual = DefaultVisual (dpy, screen);
- depth = DefaultDepth (dpy, screen);
+ /*
+ visual = DefaultVisual(dpy, screen);
+ depth = DefaultDepth(dpy, screen);
+ */
+ visual = x_try_best_visual (dpy, screen);
+ depth = x_get_visual_depth (dpy, visual);
+ best_visual_found = (visual != DefaultVisual (dpy, screen));
}
/* If we've got the same visual as the default and it's PseudoColor,
}
else
{
- /* We have to create a matching colormap anyway...
- ### think about using standard colormaps (need the Xmu libs?) */
- cmap = XCreateColormap (dpy, RootWindow(dpy, screen), visual, AllocNone);
- XInstallColormap (dpy, cmap);
+ if ( best_visual_found )
+ {
+ cmap = XCreateColormap (dpy, RootWindow (dpy, screen), visual, AllocNone);
+ }
+ else
+ {
+ /* We have to create a matching colormap anyway...
+ ### think about using standard colormaps (need the Xmu libs?) */
+ cmap = XCreateColormap(dpy, RootWindow(dpy, screen), visual, AllocNone);
+ XInstallColormap(dpy, cmap);
+ }
}
}
size_t rehash_count;
double rehash_size;
double rehash_threshold;
- size_t golden;
+ size_t golden_ratio;
hash_table_hash_function_t hash_function;
hash_table_test_function_t test_function;
hentry *hentries;
#define HASH_CODE(key, ht) \
(((((ht)->hash_function ? (ht)->hash_function (key) : LISP_HASH (key)) \
- * (ht)->golden) \
+ * (ht)->golden_ratio) \
% (ht)->size))
#define KEYS_EQUAL_P(key1, key2, testfun) \
{
ht->rehash_count = (size_t)
((double) ht->size * hash_table_rehash_threshold (ht));
- ht->golden = (size_t)
+ ht->golden_ratio = (size_t)
((double) ht->size * (.6180339887 / (double) sizeof (Lisp_Object)));
}
* cores on us when re-started from the dumped executable.
* This will have to go for 21.1 -- OG.
*/
+void __sti__iflPNGFile_c___(void);
void __sti__iflPNGFile_c___()
{
}
{
/* For TTY's, use the Xt event loop if we can; it allows
us to later open an X connection. */
-#if defined (HAVE_MS_WINDOWS) && defined (HAVE_MSG_SELECT) \
- && !defined (DEBUG_TTY_EVENT_STREAM)
+#if defined (HAVE_MS_WINDOWS) && (!defined (HAVE_TTY) \
+ || (defined (HAVE_MSG_SELECT) \
+ && !defined (DEBUG_TTY_EVENT_STREAM)))
init_event_mswindows_late ();
#elif defined (HAVE_X_WINDOWS) && !defined (DEBUG_TTY_EVENT_STREAM)
init_event_Xt_late ();
if (f->iconified)
ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_RESTORE);
else
- ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL);
+ ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOW);
f->visible = 1;
f->iconified = 0;
}
mswindows_raise_frame (struct frame *f)
{
BringWindowToTop (FRAME_MSWINDOWS_HANDLE(f));
- /* XXX Should we do SetWindowForeground too ? */
}
static void
/* Synched up with: Not in FSF. */
-#ifdef emacs
#include <config.h>
#include "lisp.h"
-
-#define NULL_ENTRY (LISP_TO_VOID (Qnil))
-
-#else /* !emacs */
-
-#define NULL_ENTRY ((void *) 1)
-
-#endif /* !emacs */
-
#include "hash.h"
+#define NULL_ENTRY ((void *) 0xdeadbeef)
+
#define COMFORTABLE_SIZE(size) (21 * (size) / 16)
-/* Knuth volume 3, hash functions */
-#define WORD_HASH_4(word) (0x9c406b55 * (word))
-#define WORD_HASH_8(word) (0x9c406b549c406b55 * (word))
+#define KEYS_DIFFER_P(old, new, testfun) \
+ (((old) != (new)) && (!(testfun) || !(testfun) ((old),(new))))
-static CONST hash_size_t
-primes [] =
-{
- 13,
- 29, 37, 47, 59, 71, 89, 107, 131, 163, 197, 239, 293, 353, 431, 521, 631,
- 761, 919, 1103, 1327, 1597, 1931, 2333, 2801, 3371, 4049, 4861, 5839, 7013,
- 8419, 10103, 12143, 14591, 17519, 21023, 25229, 30293, 36353, 43627, 52361,
- 62851, 75431, 90523, 108631, 130363, 156437, 187751, 225307, 270371, 324449,
- 389357, 467237, 560689, 672827, 807403, 968897, 1162687, 1395263, 1674319,
- 2009191, 2411033, 2893249
-};
-
-#if 0
-static CONST hash_size_t
-primes [] =
-{
- 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031, 1361,
- 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783, 19219, 24989,
- 32491, 42257, 54941, 71429, 92861, 120721, 156941, 204047, 265271,
- 344857, 448321, 582821, 757693, 985003, 1280519, 1664681, 2164111,
- 2813353, 3657361, 4754591, 6180989, 8035301, 10445899, 13579681,
- 17653589, 22949669, 29834603, 38784989, 50420551, 65546729, 85210757,
- 110774011, 144006217, 187208107, 243370577, 316381771, 411296309,
- 534685237, 695090819, 903618083, 1174703521, 1527114613, 1985248999,
- 2580823717, 3355070839, 4361592119
-};
-#endif
+static void rehash (hentry *harray, struct hash_table *ht, hash_size_t size);
unsigned long
memory_hash (CONST void *xv, size_t size)
return h;
}
-/* We've heard of binary search. */
-static hash_size_t
-prime_size (hash_size_t size)
+/* Return a suitable size for a hash table, with at least SIZE slots. */
+static size_t
+hash_table_size (size_t requested_size)
{
+ /* Return some prime near, but greater than or equal to, SIZE.
+ Decades from the time of writing, someone will have a system large
+ enough that the list below will be too short... */
+ static CONST size_t primes [] =
+ {
+ 19, 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031,
+ 1361, 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783,
+ 19219, 24989, 32491, 42257, 54941, 71429, 92861, 120721, 156941,
+ 204047, 265271, 344857, 448321, 582821, 757693, 985003, 1280519,
+ 1664681, 2164111, 2813353, 3657361, 4754591, 6180989, 8035301,
+ 10445899, 13579681, 17653589, 22949669, 29834603, 38784989,
+ 50420551, 65546729, 85210757, 110774011, 144006217, 187208107,
+ 243370577, 316381771, 411296309, 534685237, 695090819, 903618083,
+ 1174703521, 1527114613, 1985248999, 2580823717UL, 3355070839UL
+ };
+ /* We've heard of binary search. */
int low, high;
for (low = 0, high = countof (primes) - 1; high - low > 1;)
{
/* Loop Invariant: size < primes [high] */
int mid = (low + high) / 2;
- if (primes [mid] < size)
+ if (primes [mid] < requested_size)
low = mid;
else
high = mid;
return primes [high];
}
-static void rehash (hentry *harray, struct hash_table *ht, hash_size_t size);
-
-#define KEYS_DIFFER_P(old, new, testfun) \
- (((old) != (new)) && (!(testfun) || !(testfun) ((old),(new))))
-
CONST void *
gethash (CONST void *key, struct hash_table *hash_table, CONST void **ret_value)
{
- hentry *harray = hash_table->harray;
- hash_table_test_function test_function = hash_table->test_function;
- hash_size_t size = hash_table->size;
- unsigned int hcode_initial =
- hash_table->hash_function ?
- hash_table->hash_function (key) :
- (unsigned long) key;
- unsigned int hcode = hcode_initial % size;
- hentry *e = &harray [hcode];
- CONST void *e_key = e->key;
-
if (!key)
{
*ret_value = hash_table->zero_entry;
return (void *) hash_table->zero_set;
}
-
- if (e_key ?
- KEYS_DIFFER_P (e_key, key, test_function) :
- e->contents == NULL_ENTRY)
+ else
{
- size_t h2 = size - 2;
- unsigned int incr = 1 + (hcode_initial % h2);
- do
- {
- hcode += incr; if (hcode >= size) hcode -= size;
- e = &harray [hcode];
- e_key = e->key;
- }
- while (e_key ?
- KEYS_DIFFER_P (e_key, key, test_function) :
- e->contents == NULL_ENTRY);
+ hentry *harray = hash_table->harray;
+ hash_table_test_function test_function = hash_table->test_function;
+ hash_size_t size = hash_table->size;
+ unsigned int hcode_initial =
+ hash_table->hash_function ?
+ hash_table->hash_function (key) :
+ (unsigned long) key;
+ unsigned int hcode = hcode_initial % size;
+ hentry *e = &harray [hcode];
+ CONST void *e_key = e->key;
+
+ if (e_key ?
+ KEYS_DIFFER_P (e_key, key, test_function) :
+ e->contents == NULL_ENTRY)
+ {
+ size_t h2 = size - 2;
+ unsigned int incr = 1 + (hcode_initial % h2);
+ do
+ {
+ hcode += incr; if (hcode >= size) hcode -= size;
+ e = &harray [hcode];
+ e_key = e->key;
+ }
+ while (e_key ?
+ KEYS_DIFFER_P (e_key, key, test_function) :
+ e->contents == NULL_ENTRY);
+ }
+
+ *ret_value = e->contents;
+ return e->key;
}
-
- *ret_value = e->contents;
- return e->key;
}
void
make_hash_table (hash_size_t size)
{
struct hash_table *hash_table = xnew_and_zero (struct hash_table);
- hash_table->size = prime_size (COMFORTABLE_SIZE (size));
+ hash_table->size = hash_table_size (COMFORTABLE_SIZE (size));
hash_table->harray = xnew_array (hentry, hash_table->size);
clrhash (hash_table);
return hash_table;
return hash_table;
}
-#if 0 /* unused strings code */
-struct hash_table *
-make_strings_hash_table (hash_size_t size)
-{
- return make_general_hash_table (size, string_hash, string_eq);
-}
-
-/* from base/generic-hash.cc, and hence from Dragon book, p436 */
-unsigned long
-string_hash (CONST void *xv)
-{
- unsigned int h = 0;
- unsigned CONST char *x = (unsigned CONST char *) xv;
-
- if (!x) return 0;
-
- while (*x != 0)
- {
- unsigned int g;
- h = (h << 4) + *x++;
- if ((g = h & 0xf0000000) != 0)
- h = (h ^ (g >> 24)) ^ g;
- }
-
- return h;
-}
-
-static int
-string_eq (CONST void *s1, CONST void *s2)
-{
- return s1 && s2 ? !strcmp ((CONST char *) s1, (CONST char *) s2) : s1 == s2;
-}
-#endif /* unused strings code */
-
-void
-copy_hash (struct hash_table *dest, struct hash_table *src)
-{
- if (dest->size != src->size)
- {
- xfree (dest->harray);
-
- dest->size = src->size;
- dest->harray = xnew_array (hentry, dest->size);
- }
- dest->fullness = src->fullness;
- dest->zero_entry = src->zero_entry;
- dest->zero_set = src->zero_set;
- dest->hash_function = src->hash_function;
- dest->test_function = src->test_function;
- memcpy (dest->harray, src->harray, sizeof (hentry) * dest->size);
-}
-
static void
grow_hash_table (struct hash_table *hash_table, hash_size_t new_size)
{
hash_size_t old_size = hash_table->size;
hentry *old_harray = hash_table->harray;
- hentry *new_harray;
-
- new_size = prime_size (new_size);
-
- new_harray = xnew_array (hentry, new_size);
- hash_table->size = new_size;
- hash_table->harray = new_harray;
+ hash_table->size = hash_table_size (new_size);
+ hash_table->harray = xnew_array (hentry, hash_table->size);
/* do the rehash on the "grown" table */
{
}
void
-expand_hash_table (struct hash_table *hash_table, hash_size_t needed_size)
-{
- hash_size_t size = hash_table->size;
- hash_size_t comfortable_size = COMFORTABLE_SIZE (needed_size);
- if (size < comfortable_size)
- grow_hash_table (hash_table, comfortable_size + 1);
-}
-
-void
puthash (CONST void *key, void *contents, struct hash_table *hash_table)
{
- hash_table_test_function test_function = hash_table->test_function;
- hash_size_t size = hash_table->size;
- hash_size_t fullness = hash_table->fullness;
- hentry *harray;
- CONST void *e_key;
- hentry *e;
- unsigned int hcode_initial =
- hash_table->hash_function ?
- hash_table->hash_function (key) :
- (unsigned long) key;
- unsigned int hcode;
- unsigned int incr = 0;
- size_t h2;
- CONST void *oldcontents;
-
if (!key)
{
hash_table->zero_entry = contents;
hash_table->zero_set = 1;
- return;
}
-
- if (size < (1 + COMFORTABLE_SIZE (fullness)))
- {
- grow_hash_table (hash_table, size + 1);
- size = hash_table->size;
- fullness = hash_table->fullness;
- }
-
- harray= hash_table->harray;
- h2 = size - 2;
-
- hcode = hcode_initial % size;
-
- e_key = harray [hcode].key;
- if (e_key && KEYS_DIFFER_P (e_key, key, test_function))
- {
- h2 = size - 2;
- incr = 1 + (hcode_initial % h2);
- do
- {
- hcode += incr;
- if (hcode >= size) hcode -= size;
- e_key = harray [hcode].key;
- }
- while (e_key && KEYS_DIFFER_P (e_key, key, test_function));
- }
- oldcontents = harray [hcode].contents;
- harray [hcode].key = key;
- harray [hcode].contents = contents;
- /* If the entry that we used was a deleted entry,
- check for a non deleted entry of the same key,
- then delete it. */
- if (!e_key && oldcontents == NULL_ENTRY)
+ else
{
- if (!incr) incr = 1 + ((unsigned long) key % h2);
-
- do
- {
- hcode += incr; if (hcode >= size) hcode -= size;
- e = &harray [hcode];
- e_key = e->key;
- }
- while (e_key ?
- KEYS_DIFFER_P (e_key, key, test_function):
- e->contents == NULL_ENTRY);
-
- if (e_key)
- {
- e->key = 0;
- e->contents = NULL_ENTRY;
- }
+ hash_table_test_function test_function = hash_table->test_function;
+ hash_size_t size = hash_table->size;
+ hentry *harray = hash_table->harray;
+ unsigned int hcode_initial =
+ hash_table->hash_function ?
+ hash_table->hash_function (key) :
+ (unsigned long) key;
+ unsigned int hcode = hcode_initial % size;
+ size_t h2 = size - 2;
+ unsigned int incr = 1 + (hcode_initial % h2);
+ CONST void *e_key = harray [hcode].key;
+ CONST void *oldcontents;
+
+ if (e_key && KEYS_DIFFER_P (e_key, key, test_function))
+ {
+ do
+ {
+ hcode += incr; if (hcode >= size) hcode -= size;
+ e_key = harray [hcode].key;
+ }
+ while (e_key && KEYS_DIFFER_P (e_key, key, test_function));
+ }
+ oldcontents = harray [hcode].contents;
+ harray [hcode].key = key;
+ harray [hcode].contents = contents;
+ /* If the entry that we used was a deleted entry,
+ check for a non deleted entry of the same key,
+ then delete it. */
+ if (!e_key && oldcontents == NULL_ENTRY)
+ {
+ hentry *e;
+
+ do
+ {
+ hcode += incr; if (hcode >= size) hcode -= size;
+ e = &harray [hcode];
+ e_key = e->key;
+ }
+ while (e_key ?
+ KEYS_DIFFER_P (e_key, key, test_function):
+ e->contents == NULL_ENTRY);
+
+ if (e_key)
+ {
+ e->key = 0;
+ e->contents = NULL_ENTRY;
+ }
+ }
+
+ /* only increment the fullness when we used up a new hentry */
+ if (!e_key || KEYS_DIFFER_P (e_key, key, test_function))
+ {
+ hash_size_t comfortable_size = COMFORTABLE_SIZE (++(hash_table->fullness));
+ if (hash_table->size < comfortable_size)
+ grow_hash_table (hash_table, comfortable_size + 1);
+ }
}
-
- /* only increment the fullness when we used up a new hentry */
- if (!e_key || KEYS_DIFFER_P (e_key, key, test_function))
- hash_table->fullness++;
}
static void
void
remhash (CONST void *key, struct hash_table *hash_table)
{
- hentry *harray = hash_table->harray;
- hash_table_test_function test_function = hash_table->test_function;
- hash_size_t size = hash_table->size;
- unsigned int hcode_initial =
- (hash_table->hash_function) ?
- (hash_table->hash_function (key)) :
- ((unsigned long) key);
- unsigned int hcode = hcode_initial % size;
- hentry *e = &harray [hcode];
- CONST void *e_key = e->key;
-
if (!key)
{
hash_table->zero_entry = 0;
hash_table->zero_set = 0;
- return;
- }
-
- if (e_key ?
- KEYS_DIFFER_P (e_key, key, test_function) :
- e->contents == NULL_ENTRY)
- {
- size_t h2 = size - 2;
- unsigned int incr = 1 + (hcode_initial % h2);
- do
- {
- hcode += incr; if (hcode >= size) hcode -= size;
- e = &harray [hcode];
- e_key = e->key;
- }
- while (e_key?
- KEYS_DIFFER_P (e_key, key, test_function):
- e->contents == NULL_ENTRY);
}
- if (e_key)
+ else
{
- e->key = 0;
- e->contents = NULL_ENTRY;
- /* Note: you can't do fullness-- here, it breaks the world. */
+ hentry *harray = hash_table->harray;
+ hash_table_test_function test_function = hash_table->test_function;
+ hash_size_t size = hash_table->size;
+ unsigned int hcode_initial =
+ (hash_table->hash_function) ?
+ (hash_table->hash_function (key)) :
+ ((unsigned long) key);
+ unsigned int hcode = hcode_initial % size;
+ hentry *e = &harray [hcode];
+ CONST void *e_key = e->key;
+
+ if (e_key ?
+ KEYS_DIFFER_P (e_key, key, test_function) :
+ e->contents == NULL_ENTRY)
+ {
+ size_t h2 = size - 2;
+ unsigned int incr = 1 + (hcode_initial % h2);
+ do
+ {
+ hcode += incr; if (hcode >= size) hcode -= size;
+ e = &harray [hcode];
+ e_key = e->key;
+ }
+ while (e_key?
+ KEYS_DIFFER_P (e_key, key, test_function):
+ e->contents == NULL_ENTRY);
+ }
+ if (e_key)
+ {
+ e->key = 0;
+ e->contents = NULL_ENTRY;
+ /* Note: you can't do fullness-- here, it breaks the world. */
+ }
}
}
hash_table_hash_function hash_function,
hash_table_test_function test_function);
-struct hash_table *make_strings_hash_table (hash_size_t size);
-
/* Clear HASH-TABLE. A freshly created hash table is already cleared up. */
void clrhash (struct hash_table *hash_table);
typedef int (*remhash_predicate) (CONST void* key, CONST void* contents,
void* arg);
-typedef void (*generic_hash_table_op) (struct hash_table *hash_table,
- void *arg1, void *arg2, void *arg3);
-
/* Call MF (key, contents, arg) for every entry in HASH-TABLE */
void maphash (maphash_function mf, struct hash_table *hash_table, void* arg);
void map_remhash (remhash_predicate predicate,
struct hash_table *hash_table, void *arg);
-/* Copy all the entries from SRC into DEST -- DEST is modified as needed
- so it is as big as SRC. */
-void copy_hash (struct hash_table *dest, struct hash_table *src);
-
-/* Make sure HASH-TABLE can hold at least NEEDED_SIZE entries */
-void expand_hash_table (struct hash_table *hash_table, hash_size_t needed_size);
-
#endif /* _HASH_H_ */
extern void *sbrk ();
#endif /* __STDC__ */
-extern char *start_of_data ();
+extern char *start_of_data (void);
#ifdef BSD
#ifndef DATA_SEG_BITS
typedef unsigned long SIZE;
#endif
-extern POINTER start_of_data ();
+extern POINTER start_of_data (void);
#ifdef DATA_SEG_BITS
#define EXCEEDS_LISP_PTR(ptr) \
(((EMACS_UINT) (ptr) & ~DATA_SEG_BITS) >> VALBITS)
#include <config.h>
#include "lisp.h"
-#include <audio.h>
+#include <string.h>
#include <sys/file.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include <string.h>
+#include <unistd.h>
+#include <audio.h>
#include <netinet/in.h> /* for ntohl() etc. */
/* Configuration options */
(!strncmp(".snd", (char *)(address), 4))
static Lisp_Object
-close_sound_file (closure)
- Lisp_Object closure;
+close_sound_file (Lisp_Object closure)
{
close (XINT (closure));
return Qnil;
}
void
-play_sound_file (sound_file, volume)
- char * sound_file;
- int volume;
+play_sound_file (char *sound_file, int volume)
{
int count = specpdl_depth ();
int input_fd;
};
static Lisp_Object
-restore_audio_port (closure)
- Lisp_Object closure;
+restore_audio_port (Lisp_Object closure)
{
Lisp_Object * contents = XVECTOR_DATA (closure);
saved_device_state[1] = XINT (contents[0]);
}
void
-play_sound_data (data, length, volume)
- unsigned char * data;
- int length;
- int volume;
+play_sound_data (unsigned char *data, int length, int volume)
{
int count = specpdl_depth ();
AudioContext ac;
}
static AudioContext
-audio_initialize (data, length, volume)
- unsigned char * data;
- int length;
- int volume;
+audio_initialize (unsigned char *data, int length, int volume)
{
Lisp_Object audio_port_state[3];
static AudioContextRec desc;
}
static void
-play_internal (data, length, ac)
- unsigned char * data;
- int length;
- AudioContext ac;
+play_internal (unsigned char *data, int length, AudioContext ac)
{
unsigned char * limit;
if (ac == (AudioContext) 0)
}
static void
-drain_audio_port (ac)
- AudioContext ac;
+drain_audio_port (AudioContext ac)
{
while (ALgetfilled (ac->ac_port) > 0)
sginap(1);
#include "libst.h"
#else /* not USE_MULAW_DECODE_TABLE */
static int
-st_ulaw_to_linear (u)
- int u;
+st_ulaw_to_linear (int u)
{
static CONST short table[] = {0,132,396,924,1980,4092,8316,16764};
int u1 = ~u;
#endif /* not USE_MULAW_DECODE_TABLE */
static void
-write_mulaw_8_chunk (buffer, chunklimit, ac)
- void * buffer;
- void * chunklimit;
- AudioContext ac;
+write_mulaw_8_chunk (void *buffer, void *chunklimit, AudioContext ac)
{
unsigned char * data = (unsigned char *) buffer;
unsigned char * limit = (unsigned char *) chunklimit;
#if HAVE_LINEAR
static void
-write_linear_chunk (data, limit, ac)
- void * data;
- void * limit;
- AudioContext ac;
+write_linear_chunk (void *data, void *limit, AudioContext ac)
{
unsigned n_samples;
#if HAVE_LINEAR_32
static void
-write_linear_32_chunk (buffer, chunklimit, ac)
- void * buffer;
- void * chunklimit;
- AudioContext ac;
+write_linear_32_chunk (void *buffer, void *chunklimit, AudioContext ac)
{
long * data = (long *) buffer;
long * limit = (long *) chunklimit;
#endif /* HAVE_LINEAR */
\f
static AudioContext
-initialize_audio_port (desc)
- AudioContext desc;
+initialize_audio_port (AudioContext desc)
{
/* we can't use the same port for mono and stereo */
static AudioContextRec mono_port_state
}
static int
-open_audio_port (return_ac, desc)
- AudioContext return_ac;
- AudioContext desc;
+open_audio_port (AudioContext return_ac, AudioContext desc)
{
ALconfig config = ALnewconfig();
long params[2];
}
static int
-set_channels (config, nchan)
- ALconfig config;
- unsigned nchan;
+set_channels (ALconfig config, unsigned int nchan)
{
switch (nchan)
{
}
static int
-set_output_format (config, format)
- ALconfig config;
- AudioFormat format;
+set_output_format (ALconfig config, AudioFormat format)
{
long samplesize;
long old_samplesize;
}
static void
-adjust_audio_volume (device)
- AudioDevice device;
+adjust_audio_volume (AudioDevice device)
{
long params[4];
params[0] = AL_LEFT_SPEAKER_GAIN;
}
static void
-get_current_volumes (device)
- AudioDevice device;
+get_current_volumes (AudioDevice device)
{
long params[4];
params[0] = AL_LEFT_SPEAKER_GAIN;
SNDFormatCode;
static int
-parse_snd_header (header, length, desc)
- void * header;
- long length;
- AudioContext desc;
+parse_snd_header (void *header, long length, AudioContext desc)
{
#define hp ((SNDSoundStruct *) (header))
long limit;
nhdr.aout.bsize = 0;
if (entry_address == 0)
{
- extern DEFAULT_ENTRY_ADDRESS ();
+ extern int DEFAULT_ENTRY_ADDRESS (void);
nhdr.aout.entry = (unsigned long)DEFAULT_ENTRY_ADDRESS;
}
else
/* Round X up to a multiple of Y. */
-int
-round_up (x, y)
- int x, y;
+static int
+round_up (int x, int y)
{
int rem = x % y;
if (rem == 0)
if NOERROR is 0; we return -1 if NOERROR is nonzero. */
static int
-find_section (name, section_names, file_name, old_file_h, old_section_h, noerror)
- char *name;
- char *section_names;
- char *file_name;
- l_Elf_Ehdr *old_file_h;
- l_Elf_Shdr *old_section_h;
- int noerror;
+find_section (char *name,
+ char *section_names,
+ char *file_name,
+ l_Elf_Ehdr *old_file_h,
+ l_Elf_Shdr *old_section_h,
+ int noerror)
{
int idx;
*
*/
int
-unexec (new_name, old_name, data_start, bss_start, entry_address)
- char *new_name, *old_name;
- uintptr_t data_start, bss_start, entry_address;
+unexec (char *new_name,
+ char *old_name,
+ uintptr_t data_start,
+ uintptr_t bss_start,
+ uintptr_t entry_address)
{
extern uintptr_t bss_end;
int new_file, old_file, new_file_size;
+1999-03-05 XEmacs Build Bot <builds@cvs.xemacs.org>
+
+ * XEmacs 21.2.12 is released
+
1999-03-01 XEmacs Build Bot <builds@cvs.xemacs.org>
* XEmacs 21.2.11 is released
#!/bin/sh
emacs_major_version=21
emacs_minor_version=2
-emacs_beta_version=11
-xemacs_codename="Calliope"
+emacs_beta_version=12
+xemacs_codename="Clio"
infodock_major_version=4
infodock_minor_version=0
infodock_build_version=1