unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
@ 2013-03-06 17:21 Josh
  2013-03-06 19:10 ` Jambunathan K
  2013-03-31 13:36 ` Stefan Monnier
  0 siblings, 2 replies; 8+ messages in thread
From: Josh @ 2013-03-06 17:21 UTC (permalink / raw)
  To: 13891

I noticed two things that show that partial highlight-regexp state
lingers after calling revert-buffer, see items 9 and 12.  After buffer
reversion, I would expect this state either to be completely backed
out or to survive completely intact.  Ideally both of these behaviors
would be supported and under users' control.

 (1) emacs -Q foo.txt
 (2) insert `foo bar' into buffer and save
 (3) M-s h r foo RET RET
 (4) note that foo is highlighted with hi-yellow face
 (5) make a trivial edit to make buffer-modified-p be true
 (6) M-x revert-buffer and confirm
 (7) note that highlighting goes away as expected
 (8) M-s h r bar RET but do not respond to the prompt for the face
 (9) Expected default face: hi-yellow.  Actual: hi-pink.
(10) C-g to cancel the highlight-regexp command
(11) M-s h u but do not respond to the prompt for a regexp
(12) Expected: "No highlighting to remove".  Actual: prompts for
regexp with a default of foo.
(13) Hit RET to accept the default regexp foo to unhighlight
(14) M-s h u
(15) note that "No highlighting to remove" appears, as should have
happened after (11)

In GNU Emacs 24.3.50.1 (x86_64-apple-darwin, NS apple-appkit-1187.34)
 of 2013-03-04 on bix
Bzr revision: 111935 yamaoka@jpl.org-20130304102733-4qy111z41qwoh2as
Windowing system distributor `Apple', version 10.3.1187
Configured using:
 `configure --host=x86_64-apple-darwin --build=i686-apple-darwin
 --with-ns'

Important settings:
  value of $LC_CTYPE: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Text

Minor modes in effect:
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
f o o SPC f a <backspace> <backspace> b a r C-x C-s
M-s h r f o o <return> <return> SPC M-x r e v e r t
- b u f f <tab> <return> y e s <return> M-s h r b a
r <return> C-g M-s h u <return> M-s h u M-x e <backspace>
r e p o r t - e m a c s - b u f <tab> <return> <backspace>
<return> h i g h l i g h t - r e g e x p SPC i n c
o r r e c t l y SPC r e t a i n s SPC s t a t e SPC
a f t e r SPC b u f f e r SPC r e v e r s i o n C-a
C-k C-g M-x r e p o r t - e m a c s - b u g <retur
n>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
foo.txt has auto save data; consider M-x recover-this-file
Saving file /Users/jlf/tmp/foo.txt...
Wrote /Users/jlf/tmp/foo.txt
You can run the command `revert-buffer' with s-u
Quit
byte-code: No highlighting to remove
Quit

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils hi-lock time-date tooltip ediff-hook
vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment lisp-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process ns multi-tty emacs)





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

* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
  2013-03-06 17:21 bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion Josh
@ 2013-03-06 19:10 ` Jambunathan K
  2013-03-18  7:35   ` Jambunathan K
  2013-03-31 13:36 ` Stefan Monnier
  1 sibling, 1 reply; 8+ messages in thread
From: Jambunathan K @ 2013-03-06 19:10 UTC (permalink / raw)
  To: Josh; +Cc: 13891


I can circulate a patch for some or all of what you report below. Are
you willing to apply the patch and give immediate feedback?  Please
confirm with Yes or No.

Josh <josh@foxtail.org> writes:

> I noticed two things that show that partial highlight-regexp state
> lingers after calling revert-buffer, see items 9 and 12.  After buffer
> reversion, I would expect this state either to be completely backed
> out or to survive completely intact.  Ideally both of these behaviors
> would be supported and under users' control.
>
>  (1) emacs -Q foo.txt
>  (2) insert `foo bar' into buffer and save
>  (3) M-s h r foo RET RET
>  (4) note that foo is highlighted with hi-yellow face
>  (5) make a trivial edit to make buffer-modified-p be true
>  (6) M-x revert-buffer and confirm
>  (7) note that highlighting goes away as expected
>  (8) M-s h r bar RET but do not respond to the prompt for the face
>  (9) Expected default face: hi-yellow.  Actual: hi-pink.
> (10) C-g to cancel the highlight-regexp command
> (11) M-s h u but do not respond to the prompt for a regexp
> (12) Expected: "No highlighting to remove".  Actual: prompts for
> regexp with a default of foo.
> (13) Hit RET to accept the default regexp foo to unhighlight
> (14) M-s h u
> (15) note that "No highlighting to remove" appears, as should have
> happened after (11)
>
> In GNU Emacs 24.3.50.1 (x86_64-apple-darwin, NS apple-appkit-1187.34)
>  of 2013-03-04 on bix
> Bzr revision: 111935 yamaoka@jpl.org-20130304102733-4qy111z41qwoh2as
> Windowing system distributor `Apple', version 10.3.1187
> Configured using:
>  `configure --host=x86_64-apple-darwin --build=i686-apple-darwin
>  --with-ns'
>
> Important settings:
>   value of $LC_CTYPE: en_US.UTF-8
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
>   default enable-multibyte-characters: t
>
> Major mode: Text
>
> Minor modes in effect:
>   tooltip-mode: t
>   mouse-wheel-mode: t
>   tool-bar-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>
> Recent input:
> f o o SPC f a <backspace> <backspace> b a r C-x C-s
> M-s h r f o o <return> <return> SPC M-x r e v e r t
> - b u f f <tab> <return> y e s <return> M-s h r b a
> r <return> C-g M-s h u <return> M-s h u M-x e <backspace>
> r e p o r t - e m a c s - b u f <tab> <return> <backspace>
> <return> h i g h l i g h t - r e g e x p SPC i n c
> o r r e c t l y SPC r e t a i n s SPC s t a t e SPC
> a f t e r SPC b u f f e r SPC r e v e r s i o n C-a
> C-k C-g M-x r e p o r t - e m a c s - b u g <retur
> n>
>
> Recent messages:
> For information about GNU Emacs and the GNU system, type C-h C-a.
> foo.txt has auto save data; consider M-x recover-this-file
> Saving file /Users/jlf/tmp/foo.txt...
> Wrote /Users/jlf/tmp/foo.txt
> You can run the command `revert-buffer' with s-u
> Quit
> byte-code: No highlighting to remove
> Quit
>
> Load-path shadows:
> None found.
>
> Features:
> (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
> easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
> mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
> mm-util mail-prsvr mail-utils hi-lock time-date tooltip ediff-hook
> vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset image
> regexp-opt fringe tabulated-list newcomment lisp-mode register page
> menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
> syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
> vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
> romanian slovak czech european ethiopic indian cyrillic chinese
> case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs
> button faces cus-face macroexp files text-properties overlay sha1 md5
> base64 format env code-pages mule custom widget hashtable-print-readable
> backquote make-network-process ns multi-tty emacs)
>
>
>
>

-- 





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

* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
  2013-03-06 19:10 ` Jambunathan K
@ 2013-03-18  7:35   ` Jambunathan K
  2013-03-18 14:47     ` Josh
  0 siblings, 1 reply; 8+ messages in thread
From: Jambunathan K @ 2013-03-18  7:35 UTC (permalink / raw)
  To: Josh; +Cc: 13891

Josh

> I can circulate a patch for some or all of what you report below.

I am unable to keep this promise.  I will let others take over this bug.

Jambunathan K.





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

* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
  2013-03-18  7:35   ` Jambunathan K
@ 2013-03-18 14:47     ` Josh
  0 siblings, 0 replies; 8+ messages in thread
From: Josh @ 2013-03-18 14:47 UTC (permalink / raw)
  To: Jambunathan K; +Cc: 13891

Understood.  Thank you anyway.

On Mon, Mar 18, 2013 at 12:35 AM, Jambunathan K <kjambunathan@gmail.com> wrote:
> Josh
>
>> I can circulate a patch for some or all of what you report below.
>
> I am unable to keep this promise.  I will let others take over this bug.
>
> Jambunathan K.





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

* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
  2013-03-06 17:21 bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion Josh
  2013-03-06 19:10 ` Jambunathan K
@ 2013-03-31 13:36 ` Stefan Monnier
  2013-03-31 16:11   ` Jambunathan K
  1 sibling, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2013-03-31 13:36 UTC (permalink / raw)
  To: Josh; +Cc: 13891-done

> I noticed two things that show that partial highlight-regexp state
> lingers after calling revert-buffer, see items 9 and 12.  After buffer

I've installed the patch below which should fix those problems.


        Stefan


=== modified file 'lisp/hi-lock.el'
--- lisp/hi-lock.el	2013-03-08 04:18:16 +0000
+++ lisp/hi-lock.el	2013-03-31 13:31:41 +0000
@@ -389,7 +389,9 @@
 	(define-key-after menu-bar-edit-menu [hi-lock]
 	  (cons "Regexp Highlighting" hi-lock-menu))
 	(hi-lock-find-patterns)
-	(add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook nil t))
+        (add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook nil t)
+        ;; Remove regexps from font-lock-keywords (bug#13891).
+	(add-hook 'change-major-mode-hook (lambda () (hi-lock-mode -1)) nil t))
     ;; Turned off.
     (when (or hi-lock-interactive-patterns
 	      hi-lock-file-patterns)






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

* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
  2013-03-31 13:36 ` Stefan Monnier
@ 2013-03-31 16:11   ` Jambunathan K
  2013-04-03 22:55     ` Stefan Monnier
  0 siblings, 1 reply; 8+ messages in thread
From: Jambunathan K @ 2013-03-31 16:11 UTC (permalink / raw)
  To: 13891; +Cc: josh

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

>> I noticed two things that show that partial highlight-regexp state
>> lingers after calling revert-buffer, see items 9 and 12.  After buffer
>
> I've installed the patch below which should fix those problems.

(This is not a comment on the patch you have put in, but my initial
thoughts as I investigated the bug.)

I have a feeling that your fix is "inconsistent" with having
`hi-lock-interactive-patterns' as `permanent-local'.

`hi-lock-interactive-patterns' is marked as `permanent-local'.  So the
original intention is clearly to *retain* the highlighting across the
reverts and change of major modes.  With `global-hi-lock-mode' ON, you
will notice that highlighting will be retained across reverts.

When M-s h r is used, hi-lock-mode is turned on automatically.  But
after revert, the hi-lock-mode (being a minor mode) never gets turned
back again.

I was thinking of fix along the lines of 

1. If `hi-lock-interactive-patterns' is non-nil, turn on hi-lock-mode.

2. I think `font-lock-fontify-buffer' should be added to
   `hi-lock-font-lock-hook'.  For some reason, `hi-lock-font-lock-hook'
   doesn't get called at all (even though it is added to the
   `font-lock-mode-hook'.)  

   Problem area: `font-lock-mode-hook' is not documented and I really
   don't when it is getting called.

>
>
>         Stefan
>
>
> === modified file 'lisp/hi-lock.el'
> --- lisp/hi-lock.el	2013-03-08 04:18:16 +0000
> +++ lisp/hi-lock.el	2013-03-31 13:31:41 +0000
> @@ -389,7 +389,9 @@
>  	(define-key-after menu-bar-edit-menu [hi-lock]
>  	  (cons "Regexp Highlighting" hi-lock-menu))
>  	(hi-lock-find-patterns)
> -	(add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook nil t))
> +        (add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook nil t)
> +        ;; Remove regexps from font-lock-keywords (bug#13891).
> +	(add-hook 'change-major-mode-hook (lambda () (hi-lock-mode -1)) nil t))
>      ;; Turned off.
>      (when (or hi-lock-interactive-patterns
>  	      hi-lock-file-patterns)





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

* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
  2013-03-31 16:11   ` Jambunathan K
@ 2013-04-03 22:55     ` Stefan Monnier
  2013-04-04 15:46       ` Jambunathan K
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2013-04-03 22:55 UTC (permalink / raw)
  To: Jambunathan K; +Cc: josh, 13891

>>> I noticed two things that show that partial highlight-regexp state
>>> lingers after calling revert-buffer, see items 9 and 12.  After buffer
>> I've installed the patch below which should fix those problems.
> (This is not a comment on the patch you have put in, but my initial
> thoughts as I investigated the bug.)
> I have a feeling that your fix is "inconsistent" with having
> `hi-lock-interactive-patterns' as `permanent-local'.

Agreed.  Even more so for hi-lock-file-patterns.

> With `global-hi-lock-mode' ON, you will notice that highlighting will
> be retained across reverts.

Not any more after my patch.

> 2. I think `font-lock-fontify-buffer' should be added to
>    `hi-lock-font-lock-hook'.

Why?

>    For some reason, `hi-lock-font-lock-hook' doesn't get called at all
>    (even though it is added to the `font-lock-mode-hook'.)

What was your test case?

>    Problem area: `font-lock-mode-hook' is not documented and I really
>    don't when it is getting called.

font-lock-mode is a normal minor-mode, so font-lock-mode-hook is called
at the end of running font-lock-mode (both to enable and to disable it).


        Stefan





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

* bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion
  2013-04-03 22:55     ` Stefan Monnier
@ 2013-04-04 15:46       ` Jambunathan K
  0 siblings, 0 replies; 8+ messages in thread
From: Jambunathan K @ 2013-04-04 15:46 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: josh, 13891

[-- Attachment #1: Type: text/plain, Size: 792 bytes --]


>> `hi-lock-interactive-patterns' as `permanent-local'.
>
> Agreed.  Even more so for hi-lock-file-patterns.

>> With `global-hi-lock-mode' ON, you will notice that highlighting will
>> be retained across reverts.
>
> Not any more after my patch.

Whether this change in behaviour counts as a regression, I am not sure.


>> 2. I think `font-lock-fontify-buffer' should be added to
>>    `hi-lock-font-lock-hook'.
>
> Why?

`hi-lock-font-lock-hook' adds the font lock keywords.
`font-lock-fontify-buffer' activates the keywords. 

>>    For some reason, `hi-lock-font-lock-hook' doesn't get called at all
>>    (even though it is added to the `font-lock-mode-hook'.)
>
> What was your test case?

For the sake of discussion, I undid your patch.  

Apply this patch and re-load hi-lock.el. 


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: hi-lock.el.diff --]
[-- Type: text/x-diff, Size: 623 bytes --]

=== modified file 'lisp/hi-lock.el'
--- lisp/hi-lock.el	2013-03-31 13:34:35 +0000
+++ lisp/hi-lock.el	2013-04-04 14:54:39 +0000
@@ -390,8 +390,8 @@ versions before 22 use the following in
 	  (cons "Regexp Highlighting" hi-lock-menu))
 	(hi-lock-find-patterns)
         (add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook nil t)
-        ;; Remove regexps from font-lock-keywords (bug#13891).
-	(add-hook 'change-major-mode-hook (lambda () (hi-lock-mode -1)) nil t))
+	(hi-lock-font-lock-hook)
+	(font-lock-fontify-buffer))
     ;; Turned off.
     (when (or hi-lock-interactive-patterns
 	      hi-lock-file-patterns)


[-- Attachment #3: Type: text/plain, Size: 700 bytes --]


1. M-s h r something
2. Modify buffer.
3. Revert buffer.
4. M-: hi-lock-interactive-patterns
   Verify that variable is non-nil.

5. M-x hi-lock-mode.  (For now do it by hand.)
6. See that highlighting kicks in.

My expectation was that once `hi-lock-mode' is turned on
`font-lock-mode-hook' will be *automatically* called.  

Is it the minor mode's responsibility to explicitly call it's
fontification handler?

>
>>    Problem area: `font-lock-mode-hook' is not documented and I really
>>    don't when it is getting called.
>
> font-lock-mode is a normal minor-mode, so font-lock-mode-hook is called
> at the end of running font-lock-mode (both to enable and to disable it).
>
>
>         Stefan

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

end of thread, other threads:[~2013-04-04 15:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-06 17:21 bug#13891: 24.3.50; highlight-regexp incorrectly retains partial state after buffer reversion Josh
2013-03-06 19:10 ` Jambunathan K
2013-03-18  7:35   ` Jambunathan K
2013-03-18 14:47     ` Josh
2013-03-31 13:36 ` Stefan Monnier
2013-03-31 16:11   ` Jambunathan K
2013-04-03 22:55     ` Stefan Monnier
2013-04-04 15:46       ` Jambunathan K

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).