unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Links in WoMan buffer should not call `man'
@ 2006-08-25 19:52 Reiner Steib
  2006-08-25 22:14 ` Chong Yidong
  2006-08-27 20:12 ` Juri Linkov
  0 siblings, 2 replies; 21+ messages in thread
From: Reiner Steib @ 2006-08-25 19:52 UTC (permalink / raw)


Hi,

in GNU Emacs 22.0.50.3 (i686-pc-linux-gnu, GTK+ Version 2.8.3) of
2006-08-24 on viandante, following manual links in WoMan buffers
should create new WoMan buffers, not new man buffers.

To reproduce:

- emacs -Q

- M-x woman RET procmailex RET

,----[ *WoMan 5 procmailex* ]
| PROCMAILEX(5) -- 2001/08/04 -- BuGless
| 
| NAME
| 	procmailex - procmail rcfile examples
| 
| SYNOPSIS
| 	$HOME/.procmailrc examples
| 
| DESCRIPTION
| 	For a description of the rcfile format see procmailrc(5).
| [...]
`----

- Move cursor to "procmailrc(5)" and hit RET.

Result: A buffer `*Man 5 procmailrc*' is created in the other window.

Expected result: New WoMan buffer with procmailrc(5) man page should
be created.

Note: Following links from the "See also:" section of `*WoMan 5
procmailex*' in fact open new WoMan buffers, i.e. the expected
behavior.

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-25 19:52 Links in WoMan buffer should not call `man' Reiner Steib
@ 2006-08-25 22:14 ` Chong Yidong
  2006-08-26 11:36   ` Reiner Steib
  2006-08-27 20:12 ` Juri Linkov
  1 sibling, 1 reply; 21+ messages in thread
From: Chong Yidong @ 2006-08-25 22:14 UTC (permalink / raw)


Reiner Steib <reinersteib+gmane@imap.cc> writes:

> Hi,
>
> in GNU Emacs 22.0.50.3 (i686-pc-linux-gnu, GTK+ Version 2.8.3) of
> 2006-08-24 on viandante, following manual links in WoMan buffers
> should create new WoMan buffers, not new man buffers.

This hack should fix it.

*** emacs/lisp/woman.el.~1.44.~	2006-04-17 18:12:14.000000000 -0400
--- emacs/lisp/woman.el	2006-08-25 18:12:59.000000000 -0400
***************
*** 1750,1756 ****
    (define-key woman-mode-map [M-mouse-2] 'woman-follow-word)
  
    ;; We don't need to call `man' when we are in `woman-mode'.
!   (define-key woman-mode-map [remap man] 'woman))
  
  (defun woman-follow-word (event)
    "Run WoMan with word under mouse as topic.
--- 1750,1767 ----
    (define-key woman-mode-map [M-mouse-2] 'woman-follow-word)
  
    ;; We don't need to call `man' when we are in `woman-mode'.
!   (define-key woman-mode-map [remap man] 'woman)
!   (define-key woman-mode-map [remap man-follow] 'woman-follow))
! 
! (defun woman-follow (topic)
!   "Get a Un*x manual page of the item under point and put it in a buffer."
!   (interactive (list (Man-default-man-entry)))
!   (if (or (not topic)
! 	  (string= topic ""))
!       (error "No item under point")
!     (woman (if (string-match Man-reference-regexp topic)
! 	       (substring topic 0 (match-end 1))
! 	     topic))))
  
  (defun woman-follow-word (event)
    "Run WoMan with word under mouse as topic.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-25 22:14 ` Chong Yidong
@ 2006-08-26 11:36   ` Reiner Steib
  2006-08-28 15:42     ` Chong Yidong
  0 siblings, 1 reply; 21+ messages in thread
From: Reiner Steib @ 2006-08-26 11:36 UTC (permalink / raw)


On Sat, Aug 26 2006, Chong Yidong wrote:

> Reiner Steib <reinersteib+gmane@imap.cc> writes:
>> in GNU Emacs 22.0.50.3 (i686-pc-linux-gnu, GTK+ Version 2.8.3) of
>> 2006-08-24 on viandante, following manual links in WoMan buffers
>> should create new WoMan buffers, not new man buffers.
>
> This hack should fix it.

Thanks it does fix it for me.  Will you install it?

[...]
>     ;; We don't need to call `man' when we are in `woman-mode'.
> !   (define-key woman-mode-map [remap man] 'woman)
> !   (define-key woman-mode-map [remap man-follow] 'woman-follow))
> ! 
> ! (defun woman-follow (topic)
> !   "Get a Un*x manual page of the item under point and put it in a buffer."

Maybe we should add something like "This function is a replacement of
`man-follow' in WoMan mode." in the doc string.

> !   (interactive (list (Man-default-man-entry)))
> !   (if (or (not topic)
> ! 	  (string= topic ""))
> !       (error "No item under point")
> !     (woman (if (string-match Man-reference-regexp topic)
> ! 	       (substring topic 0 (match-end 1))
> ! 	     topic))))

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-25 19:52 Links in WoMan buffer should not call `man' Reiner Steib
  2006-08-25 22:14 ` Chong Yidong
@ 2006-08-27 20:12 ` Juri Linkov
  2006-08-27 22:28   ` Eli Zaretskii
  2006-08-28 22:09   ` Richard Stallman
  1 sibling, 2 replies; 21+ messages in thread
From: Juri Linkov @ 2006-08-27 20:12 UTC (permalink / raw)


> in GNU Emacs 22.0.50.3 (i686-pc-linux-gnu, GTK+ Version 2.8.3) of
> 2006-08-24 on viandante, following manual links in WoMan buffers
> should create new WoMan buffers, not new man buffers.

BTW, I have the desire to marry man and woman so they would share the
common history.  Is this a good idea?

I.e. M-p typed after either `M-x man' or `M-x woman' would insert
the same history items into the minibuffer.  Currently, woman
uses the history list `woman-topic-history', and man uses the
default history list (via the nil history arg of `read-string').

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-27 20:12 ` Juri Linkov
@ 2006-08-27 22:28   ` Eli Zaretskii
  2006-08-28 22:09   ` Richard Stallman
  1 sibling, 0 replies; 21+ messages in thread
From: Eli Zaretskii @ 2006-08-27 22:28 UTC (permalink / raw)
  Cc: emacs-devel

> From: Juri Linkov <juri@jurta.org>
> Date: Sun, 27 Aug 2006 23:12:15 +0300
> 
> BTW, I have the desire to marry man and woman so they would share the
> common history.  Is this a good idea?

After the release, maybe.  Not now, please.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-26 11:36   ` Reiner Steib
@ 2006-08-28 15:42     ` Chong Yidong
  0 siblings, 0 replies; 21+ messages in thread
From: Chong Yidong @ 2006-08-28 15:42 UTC (permalink / raw)


Reiner Steib <reinersteib+gmane@imap.cc> writes:

> On Sat, Aug 26 2006, Chong Yidong wrote:
>
>> Reiner Steib <reinersteib+gmane@imap.cc> writes:
>>> in GNU Emacs 22.0.50.3 (i686-pc-linux-gnu, GTK+ Version 2.8.3) of
>>> 2006-08-24 on viandante, following manual links in WoMan buffers
>>> should create new WoMan buffers, not new man buffers.
>>
>> This hack should fix it.
>
> Thanks it does fix it for me.  Will you install it?

Done.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-27 20:12 ` Juri Linkov
  2006-08-27 22:28   ` Eli Zaretskii
@ 2006-08-28 22:09   ` Richard Stallman
  2006-08-30 10:45     ` Eli Zaretskii
  2006-09-02 23:57     ` Juri Linkov
  1 sibling, 2 replies; 21+ messages in thread
From: Richard Stallman @ 2006-08-28 22:09 UTC (permalink / raw)
  Cc: emacs-devel

    BTW, I have the desire to marry man and woman so they would share the
    common history.  Is this a good idea?

It isn't necessary for them to get married; they just have to
interchange internal information between their bodies ;-).

I think this is a bug fix.  Please make it happen.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-28 22:09   ` Richard Stallman
@ 2006-08-30 10:45     ` Eli Zaretskii
  2006-08-30 22:48       ` Juri Linkov
  2006-09-02 23:57     ` Juri Linkov
  1 sibling, 1 reply; 21+ messages in thread
From: Eli Zaretskii @ 2006-08-30 10:45 UTC (permalink / raw)
  Cc: juri, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> Date: Mon, 28 Aug 2006 18:09:50 -0400
> Cc: emacs-devel@gnu.org
> 
>     BTW, I have the desire to marry man and woman so they would share the
>     common history.  Is this a good idea?
> 
> It isn't necessary for them to get married; they just have to
> interchange internal information between their bodies ;-).
> 
> I think this is a bug fix.  Please make it happen.

If mean to unite man.el with woman.el, please consult the woman.el
maintainer before you do.  He might have something to say about that.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-30 10:45     ` Eli Zaretskii
@ 2006-08-30 22:48       ` Juri Linkov
  0 siblings, 0 replies; 21+ messages in thread
From: Juri Linkov @ 2006-08-30 22:48 UTC (permalink / raw)
  Cc: rms, emacs-devel

>>     BTW, I have the desire to marry man and woman so they would share the
>>     common history.  Is this a good idea?
>>
>> It isn't necessary for them to get married; they just have to
>> interchange internal information between their bodies ;-).
>>
>> I think this is a bug fix.  Please make it happen.
>
> If mean to unite man.el with woman.el, please consult the woman.el
> maintainer before you do.  He might have something to say about that.

We could leave woman unaware about this change by changing her defvar
to (defvaralias 'woman-topic-history 'man-topic-history), where
man-topic-history could be declared in man.el as
(defvar Man-topic-history nil "Topic read history."),
i.e. let woman to be based on part of man.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-08-28 22:09   ` Richard Stallman
  2006-08-30 10:45     ` Eli Zaretskii
@ 2006-09-02 23:57     ` Juri Linkov
  2006-09-04  9:50       ` Richard Stallman
  1 sibling, 1 reply; 21+ messages in thread
From: Juri Linkov @ 2006-09-02 23:57 UTC (permalink / raw)
  Cc: emacs-devel

>     BTW, I have the desire to marry man and woman so they would share the
>     common history.  Is this a good idea?
>
> It isn't necessary for them to get married; they just have to
> interchange internal information between their bodies ;-).
>
> I think this is a bug fix.  Please make it happen.

While testing this change, I discovered one strange old bug (I can
reproduce it at least in the last year's CVS check-out, but not
in CVS check-out of two years ago).  man fails in woman's frame.
Test case:

M-x man RET man RET      ;; creates a new window in the same frame
M-x woman RET man RET    ;; creates a new dedicated frame
q                        ;; deletes the buffer, but leaves the frame
M-x man RET man RET

the last command typed in the woman's dedicated frame fails with the error
signalled by string-match:

  Man-translate-references: Wrong type argument: arrayp, nil

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-02 23:57     ` Juri Linkov
@ 2006-09-04  9:50       ` Richard Stallman
  2006-09-04 22:54         ` Juri Linkov
  0 siblings, 1 reply; 21+ messages in thread
From: Richard Stallman @ 2006-09-04  9:50 UTC (permalink / raw)
  Cc: emacs-devel

    the last command typed in the woman's dedicated frame fails with the error
    signalled by string-match:

      Man-translate-references: Wrong type argument: arrayp, nil

How about debugging it?  This sounds like something straightforward to
debug.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-04  9:50       ` Richard Stallman
@ 2006-09-04 22:54         ` Juri Linkov
  2006-09-05  3:38           ` Michael Welsh Duggan
  2006-09-06  8:49           ` Richard Stallman
  0 siblings, 2 replies; 21+ messages in thread
From: Juri Linkov @ 2006-09-04 22:54 UTC (permalink / raw)
  Cc: emacs-devel

>     the last command typed in the woman's dedicated frame fails with the error
>     signalled by string-match:
>
>       Man-translate-references: Wrong type argument: arrayp, nil
>
> How about debugging it?  This sounds like something straightforward
> to debug.

I narrowed it to the simplest case.  This error occurs only when `M-x man'
is executed in the *Messages* buffer.  (The shortest key sequence to
reproduce it: `C-h e M-x man RET man RET')

Putting the gdb breakpoint on `wrong_type_argument' gives the following bt:

#0  wrong_type_argument (predicate=137953905, value=137897977) at data.c:121
#1  0x0818d95c in Faref (array=137897977, idx=17768) at data.c:2082
#2  0x081ae982 in char_table_translate (table=137897977, ch=2221) at fns.c:2789
#3  0x0817129f in set_image_of_range_1 (work_area=0xbfcfa4b4, start=2221, end=2221, translate=137923116) at regex.c:2132
#4  0x08171a55 in set_image_of_range (work_area=0xbfcfa4b4, start=2221, end=2221, translate=137923116) at regex.c:2262
#5  0x08174968 in regex_compile (pattern=0x8927b78 "^\\([-a-zA-Z0-9_\201\255+][-a-zA-Z0-9_.:\201\255+]*\\)(\\([0-9][a-zA-Z+]*\\|[LNln]\\))$", size=70, syntax=3408388, 
    bufp=0x8373c4c) at regex.c:2973
#6  0x08181f70 in re_compile_pattern (pattern=0x8927b78 "^\\([-a-zA-Z0-9_\201\255+][-a-zA-Z0-9_.:\201\255+]*\\)(\\([0-9][a-zA-Z+]*\\|[LNln]\\))$", length=70, 
    bufp=0x8373c4c) at regex.c:6165
#7  0x08168751 in compile_pattern_1 (cp=0x8373c40, pattern=141439291, translate=137923116, regp=0x836ace8, posix=0, multibyte=1) at search.c:173
#8  0x08168976 in compile_pattern (pattern=141439291, regp=0x836ace8, translate=137923116, posix=0, multibyte=1) at search.c:248
#9  0x08168f21 in string_match_1 (regexp=141439291, string=141439307, start=137897977, posix=0) at search.c:400
#10 0x081690b3 in Fstring_match (regexp=141439291, string=141439307, start=137897977) at search.c:443
(gdb) fr 3
#3  0x0817129f in set_image_of_range_1 (work_area=0xbfcfa4b4, start=2221, end=2221, translate=137923116) at regex.c:2132
2132          int eqv = RE_TRANSLATE (eqv_table, start);
(gdb) xprintsym eqv_table
"nil"

i.e. eqv_table in the *Messages* buffer is nil.

I have no idea why it should be nil in the *Messages* buffer,
but `Man-translate-references' fails when it tries to run
`string-match' in this buffer.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-04 22:54         ` Juri Linkov
@ 2006-09-05  3:38           ` Michael Welsh Duggan
  2006-09-05  3:43             ` Michael Welsh Duggan
  2006-09-06  8:49           ` Richard Stallman
  1 sibling, 1 reply; 21+ messages in thread
From: Michael Welsh Duggan @ 2006-09-05  3:38 UTC (permalink / raw)
  Cc: rms, emacs-devel

Juri Linkov <juri@jurta.org> writes:

>>     the last command typed in the woman's dedicated frame fails with the error
>>     signalled by string-match:
>>
>>       Man-translate-references: Wrong type argument: arrayp, nil
>>
>> How about debugging it?  This sounds like something straightforward
>> to debug.
>
> I narrowed it to the simplest case.  This error occurs only when `M-x man'
> is executed in the *Messages* buffer.  (The shortest key sequence to
> reproduce it: `C-h e M-x man RET man RET')

I don't know what the correct fix for the underlying problem is (i.e.,
the fact that this doesn't error out in other contexts), but the
problem can be solved by fixing the Man-name-regexp, which is currenly
invalid.  The following is a patch for that.

Index: man.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/man.el,v
retrieving revision 1.164
diff -u -p -r1.164 man.el
--- man.el	2 Sep 2006 23:28:55 -0000	1.164
+++ man.el	5 Sep 2006 03:37:31 -0000
@@ -259,7 +259,7 @@ the associated section number."
 (defvar Man-cooked-hook nil
   "Hook run after removing backspaces but before `Man-mode' processing.")
 
-(defvar Man-name-regexp "[-a-zA-Z0-9_­+][-a-zA-Z0-9_.:­+]*"
+(defvar Man-name-regexp "[-a-zA-Z0-9_+][-a-zA-Z0-9_.:+]*"
   "Regular expression describing the name of a manpage (without section).")
 
 (defvar Man-section-regexp "[0-9][a-zA-Z0-9+]*\\|[LNln]"


-- 
Michael Welsh Duggan
(md5i@cs.cmu.edu)

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-05  3:38           ` Michael Welsh Duggan
@ 2006-09-05  3:43             ` Michael Welsh Duggan
  2006-09-05  4:31               ` Michael Welsh Duggan
  0 siblings, 1 reply; 21+ messages in thread
From: Michael Welsh Duggan @ 2006-09-05  3:43 UTC (permalink / raw)
  Cc: rms, emacs-devel

Michael Welsh Duggan <md5i@cs.cmu.edu> writes:

> Juri Linkov <juri@jurta.org> writes:
>
>>>     the last command typed in the woman's dedicated frame fails with the error
>>>     signalled by string-match:
>>>
>>>       Man-translate-references: Wrong type argument: arrayp, nil
>>>
>>> How about debugging it?  This sounds like something straightforward
>>> to debug.
>>
>> I narrowed it to the simplest case.  This error occurs only when `M-x man'
>> is executed in the *Messages* buffer.  (The shortest key sequence to
>> reproduce it: `C-h e M-x man RET man RET')
>
> I don't know what the correct fix for the underlying problem is (i.e.,
> the fact that this doesn't error out in other contexts), but the
> problem can be solved by fixing the Man-name-regexp, which is currenly
> invalid.  The following is a patch for that.

I take my original statement back.  The character I removed was not a
hyphen as I expected, but rather a soft-hyphen (U+00AD).  On the other
hand, the fact that removing this character fixed the problem might
narrow down the problem a bit more.  I will now look into this a bit
more deeply.

-- 
Michael Welsh Duggan
(md5i@cs.cmu.edu)

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-05  3:43             ` Michael Welsh Duggan
@ 2006-09-05  4:31               ` Michael Welsh Duggan
  2006-09-05  5:38                 ` Michael Welsh Duggan
  2006-09-06  8:49                 ` Richard Stallman
  0 siblings, 2 replies; 21+ messages in thread
From: Michael Welsh Duggan @ 2006-09-05  4:31 UTC (permalink / raw)
  Cc: rms, emacs-devel

Michael Welsh Duggan <md5i@cs.cmu.edu> writes:

> Michael Welsh Duggan <md5i@cs.cmu.edu> writes:
>
>> Juri Linkov <juri@jurta.org> writes:
>>
>>>>     the last command typed in the woman's dedicated frame fails with the error
>>>>     signalled by string-match:
>>>>
>>>>       Man-translate-references: Wrong type argument: arrayp, nil
>>>>
>>>> How about debugging it?  This sounds like something straightforward
>>>> to debug.
>>>
>>> I narrowed it to the simplest case.  This error occurs only when `M-x man'
>>> is executed in the *Messages* buffer.  (The shortest key sequence to
>>> reproduce it: `C-h e M-x man RET man RET')
>>
>> I don't know what the correct fix for the underlying problem is (i.e.,
>> the fact that this doesn't error out in other contexts), but the
>> problem can be solved by fixing the Man-name-regexp, which is currenly
>> invalid.  The following is a patch for that.
>
> I take my original statement back.  The character I removed was not a
> hyphen as I expected, but rather a soft-hyphen (U+00AD).  On the other
> hand, the fact that removing this character fixed the problem might
> narrow down the problem a bit more.  I will now look into this a bit
> more deeply.

Some time later, I am realizing that string_match_1 is using
current_buffer's case table.  Since the string being matched against
might have nothing to do with the current buffer, this seems
incorrect.  Is this a red herring?

-- 
Michael Welsh Duggan
(md5i@cs.cmu.edu)

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-05  4:31               ` Michael Welsh Duggan
@ 2006-09-05  5:38                 ` Michael Welsh Duggan
  2006-09-05 20:56                   ` Chong Yidong
  2006-09-06  8:49                 ` Richard Stallman
  1 sibling, 1 reply; 21+ messages in thread
From: Michael Welsh Duggan @ 2006-09-05  5:38 UTC (permalink / raw)
  Cc: rms, emacs-devel

Michael Welsh Duggan <md5i@cs.cmu.edu> writes:

> Michael Welsh Duggan <md5i@cs.cmu.edu> writes:
>
>> Michael Welsh Duggan <md5i@cs.cmu.edu> writes:
>>
>>> Juri Linkov <juri@jurta.org> writes:
>>>
>>>>>     the last command typed in the woman's dedicated frame fails with the error
>>>>>     signalled by string-match:
>>>>>
>>>>>       Man-translate-references: Wrong type argument: arrayp, nil
>>>>>
>>>>> How about debugging it?  This sounds like something straightforward
>>>>> to debug.
>>>>
>>>> I narrowed it to the simplest case.  This error occurs only when `M-x man'
>>>> is executed in the *Messages* buffer.  (The shortest key sequence to
>>>> reproduce it: `C-h e M-x man RET man RET')
>>>
>>> I don't know what the correct fix for the underlying problem is (i.e.,
>>> the fact that this doesn't error out in other contexts), but the
>>> problem can be solved by fixing the Man-name-regexp, which is currenly
>>> invalid.  The following is a patch for that.
>>
>> I take my original statement back.  The character I removed was not a
>> hyphen as I expected, but rather a soft-hyphen (U+00AD).  On the other
>> hand, the fact that removing this character fixed the problem might
>> narrow down the problem a bit more.  I will now look into this a bit
>> more deeply.
>
> Some time later, I am realizing that string_match_1 is using
> current_buffer's case table.  Since the string being matched against
> might have nothing to do with the current buffer, this seems
> incorrect.  Is this a red herring?

More data:  The *Message* buffer at dump time has a case_canon_table
with three extra slots, all nil.

(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /usr/local/src/emacs/src/emacs -Q
[Thread debugging using libthread_db enabled]
[New Thread -1213884736 (LWP 28342)]
[Switching to Thread -1213884736 (LWP 28342)]

Breakpoint 10, main (argc=2, argv=0xbf884c74) at emacs.c:843
(gdb) p Vbuffer_alist
$65 = 137906437
(gdb) xcdr
$66 = 0x8384a85
(gdb) xcdr
$67 = 0x8382d55
(gdb) xcar
$68 = 0x8382d4d
(gdb) xcdr
$69 = 0x83beb1c
(gdb) xbuffer
$70 = (struct buffer *) 0x83beb18
(unsigned char *) 0x8389220 "*Messages*"
(gdb) p $70->case_canon_table
$71 = 137940012
(gdb) xchartable
$72 = (struct Lisp_Char_Table *) 0x838cc28
Purpose: "case-table"  3 extra slots
(gdb) p $72->extras[0]
$73 = 137914569
(gdb) pr
nil
(gdb) p $72->extras[1]
$74 = 137914569
(gdb) pr
nil
(gdb) p $72->extras[2]
$75 = 137914569
(gdb) pr
nil

On buffer creation, the buffers case_canon_table gets a
copy of Vascii_downcase_table's second extra slot, which matches (the
first two of this slot's extra elements are also nil).

(gdb) p Vascii_downcase_table
$76 = 137938404
(gdb) xchartable
$77 = (struct Lisp_Char_Table *) 0x838c5e0
Purpose: "case-table"  3 extra slots
(gdb) p $77->extras[1]
$79 = 139808316
(gdb) xchartable 
$80 = (struct Lisp_Char_Table *) 0x8554e38
Purpose: "case-table"  3 extra slots
(gdb) p $80->extras[0]
$85 = 137914569
(gdb) pr
nil
(gdb) p $80->extras[1]
$86 = 137914569
(gdb) pr
nil

I am still trying to figure out what all this means.  Hopefully, this
analysis is useful to someone else.

-- 
Michael Welsh Duggan
(md5i@cs.cmu.edu)

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-05  5:38                 ` Michael Welsh Duggan
@ 2006-09-05 20:56                   ` Chong Yidong
  2006-09-06 19:06                     ` Richard Stallman
  2006-09-07 21:15                     ` Richard Stallman
  0 siblings, 2 replies; 21+ messages in thread
From: Chong Yidong @ 2006-09-05 20:56 UTC (permalink / raw)
  Cc: Juri Linkov, rms, emacs-devel

Michael Welsh Duggan <md5i@cs.cmu.edu> writes:

>> Some time later, I am realizing that string_match_1 is using
>> current_buffer's case table.  Since the string being matched against
>> might have nothing to do with the current buffer, this seems
>> incorrect.  Is this a red herring?
>
> More data:  The *Message* buffer at dump time has a case_canon_table
> with three extra slots, all nil.

This patch removes the bug, and is probably the correct thing to do.
Any objections to my installing it?

*** emacs/src/regex.c.~1.211.~	2006-02-21 14:36:47.000000000 -0500
--- emacs/src/regex.c	2006-09-05 16:53:54.000000000 -0400
***************
*** 2162,2168 ****
  
    Lisp_Object eqv_table;
  
!   if (!RE_TRANSLATE_P (translate))
      {
        EXTEND_RANGE_TABLE (work_area, 2);
        work_area->table[work_area->used++] = (start);
--- 2162,2170 ----
  
    Lisp_Object eqv_table;
  
!   if (!RE_TRANSLATE_P (translate)
!       || (eqv_table = XCHAR_TABLE (translate)->extras[2],
! 	  NILP (eqv_table)))
      {
        EXTEND_RANGE_TABLE (work_area, 2);
        work_area->table[work_area->used++] = (start);
***************
*** 2170,2177 ****
        return -1;
      }
  
-   eqv_table = XCHAR_TABLE (translate)->extras[2];
- 
    for (; start <= end; start++)
      {
        enum case_type this_type;
--- 2172,2177 ----

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-04 22:54         ` Juri Linkov
  2006-09-05  3:38           ` Michael Welsh Duggan
@ 2006-09-06  8:49           ` Richard Stallman
  1 sibling, 0 replies; 21+ messages in thread
From: Richard Stallman @ 2006-09-06  8:49 UTC (permalink / raw)
  Cc: emacs-devel

I wrote a fix, which I'll install when I have a good chance.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-05  4:31               ` Michael Welsh Duggan
  2006-09-05  5:38                 ` Michael Welsh Duggan
@ 2006-09-06  8:49                 ` Richard Stallman
  1 sibling, 0 replies; 21+ messages in thread
From: Richard Stallman @ 2006-09-06  8:49 UTC (permalink / raw)
  Cc: juri, emacs-devel

    Some time later, I am realizing that string_match_1 is using
    current_buffer's case table.  Since the string being matched against
    might have nothing to do with the current buffer, this seems
    incorrect.  Is this a red herring?

I think it is not the main problem here.

You are right that it is unclean in principle to use the buffer's case
table; but it makes no difference in practice.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-05 20:56                   ` Chong Yidong
@ 2006-09-06 19:06                     ` Richard Stallman
  2006-09-07 21:15                     ` Richard Stallman
  1 sibling, 0 replies; 21+ messages in thread
From: Richard Stallman @ 2006-09-06 19:06 UTC (permalink / raw)
  Cc: juri, emacs-devel, md5i

    This patch removes the bug, and is probably the correct thing to do.
    Any objections to my installing it?

I wrote another fix for this.  I will compare yours with mine when I
have time.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Links in WoMan buffer should not call `man'
  2006-09-05 20:56                   ` Chong Yidong
  2006-09-06 19:06                     ` Richard Stallman
@ 2006-09-07 21:15                     ` Richard Stallman
  1 sibling, 0 replies; 21+ messages in thread
From: Richard Stallman @ 2006-09-07 21:15 UTC (permalink / raw)
  Cc: juri, emacs-devel, md5i

    This patch removes the bug, and is probably the correct thing to do.
    Any objections to my installing it?

I think your patch is not in fact correct.  TRANSLATE in this case IS
the eqv_table, and should be used as such, not disregarded.

I'll install my patch.

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2006-09-07 21:15 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-25 19:52 Links in WoMan buffer should not call `man' Reiner Steib
2006-08-25 22:14 ` Chong Yidong
2006-08-26 11:36   ` Reiner Steib
2006-08-28 15:42     ` Chong Yidong
2006-08-27 20:12 ` Juri Linkov
2006-08-27 22:28   ` Eli Zaretskii
2006-08-28 22:09   ` Richard Stallman
2006-08-30 10:45     ` Eli Zaretskii
2006-08-30 22:48       ` Juri Linkov
2006-09-02 23:57     ` Juri Linkov
2006-09-04  9:50       ` Richard Stallman
2006-09-04 22:54         ` Juri Linkov
2006-09-05  3:38           ` Michael Welsh Duggan
2006-09-05  3:43             ` Michael Welsh Duggan
2006-09-05  4:31               ` Michael Welsh Duggan
2006-09-05  5:38                 ` Michael Welsh Duggan
2006-09-05 20:56                   ` Chong Yidong
2006-09-06 19:06                     ` Richard Stallman
2006-09-07 21:15                     ` Richard Stallman
2006-09-06  8:49                 ` Richard Stallman
2006-09-06  8:49           ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).