aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Love2001-02-20 10:56:15 +0000
committerDave Love2001-02-20 10:56:15 +0000
commit2ff864e0b39e0b73d75cc1266f906b5fd117cd18 (patch)
treeee7db7a750d8d9f7ac394842231c789eca161075
parent54ed3bd2f1a710aae4b1d9d7e87cf5b48b693729 (diff)
downloademacs-2ff864e0b39e0b73d75cc1266f906b5fd117cd18.tar.gz
emacs-2ff864e0b39e0b73d75cc1266f906b5fd117cd18.zip
Revert bogus revision 2001-02-20T10:59:03Z!fx@gnu.org.
-rw-r--r--lisp/wid-edit.el93
1 files changed, 33 insertions, 60 deletions
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index dc7e28b4ed1..b28b52688c5 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -757,17 +757,13 @@ button end points.
757Optional ARGS are extra keyword arguments for TYPE." 757Optional ARGS are extra keyword arguments for TYPE."
758 (let ((widget (apply 'widget-convert type :delete 'widget-leave-text args)) 758 (let ((widget (apply 'widget-convert type :delete 'widget-leave-text args))
759 (from (copy-marker from)) 759 (from (copy-marker from))
760 (to (copy-marker to)) 760 (to (copy-marker to)))
761 (personality (get-text-property from 'personality)))
762 (set-marker-insertion-type from t) 761 (set-marker-insertion-type from t)
763 (set-marker-insertion-type to nil) 762 (set-marker-insertion-type to nil)
764 (widget-put widget :from from) 763 (widget-put widget :from from)
765 (widget-put widget :to to) 764 (widget-put widget :to to)
766 (when button-from 765 (when button-from
767 (widget-specify-button widget button-from button-to)) 766 (widget-specify-button widget button-from button-to))
768 ;; W3 provides advice for this for Emacspeak's benefit.
769 (if personality
770 (put-text-property from to 'personality personality))
771 widget)) 767 widget))
772 768
773(defun widget-convert-button (type from to &rest args) 769(defun widget-convert-button (type from to &rest args)
@@ -2377,51 +2373,12 @@ Return an alist of (TYPE MATCH)."
2377 ;; Pass notification to parent. 2373 ;; Pass notification to parent.
2378 (widget-apply widget :notify child event)) 2374 (widget-apply widget :notify child event))
2379 2375
2380;;; The `insert/delete-button' Widget.
2381
2382(define-widget 'insert/delete-button 'push-button
2383 "An insert/delete item button for the `editable-list' widget."
2384 :create (lambda (widget)
2385 (let* ((map (make-sparse-keymap))
2386 (parent (widget-get widget :keymap)))
2387 (if parent
2388 (set-keymap-parent map parent))
2389 (define-key map [?\C-k] #'widget-list-item-delete)
2390 (define-key map [?\C-o] #'widget-list-item-insert)
2391 (widget-put widget :keymap map))
2392 (widget-default-create widget))
2393 :tag "+/-"
2394 :help-echo "Insert or delete a new item into the list here"
2395 :action 'widget-insert/delete-button-action)
2396
2397(defun widget-insert/delete-button-action (widget &optional event)
2398 "Ask the parent to insert or delete a new item."
2399 (if (y-or-n-p "Delete this item? (otherwise insert a new one)")
2400 (widget-apply (widget-get widget :parent)
2401 :delete-at (widget-get widget :widget))
2402 (widget-apply (widget-get widget :parent)
2403 :insert-before (widget-get widget :widget))))
2404
2405(defun widget-list-item-insert ()
2406 "Delete the list item widget which is the parent of the widget at point."
2407 (interactive)
2408 (let ((widget (widget-at (point))))
2409 (widget-apply (widget-get widget :parent)
2410 :insert-before (widget-get widget :widget))))
2411
2412(defun widget-list-item-delete ()
2413 "Add a new list item widget after the parent of the widget at point."
2414 (interactive)
2415 (let ((widget (widget-at (point))))
2416 (widget-apply (widget-get widget :parent)
2417 :delete-at (widget-get widget :widget))))
2418
2419;;; The `insert-button' Widget. 2376;;; The `insert-button' Widget.
2420 2377
2421(define-widget 'insert-button 'push-button 2378(define-widget 'insert-button 'push-button
2422 "An append item button for the `editable-list' widget." 2379 "An insert button for the `editable-list' widget."
2423 :tag "+" 2380 :tag "INS"
2424 :help-echo "Append a new item to the list" 2381 :help-echo "Insert a new item into the list at this position."
2425 :action 'widget-insert-button-action) 2382 :action 'widget-insert-button-action)
2426 2383
2427(defun widget-insert-button-action (widget &optional event) 2384(defun widget-insert-button-action (widget &optional event)
@@ -2429,6 +2386,19 @@ Return an alist of (TYPE MATCH)."
2429 (widget-apply (widget-get widget :parent) 2386 (widget-apply (widget-get widget :parent)
2430 :insert-before (widget-get widget :widget))) 2387 :insert-before (widget-get widget :widget)))
2431 2388
2389;;; The `delete-button' Widget.
2390
2391(define-widget 'delete-button 'push-button
2392 "A delete button for the `editable-list' widget."
2393 :tag "DEL"
2394 :help-echo "Delete this item from the list."
2395 :action 'widget-delete-button-action)
2396
2397(defun widget-delete-button-action (widget &optional event)
2398 ;; Ask the parent to insert a new item.
2399 (widget-apply (widget-get widget :parent)
2400 :delete-at (widget-get widget :widget)))
2401
2432;;; The `editable-list' Widget. 2402;;; The `editable-list' Widget.
2433 2403
2434;; (defcustom widget-editable-list-gui nil 2404;; (defcustom widget-editable-list-gui nil
@@ -2442,7 +2412,7 @@ Return an alist of (TYPE MATCH)."
2442 :offset 12 2412 :offset 12
2443 :format "%v%i\n" 2413 :format "%v%i\n"
2444 :format-handler 'widget-editable-list-format-handler 2414 :format-handler 'widget-editable-list-format-handler
2445 :entry-format "%- %v" 2415 :entry-format "%i %d %v"
2446 :menu-tag "editable-list" 2416 :menu-tag "editable-list"
2447 :value-create 'widget-editable-list-value-create 2417 :value-create 'widget-editable-list-value-create
2448 :value-delete 'widget-children-value-delete 2418 :value-delete 'widget-children-value-delete
@@ -2566,7 +2536,7 @@ Return an alist of (TYPE MATCH)."
2566 ;; Create a new entry to the list. 2536 ;; Create a new entry to the list.
2567 (let ((type (nth 0 (widget-get widget :args))) 2537 (let ((type (nth 0 (widget-get widget :args)))
2568;;; (widget-push-button-gui widget-editable-list-gui) 2538;;; (widget-push-button-gui widget-editable-list-gui)
2569 child ins/del buttons) 2539 child delete insert)
2570 (widget-specify-insert 2540 (widget-specify-insert
2571 (save-excursion 2541 (save-excursion
2572 (and (widget-get widget :indent) 2542 (and (widget-get widget :indent)
@@ -2578,11 +2548,14 @@ Return an alist of (TYPE MATCH)."
2578 (delete-backward-char 2) 2548 (delete-backward-char 2)
2579 (cond ((eq escape ?%) 2549 (cond ((eq escape ?%)
2580 (insert ?%)) 2550 (insert ?%))
2581 ((eq escape ?-) 2551 ((eq escape ?i)
2582 (setq ins/del (apply 'widget-create-child-and-convert 2552 (setq insert (apply 'widget-create-child-and-convert
2583 widget 'insert/delete-button 2553 widget 'insert-button
2584 (widget-get widget 2554 (widget-get widget :insert-button-args))))
2585 :insert/delete-button-args)))) 2555 ((eq escape ?d)
2556 (setq delete (apply 'widget-create-child-and-convert
2557 widget 'delete-button
2558 (widget-get widget :delete-button-args))))
2586 ((eq escape ?v) 2559 ((eq escape ?v)
2587 (if conv 2560 (if conv
2588 (setq child (widget-create-child-value 2561 (setq child (widget-create-child-value
@@ -2593,17 +2566,18 @@ Return an alist of (TYPE MATCH)."
2593 (widget-default-get type)))))) 2566 (widget-default-get type))))))
2594 (t 2567 (t
2595 (error "Unknown escape `%c'" escape))))) 2568 (error "Unknown escape `%c'" escape)))))
2596 (setq buttons (widget-get widget :buttons)) 2569 (widget-put widget
2597 (if ins/del 2570 :buttons (cons delete
2598 (push ins/del buttons)) 2571 (cons insert
2599 (widget-put widget :buttons buttons) 2572 (widget-get widget :buttons))))
2600 (let ((entry-from (point-min-marker)) 2573 (let ((entry-from (point-min-marker))
2601 (entry-to (point-max-marker))) 2574 (entry-to (point-max-marker)))
2602 (set-marker-insertion-type entry-from t) 2575 (set-marker-insertion-type entry-from t)
2603 (set-marker-insertion-type entry-to nil) 2576 (set-marker-insertion-type entry-to nil)
2604 (widget-put child :entry-from entry-from) 2577 (widget-put child :entry-from entry-from)
2605 (widget-put child :entry-to entry-to))) 2578 (widget-put child :entry-to entry-to)))
2606 (if ins/del (widget-put ins/del :widget child)) 2579 (widget-put insert :widget child)
2580 (widget-put delete :widget child)
2607 child)) 2581 child))
2608 2582
2609;;; The `group' Widget. 2583;;; The `group' Widget.
@@ -3014,7 +2988,6 @@ It will read a directory name from the minibuffer when invoked."
3014 "History of input to `widget-variable-prompt-value'.") 2988 "History of input to `widget-variable-prompt-value'.")
3015 2989
3016(define-widget 'variable 'symbol 2990(define-widget 'variable 'symbol
3017 ;; Should complete on variables.
3018 "A Lisp variable." 2991 "A Lisp variable."
3019 :prompt-match 'boundp 2992 :prompt-match 'boundp
3020 :prompt-history 'widget-variable-prompt-value-history 2993 :prompt-history 'widget-variable-prompt-value-history