Subject: Re: bug#16508: 24.3; Slash matching in HTML mode

From: Rüdiger Sonderfeld <[email-masked]>
Date: Tue, 21 Jan 2014 22:37:10 +0100

Hello,

On Monday 20 January 2014 11:39:34 Mark Tilford wrote:
> --text follows this line--
> In HTML mode, type
> 
> <!DOCTYPE html>
> <html>
>   <head>
>     <title>My Web Page</title>
>   </head>
>   <body>
>     <br />
>     <h1>Heading</h1>
> 
> When typing the </h1>, it will briefly highlight the <br />.  This is
> incorrect and annoying.  Either highlight the matching <h1> or don't
> highlight anything.

I can reproduce the behaviour.  It seems this was introduced to support SGML's 
syntax for <FOO/bar/ which is apparently a shortcut for <FOO>bar</FOO>.  But I 
don't understand why it tries to match a / if it's after a <.  (I'm not very 
familiar with SGML's quirks and special syntax.)

It seems the code in `sgml-slash' actually tried to deal with that case but in 
the end still calls `sgml-slash-matching'.  The following patch would fix that

╭────
│ diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
│ index 09459d1..78fdb50 100644
│ --- a/lisp/textmodes/sgml-mode.el
│ +++ b/lisp/textmodes/sgml-mode.el
│ @@ -539,7 +539,7 @@ (defun sgml-slash (arg)
│      (delete-char -1)
│      (sgml-close-tag))
│     (t
│ -    (sgml-slash-matching arg))))
│ +    (insert-char ?/ arg))))
│ 
│  (defun sgml-slash-matching (arg)
│    "Insert `/' and display any previous matching `/'.
╰────

Until then you could use (define-key sgml-mode-map "/" nil) as a workaround to 
disable the matching in all cases.

btw. maybe `sgml-quick-keys' should be customizable.

Regards,
Rüdiger