Subject: bug#35517: closed (Re: bug#35517: 27.0.50; Small improvements to HTML mode)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 24 Jun 2019 17:22:02 +0000

Your bug report

#35517: 27.0.50; Small improvements to HTML mode

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
35517: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=35517
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#35517: 27.0.50; Small improvements to HTML mode
From: Eric Abrahamsen <[email-masked]>
To: Lars Ingebrigtsen <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Mon, 24 Jun 2019 10:21:43 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

On 06/23/19 20:37 PM, Lars Ingebrigtsen wrote:
> Eric Abrahamsen <[email-masked]> writes:
>
>> Oh, no, those are two separate things. There are now keybindings for
>> inserting div/span, but no prompting happens until you try to insert an
>> attribute into a div. Now it offers you id/class, whereas before it told
>> you "No attributes configured", which I always found infuriating.
>
> Ah, I see.  Then the patch looks good to me.

Okay, pushed and closing.

Thanks,
Eric

Subject: 27.0.50; Small improvements to HTML mode
From: Eric Abrahamsen <[email-masked]>
To: [email-masked]
Date: Tue, 30 Apr 2019 16:38:33 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

The attached patch provides some small improvements to HTML mode. It
adds `html-div' and `html-span' skeleton commands, and changes the
newline/indent behavior of `html-ordered-list', `html-unordered-list',
`html-list-item', and `html-paragraph'. It also offers "class" and "id"
attributes to most HTML tags in `sgml-attributes'.

Comments welcome!

>From 0293d7bb423950264558363e4e3a3d695f323347 Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <[email-masked]>
Date: Tue, 30 Apr 2019 16:00:46 -0700
Subject: [PATCH] Tweaks to html mode

* lisp/textmodes/sgml-mode.el (sgml-attributes): Add the "class" and
  "id" attributes when needed.
  (html-mode-map): Add the `html-div' and `html-span' commands to the
  `html-quick-keys' map.
  (html-ordered-list, html-unordered-list, html-paragraph): Use the
  "\n" element properly.
  (html-div, html-span): New HTML skeletons.
---
 lisp/textmodes/sgml-mode.el | 37 ++++++++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 9e3be99af1..b0d0ba8536 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -773,8 +773,16 @@ sgml-attributes
 		(symbolp (car (car alist))))
 	    (setq car (car alist)
 		  alist (cdr alist)))
-	(or quiet
-	    (message "No attributes configured."))
+	(unless (or alist quiet)
+	  (message "No attributes configured."))
+        (when alist
+          ;; Add class and id attributes if a) the element has any
+          ;; other attributes configured, and b) they're not already
+          ;; present.
+          (unless (assoc-string "class" alist)
+            (setq alist (cons '("class") alist)))
+          (unless (assoc-string "id" alist)
+            (setq alist (cons '("id") alist))))
 	(if (stringp (car alist))
 	    (progn
 	      (insert (if (eq (preceding-char) ?\s) "" ?\s)
@@ -1752,6 +1760,7 @@ html-mode-map
     (define-key map "\C-c\C-ci" 'html-image)
     (when html-quick-keys
       (define-key map "\C-c-" 'html-horizontal-rule)
+      (define-key map "\C-cd" 'html-div)
       (define-key map "\C-co" 'html-ordered-list)
       (define-key map "\C-cu" 'html-unordered-list)
       (define-key map "\C-cr" 'html-radio-buttons)
@@ -1759,7 +1768,8 @@ html-mode-map
       (define-key map "\C-cl" 'html-list-item)
       (define-key map "\C-ch" 'html-href-anchor)
       (define-key map "\C-cn" 'html-name-anchor)
-      (define-key map "\C-ci" 'html-image))
+      (define-key map "\C-ci" 'html-image)
+      (define-key map "\C-cs" 'html-span))
     (define-key map "\C-c\C-s" 'html-autoview-mode)
     (define-key map "\C-c\C-v" 'browse-url-of-buffer)
     (define-key map [menu-bar html] (cons "HTML" menu-map))
@@ -2446,16 +2456,16 @@ html-line
 (define-skeleton html-ordered-list
   "HTML ordered list tags."
   nil
-  "<ol>" \n
+  \n "<ol>" \n
   "<li>" _ (if sgml-xml-mode "</li>") \n
-  "</ol>")
+  "</ol>" > \n)
 
 (define-skeleton html-unordered-list
   "HTML unordered list tags."
   nil
-  "<ul>" \n
+  \n "<ul>" \n
   "<li>" _ (if sgml-xml-mode "</li>") \n
-  "</ul>")
+  "</ul>" > \n)
 
 (define-skeleton html-list-item
   "HTML list item tag."
@@ -2466,8 +2476,17 @@ html-list-item
 (define-skeleton html-paragraph
   "HTML paragraph tag."
   nil
-  (if (bolp) nil ?\n)
-  "<p>" _ (if sgml-xml-mode "</p>"))
+  \n "<p>" _ (if sgml-xml-mode "</p>"))
+
+(define-skeleton html-div
+  "HTML div tag."
+  nil
+  "<div>" > \n _ \n "</div>" >)
+
+(define-skeleton html-span
+  "HTML span tag."
+  nil
+  "<span>" > _ "</span>")
 
 (define-skeleton html-checkboxes
   "Group of connected checkbox inputs."
-- 
2.21.0