From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Jari Aalto Newsgroups: gmane.emacs.bugs Subject: [21.3] [patch] M-x man does not pick word 'snmpd.conf(5)' Date: Sun, 21 Nov 2004 18:47:51 +0200 Message-ID: NNTP-Posting-Host: deer.gmane.org X-Trace: sea.gmane.org 1101055693 26142 80.91.229.6 (21 Nov 2004 16:48:13 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 21 Nov 2004 16:48:13 +0000 (UTC) Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Nov 21 17:48:03 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1CVusd-0007Uk-00 for ; Sun, 21 Nov 2004 17:48:03 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CVv1d-00046u-Jw for geb-bug-gnu-emacs@m.gmane.org; Sun, 21 Nov 2004 11:57:21 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1CVv1X-00045q-0b for bug-gnu-emacs@gnu.org; Sun, 21 Nov 2004 11:57:15 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1CVv1W-00044k-0W for bug-gnu-emacs@gnu.org; Sun, 21 Nov 2004 11:57:14 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CVv1V-00044X-Ty for bug-gnu-emacs@gnu.org; Sun, 21 Nov 2004 11:57:13 -0500 Original-Received: from [193.229.0.57] (helo=fep06-app.kolumbus.fi) by monty-python.gnu.org with esmtp (Exim 4.34) id 1CVusT-00049u-6l for bug-gnu-emacs@gnu.org; Sun, 21 Nov 2004 11:47:53 -0500 Original-Received: from bongo.cante.net ([81.197.3.110]) by fep06-app.kolumbus.fi with ESMTP id <20041121164751.KFYU21007.fep06-app.kolumbus.fi@bongo.cante.net> for ; Sun, 21 Nov 2004 18:47:51 +0200 Original-Received: from jaalto by bongo.cante.net with local (Exim 4.34) id 1CVusR-0000hK-K1 for bug-gnu-emacs@gnu.org; Sun, 21 Nov 2004 18:47:51 +0200 Original-To: bug-gnu-emacs@gnu.org X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.bugs:9767 X-Report-Spam: http://spam.gmane.org/gmane.emacs.bugs:9767 In GNU Emacs 21.3.1 (i386-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2004-10-16 on raven, modified by Debian configured using `configure '--build=i386-linux' '--host=i386-linux' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--with-x=yes' '--with-x-toolkit=athena' 'CFLAGS=-DDEBIAN -g -O2' 'build_alias=i386-linux' 'host_alias=i386-linux'' Command M-x man and the call to (Man-default-man-entry) does not pick full manual page reference like snmpd.conf(5). Given cursor -!- positions: sn-!-mpd.conf(5) => (Man-default-man-entry) => snmp snmpd.c-!-onf(5) => (Man-default-man-entry) => conf(5) Patch attached. Old defsubst was completely rewritten to take use of the syntax table instead of relying forward-word etc. Jari 2004-11-21 Jari Aalto * man.el (Man-default-man-entry): Use local syntax table to get correct full word in cases like 'snmpd.conf(5)'. --- man.el.orig 2004-11-21 18:05:53.000000000 +0200 +++ man.el 2004-11-21 18:45:26.000000000 +0200 @@ -502,23 +502,35 @@ (defsubst Man-default-man-entry () "Make a guess at a default manual entry. This guess is based on the text surrounding the cursor." - (let (word) - (save-excursion ;; Default man entry title is any word the cursor is on, or if ;; cursor not on a word, then nearest preceding word. + ;; Use local syntax table to find correct word in cases like: + ;; ioctl(2) or brc(1M) + (let* (word + (ret "") + (table (syntax-table)) + (orig (copy-sequence table))) + (modify-syntax-entry ?\( "w" table) + (modify-syntax-entry ?\) "w" table) + (modify-syntax-entry ?. "w" table) ;; snmpd.conf(5) + (modify-syntax-entry ?- "w" table) ;; invoke-rc.d(8) + (set-syntax-table table) (setq word (current-word)) + (set-syntax-table orig) (if (string-match "[._]+$" word) (setq word (substring word 0 (match-beginning 0)))) - ;; If looking at something like ioctl(2) or brc(1M), include the - ;; section number in the returned value. Remove text properties. - (forward-word 1) + ;; Delete leading "-.()". + (if (string-match "[a-zA-Z].*$" word) + (setq word (match-string 0 word))) ;; Use `format' here to clear any text props from `word'. - (format "%s%s" - word - (if (looking-at - (concat "[ \t]*([ \t]*\\(" Man-section-regexp "\\)[ \t]*)")) - (format "(%s)" (Man-match-substring 1)) - ""))))) + (cond + ((string-match (format "[^ \t\r\n]+(%s)" Man-section-regexp) word) + (setq ret (format "%s" (match-string 0 word)))) + ((string-match "[^ \t\r\n()]+" word) + (setq word (match-string 0 word)) + (if (> (length word) 1) + (setq ret (format "%s" word))))) + ret)) ;; ======================================================================