Raymond Toy pushed to branch issue-111-fixes-for-motifd-clm at cmucl / cmucl

Commits:

6 changed files:

Changes:

  • src/interface/debug.lisp
    ... ... @@ -157,9 +157,10 @@
    157 157
     	  (di:do-debug-function-variables (v debug-fun)
    
    158 158
     	    (unless any-p
    
    159 159
     	      (setf any-p t)
    
    160
    -	      (push (create-label frame-view "localsLabel"
    
    161
    -					 :font-list *header-font*
    
    162
    -					 :label-string "Local variables:")
    
    160
    +	      (push (with-compound-strings ((label-string "Local variables:"
    
    161
    +							  +header-tag+))
    
    162
    +		      (create-label frame-view "localsLabel"
    
    163
    +				   :label-string label-string))
    
    163 164
     		    widgets))
    
    164 165
     	    (when (eq (di:debug-variable-validity v location) :valid)
    
    165 166
     	      (let ((value (di:debug-variable-value v frame))
    
    ... ... @@ -176,23 +177,23 @@
    176 177
     	  (cond
    
    177 178
     	   ((not any-p)
    
    178 179
     	    (push
    
    179
    -	     (create-label frame-view "noLocals"
    
    180
    -				  :font-list *italic-font*
    
    181
    -				  :label-string
    
    182
    -				  "   No local variables in function.")
    
    180
    +	     (with-compound-strings
    
    181
    +		 ((label-string "   No local variables in function." +italic-tag+))
    
    182
    +	       (create-label frame-view "noLocals"
    
    183
    +			    :label-string label-string))
    
    183 184
     	     widgets))
    
    184 185
     	   ((not any-valid-p)
    
    185 186
     	    (push
    
    186
    -	     (create-label frame-view "noValidLocals"
    
    187
    -				  :font-list *italic-font*
    
    188
    -				  :label-string
    
    189
    -				  "   All variables have invalid values.")
    
    187
    +	     (with-compound-strings
    
    188
    +		 ((label-string "   All variables have invalid values." +italic-tag+))
    
    189
    +	       (create-label frame-view "noValidLocals"
    
    190
    +			    :label-string label-string))
    
    190 191
     	     widgets))))
    
    191 192
     
    
    192
    -	(push (create-label frame-view "noVariableInfo"
    
    193
    -				   :font-list *italic-font*
    
    194
    -				   :label-string
    
    195
    -				   "   No variable information available.")
    
    193
    +	(push (with-compound-strings
    
    194
    +		  ((label-string "   No variable information available." +italic-tag+))
    
    195
    +		(create-label frame-view "noVariableInfo"
    
    196
    +			      :label-string label-string))
    
    196 197
     	      widgets))
    
    197 198
         (apply #'manage-children widgets)))
    
    198 199
     
    
    ... ... @@ -203,9 +204,9 @@
    203 204
     ;;;
    
    204 205
     (defun debug-display-frame-prompt (frame frame-view)
    
    205 206
       (let* ((form (create-form frame-view "promptForm"))
    
    206
    -	 (label (create-label form "framePrompt"
    
    207
    -				     :label-string "Frame Eval:"
    
    208
    -				     :font-list *header-font*))
    
    207
    +	 (label (with-compound-strings ((label "Frame Eval:" +header-tag+))
    
    208
    +		  (create-label form "framePrompt"
    
    209
    +				:label-string label)))
    
    209 210
     	 (entry (create-text form "frameEval"
    
    210 211
     			     :top-attachment :attach-widget
    
    211 212
     			     :top-widget label
    
    ... ... @@ -254,9 +255,9 @@
    254 255
     				 :callback 'frame-view-callback
    
    255 256
     				 :client-data
    
    256 257
     				 (di:debug-function-function debug-fun)))
    
    257
    -	 (slabel (create-label frame-view "sourceLabel"
    
    258
    -				      :font-list *header-font*
    
    259
    -				      :label-string "Source form:"))
    
    258
    +	 (slabel (with-compound-strings ((label "Source form:" +header-tag+))
    
    259
    +		   (create-label frame-view "sourceLabel"
    
    260
    +				 :label-string label)))
    
    260 261
     	 (swindow (create-scrolled-window frame-view "frameSourceWindow"
    
    261 262
     					  :scrolling-policy :automatic
    
    262 263
     					  :scroll-bar-placement :bottom-right))
    
    ... ... @@ -378,12 +379,13 @@
    378 379
     		   '(("Close All Frames" close-all-callback)
    
    379 380
     		     ("Dump Backtrace" dump-backtrace-callback)
    
    380 381
     		     ("Quit Debugger" quit-debugger-callback))))
    
    381
    - 	 (errlabel (create-label form "errorLabel"
    
    382
    -					:top-attachment :attach-widget
    
    383
    -					:top-widget menu-bar
    
    384
    -					:left-attachment :attach-form
    
    385
    -					:font-list *header-font*
    
    386
    -					:label-string "Error Message:"))
    
    382
    +	 (errlabel (with-compound-strings
    
    383
    +		       ((label "Error Message:" +header-tag+))
    
    384
    +		     (create-label form "errorLabel"
    
    385
    +				   :top-attachment :attach-widget
    
    386
    +				   :top-widget menu-bar
    
    387
    +				   :left-attachment :attach-form
    
    388
    +				   :label-string label)))
    
    387 389
     	 (errmsg (create-label form "errorMessage"
    
    388 390
     				      :top-attachment :attach-widget
    
    389 391
     				      :top-widget errlabel
    
    ... ... @@ -392,8 +394,7 @@
    392 394
     	 (rlabel (create-label form "restartLabel"
    
    393 395
     				      :top-attachment :attach-widget
    
    394 396
     				      :top-widget errmsg
    
    395
    -				      :left-attachment :attach-form
    
    396
    -				      :font-list *header-font*))
    
    397
    +				      :left-attachment :attach-form))
    
    397 398
     	 (restarts (create-row-column form "debugRestarts"
    
    398 399
     				      :adjust-last nil
    
    399 400
     				      :top-attachment :widget
    
    ... ... @@ -401,12 +402,12 @@
    401 402
     				      :left-attachment :attach-form
    
    402 403
     				      :right-attachment :attach-form
    
    403 404
     				      :left-offset 10))
    
    404
    -	 (btlabel (create-label form "backtraceLabel"
    
    405
    -				       :label-string "Stack Backtrace:"
    
    406
    -				       :font-list *header-font*
    
    407
    -				       :top-attachment :attach-widget
    
    408
    -				       :top-widget restarts
    
    409
    -				       :left-attachment :attach-form))
    
    405
    +	 (btlabel (with-compound-strings ((label "Stack Backtrace:" +header-tag+))
    
    406
    +		    (create-label form "backtraceLabel"
    
    407
    +				 :label-string label
    
    408
    +				 :top-attachment :attach-widget
    
    409
    +				 :top-widget restarts
    
    410
    +				 :left-attachment :attach-form)))
    
    410 411
     	 (btwindow (create-scrolled-window form "backtraceWindow"
    
    411 412
     					   :scrolling-policy :automatic
    
    412 413
     					   :scroll-bar-placement :bottom-right
    
    ... ... @@ -431,9 +432,11 @@
    431 432
         
    
    432 433
         (if *debug-restarts*
    
    433 434
     	(progn
    
    434
    -	  (set-values rlabel :label-string "Restarts:")
    
    435
    +	  (with-compound-strings ((label "Restarts:" +header-tag+))
    
    436
    +	    (set-values rlabel :label-string label))
    
    435 437
     	  (debug-display-restarts restarts))
    
    436
    -	(set-values rlabel :label-string "No restarts available"))
    
    438
    +	(with-compound-strings ((label "No restarts available" +header-tag+))
    
    439
    +	  (set-values rlabel :label-string label)))
    
    437 440
     
    
    438 441
         (let ((quick-stack (create-highlight-button backtrace "quickStack"
    
    439 442
     						"Display Stack")))
    

  • src/interface/initial.lisp
    ... ... @@ -21,7 +21,7 @@
    21 21
     (defpackage "INTERFACE"
    
    22 22
       (:use "TOOLKIT" "LISP" "EXTENSIONS" "KERNEL")
    
    23 23
       (:shadow "CLASS-DIRECT-SUPERCLASSES")
    
    24
    -  (:export "*HEADER-FONT*" "*ITALIC-FONT*" "*ENTRY-FONT*" "*INTERFACE-STYLE*"
    
    24
    +  (:export "*INTERFACE-STYLE*" "+HEADER-TAG+" "+ITALIC-TAG+"
    
    25 25
     	   "USE-GRAPHICS-INTERFACE" "VERIFY-SYSTEM-SERVER-EXISTS"
    
    26 26
     	   "CREATE-INTERFACE-SHELL" "POPUP-INTERFACE-PANE"
    
    27 27
     	   "CREATE-INTERFACE-PANE-SHELL" "FIND-INTERFACE-PANE"
    
    ... ... @@ -29,4 +29,4 @@
    29 29
     	   "SET-VALUE-BOX" "WITH-WIDGET-CHILDREN" "INTERFACE-ERROR"
    
    30 30
     	   "PRINT-FOR-WIDGET-DISPLAY" "WITH-BUSY-CURSOR"
    
    31 31
     	   "CREATE-INTERFACE-MENU" "CREATE-CACHED-MENU"
    
    32
    -	   "GRAB-OUTPUT-AS-STRING" "*ALL-FONTS*" "LISP-CONTROL-PANEL"))
    32
    +	   "GRAB-OUTPUT-AS-STRING" "LISP-CONTROL-PANEL"))

  • src/interface/inspect.lisp
    ... ... @@ -77,10 +77,10 @@
    77 77
       (declare (ignore widget call-data))
    
    78 78
       (multiple-value-bind (form shell)
    
    79 79
     		       (create-form-dialog pane "evalDialog")
    
    80
    -    (let* ((s1 (compound-string-create "Eval: " "HeaderFont"))
    
    80
    +    (let* ((s1 (compound-string-create "Eval: " +header-tag+))
    
    81 81
     	   (s2 (compound-string-create
    
    82 82
     		(format nil "[~a]" (print-for-widget-display "~S" object))
    
    83
    -		"EntryFont"))
    
    83
    +		""))
    
    84 84
     	   (s3 (compound-string-concat s1 s2))
    
    85 85
     	   (done (create-push-button-gadget form "evalDone"
    
    86 86
     					    :label-string "Done"
    
    ... ... @@ -98,7 +98,6 @@
    98 98
     	   (prompt (create-label-gadget form "evalPrompt"
    
    99 99
     					:bottom-attachment :attach-widget
    
    100 100
     					:bottom-widget entry
    
    101
    -					:font-list *all-fonts*
    
    102 101
     					:label-string s3))
    
    103 102
     	   (output (create-text form "evalOutput"
    
    104 103
     				:edit-mode :multi-line-edit
    
    ... ... @@ -208,14 +207,16 @@
    208 207
     		       ,``(("Eval Expression" popup-eval-callback ,pane ,,object)
    
    209 208
     			   ("Close Pane" destroy-pane-callback ,,object)
    
    210 209
     			   ("Close All Panes" close-all-callback))))
    
    211
    -	      (title (create-label-gadget
    
    212
    -		      over-form "inspectTitle"
    
    213
    -		      :label-string (inspector-pane-title ,object)
    
    214
    -		      :font-list *header-font*
    
    215
    -		      :top-attachment :attach-widget
    
    216
    -		      :top-widget menu-bar
    
    217
    -		      :left-attachment :attach-form
    
    218
    -		      :right-attachment :attach-form))
    
    210
    +	      (title (with-compound-strings ((label-string
    
    211
    +					      (inspector-pane-title ,object)
    
    212
    +					      +header-tag+))
    
    213
    +		       (create-label-gadget
    
    214
    +			over-form "inspectTitle"
    
    215
    +			:label-string label-string
    
    216
    +			:top-attachment :attach-widget
    
    217
    +			:top-widget menu-bar
    
    218
    +			:left-attachment :attach-form
    
    219
    +			:right-attachment :attach-form)))
    
    219 220
     	      (form (create-form over-form "inspectForm"
    
    220 221
     				 :left-attachment :attach-form
    
    221 222
     				 :right-attachment :attach-form
    
    ... ... @@ -424,15 +425,17 @@
    424 425
     					    :left-attachment :attach-form
    
    425 426
     					    :right-attachment :attach-form
    
    426 427
     					    :orientation :horizontal))
    
    427
    -	       (slabel (create-label-gadget controls "sequenceStartLabel"
    
    428
    -					    :font-list *header-font*
    
    429
    -					    :label-string "Start:"))
    
    428
    +	       (slabel (with-compound-strings ((label-string
    
    429
    +						"Start:" +header-tag+))
    
    430
    +			 (create-label-gadget controls "sequenceStartLabel"
    
    431
    +					      :label-string label-string)))
    
    430 432
     	       (start (create-text controls "sequenceStart"
    
    431 433
     				   :value "0"
    
    432 434
     				   :columns 4))
    
    433
    -	       (clabel (create-label-gadget controls "sequenceCountLabel"
    
    434
    -					    :font-list *header-font*
    
    435
    -					    :label-string "Count:"))
    
    435
    +	       (clabel (with-compound-strings ((label-string
    
    436
    +						"Count:" +header-tag+))
    
    437
    +			 (create-label-gadget controls "sequenceCountLabel"
    
    438
    +					      :label-string label-string)))
    
    436 439
     	       (count (create-text controls "sequenceCount"
    
    437 440
     				   :value "5"
    
    438 441
     				   :columns 4))
    
    ... ... @@ -442,9 +445,10 @@
    442 445
     					  :left-attachment :attach-form
    
    443 446
     					  :right-attachment :attach-form
    
    444 447
     					  :orientation :horizontal))
    
    445
    -	       (flabel (create-label-gadget filter "sequenceFilterLabel"
    
    446
    -					    :font-list *header-font*
    
    447
    -					    :label-string "Filter:"))
    
    448
    +	       (flabel (with-compound-strings ((label-string
    
    449
    +						"Filter:" +header-tag+))
    
    450
    +			(create-label-gadget filter "sequenceFilterLabel"
    
    451
    +					     :label-string label-string)))
    
    448 452
     	       (fexp (create-text filter "sequenceFilterExp" :value "T"))
    
    449 453
     	       (apply (create-push-button-gadget filter "sequenceFilterApply"
    
    450 454
     						 :label-string "Apply"))
    
    ... ... @@ -491,9 +495,9 @@
    491 495
     	  (manage-child rc)))))
    
    492 496
     
    
    493 497
     (defun show-slot-list (object slot-list view allocp label)
    
    494
    -  (let ((label (create-label-gadget view "slotLabel"
    
    495
    -				    :label-string label
    
    496
    -				    :font-list *header-font*))
    
    498
    +  (let ((label (with-compound-strings ((label-string label +header-tag+))
    
    499
    +		 (create-label-gadget view "slotLabel"
    
    500
    +				      :label-string label-string)))
    
    497 501
     	(widgets))
    
    498 502
         (dolist (slotd slot-list)
    
    499 503
           (with-slots ((slot pcl::name) (allocation pcl::allocation))
    

  • src/interface/interface.lisp
    ... ... @@ -22,15 +22,6 @@
    22 22
     
    
    23 23
     ;;;; Globally defined variables
    
    24 24
     
    
    25
    -(defparameter entry-font-name "-adobe-helvetica-medium-r-normal--*-120-75-*")
    
    26
    -(defparameter header-font-name "-adobe-helvetica-bold-r-normal--*-120-75-*")
    
    27
    -(defparameter italic-font-name "-adobe-helvetica-medium-o-normal--*-120-75-*")
    
    28
    -
    
    29
    -
    
    30
    -(defvar *header-font*)
    
    31
    -(defvar *italic-font*)
    
    32
    -(defvar *entry-font*)
    
    33
    -(defvar *all-fonts*)
    
    34 25
     
    
    35 26
     (defvar *system-motif-server* nil)
    
    36 27
     
    
    ... ... @@ -62,6 +53,17 @@
    62 53
       "This specifies the default interface mode for the debugger and inspector.
    
    63 54
        The allowable values are :GRAPHICS and :TTY.")
    
    64 55
     
    
    56
    +;; Tags for compound strings' rendering of non-default text. Compound
    
    57
    +;; strings' tags are the keys Motif uses to look up style info in
    
    58
    +;; RenderTables. Tags are part of the "public" interface to
    
    59
    +;; customizing the GUI, so they're constants. We define them as
    
    60
    +;; (constant) variables here to avoid the possibility of typographical
    
    61
    +;; errors at call sites (typos would not be detectable errors; they'd
    
    62
    +;; simply be tags that aren't keys in any RenderTables). They're
    
    63
    +;; exported from INTERFACE only because the CLM debugger needs them.
    
    64
    +(defconstant +header-tag+ "header")
    
    65
    +(defconstant +italic-tag+ "italic")
    
    66
    +
    
    65 67
     
    
    66 68
     
    
    67 69
     ;;;; Functions for dealing with interface widgets
    
    ... ... @@ -78,19 +80,7 @@
    78 80
     	(with-motif-connection (con)
    
    79 81
     	  (setf (xti:motif-connection-close-hook *motif-connection*)
    
    80 82
     		#'close-connection-hook)
    
    81
    -	  (setf *header-font*
    
    82
    -		(build-simple-font-list "HeaderFont" header-font-name))
    
    83
    -	  (setf *italic-font*
    
    84
    -		(build-simple-font-list "ItalicFont" italic-font-name))
    
    85
    -	  (setf *entry-font*
    
    86
    -		(build-simple-font-list "EntryFont" entry-font-name))
    
    87
    -	  (setf *all-fonts*
    
    88
    -		(build-font-list `(("EntryFont" ,entry-font-name)
    
    89
    -				   ("HeaderFont" ,header-font-name)
    
    90
    - 				   ("ItalicFont" ,italic-font-name))))
    
    91
    -
    
    92
    -	  (let ((shell (create-application-shell
    
    93
    -			:default-font-list *entry-font*)))
    
    83
    +	  (let ((shell (create-application-shell)))
    
    94 84
     	    (setf *lisp-interface-panes* (make-hash-table))
    
    95 85
     	    (setf *lisp-interface-menus* (make-hash-table :test #'equal))
    
    96 86
     	    (setf *lisp-interface-connection* con)
    
    ... ... @@ -110,7 +100,6 @@
    110 100
     	 (pane (or existing
    
    111 101
     		   (create-popup-shell "interfacePaneShell"
    
    112 102
     				       :top-level-shell shell
    
    113
    -				       :default-font-list *entry-font*
    
    114 103
     				       :keyboard-focus-policy :pointer
    
    115 104
     				       :title title
    
    116 105
     				       :icon-name title))))
    
    ... ... @@ -193,17 +182,17 @@
    193 182
     				:margin-height 0
    
    194 183
     				:margin-width 0
    
    195 184
     				:orientation :horizontal))
    
    196
    -	 (label (create-label rc "valueLabel"
    
    197
    -				     :font-list *header-font*
    
    198
    -				     :label-string name))
    
    185
    +	 (label (with-compound-strings ((name name +header-tag+))
    
    186
    +		  (create-label rc "valueLabel"
    
    187
    +				:label-string name)))
    
    199 188
     	 (button (if activep
    
    200 189
     		     (create-highlight-button rc "valueObject"
    
    201 190
     					      (print-for-widget-display
    
    202 191
     					       "~S" value))
    
    203
    -		     (create-label rc "valueObject"
    
    204
    -					  :font-list *italic-font*
    
    205
    -					  :label-string
    
    206
    -					  (format nil "~A" value)))))
    
    192
    +		     (with-compound-strings
    
    193
    +			 ((value (format nil "~A" value) +italic-tag+))
    
    194
    +		       (create-label rc "valueObject"
    
    195
    +				     :label-string value)))))
    
    207 196
         (manage-children label button)
    
    208 197
         (when (and callback activep)
    
    209 198
           (add-callback button :activate-callback
    
    ... ... @@ -633,11 +622,12 @@
    633 622
     				 :bottom-attachment :attach-form
    
    634 623
     				 :right-attachment :attach-position
    
    635 624
     				 :right-position 50))
    
    636
    -	 (prompt (create-label form "inspectPrompt"
    
    637
    -				      :top-attachment :attach-widget
    
    638
    -				      :top-widget menu-bar
    
    639
    -				      :font-list *header-font*
    
    640
    -				      :label-string "Inspect new object:"))
    
    625
    +	 (prompt (with-compound-strings ((prompt
    
    626
    +					  "Inspect new object:" +header-tag+))
    
    627
    +		   (create-label form "inspectPrompt"
    
    628
    +				 :top-attachment :attach-widget
    
    629
    +				 :top-widget menu-bar
    
    630
    +				 :label-string prompt)))
    
    641 631
     	 (entry (create-text form "inspectEval"
    
    642 632
     			     :top-attachment :attach-widget
    
    643 633
     			     :top-widget prompt
    
    ... ... @@ -646,11 +636,12 @@
    646 636
     			     :left-attachment :attach-form
    
    647 637
     			     :right-attachment :attach-widget
    
    648 638
     			     :right-widget vsep))
    
    649
    -	 (hlabel (create-label form "inspectHistoryLabel"
    
    650
    -				      :top-attachment :attach-widget
    
    651
    -				      :top-widget entry
    
    652
    -				      :font-list *header-font*
    
    653
    -				      :label-string "Inspector History:"))
    
    639
    +	 (hlabel (with-compound-strings ((prompt
    
    640
    +					  "Inspector History:" +header-tag+))
    
    641
    +		   (create-label form "inspectHistoryLabel"
    
    642
    +				 :top-attachment :attach-widget
    
    643
    +				 :top-widget entry
    
    644
    +				 :label-string prompt)))
    
    654 645
     	 (hview (create-scrolled-list form "inspectHistory"
    
    655 646
     				      :visible-item-count 5
    
    656 647
     				      :left-offset 4
    
    ... ... @@ -662,13 +653,13 @@
    662 653
     				      :right-attachment :attach-widget
    
    663 654
     				      :right-widget vsep
    
    664 655
     				      :bottom-attachment :attach-form))
    
    665
    -	 (flabel (create-label form "filesLabel"
    
    666
    -				      :left-attachment :attach-widget
    
    667
    -				      :left-widget vsep
    
    668
    -				      :top-attachment :attach-widget
    
    669
    -				      :top-widget menu-bar
    
    670
    -				      :label-string "Files:"
    
    671
    -				      :font-list *header-font*))
    
    656
    +	 (flabel (with-compound-strings ((prompt "Files:" +header-tag+))
    
    657
    +		   (create-label form "filesLabel"
    
    658
    +				 :left-attachment :attach-widget
    
    659
    +				 :left-widget vsep
    
    660
    +				 :top-attachment :attach-widget
    
    661
    +				 :top-widget menu-bar
    
    662
    +				 :label-string prompt)))
    
    672 663
     	 (frc (create-row-column form "filesButtons" 
    
    673 664
     				 :packing :pack-column
    
    674 665
     				 :num-columns 2
    
    ... ... @@ -694,13 +685,13 @@
    694 685
     			       :left-offset 4
    
    695 686
     			       :right-offset 4
    
    696 687
     			       :bottom-offset 4))
    
    697
    -	 (alabel (create-label form "aproposLabel"
    
    698
    -				      :label-string "Apropos:"
    
    699
    -				      :font-list *header-font*
    
    700
    -				      :left-attachment :attach-widget
    
    701
    -				      :left-widget vsep
    
    702
    -				      :bottom-attachment :attach-widget
    
    703
    -				      :bottom-widget apropos))
    
    688
    +	 (alabel (with-compound-strings ((prompt "Apropos:" +header-tag+))
    
    689
    +		   (create-label form "aproposLabel"
    
    690
    +				:label-string prompt
    
    691
    +				:left-attachment :attach-widget
    
    692
    +				:left-widget vsep
    
    693
    +				:bottom-attachment :attach-widget
    
    694
    +				:bottom-widget apropos)))
    
    704 695
     	 (hsep (create-separator  form "separator"
    
    705 696
     					:left-attachment :attach-widget
    
    706 697
     					:left-widget vsep
    

  • src/motif/lisp/initial.lisp
    ... ... @@ -139,7 +139,7 @@
    139 139
     	   "TEXT-CALLBACK-FORMAT" "*DEBUG-MODE*" "*DEFAULT-SERVER-HOST*"
    
    140 140
     	   "*CLM-BINARY-DIRECTORY*" "*CLM-BINARY-NAME*"
    
    141 141
     	   "*DEFAULT-DISPLAY*" "QUIT-APPLICATION" "WITH-MOTIF-CONNECTION"
    
    142
    -	   "RUN-MOTIF-APPLICATION" "WITH-CLX-REQUESTS"
    
    142
    +	   "RUN-MOTIF-APPLICATION" "WITH-CLX-REQUESTS" "WITH-COMPOUND-STRINGS"
    
    143 143
     	   "BUILD-SIMPLE-FONT-LIST" "BUILD-FONT-LIST" "*MOTIF-CONNECTION*"
    
    144 144
     	   "*X-DISPLAY*" "WIDGET" "XMSTRING" "FONT-LIST" "SET-VALUES"
    
    145 145
     	   "GET-VALUES" "CREATE-MANAGED-WIDGET" "CREATE-WIDGET"
    

  • src/motif/lisp/main.lisp
    ... ... @@ -89,6 +89,16 @@
    89 89
     	(popdown target))
    
    90 90
           (popdown widget)))
    
    91 91
     
    
    92
    +;; Another randomly placed useful thing.
    
    93
    +(defmacro with-compound-strings ((&rest specs) &body body)
    
    94
    +  `(let ,(mapcar
    
    95
    +	  (lambda (spec)
    
    96
    +	    `(,(car spec)
    
    97
    +	      (compound-string-create ,(cadr spec) (or ,(caddr spec) ""))))
    
    98
    +	  specs)
    
    99
    +     (unwind-protect (progn ,@body)
    
    100
    +       ,@(mapcar (lambda (spec) `(compound-string-free ,(car spec))) specs))))
    
    101
    +
    
    92 102
     
    
    93 103
     
    
    94 104
     ;;;; A convenient (and CLM compatible) way to start Motif applications