emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

`woman-topic-at-point' patch


From: Emilio Lopes
Subject: `woman-topic-at-point' patch
Date: Thu, 01 Sep 2005 21:07:38 +0200
User-agent: Emacs Gnus

Here is an update with minor changes to the patch for `woman' as
posted and discussed earlier on this list.  This causes woman to only
suggest a man page as default if it really exists on the system.

Here is a possible entry for the NEWS file:

   ** The variable `woman-topic-at-point' was renamed
   to `woman-use-topic-at-point' and behaves now differently: If this
   variable is non-nil the `woman' command uses the word at point
   automatically, without interactive confirmation.  Otherwise the word
   at point is suggested as default, but not inserted at the prompt.


Thanks to David Kastrup and Stefan Monnier for their suggestions.

2005-09-01  Emilio C. Lopes  <address@hidden>
  
        * woman.el (woman-topic-at-point-default): renamed to
        woman-use-topic-at-point-default.
        (woman-topic-at-point): renamed to woman-use-topic-at-point.
        (woman-file-name): reflect renames above.  Automatically use the
        word at point as topic if woman-use-topic-at-point is non-nil.
        Otherwise offer it as default but don't insert it in the
        minibuffer.  Also use `test-completion' instead of
        `assoc' as suggested by Stefan Monnier.


diff -rN -c old-emacs-darcs.eclig/lisp/woman.el 
new-emacs-darcs.eclig/lisp/woman.el
*** old-emacs-darcs.eclig/lisp/woman.el Thu Sep  1 20:50:12 2005
--- new-emacs-darcs.eclig/lisp/woman.el Mon Aug 29 19:48:11 2005
***************
*** 136,162 ****
  ;;   man man_page_name
  
  
! ;; Using the `word at point' as a topic suggestion
! ;; ===============================================
  
! ;; By default, the `woman' command uses the word nearest to point in
! ;; the current buffer as a suggestion for the topic to look up.  The
! ;; topic must be confirmed or edited in the minibuffer.  This
! ;; suggestion can be turned off, or `woman' can use the suggested
! ;; topic without confirmation* if possible, by setting the user-option
! ;; `woman-topic-at-point' to nil or t respectively.  (Its default
! ;; value is neither nil nor t, meaning ask for confirmation.)
  
! ;; [* Thanks to Benjamin Riefenstahl for suggesting this
! ;; functionality.]
! 
! ;; The variable `woman-topic-at-point' can be rebound locally, which
! ;; may be useful to provide special private key bindings, e.g.
  
  ;;  (global-set-key "\C-cw"
  ;;              (lambda ()
  ;;                (interactive)
! ;;                (let ((woman-topic-at-point t))
  ;;                  (woman)))))
  
  
--- 136,158 ----
  ;;   man man_page_name
  
  
! ;; Using the word at point as the default topic
! ;; ============================================
  
! ;; The `woman' command uses the word nearest to point in the current
! ;; buffer as the default topic to look up if it matches the name of a
! ;; manual page installed on the system.  The default topic can also be
! ;; used without confirmation by setting the user-option
! ;; `woman-use-topic-at-point' to t; thanks to Benjamin Riefenstahl for
! ;; suggesting this functionality.
  
! ;; The variable `woman-use-topic-at-point' can be rebound locally,
! ;; which may be useful to provide special private key bindings, e.g.
  
  ;;  (global-set-key "\C-cw"
  ;;              (lambda ()
  ;;                (interactive)
! ;;                (let ((woman-use-topic-at-point t))
  ;;                  (woman)))))
  
  
***************
*** 711,736 ****
    :type 'string
    :group 'woman-interface)
  
! (defcustom woman-topic-at-point-default 'confirm
!   ;; `woman-topic-at-point' may be let-bound when woman is loaded, in
!   ;; which case its global value does not get defined.
    ;; `woman-file-name' sets it to this value if it is unbound.
!   "*Default value for `woman-topic-at-point'."
    :type '(choice (const :tag "Yes" t)
!                (const :tag "No" nil)
!                (other :tag "Confirm" confirm))
    :group 'woman-interface)
  
! (defcustom woman-topic-at-point woman-topic-at-point-default
!   "*Controls use by `woman' of `word at point' as a topic suggestion.
! If non-nil then the `woman' command uses the word at point as an
! initial topic suggestion when it reads a topic from the minibuffer; if
! t then the `woman' command uses the word at point WITHOUT
! INTERACTIVE CONFIRMATION if it exists as a topic.  The default value
! is `confirm', meaning suggest a topic and ask for confirmation."
    :type '(choice (const :tag "Yes" t)
!                (const :tag "No" nil)
!                (other :tag "Confirm" confirm))
    :group 'woman-interface)
  
  (defvar woman-file-regexp nil
--- 707,727 ----
    :type 'string
    :group 'woman-interface)
  
! (defcustom woman-use-topic-at-point-default nil
!   ;; `woman-use-topic-at-point' may be let-bound when woman is loaded,
!   ;; in which case its global value does not get defined.
    ;; `woman-file-name' sets it to this value if it is unbound.
!   "*Default value for `woman-use-topic-at-point'."
    :type '(choice (const :tag "Yes" t)
!                (const :tag "No" nil))
    :group 'woman-interface)
  
! (defcustom woman-use-topic-at-point woman-use-topic-at-point-default
!   "*Control use of the word at point as the default topic.
! If non-nil the `woman' command uses the word at point automatically,
! without interactive confirmation, if it exists as a topic."
    :type '(choice (const :tag "Yes" t)
!                (const :tag "No" nil))
    :group 'woman-interface)
  
  (defvar woman-file-regexp nil
***************
*** 1198,1207 ****
  
  (defun woman-file-name (topic &optional re-cache)
    "Get the name of the UN*X man-page file describing a chosen TOPIC.
! When `woman' is called interactively, the word at point may be used as
! the topic or initial topic suggestion, subject to the value of the
! user option `woman-topic-at-point'.  Return nil if no file can be found.
! Optional argument RE-CACHE, if non-nil, forces the cache to be re-read."
    ;; Handle the caching of the directory and topic lists:
    (if (and (not re-cache)
           (or
--- 1189,1199 ----
  
  (defun woman-file-name (topic &optional re-cache)
    "Get the name of the UN*X man-page file describing a chosen TOPIC.
! When `woman' is called interactively, the word at point may be
! automatically used as the topic, if the value of the user option
! `woman-use-topic-at-point' is non-nil.  Return nil if no file can
! be found.  Optional argument RE-CACHE, if non-nil, forces the
! cache to be re-read."
    ;; Handle the caching of the directory and topic lists:
    (if (and (not re-cache)
           (or
***************
*** 1221,1243 ****
    ;; completion if necessary.
    (let (files)
      (or (stringp topic)
!       (and (eq t
!                (if (boundp 'woman-topic-at-point)
!                    woman-topic-at-point
!                  ;; Was let-bound when file loaded, so ...
!                  (setq woman-topic-at-point woman-topic-at-point-default)))
!            (setq topic
!                  (or (current-word t) ""))    ; only within or adjacent to 
word
!            (assoc topic woman-topic-all-completions))
        (setq topic
!             (completing-read
!              "Manual entry: "
!              woman-topic-all-completions nil 1
!              ;; Initial input suggestion (was nil), with
!              ;; cursor at left ready to kill suggestion!:
!              (and woman-topic-at-point
!                   (cons (or (current-word) "") 0)) ; nearest word
!              'woman-topic-history)))
      ;; Note that completing-read always returns a string.
      (if (= (length topic) 0)
        nil                             ; no topic, so no file!
--- 1213,1238 ----
    ;; completion if necessary.
    (let (files)
      (or (stringp topic)
!       (and (if (boundp 'woman-use-topic-at-point)
!                  woman-use-topic-at-point
!                ;; Was let-bound when file loaded, so ...
!                (setq woman-use-topic-at-point 
woman-use-topic-at-point-default))
!            (setq topic (or (current-word t) "")) ; only within or adjacent to 
word
!            (test-completion topic woman-topic-all-completions))
        (setq topic
!               (let* ((word-at-point (current-word))
!                      (default
!                        (when (and word-at-point
!                                   (test-completion word-at-point 
woman-topic-all-completions))
!                          word-at-point)))
!                 (completing-read
!                  (if default
!                      (format "Manual entry [default: %s]: " default)
!                    "Manual entry: ")
!                  woman-topic-all-completions nil 1
!                  nil
!                  'woman-topic-history
!                  default))))
      ;; Note that completing-read always returns a string.
      (if (= (length topic) 0)
        nil                             ; no topic, so no file!






reply via email to

[Prev in Thread] Current Thread [Next in Thread]