Mercurial > emacs
comparison lisp/wid-edit.el @ 59023:fa849ef3cf2c
(widget-specify-field, widget-specify-button):
Map a :follow-link keyword into a follow-link property.
(link): Add :follow-link keyword, map to RET binding.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 17 Dec 2004 15:17:47 +0000 |
parents | 4b3cfed7370f |
children | 52e7defa0669 eac554634bfa |
comparison
equal
deleted
inserted
replaced
59022:0b09c3970de0 | 59023:fa849ef3cf2c |
---|---|
325 (insert-and-inherit " "))) | 325 (insert-and-inherit " "))) |
326 (setq to (point))) | 326 (setq to (point))) |
327 (let ((keymap (widget-get widget :keymap)) | 327 (let ((keymap (widget-get widget :keymap)) |
328 (face (or (widget-get widget :value-face) 'widget-field-face)) | 328 (face (or (widget-get widget :value-face) 'widget-field-face)) |
329 (help-echo (widget-get widget :help-echo)) | 329 (help-echo (widget-get widget :help-echo)) |
330 (follow-link (widget-get widget :follow-link)) | |
330 (rear-sticky | 331 (rear-sticky |
331 (or (not widget-field-add-space) (widget-get widget :size)))) | 332 (or (not widget-field-add-space) (widget-get widget :size)))) |
332 (if (functionp help-echo) | 333 (if (functionp help-echo) |
333 (setq help-echo 'widget-mouse-help)) | 334 (setq help-echo 'widget-mouse-help)) |
334 (when (= (char-before to) ?\n) | 335 (when (= (char-before to) ?\n) |
343 (overlay-put overlay 'real-field widget) | 344 (overlay-put overlay 'real-field widget) |
344 ;; Use `local-map' here, not `keymap', so that normal editing | 345 ;; Use `local-map' here, not `keymap', so that normal editing |
345 ;; works in the field when, say, Custom uses `suppress-keymap'. | 346 ;; works in the field when, say, Custom uses `suppress-keymap'. |
346 (overlay-put overlay 'local-map keymap) | 347 (overlay-put overlay 'local-map keymap) |
347 (overlay-put overlay 'face face) | 348 (overlay-put overlay 'face face) |
349 (overlay-put overlay 'follow-link follow-link) | |
348 (overlay-put overlay 'help-echo help-echo)) | 350 (overlay-put overlay 'help-echo help-echo)) |
349 (setq to (1- to)) | 351 (setq to (1- to)) |
350 (setq rear-sticky t)) | 352 (setq rear-sticky t)) |
351 (let ((overlay (make-overlay from to nil nil rear-sticky))) | 353 (let ((overlay (make-overlay from to nil nil rear-sticky))) |
352 (widget-put widget :field-overlay overlay) | 354 (widget-put widget :field-overlay overlay) |
353 ;;(overlay-put overlay 'detachable nil) | 355 ;;(overlay-put overlay 'detachable nil) |
354 (overlay-put overlay 'field widget) | 356 (overlay-put overlay 'field widget) |
355 (overlay-put overlay 'local-map keymap) | 357 (overlay-put overlay 'local-map keymap) |
356 (overlay-put overlay 'face face) | 358 (overlay-put overlay 'face face) |
359 (overlay-put overlay 'follow-link follow-link) | |
357 (overlay-put overlay 'help-echo help-echo))) | 360 (overlay-put overlay 'help-echo help-echo))) |
358 (widget-specify-secret widget)) | 361 (widget-specify-secret widget)) |
359 | 362 |
360 (defun widget-specify-secret (field) | 363 (defun widget-specify-secret (field) |
361 "Replace text in FIELD with value of `:secret', if non-nil." | 364 "Replace text in FIELD with value of `:secret', if non-nil." |
376 (setq begin (1+ begin)))))))) | 379 (setq begin (1+ begin)))))))) |
377 | 380 |
378 (defun widget-specify-button (widget from to) | 381 (defun widget-specify-button (widget from to) |
379 "Specify button for WIDGET between FROM and TO." | 382 "Specify button for WIDGET between FROM and TO." |
380 (let ((overlay (make-overlay from to nil t nil)) | 383 (let ((overlay (make-overlay from to nil t nil)) |
384 (follow-link (widget-get widget :follow-link)) | |
381 (help-echo (widget-get widget :help-echo))) | 385 (help-echo (widget-get widget :help-echo))) |
382 (widget-put widget :button-overlay overlay) | 386 (widget-put widget :button-overlay overlay) |
383 (if (functionp help-echo) | 387 (if (functionp help-echo) |
384 (setq help-echo 'widget-mouse-help)) | 388 (setq help-echo 'widget-mouse-help)) |
385 (overlay-put overlay 'button widget) | 389 (overlay-put overlay 'button widget) |
387 (overlay-put overlay 'evaporate t) | 391 (overlay-put overlay 'evaporate t) |
388 ;; We want to avoid the face with image buttons. | 392 ;; We want to avoid the face with image buttons. |
389 (unless (widget-get widget :suppress-face) | 393 (unless (widget-get widget :suppress-face) |
390 (overlay-put overlay 'face (widget-apply widget :button-face-get))) | 394 (overlay-put overlay 'face (widget-apply widget :button-face-get))) |
391 (overlay-put overlay 'pointer 'hand) | 395 (overlay-put overlay 'pointer 'hand) |
396 (overlay-put overlay 'follow-link follow-link) | |
392 (overlay-put overlay 'help-echo help-echo))) | 397 (overlay-put overlay 'help-echo help-echo))) |
393 | 398 |
394 (defun widget-mouse-help (window overlay point) | 399 (defun widget-mouse-help (window overlay point) |
395 "Help-echo callback for widgets whose :help-echo is a function." | 400 "Help-echo callback for widgets whose :help-echo is a function." |
396 (with-current-buffer (overlay-buffer overlay) | 401 (with-current-buffer (overlay-buffer overlay) |
1703 | 1708 |
1704 (define-widget 'link 'item | 1709 (define-widget 'link 'item |
1705 "An embedded link." | 1710 "An embedded link." |
1706 :button-prefix 'widget-link-prefix | 1711 :button-prefix 'widget-link-prefix |
1707 :button-suffix 'widget-link-suffix | 1712 :button-suffix 'widget-link-suffix |
1713 :follow-link "\C-m" | |
1708 :help-echo "Follow the link." | 1714 :help-echo "Follow the link." |
1709 :format "%[%t%]") | 1715 :format "%[%t%]") |
1710 | 1716 |
1711 ;;; The `info-link' Widget. | 1717 ;;; The `info-link' Widget. |
1712 | 1718 |