bug#16508: 24.3; Slash matching in HTML mode

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#16508: 24.3; Slash matching in HTML mode

Mark Tilford
--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.


In GNU Emacs 24.3.1 (i386-mingw-nt6.1.7601)
 of 2013-03-17 on MARVIN
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --with-gcc (4.7) --cflags
 -ID:/devel/emacs/libs/libXpm-3.5.8/include
 -ID:/devel/emacs/libs/libXpm-3.5.8/src
 -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include
 -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include
 -ID:/devel/emacs/libs/giflib-4.1.4-1/include
 -ID:/devel/emacs/libs/jpeg-6b-4/include
 -ID:/devel/emacs/libs/tiff-3.8.2-1/include
 -ID:/devel/emacs/libs/gnutls-3.0.9/include
 -ID:/devel/emacs/libs/libiconv-1.13.1-1-dev/include
 -ID:/devel/emacs/libs/libxml2-2.7.8/include/libxml2'

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1252
  default enable-multibyte-characters: t

Major mode: HTML

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 messages:
call-interactively: End of buffer [2 times]
Mark set
byte-code: End of buffer
forward-sexp: Scan error: "Unbalanced parentheses", 127, 133
Undo!

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message format-spec rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mail-utils help-mode
easymenu sgml-mode browse-url url-util url-parse auth-source eieio
byte-opt bytecomp byte-compile cconv gnus-util mm-util mail-prsvr
password-cache url-vars time-date tooltip ediff-hook vc-hooks
lisp-float-type mwheel dos-w32 ls-lisp w32-common-fns disp-table w32-win
w32-vars 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
w32 multi-tty emacs)

Reply | Threaded
Open this post in threaded view
|

bug#16508: 24.3; Slash matching in HTML mode

Rüdiger Sonderfeld
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



Reply | Threaded
Open this post in threaded view
|

bug#16508: 24.3; Slash matching in HTML mode

Lars Ingebrigtsen
Rüdiger Sonderfeld <[hidden email]> writes:

> │ 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 `/'.

Seems to do the right thing in the test case, so I've applied it to
Emacs 27.1.  If this turns out to be the wrong thing to do, it should be
easy enough to revert.

--
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no