From unknown Fri Jun 20 07:08:14 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#32003 <32003@debbugs.gnu.org> To: bug#32003 <32003@debbugs.gnu.org> Subject: Status: 26.0.90; nxml wrong indentation after multi-line attribute Reply-To: bug#32003 <32003@debbugs.gnu.org> Date: Fri, 20 Jun 2025 14:08:14 +0000 retitle 32003 26.0.90; nxml wrong indentation after multi-line attribute reassign 32003 emacs submitter 32003 Benjamin Riefenstahl severity 32003 minor tag 32003 patch fixed thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 29 05:59:07 2018 Received: (at submit) by debbugs.gnu.org; 29 Jun 2018 09:59:07 +0000 Received: from localhost ([127.0.0.1]:39268 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fYqBH-0003FP-L0 for submit@debbugs.gnu.org; Fri, 29 Jun 2018 05:59:07 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59231) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fYqBF-0003Ew-VX for submit@debbugs.gnu.org; Fri, 29 Jun 2018 05:59:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYqB9-0004qN-Su for submit@debbugs.gnu.org; Fri, 29 Jun 2018 05:59:00 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:49806) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fYqB9-0004py-P5 for submit@debbugs.gnu.org; Fri, 29 Jun 2018 05:58:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYqB8-0007PE-Df for bug-gnu-emacs@gnu.org; Fri, 29 Jun 2018 05:58:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYqB3-0004fJ-JB for bug-gnu-emacs@gnu.org; Fri, 29 Jun 2018 05:58:58 -0400 Received: from smtp1.mecom.de ([193.109.231.32]:48077) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fYqB3-0004c9-CN for bug-gnu-emacs@gnu.org; Fri, 29 Jun 2018 05:58:53 -0400 Received: from [192.168.226.74] (helo=riefenstahl-linux.mecom.de.mecom.de) by smtp1.mecom.de with esmtps (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.50) id 1fYpr5-0006JY-Nn; Fri, 29 Jun 2018 11:38:15 +0200 From: Benjamin Riefenstahl To: bug-gnu-emacs@gnu.org Subject: 26.0.90; nxml wrong indentation after multi-line attribute Date: Fri, 29 Jun 2018 11:38:15 +0200 Message-ID: <877emiszjs.fsf@riefenstahl-linux.mecom.de> MIME-Version: 1.0 Content-Type: text/plain X-Host-Lookup-Failed: Reverse DNS lookup failed for 192.168.226.74 (failed) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.1 (-----) Hi all, Consider this XML: ---- cut ---- ... ---- cut ---- Save to a file, nxml-mode should be activated, type tab on the line "". The element should be indented at 4 spaces, but it is indented according to the attribute value of the previous element, unless I eliminate the line-feed there. I can reproduce this in "emacs -Q". benny From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 18 23:48:43 2019 Received: (at 32003) by debbugs.gnu.org; 19 Apr 2019 03:48:43 +0000 Received: from localhost ([127.0.0.1]:42883 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hHKW3-0005wb-0S for submit@debbugs.gnu.org; Thu, 18 Apr 2019 23:48:43 -0400 Received: from mail-qk1-f170.google.com ([209.85.222.170]:41393) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hHKW0-0005wF-0O; Thu, 18 Apr 2019 23:48:40 -0400 Received: by mail-qk1-f170.google.com with SMTP id p185so2250306qkb.8; Thu, 18 Apr 2019 20:48:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=2aQ8aidFT5tItq9DNf/jWKMi1WZkfUVs1ITyoB66keA=; b=ACto+PJ2dWLfWLsZx0HMZFrObvKg+EBajp5SaLuAeo1W5jWO64Hcon5q/YBI5H6Xub SDqbeY0J+7ysBvds17fk7SJCJ7AZFYh4y6/41/WMEsTwmy4mrvRh7HWbOreYVX26gHt6 17wEfLpnMqSkR7Kb7RZ7mO1CXWuig5H5lHPLyNKm2WS49QZSUtY4UhLgaz6PU6Obq+0U b1Sv3KVGafvZkbQenQ11wn/W7Wiynl2zJw7sNaPltJzGTkPjVD+RMhvQbJ8wdDysP93x UwXhO+Vd+t30wV/GIwJcfc8oGCIlNwLM91t6XN+cq975kiF5hMd5s8h/VzKo3io7+I/T Bsgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=2aQ8aidFT5tItq9DNf/jWKMi1WZkfUVs1ITyoB66keA=; b=Lt39ILFuA/Pm/PGcMVZ04mDZ/jjnu8EnRRWjDYMEsY+7xXGxgiFR71CnGcoEDnCx+6 PqvPQ/A+6VxbCTP3J0/9s578uiKrJ+RxbQ08RaDSRrlsQNsmkiM/ENw7GjrWkYAnkzUn KiDA9JuEZa4XZb7hDl23Y3L7zA0WkgTOsfYoTKy9Spaq0xtw6fUHidV23khZJY0Eb9JJ sZgh35Vi847AHB6PdP8oohpn8tJ+PucGbxrt6NPZuGPgIE3eprfzP++v08JhNS1Su2Kp U5bdi0iBBmqwxshKkisJJwdA1eRe3NLKxIl7Mm1uElymQ8W0M201Uskd2tCyfIwbBXqM LfeQ== X-Gm-Message-State: APjAAAXJLHfffPz0HOv49JbZMZA10KYhnAaVuB3lmPT/b2OOxPxvXT2U tVu7BKqz9wRMGsTioA2VPcSWBTdV X-Google-Smtp-Source: APXvYqzsWh+7Kp+KxqS+mJEQykNyGR54z+vBtFohcUJgGhNzmrxkOrLKMcu34YlOCmykAxcfMUOqTA== X-Received: by 2002:a37:6645:: with SMTP id a66mr1495031qkc.84.1555645714330; Thu, 18 Apr 2019 20:48:34 -0700 (PDT) Received: from minid (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id s1sm1784659qtq.43.2019.04.18.20.48.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 18 Apr 2019 20:48:32 -0700 (PDT) From: Noam Postavsky To: Benjamin Riefenstahl Subject: Re: bug#32003: 26.0.90; nxml wrong indentation after multi-line attribute References: <877emiszjs.fsf@riefenstahl-linux.mecom.de> Date: Thu, 18 Apr 2019 23:48:31 -0400 In-Reply-To: <877emiszjs.fsf@riefenstahl-linux.mecom.de> (Benjamin Riefenstahl's message of "Fri, 29 Jun 2018 11:38:15 +0200") Message-ID: <87wojqvenk.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32003 Cc: David Carlisle , Vincent Lefevre , 32003@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain forcemerge 32003 33873 tags 32003 + patch quit Benjamin Riefenstahl writes: > xmlns="http://maven.apache.org/SETTINGS/1.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 > https://maven.apache.org/xsd/settings-1.0.0.xsd"> > > ... > > Here's a patch to fix this bug, Bug#33873, and the indentation part of Bug#32897. --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=0001-Fix-nxml-get-inside-Bug-32003.patch Content-Description: patch >From fb5f2cfd8404acc3591ac38dae2eaeb14807d853 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 18 Apr 2019 23:36:04 -0400 Subject: [PATCH] Fix nxml-get-inside (Bug#32003) The change from 2016-01-16 "lisp/nxml: Use syntax-tables for comments" made nxml-get-inside return non-nil for any string or comment, including attribute strings. This caused incorrect and therefore indentation. * lisp/nxml/nxml-rap.el: Update commentary to reflect changes to nxml-mode parsing. (nxml-get-inside): Only return non-nil when inside comments and generic strings, not normal quote-delimited strings. * test/lisp/nxml/nxml-mode-tests.el: New tests. --- lisp/nxml/nxml-rap.el | 40 ++++++++++++------------- test/lisp/nxml/nxml-mode-tests.el | 62 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 22 deletions(-) create mode 100644 test/lisp/nxml/nxml-mode-tests.el diff --git a/lisp/nxml/nxml-rap.el b/lisp/nxml/nxml-rap.el index 2bd758be3a..4a535b2c40 100644 --- a/lisp/nxml/nxml-rap.el +++ b/lisp/nxml/nxml-rap.el @@ -35,35 +35,25 @@ ;; ;; Our strategy is to keep track of just the problematic things. ;; Specifically, we keep track of all comments, CDATA sections and -;; processing instructions in the instance. We do this by marking all -;; except the first character of these with a non-nil nxml-inside text -;; property. The value of the nxml-inside property is comment, -;; cdata-section or processing-instruction. The first character does -;; not have the nxml-inside property so we can find the beginning of -;; the construct by looking for a change in a text property value -;; (Emacs provides primitives for this). We use text properties -;; rather than overlays, since the implementation of overlays doesn't -;; look like it scales to large numbers of overlays in a buffer. -;; -;; We don't in fact track all these constructs, but only track them in -;; some initial part of the instance. +;; processing instructions in the instance. We do this by marking +;; the first character of these with the generic string syntax by setting +;; a 'syntax-table' text property in `sgml-syntax-propertize'. ;; ;; Thus to parse some random point in the file we first ensure that we -;; have scanned up to that point. Then we search backwards for a -;; <. Then we check whether the < has an nxml-inside property. If it -;; does we go backwards to first character that does not have an -;; nxml-inside property (this character must be a <). Then we start -;; parsing forward from the < we have found. +;; have scanned up to that point. Then we search backwards for a <. +;; Then we check whether the < has the generic string syntax. If it +;; does we go backwards to first character of the generic string (this +;; character must be a <). Then we start parsing forward from the < +;; we have found. ;; ;; The prolog has to be parsed specially, so we also keep track of the ;; end of the prolog in `nxml-prolog-end'. The prolog is reparsed on ;; every change to the prolog. This won't work well if people try to ;; edit huge internal subsets. Hopefully that will be rare. ;; -;; We keep track of the changes by adding to the buffer's -;; after-change-functions hook. Scanning is also done as a -;; prerequisite to fontification by adding to fontification-functions -;; (in the same way as jit-lock). This means that scanning for these +;; We rely on the `syntax-propertize-function' machinery to keep track +;; of the changes in the buffer. Fontification also relies on correct +;; `syntax-table' properties. This means that scanning for these ;; constructs had better be quick. Fortunately it is. Firstly, the ;; typical proportion of comments, CDATA sections and processing ;; instructions is small relative to other things. Secondly, to scan @@ -79,7 +69,13 @@ (defvar-local nxml-prolog-end nil "Integer giving position following end of the prolog.") (defsubst nxml-get-inside (pos) - (save-excursion (nth 8 (syntax-ppss pos)))) + "Return non-nil if inside comment, CDATA, or PI." + (let ((ppss (save-excursion (syntax-ppss pos)))) + (or + ;; Inside comment. + (nth 4 ppss) + ;; Inside "generic" string, happens for CDATA, and PI. + (eq t (nth 3 ppss))))) (defun nxml-inside-end (pos) "Return the end of the inside region containing POS. diff --git a/test/lisp/nxml/nxml-mode-tests.el b/test/lisp/nxml/nxml-mode-tests.el new file mode 100644 index 0000000000..57a731ad18 --- /dev/null +++ b/test/lisp/nxml/nxml-mode-tests.el @@ -0,0 +1,62 @@ +;;; nxml-mode-tests.el --- Test NXML Mode -*- lexical-binding: t; -*- + +;; Copyright (C) 2019 Free Software Foundation, Inc. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert) +(require 'nxml-mode) + +(defun nxml-mode-tests-correctly-indented-string (str) + (with-temp-buffer + (nxml-mode) + (insert str) + (indent-region (point-min) (point-max)) + (equal (buffer-string) str))) + +(ert-deftest nxml-indent-line-after-attribute () + (should (nxml-mode-tests-correctly-indented-string " + + + ... + + +")) + (should (nxml-mode-tests-correctly-indented-string "\ + + + + + + +"))) + +(ert-deftest nxml-balanced-close-start-tag-inline () + (with-temp-buffer + (nxml-mode) + (insert "") + (search-backward "") + (nxml-balanced-close-start-tag-inline) + (should (equal (buffer-string) "")))) + +(provide 'nxml-mode-tests) +;;; nxml-mode-tests.el ends here -- 2.11.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu May 09 07:42:02 2019 Received: (at 32003) by debbugs.gnu.org; 9 May 2019 11:42:02 +0000 Received: from localhost ([127.0.0.1]:34811 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hOhR4-00021z-CF for submit@debbugs.gnu.org; Thu, 09 May 2019 07:42:02 -0400 Received: from mail-it1-f175.google.com ([209.85.166.175]:52256) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hOhQy-00021J-FB; Thu, 09 May 2019 07:41:57 -0400 Received: by mail-it1-f175.google.com with SMTP id q65so2988773itg.2; Thu, 09 May 2019 04:41:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=SPr5TIeDpmCkuwzzxrA696axe6vJBMijAhS/u+v7y/s=; b=Ww+VCW/y0xIHbkGpqJXMExCBis6IoGwcJTlKuTjct6HHdRY7U/R5MdBdc1etfg9sTk s8W5ixtRVZFWVVjdph35Uba0SxH9QEjTpCJ1luurthgidff6S0MmL1s+5DVXW2q75L7z RYIv7TwrTkwTYbi20IhVspNFszwdMjJGfEHpqZXPiqqRLUAzHL9T9tXkBDUfO1Nmy1d7 4Ek6qKaadsEZIc5shpfnQVzxRjSEp1O2Ont3GxE3v441ECcbWwza7YX967KT3pCn78rv o0YkvE9CtEc6/mbOeen9g7Lq5uLVieHw7lN5Lf9Vo71YrOCXBBpmpZD/WfCNRclCbaUJ fljA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=SPr5TIeDpmCkuwzzxrA696axe6vJBMijAhS/u+v7y/s=; b=YoIAwsVjYoe3ai1kpnHRWJP9xMPByTll/rUmBBG7RPHcH0nhhZdTBZIJwptm120uRH 28oa06LXLJkDCYh/tNbIhxrzD5PM7U5+rcwS4r0yJctnCM5d/d9TYfRVPLeMF2J5Oh6D yCtTYXTKbV6RKhQV+5iRHB2WVReocFYT66TfsCRvKb86xHaV/Lb3Ny7B1mUixGzDusMB 5dwlz4GPgF4WlOJDG43PJHC8kWPGDVTtKI8H86ar8OZ48ugXlrav0lly/WEiuYmlMZsv /kqK5IYgUPtOvxkIJnHvTrXGbrXnNm6OnBc4zJ0fhP/AEc3Y5mK7k1xU3GtRusFMq2hx yIeA== X-Gm-Message-State: APjAAAXGgOBNAnnyWQfMITxbDqcqkvy1q69lrovTohq4cL1OBlbHRufl MXJXl2dRkKonyHOHJR5rq337BR7R X-Google-Smtp-Source: APXvYqywQ9wGOzmtf9yT5IAnLVzeDxsEk6B2klxoGl3GLRvwpRe1h9cQ/WO6MPi5H/4oT/bGaibsMw== X-Received: by 2002:a02:c957:: with SMTP id u23mr2775692jao.74.1557402109680; Thu, 09 May 2019 04:41:49 -0700 (PDT) Received: from minid (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.gmail.com with ESMTPSA id i8sm655841ioj.26.2019.05.09.04.41.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 09 May 2019 04:41:48 -0700 (PDT) From: Noam Postavsky To: Benjamin Riefenstahl Subject: Re: bug#32003: 26.0.90; nxml wrong indentation after multi-line attribute References: <877emiszjs.fsf@riefenstahl-linux.mecom.de> <87wojqvenk.fsf@gmail.com> Date: Thu, 09 May 2019 07:41:47 -0400 In-Reply-To: <87wojqvenk.fsf@gmail.com> (Noam Postavsky's message of "Thu, 18 Apr 2019 23:48:31 -0400") Message-ID: <87tve3kg78.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32003 Cc: Vincent Lefevre , David Carlisle , Stefan Monnier , 32003@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 32003 fixed close 32003 26.3 quit Noam Postavsky writes: > forcemerge 32003 33873 > tags 32003 + patch > quit > > Benjamin Riefenstahl writes: > >> > xmlns="http://maven.apache.org/SETTINGS/1.0.0" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 >> https://maven.apache.org/xsd/settings-1.0.0.xsd"> >> >> ... >> >> > > Here's a patch to fix this bug, Bug#33873, and the indentation part of Bug#32897. Pushed to emacs-26. ca14dd1d46 2019-05-09T06:42:40-04:00 "Fix nxml-get-inside (Bug#32003)" https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=ca14dd1d4628094dd33d5d94694dcf5f29e843b8 From unknown Fri Jun 20 07:08:14 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 07 Jun 2019 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator