view lisp/cus-start.el @ 5013:ae48681c47fa

changes to VOID_TO_LISP et al. -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-08 Ben Wing <ben@xemacs.org> * casetab.c (compute_canon_mapper): * casetab.c (initialize_identity_mapper): * casetab.c (compute_up_or_eqv_mapper): * casetab.c (recompute_case_table): * casetab.c (set_case_table): * chartab.c (copy_mapper): * chartab.c (copy_char_table_range): * chartab.c (get_range_char_table_1): * console.c (find_nonminibuffer_frame_not_on_console_predicate): * console.c (find_nonminibuffer_frame_not_on_console): * console.c (nuke_all_console_slots): * device.c: * device.c (find_nonminibuffer_frame_not_on_device_predicate): * device.c (find_nonminibuffer_frame_not_on_device): * dialog-msw.c (dialog_proc): * dialog-msw.c (handle_question_dialog_box): * dialog-x.c (maybe_run_dbox_text_callback): * eval.c: * eval.c (safe_run_hook_trapping_problems_1): * eval.c (safe_run_hook_trapping_problems): * event-msw.c: * event-msw.c (mswindows_wnd_proc): * event-msw.c (mswindows_find_frame): * faces.c (update_face_inheritance_mapper): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_get_mouse_position): * frame-msw.c (mswindows_get_frame_parent): * glade.c (connector): * glade.c (Fglade_xml_signal_connect): * glade.c (Fglade_xml_signal_autoconnect): * glade.c (Fglade_xml_textdomain): * glyphs-msw.c (mswindows_subwindow_instantiate): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs.c (check_instance_cache_mapper): * glyphs.c (check_window_subwindow_cache): * glyphs.c (check_image_instance_structure): * gui-x.c (snarf_widget_value_mapper): * gui-x.c (popup_selection_callback): * gui-x.c (button_item_to_widget_value): * keymap.c (map_keymap_mapper): * keymap.c (Fmap_keymap): * menubar-gtk.c (__torn_off_sir): * menubar-gtk.c (__activate_menu): * menubar-gtk.c (menu_convert): * menubar-gtk.c (__generic_button_callback): * menubar-gtk.c (menu_descriptor_to_widget_1): * menubar-msw.c: * menubar-msw.c (EMPTY_ITEM_ID): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * menubar-x.c (pre_activate_callback): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar-x.c (command_builder_find_menu_accelerator): * print.c (print_internal): * process-unix.c (close_process_descs_mapfun): * process.c (get_process_from_usid): * process.c (init_process_io_handles): * profile.c (sigprof_handler): * profile.c (get_profiling_info_timing_maphash): * profile.c (Fget_profiling_info): * profile.c (set_profiling_info_timing_maphash): * profile.c (mark_profiling_info_maphash): * scrollbar-msw.c (mswindows_create_scrollbar_instance): * scrollbar-msw.c (mswindows_free_scrollbar_instance): * scrollbar-msw.c (mswindows_handle_scrollbar_event): * specifier.c (recompute_cached_specifier_everywhere_mapfun): * specifier.c (recompute_cached_specifier_everywhere): * syntax.c (copy_to_mirrortab): * syntax.c (copy_if_not_already_present): * syntax.c (update_just_this_syntax_table): * text.c (new_dfc_convert_now_damn_it): * text.h (LISP_STRING_TO_EXTERNAL): * tooltalk.c: * tooltalk.c (tooltalk_message_callback): * tooltalk.c (tooltalk_pattern_callback): * tooltalk.c (Fcreate_tooltalk_message): * tooltalk.c (Fcreate_tooltalk_pattern): * ui-byhand.c (__generic_toolbar_callback): * ui-byhand.c (generic_toolbar_insert_item): * ui-byhand.c (__emacs_gtk_ctree_recurse_internal): * ui-byhand.c (Fgtk_ctree_recurse): * ui-gtk.c (__internal_callback_destroy): * ui-gtk.c (__internal_callback_marshal): * ui-gtk.c (Fgtk_signal_connect): * ui-gtk.c (gtk_type_to_lisp): * ui-gtk.c (lisp_to_gtk_type): * ui-gtk.c (lisp_to_gtk_ret_type): * lisp-disunion.h: * lisp-disunion.h (NON_LVALUE): * lisp-union.h: * lisp.h (LISP_HASH): Rename: LISP_TO_VOID -> STORE_LISP_IN_VOID VOID_TO_LISP -> GET_LISP_FROM_VOID These new names are meant to clearly identify that the Lisp object is the source and void the sink, and that they can't be used the other way around -- they aren't exact opposites despite the old names. The names are also important given the new functions created just below. Also, clarify comments in lisp-union.h and lisp-disunion.h about the use of the functions. * lisp.h: New functions STORE_VOID_IN_LISP and GET_VOID_FROM_LISP. These are different from the above in that the source is a void * (previously, you had to use make_opaque_ptr()). * eval.c (restore_lisp_object): * eval.c (record_unwind_protect_restoring_lisp_object): * eval.c (struct restore_int): * eval.c (restore_int): * eval.c (record_unwind_protect_restoring_int): * eval.c (free_pointer): * eval.c (record_unwind_protect_freeing): * eval.c (free_dynarr): * eval.c (record_unwind_protect_freeing_dynarr): * eval.c (unbind_to_1): Use STORE_VOID_IN_LISP and GET_VOID_FROM_LISP to eliminate the use of make_opaque_ptr() and mostly eliminate Lisp consing entirely in the use of these various record_unwind_protect_* functions as well as internal_bind_* (e.g. internal_bind_int). * tests.c: * tests.c (Ftest_store_void_in_lisp): * tests.c (syms_of_tests): * tests.c (vars_of_tests): Add an C-assert-style test to test STORE_VOID_IN_LISP and GET_VOID_FROM_LISP to make sure the same value comes back that was put in.
author Ben Wing <ben@xemacs.org>
date Mon, 08 Feb 2010 06:42:16 -0600
parents 141c2920ea48
children 308d34e9f07d
line wrap: on
line source

;;; cus-start.el --- define customization properties of builtins.

;; Copyright (C) 1997 Free Software Foundation, Inc.

;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
;; Maintainer: XEmacs Development Team
;; Keywords: internal, dumped

;; This file is part of XEmacs.

;; XEmacs is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; XEmacs is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with XEmacs; see the file COPYING.  If not, write to the Free
;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
;; 02111-1307, USA.

;;; Synched up with: Not synched with FSF.

;;; Commentary:

;; This file is dumped with XEmacs.

;; The following code is used to define the customization properties
;; for builtin variables, and variables in the packages that are
;; preloaded /very/ early, before custom.el itself (replace.el is such
;; an example).  The way it handles custom stuff is dirty, and should
;; be regarded as a last resort.  DO NOT add variables here, unless
;; you know what you are doing.

;; Must be run before the user has changed the value of any options!


;;; Code:

(require 'custom)

(let ((all '(;; boolean
	     (abbrev-all-caps abbrev boolean)
	     (allow-deletion-of-last-visible-frame frames boolean)
	     (allow-incremental-gc alloc boolean)
	     (debug-on-quit debug boolean)
	     (delete-auto-save-files auto-save boolean)
	     (delete-exited-processes processes-basics boolean)
	     (garbage-collection-messages alloc boolean)
	     (indent-tabs-mode editing-basics boolean)
	     (load-ignore-elc-files maint boolean)
	     (load-ignore-out-of-date-elc-files maint boolean)
	     (load-show-full-path-in-messages maint boolean)
	     (load-always-display-messages maint boolean)
	     (load-warn-when-source-newer maint boolean)
	     (load-warn-when-source-only maint boolean)
	     (modifier-keys-are-sticky keyboard boolean)
	     (no-redraw-on-reenter display boolean)
	     (scroll-on-clipped-lines display boolean)
	     (truncate-partial-width-windows display boolean)
	     (visible-bell sound boolean)
	     (x-allow-sendevents x boolean)
	     (zmacs-regions editing-basics boolean)
	     (load-home-init-file installation boolean)
	     ;; integer
	     (auto-save-interval auto-save integer)
	     (bell-volume sound integer)
	     (bell-inhibit-time sound integer)
	     (echo-keystrokes keyboard integer)
	     (gc-cons-threshold alloc integer)
	     (gc-cons-incremental-threshold alloc integer)
	     (gc-incremental-traversal-threshold alloc integer)
	     (next-screen-context-lines display integer)
	     (scroll-conservatively display integer)
	     (scroll-step windows integer)
	     (window-min-height windows integer)
	     (window-min-width windows integer)
	     ;; object
	     (auto-save-file-format auto-save
				    (choice (const :tag "Normal" t)
					    (repeat (symbol :tag "Format"))))
	     (completion-ignored-extensions minibuffer
					    (repeat
					     (string :format "%v")))
	     (debug-ignored-errors debug (repeat (choice :format "%v"
							 (symbol :tag "Class")
							 regexp)))
	     (debug-on-error debug  (choice (const :tag "off" nil)
					    (const :tag "Always" t)
					    (repeat :menu-tag "When"
						    :value (nil)
						    (symbol
						     :tag "Condition"))))
	     (debug-on-signal debug (choice (const :tag "off" nil)
					    (const :tag "Always" t)
					    (repeat :menu-tag "When"
						    :value (nil)
						    (symbol
						     :tag "Condition"))))
	     (exec-path processes-basics (repeat
					  (choice :tag "Directory"
						  (const :tag "Default" nil)
						  (directory :format "%v"))))
	     (file-name-handler-alist data (repeat
					    (cons regexp
						  (function :tag "Handler"))))
	     (shell-file-name execute file)
	     (stack-trace-on-error debug (choice (const :tag "off" nil)
					    (const :tag "Always" t)
					    (repeat :menu-tag "When"
						    :value (nil)
						    (symbol
						     :tag "Condition"))))
	     (stack-trace-on-signal debug (choice (const :tag "off" nil)
					    (const :tag "Always" t)
					    (repeat :menu-tag "When"
						    :value (nil)
						    (symbol
						     :tag "Condition"))))
	     (modifier-keys-sticky-time keyboard
					(choice (integer :tag "Milliseconds")
						(const :tag "Unbounded" 'unbounded)))
	     ;; buffer-local
	     (case-fold-search matching boolean)
	     (ctl-arrow display (choice (integer 160)
					(sexp :tag "160 (default)"
					      :format "%t\n")))
	     (fill-column fill integer)
	     (left-margin fill integer)
	     (tab-width editing-basics integer)
	     (truncate-lines display boolean)
	     (overwrite-mode editing-basics ;; for the options menu - dverna
			     (choice (const :tag "disabled" nil)
				     (const :tag "textual"
					    'overwrite-mode-textual)
				     (const :tag "binary"
					    'overwrite-mode-binary)))
	     ;; not documented as user-options, but should still be
	     ;; customizable:
	     (bar-cursor display (choice (const :tag "Block Cursor" nil)
					 (const :tag "Bar Cursor (1 pixel)" t)
					 (sexp :tag "Bar Cursor (2 pixels)"
					       :format "%t\n" 'other)))
	     (default-frame-plist frames plist)
	     (default-tty-frame-plist frames plist)
	     (default-x-frame-plist frames plist)
	     (disable-auto-save-when-buffer-shrinks auto-save boolean)
	     (find-file-use-truenames find-file boolean)
	     (find-file-compare-truenames find-file boolean)
	     (focus-follows-mouse x boolean)
	     (help-char keyboard (choice character
					 (sexp :tag "Single key specifier")))
	     (max-lisp-eval-depth limits integer)
	     (max-specpdl-size limits integer)
	     (meta-prefix-char keyboard character)
	     (parse-sexp-ignore-comments editing-basics boolean)
	     (selective-display display 
				(choice (const :tag "off" nil)
					(integer :tag "space"
						 :format "%v"
						 1)
					(const :tag "on" t)))
	     (selective-display-ellipses display boolean)
	     (signal-error-on-buffer-boundary internal boolean)
	     (temp-buffer-show-function
	      windows (radio (function-item :tag "Temp Buffers Always in Same Frame"
					    :format "%t\n"
					    show-temp-buffer-in-current-frame)
			     (const :tag "Temp Buffers Like Other Buffers" nil)
			     (function :tag "Other")))
	     (undo-threshold undo integer)
	     (undo-high-threshold undo integer)
	     (words-include-escapes editing-basics boolean)
	     ;; These are from replace.el, which is loaded too early
	     ;; to be customizable.
	     (case-replace matching boolean)
	     (query-replace-highlight matching boolean)
	     (list-matching-lines-default-context-lines matching integer)))
      this symbol group type)
  (while all
    (setq this (car all)
	  all (cdr all)
	  symbol (nth 0 this)
	  group (nth 1 this)
	  type (nth 2 this))
    (if (not (boundp symbol))
	;; This is loaded so early, there is no message
	(if (fboundp 'message)
	    ;; If variables are removed from C code, give an error here!
	    (message "Intrinsic `%S' not bound" symbol))
      ;; This is called before any user can have changed the value.
      (put symbol 'standard-value 
	   (list (quote-maybe (default-value symbol))))
      ;; Add it to the right group.
      (custom-add-to-group group symbol 'custom-variable)
      ;; Set the type.
      (put symbol 'custom-type type))))

;; This is to prevent it from being reloaded by `cus-load.el'.
(provide 'cus-start)

;;; cus-start.el ends here.