Mercurial > hg > xemacs-beta
view etc/sample.Xresources @ 4677:8f1ee2d15784
Support full Common Lisp multiple values in C.
lisp/ChangeLog
2009-08-11 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el :
Update this file to support full C-level multiple values. This
involves:
-- Four new bytecodes, and special compiler functions to compile
multiple-value-call, multiple-value-list-internal, values,
values-list, and, since it now needs to pass back multiple values
and is a special form, throw.
-- There's a new compiler variable, byte-compile-checks-on-load,
which is a list of forms that are evaluated at the very start of a
file, with an error thrown if any of them give nil.
-- The header is now inserted *after* compilation, giving a chance
for the compilation process to influence what those checks
are. There is still a check done before compilation for non-ASCII
characters, to try to turn off dynamic docstrings if appopriate,
in `byte-compile-maybe-reset-coding'.
Space is reserved for checks; comments describing the version of
the byte compiler generating the file are inserted if space
remains for them.
* bytecomp.el (byte-compile-version):
Update this, we're a newer version of the byte compiler.
* byte-optimize.el (byte-optimize-funcall):
Correct a comment.
* bytecomp.el (byte-compile-lapcode):
Discard the arg with byte-multiple-value-call.
* bytecomp.el (byte-compile-checks-and-comments-space):
New variable, describe how many octets to reserve for checks at
the start of byte-compiled files.
* cl-compat.el:
Remove the fake multiple-value implementation. Have the functions
that use it use the real multiple-value implementation instead.
* cl-macs.el (cl-block-wrapper, cl-block-throw):
Revise the byte-compile properties of these symbols to work now
we've made throw into a special form; keep the byte-compile
properties as anonymous lambdas, since we don't have docstrings
for them.
* cl-macs.el (multiple-value-bind, multiple-value-setq)
(multiple-value-list, nth-value):
Update these functions to work with the C support for multiple
values.
* cl-macs.el (values):
Modify the setf handler for this to call
#'multiple-value-list-internal appropriately.
* cl-macs.el (cl-setf-do-store):
If the store form is a cons, treat it specially as wrapping the
store value.
* cl.el (cl-block-wrapper):
Make this an alias of #'and, not #'identity, since it needs to
pass back multiple values.
* cl.el (multiple-value-apply):
We no longer support this, mark it obsolete.
* lisp-mode.el (eval-interactive-verbose):
Remove a useless space in the docstring.
* lisp-mode.el (eval-interactive):
Update this function and its docstring. It now passes back a list,
basically wrapping any eval calls with multiple-value-list. This
allows multiple values to be printed by default in *scratch*.
* lisp-mode.el (prin1-list-as-multiple-values):
New function, printing a list as multiple values in the manner of
Bruno Haible's clisp, separating each entry with " ;\n".
* lisp-mode.el (eval-last-sexp):
Call #'prin1-list-as-multiple-values on the return value of
#'eval-interactive.
* lisp-mode.el (eval-defun):
Call #'prin1-list-as-multiple-values on the return value of
#'eval-interactive.
* mouse.el (mouse-eval-sexp):
Deal with lists corresponding to multiple values from
#'eval-interactive. Call #'cl-prettyprint, which is always
available, instead of sometimes calling #'pprint and sometimes
falling back to prin1.
* obsolete.el (obsolete-throw):
New function, called from eval.c when #'funcall encounters an
attempt to call #'throw (now a special form) as a function. Only
needed for compatibility with 21.4 byte-code.
man/ChangeLog addition:
2009-08-11 Aidan Kehoe <kehoea@parhasard.net>
* cl.texi (Organization):
Remove references to the obsolete multiple-value emulating code.
src/ChangeLog addition:
2009-08-11 Aidan Kehoe <kehoea@parhasard.net>
* bytecode.c (enum Opcode /* Byte codes */):
Add four new bytecodes, to deal with multiple values.
(POP_WITH_MULTIPLE_VALUES): New macro.
(POP): Modify this macro to ignore multiple values.
(DISCARD_PRESERVING_MULTIPLE_VALUES): New macro.
(DISCARD): Modify this macro to ignore multiple values.
(TOP_WITH_MULTIPLE_VALUES): New macro.
(TOP_ADDRESS): New macro.
(TOP): Modify this macro to ignore multiple values.
(TOP_LVALUE): New macro.
(Bcall): Ignore multiple values where appropriate.
(Breturn): Pass back multiple values.
(Bdup): Preserve multiple values.
Use TOP_LVALUE with most bytecodes that assign anything to
anything.
(Bbind_multiple_value_limits, Bmultiple_value_call,
Bmultiple_value_list_internal, Bthrow): Implement the new
bytecodes.
(Bgotoifnilelsepop, Bgotoifnonnilelsepop, BRgotoifnilelsepop,
BRgotoifnonnilelsepop):
Discard any multiple values.
* callint.c (Fcall_interactively):
Ignore multiple values when calling #'eval, in two places.
* device-x.c (x_IO_error_handler):
* macros.c (pop_kbd_macro_event):
* eval.c (Fsignal):
* eval.c (flagged_a_squirmer):
Call throw_or_bomb_out, not Fthrow, now that the latter is a
special form.
* eval.c:
Make Qthrow, Qobsolete_throw available as symbols.
Provide multiple_value_current_limit, multiple-values-limit (the
latter as specified by Common Lisp.
* eval.c (For):
Ignore multiple values when comparing with Qnil, but pass any
multiple values back for the last arg.
* eval.c (Fand):
Ditto.
* eval.c (Fif):
Ignore multiple values when examining the result of the
condition.
* eval.c (Fcond):
Ignore multiple values when comparing what the clauses give, but
pass them back if a clause gave non-nil.
* eval.c (Fprog2):
Never pass back multiple values.
* eval.c (FletX, Flet):
Ignore multiple when evaluating what exactly symbols should be
bound to.
* eval.c (Fwhile):
Ignore multiple values when evaluating the test.
* eval.c (Fsetq, Fdefvar, Fdefconst):
Ignore multiple values.
* eval.c (Fthrow):
Declare this as a special form; ignore multiple values for TAG,
preserve them for VALUE.
* eval.c (throw_or_bomb_out):
Make this available to other files, now Fthrow is a special form.
* eval.c (Feval):
Ignore multiple values when calling a compiled function, a
non-special-form subr, or a lambda expression.
* eval.c (Ffuncall):
If we attempt to call #'throw (now a special form) as a function,
don't error, call #'obsolete-throw instead.
* eval.c (make_multiple_value, multiple_value_aset)
(multiple_value_aref, print_multiple_value, mark_multiple_value)
(size_multiple_value):
Implement the multiple_value type. Add a long comment describing
our implementation.
* eval.c (bind_multiple_value_limits):
New function, used by the bytecode and by #'multiple-value-call,
#'multiple-value-list-internal.
* eval.c (multiple_value_call):
New function, used by the bytecode and #'multiple-value-call.
* eval.c (Fmultiple_value_call):
New special form.
* eval.c (multiple_value_list_internal):
New function, used by the byte code and
#'multiple-value-list-internal.
* eval.c (Fmultiple_value_list_internal, Fmultiple_value_prog1):
New special forms.
* eval.c (Fvalues, Fvalues_list):
New Lisp functions.
* eval.c (values2):
New function, for C code returning multiple values.
* eval.c (syms_of_eval):
Make our new Lisp functions and symbols available.
* eval.c (multiple-values-limit):
Make this available to Lisp.
* event-msw.c (dde_eval_string):
* event-stream.c (execute_help_form):
* glade.c (connector):
* glyphs-widget.c (glyph_instantiator_to_glyph):
* glyphs.c (evaluate_xpm_color_symbols):
* gui-x.c (wv_set_evalable_slot, button_item_to_widget_value):
* gui.c (gui_item_value, gui_item_display_flush_left):
* lread.c (check_if_suppressed):
* menubar-gtk.c (menu_convert, menu_descriptor_to_widget_1):
* menubar-msw.c (populate_menu_add_item):
* print.c (Fwith_output_to_temp_buffer):
* symbols.c (Fsetq_default):
Ignore multiple values when calling Feval.
* symeval.h:
Add the header declarations necessary for the multiple-values
implementation.
* inline.c:
#include symeval.h, now that it has some inline functions.
* lisp.h:
Update Fthrow's declaration. Make throw_or_bomb_out available to
all files.
* lrecord.h (enum lrecord_type):
Add the multiple_value type here.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 16 Aug 2009 20:55:49 +0100 |
parents | f15523a6da7a |
children | 4ed2dedf36a1 |
line wrap: on
line source
! This is a sample .Xresources file. The resources below are the ! actual resources used as defaults for XEmacs, although the ! form of these resources in the XEmacs app-defaults file is ! slightly different. ! ! You can use the examples below as a basis for your own customizations: ! copy and modify any of the resources below into your own ~/.Xresources file. ! .Xresources specifies defaults for all applications, not just XEmacs; it is ! normally used to customize fonts, colors, and the like, while ~/.emacs is ! used to change other sorts of (XEmacs-specific) behavior. ! ! In general, changes to your .Xresources file will not take effect until the ! next time you restart the window system. To reload your resources ! explicitly, use the shell command ! ! xrdb -load ~/.Xresources ! ! The resources will take effect the next time you restart XEmacs. (Simply ! creating a new xemacs frame is not enough - you must restart the editor ! for the changes to take effect.) ! ! Colors and backgrounds. ! ====================== ! The contrasts of these colors will cause them to map to the appropriate ! one of "black" or "white" on monochrome systems. ! ! The valid color names on your system can be found by looking in the file ! `rgb.txt', usually found in /usr/X11R6/lib/X11/ or /usr/openwin/lib/X11/. ! Set the foreground and background colors of the `default' face. ! The default face colors are the base for most of the other faces' ! colors. The default background is gray80, and the default foreground ! is black. XEmacs.default.attributeBackground: gray80 XEmacs.default.attributeForeground: black ! Set the modeline colors. XEmacs.modeline*attributeForeground: Black XEmacs.modeline*attributeBackground: Gray75 ! Set the color of the text cursor. XEmacs.text-cursor*attributeBackground: Red3 ! If you want to set the color of the mouse pointer, do this: ! XEmacs.pointer*attributeForeground: Black ! If you want to set the background of the mouse pointer, do this: ! XEmacs.pointer*attributeBackground: White ! Note that by default, the pointer foreground and background are the same ! as the default face. ! Set the menubar colors. This overrides the default foreground and ! background colors specified above. XEmacs*menubar*Foreground: Gray30 XEmacs*menubar*Background: Gray75 ! This is for buttons in the menubar. ! Yellow would be better, but that would map to white on monochrome. XEmacs*menubar.buttonForeground: Blue XEmacs*XlwMenu.selectColor: ForestGreen XEmacs*XmToggleButton.selectColor: ForestGreen ! Specify the colors of popup menus. XEmacs*popup*Foreground: Black XEmacs*popup*Background: Gray75 ! Specify the colors of the various sub-widgets of the dialog boxes. XEmacs*dialog*Foreground: Black ! #A5C0C1 is a shade of blue XEmacs*dialog*Background: #A5C0C1 ! The following three are for Motif dialog boxes ... XEmacs*dialog*XmTextField*Background: WhiteSmoke XEmacs*dialog*XmText*Background: WhiteSmoke XEmacs*dialog*XmList*Background: WhiteSmoke ! While this one is for Athena dialog boxes. XEmacs*dialog*Command*Background: WhiteSmoke ! Athena dialog boxes are sometimes built with the Xaw3d ! variant of the Athena toolkit. ! XEmacs being nice to 8bit displays, it defaults to: XEmacs*dialog*Command*beNiceToColormap: true ! If you are shocked by the ugliness of the 3d rendition, ! you may want to set (even on 8bit displays) the above to false. ! Xlw Scrollbar colors XEmacs*XlwScrollBar.Foreground: Gray30 XEmacs*XlwScrollBar.Background: Gray75 XEmacs*XmScrollBar.Foreground: Gray30 XEmacs*XmScrollBar.Background: Gray75 ! ! The Lucid Scrollbar supports two added resources, SliderStyle is either ! "plain" (default) or "dimple". Dimple puts a small dimple in the middle ! of the slider that depresses when the slider is clicked on. ArrowPosition is ! either "opposite" (default) or "same". Opposite puts the arrows at opposite ! of the scrollbar, same puts both arrows at the same end, like the Amiga. ! ! XEmacs*XlwScrollBar.SliderStyle: dimple ! XEmacs*XlwScrollBar.ArrowPosition: opposite ! ! If you want to turn off a toolbar, set its height or width to 0. ! The correct size value is not really arbitrary. We only control it ! this way in order to avoid excess frame resizing when turning the ! toolbars on and off. ! ! To change the heights and widths of the toolbars: ! ! XEmacs.topToolBarHeight: 37 ! XEmacs.bottomToolBarHeight: 0 ! XEmacs.leftToolBarWidth: 0 ! XEmacs.rightToolBarWidth: 0 XEmacs*topToolBarShadowColor: Gray90 XEmacs*bottomToolBarShadowColor: Gray40 XEmacs*backgroundToolBarColor: Gray75 XEmacs*toolBarShadowThickness: 2 ! If you want to turn off vertical scrollbars, or change the default ! pixel width of the vertical scrollbars, do it like this (0 width ! means no vertical scrollbars): ! ! XEmacs.scrollBarWidth: 0 ! ! To change it for a particular frame, do this: ! ! XEmacs*FRAME-NAME.scrollBarWidth: 0 ! If you want to turn off horizontal scrollbars, or change the default ! pixel height of the horizontal scrollbars, do it like this (0 height ! means no horizontal scrollbars): ! ! XEmacs.scrollBarHeight: 0 ! ! To change it for a particular frame, do this: ! ! XEmacs*FRAME-NAME.scrollBarHeight: 0 ! To dynamically change the labels used for menubar buttons... ! ! XEmacs*XlwMenu.resourceLabels: True ! XEmacs*XlwMenu.newFrame.labelString: Open Another Window ! To have the Motif scrollbars on the left instead of the right, do this: ! ! XEmacs*scrollBarPlacement: BOTTOM_LEFT ! ! To have the Athena scrollbars on the right, use `BOTTOM_RIGHT' instead ! To have Motif scrollbars act more like Xt scrollbars... ! ! XEmacs*XmScrollBar.translations: #override \n\ ! <Btn1Down>: PageDownOrRight(0) \n\ ! <Btn3Down>: PageUpOrLeft(0) ! Fonts. ! ====== ! XEmacs requires the use of XLFD (X Logical Font Description) format font ! names, which look like ! ! *-courier-medium-r-*-*-*-120-*-*-*-*-*-* ! ! if you use any of the other, less strict font name formats, some of which ! look like ! lucidasanstypewriter-12 ! and fixed ! and 9x13 ! ! then XEmacs won't be able to guess the names of the bold and italic versions. ! All X fonts can be referred to via XLFD-style names, so you should use those ! forms. See the man pages for X(1), xlsfonts(1), and xfontsel(1). ! The default font for the text area of XEmacs is chosen at run-time ! by lisp code which tries a number of different possibilities in order ! of preference. If you wish to override it, use this: ! ! XEmacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* ! If you choose a font which does not have an italic version, you can specify ! some other font to use for it here: ! ! XEmacs.italic.attributeFont: -*-courier-medium-o-*-*-*-120-*-*-*-*-iso8859-* ! ! If you choose a font which does not have a bold-italic version, ! you can specify some other font to use for it here: ! ! XEmacs.bold-italic.attributeFont: -*-courier-bold-o-*-*-*-120-*-*-*-*-iso8859-* ! ! And here is how you would set the background color of the `highlight' face, ! but only on the screen named `debugger': ! ! XEmacs*debugger.highlight.attributeBackground: PaleTurquoise ! ! See the NEWS file (C-h n) for a more complete description of the resource ! syntax of faces. ! Font of the modeline, menubar and pop-up menus. ! Note that the menubar resources do not use the `face' syntax, since they ! are X toolkit widgets and thus outside the domain of XEmacs proper. ! ! When X Font Sets are enabled with ./configure --with-xfs (eg, for ! multilingual menubars and XIM), some .font resources (those specific to ! the Lucid widget set) are ignored in favor of .fontSet resources. ! Note that you need to use fontSet (or FontSet) in that case even if you ! want to specify one font: ! ! *menubar*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* ! ! There is no harm in having both resources set, except for the confusion ! you suffer. Sorry; that's the price of backward compatibility. ! *menubar*Font: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* *popup*Font: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* *menubar*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \ -*-*-*-*-*-*-*-120-*-iso10646-1, \ -*-*-*-*-*-*-*-120-*-jisx0208.1983-0, \ -*-*-*-*-*-*-*-120-*-jisx0201.1976-0 *popup*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \ -*-*-*-*-*-*-*-120-*-iso10646-1, \ -*-*-*-*-*-*-*-120-*-jisx0208.1983-0, \ -*-*-*-*-*-*-*-120-*-jisx0201.1976-0 ! Font in the Motif dialog boxes. ! (Motif uses `fontList' while most other things use `font' - if you don't ! know why you probably don't want to.) ! XEmacs*XmDialogShell*FontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* XEmacs*XmTextField*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* XEmacs*XmText*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* XEmacs*XmList*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* ! Font in the Athena dialog boxes. ! I think 14-point looks nicer than 12-point. ! Some people use 12-point anyway because you get more text, but ! there's no purpose at all in doing this for dialog boxes. XEmacs*Dialog*Font: -*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-* ! Dialog box translations. ! ======================= ! This accelerator binds <return> in a dialog box to <activate> on button1 XEmacs*dialog*button1.accelerators:#override\ <KeyPress>Return: ArmAndActivate()\n\ <KeyPress>KP_Enter: ArmAndActivate()\n\ Ctrl<KeyPress>m: ArmAndActivate()\n ! Translations to make the TextField widget behave more like XEmacs XEmacs*XmTextField.translations: #override\n\ !<Key>osfBackSpace: delete-previous-character()\n\ !<Key>osfDelete: delete-previous-character()\n\ !Ctrl<Key>h: delete-previous-character()\n\ !Ctrl<Key>d: delete-next-character()\n\ !Meta<Key>osfDelete: delete-previous-word()\n\ !Meta<Key>osfBackSpace: delete-previous-word()\n\ !Meta<Key>d: delete-next-word()\n\ !Ctrl<Key>k: delete-to-end-of-line()\n\ !Ctrl<Key>g: process-cancel()\n\ !Ctrl<Key>b: backward-character()\n\ !<Key>osfLeft: backward-character()\n\ !Ctrl<Key>f: forward-character()\n\ !<Key>osfRight: forward-character()\n\ !Meta<Key>b: backward-word()\n\ !Meta<Key>osfLeft: backward-word()\n\ !Meta<Key>f: forward-word()\n\ !Meta<Key>osfRight: forward-word()\n\ !Ctrl<Key>e: end-of-line()\n\ !Ctrl<Key>a: beginning-of-line()\n\ !Ctrl<Key>w: cut-clipboard()\n\ !Meta<Key>w: copy-clipboard()\n\ <Btn2Up>: copy-primary()\n ! With the XEmacs typeahead it's better to not have space be bound to ! ArmAndActivate() for buttons that appear in dialog boxes. This is ! not 100% Motif compliant but the benefits far outweight the ! compliancy problem. XEmacs*dialog*XmPushButton.translations:#override\n\ <Btn1Down>: Arm()\n\ <Btn1Down>,<Btn1Up>: Activate()\ Disarm()\n\ <Btn1Down>(2+): MultiArm()\n\ <Btn1Up>(2+): MultiActivate()\n\ <Btn1Up>: Activate()\ Disarm()\n\ <Key>osfSelect: ArmAndActivate()\n\ <Key>osfActivate: ArmAndActivate()\n\ <Key>osfHelp: Help()\n\ ~Shift ~Meta ~Alt <Key>Return: ArmAndActivate()\n\ <EnterWindow>: Enter()\n\ <LeaveWindow>: Leave()\n ! XIM input method style ! ======================= ! ximStyles is a (whitespace or comma-separated) list of XIMStyles in ! order of user's preference. ! Choose a subset of the following styles or reorder to taste XEmacs*ximStyles: XIMPreeditPosition|XIMStatusArea\ XIMPreeditPosition|XIMStatusNothing\ XIMPreeditPosition|XIMStatusNone\ XIMPreeditNothing|XIMStatusArea\ XIMPreeditNothing|XIMStatusNothing\ XIMPreeditNothing|XIMStatusNone\ XIMPreeditNone|XIMStatusArea\ XIMPreeditNone|XIMStatusNothing\ XIMPreeditNone|XIMStatusNone ! XIM Preedit and Status foreground and background XEmacs*EmacsFrame.ximForeground: black XEmacs*EmacsFrame.ximBackground: white ! XIM fontset (defaults to system fontset default) ! XEmacs*EmacsFrame.FontSet: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*