all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: JD Smith <jdsmith@as.arizona.edu>
Subject: Re: xml-parse-file and text properties
Date: Mon, 24 Jul 2006 09:44:51 -0700	[thread overview]
Message-ID: <pan.2006.07.24.16.44.51.188959@as.arizona.edu> (raw)
In-Reply-To: u1wsegfux.fsf@gnu.org

On Sat, 22 Jul 2006 12:15:34 +0300, Eli Zaretskii wrote:

>> From: JD Smith <jdsmith@as.arizona.edu>
>> Date: Fri, 21 Jul 2006 14:45:27 -0700
>> 
>> This is similar to the improved method Richard proposed yesterday
>> (insert-file-contents using a temporary buffer).  Remarkably enough
>> (and highly surprising to me), even inserting the XML file contents in
>> a temporary buffer is enough to get '(fontified nil) text properties
>> added all over
> 
> I don't see anything surprising here, since font-lock is now ON by
> default.
> 
> You should be able to overcome this if you turn off font-lock-mode in
> the temporary buffer, before inserting the file's contents.

This was my mistake.  In fact, with Richard's formulation:

    (with-temp-buffer
      (insert-file-contents file)
      (xml-parse-region (point-min)
			(point-max)
			(current-buffer)
			parse-dtd parse-ns))))


no font-lock text properties ever get added to the temporary buffer,
despite global-font-lock being on.  It turns out I was pre-loading the
file into a buffer to prevent warnings about its read-only status, so
this code path was not being taken.

With the patch below, xml-parse-file only returns unwanted text
properties when a file is already loaded into a buffer.  Should we
install it?  This doesn't address the larger issue of whether
xml-parse-file should ever return text-properties, but it is simple and
sensible.

JD



*** xml.el	06 Feb 2006 07:33:36 -0700	1.53
--- xml.el	24 Jul 2006 09:40:07 -0700	
***************
*** 161,187 ****
  ;;;###autoload
  (defun xml-parse-file (file &optional parse-dtd parse-ns)
    "Parse the well-formed XML file FILE.
! If FILE is already visited, use its buffer and don't kill it.
! Returns the top node with all its children.
! If PARSE-DTD is non-nil, the DTD is parsed rather than skipped.
! If PARSE-NS is non-nil, then QNAMES are expanded."
!   (let ((keep))
!     (if (get-file-buffer file)
! 	(progn
! 	  (set-buffer (get-file-buffer file))
! 	  (setq keep (point)))
!       (let (auto-mode-alist)		; no need for xml-mode
! 	(find-file file)))
! 
!     (let ((xml (xml-parse-region (point-min)
! 				 (point-max)
! 				 (current-buffer)
! 				 parse-dtd parse-ns)))
!       (if keep
! 	  (goto-char keep)
! 	(kill-buffer (current-buffer)))
!       xml)))
! 
  
  (defvar xml-name-re)
  (defvar xml-entity-value-re)
--- 161,182 ----
  ;;;###autoload
  (defun xml-parse-file (file &optional parse-dtd parse-ns)
    "Parse the well-formed XML file FILE.
! If FILE is already visited, use its buffer and don't kill it. Returns the
! top node with all its children. If PARSE-DTD is non-nil, the DTD is parsed
! rather than skipped. If PARSE-NS is non-nil, then QNAMES are expanded."
!   (if (get-file-buffer file)
!       (with-current-buffer (get-file-buffer file)
! 	(save-excursion
! 	  (xml-parse-region (point-min)
! 			    (point-max)
! 			    (current-buffer)
! 			    parse-dtd parse-ns)))
!     (with-temp-buffer
!       (insert-file-contents file)
!       (xml-parse-region (point-min)
! 			(point-max)
! 			(current-buffer)
! 			parse-dtd parse-ns))))
  
  (defvar xml-name-re)
  (defvar xml-entity-value-re)

  reply	other threads:[~2006-07-24 16:44 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-18 21:35 xml-parse-file and text properties JD Smith
2006-07-20 21:46 ` Richard Stallman
2006-07-20 22:11   ` JD Smith
2006-07-21  4:46     ` Richard Stallman
2006-07-21  6:35       ` Kenichi Handa
2006-07-21  7:24         ` Eli Zaretskii
2006-07-21  8:14           ` Kenichi Handa
2006-07-22  4:39         ` Richard Stallman
2006-07-21 16:13       ` Kevin Rodgers
2006-07-21 23:33         ` Kevin Rodgers
2006-07-20 21:46 ` Richard Stallman
2006-07-20 22:40   ` JD Smith
2006-07-21 12:55 ` Stefan Monnier
2006-07-21 17:34   ` JD Smith
2006-07-21 20:22     ` Stefan Monnier
2006-07-21 21:50       ` JD Smith
2006-07-22 15:49       ` Richard Stallman
2006-07-24  1:51         ` Kenichi Handa
2006-07-24  3:17           ` Stefan Monnier
2006-07-24  4:36             ` Kenichi Handa
2006-07-24 18:22           ` Richard Stallman
2006-07-24 20:38             ` Stuart D. Herring
2006-07-25  3:09               ` Richard Stallman
2006-07-25 14:00                 ` Stefan Monnier
2006-07-25 22:15                   ` Richard Stallman
2006-07-24 20:51             ` Stefan Monnier
2006-07-25  3:09               ` Richard Stallman
2006-07-21 20:52     ` Thien-Thi Nguyen
2006-07-21 21:45       ` JD Smith
2006-07-22  9:15         ` Eli Zaretskii
2006-07-24 16:44           ` JD Smith [this message]
2006-07-25 16:05             ` JD Smith
2006-07-25 16:27               ` Stefan Monnier
2006-07-25 19:16                 ` JD Smith

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pan.2006.07.24.16.44.51.188959@as.arizona.edu \
    --to=jdsmith@as.arizona.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.