GNU bug report logs - #14134
24.3; Delphi Mode Doesn't Work With Highlight Changes Mode

Previous Next

Package: emacs;

Reported by: Erik Knowles <eknowles <at> geosystemsoftware.com>

Date: Wed, 3 Apr 2013 20:17:01 UTC

Severity: normal

Found in version 24.3

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Erik Knowles <eknowles <at> geosystemsoftware.com>
Cc: 14134 <at> debbugs.gnu.org
Subject: bug#14134: 24.3; Delphi Mode Doesn't Work With Highlight Changes Mode
Date: Wed, 24 Apr 2013 16:47:06 -0400
> Delphi mode's fontification code erases all existing text properties,
> including those used by highlight changes mode to mark modified
> text sections. 

I think your "monkey" patch was actually a fairly good idea.
I installed the patch below instead, which seems a bit cleaner.
I don't think this is quite good enough, but it's a step in the
right direction.


        Stefan


=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog	2013-04-24 14:35:59 +0000
+++ lisp/ChangeLog	2013-04-24 20:40:19 +0000
@@ -1,3 +1,11 @@
+2013-04-24  Stefan Monnier  <monnier <at> iro.umontreal.ca>
+
+	* progmodes/opascal.el (opascal-set-token-property): Rename from
+	opascal-set-text-properties and only set `token' (bug#14134).
+	(opascal-literal-text-properties): Remove.
+	(opascal-parse-next-literal, opascal-debug-unparse-buffer):
+	Adjust callers.
+
 2013-04-24  Reuben Thomas <rrt <at> sc3d.org>
 
 	* textmodes/remember.el (remember-handler-functions): Add an

=== modified file 'lisp/progmodes/opascal.el'
--- lisp/progmodes/opascal.el	2013-01-31 01:58:24 +0000
+++ lisp/progmodes/opascal.el	2013-04-24 20:38:48 +0000
@@ -406,11 +406,11 @@
 non-OPascal buffer.  Set to nil in OPascal buffers.  To override, just do:
  (let ((opascal--ignore-changes t)) ...)")
 
-(defun opascal-set-text-properties (from to properties)
+(defun opascal-set-token-property (from to value)
   ;; Like `set-text-properties', except we do not consider this to be a buffer
   ;; modification.
   (opascal-save-state
-   (set-text-properties from to properties)))
+   (put-text-property from to 'token value)))
 
 (defun opascal-literal-kind (p)
   ;; Returns the literal kind the point p is in (or nil if not in a literal).
@@ -490,13 +490,6 @@
       (re-search-forward pattern limit 'goto-limit-on-fail)
       (point))))
 
-(defun opascal-literal-text-properties (kind)
-  ;; Creates a list of text properties for the literal kind.
-  (if (and (boundp 'font-lock-mode)
-           font-lock-mode)
-      (list 'token kind 'face (opascal-face-of kind) 'lazy-lock t)
-    (list 'token kind)))
-
 (defun opascal-parse-next-literal (limit)
   ;; Searches for the next literal region (i.e. comment or string) and sets the
   ;; the point to its end (or the limit, if not found). The literal region is
@@ -507,8 +500,7 @@
            ;; We are completing an incomplete literal.
            (let ((kind (opascal-literal-kind (1- search-start))))
              (opascal-complete-literal kind limit)
-             (opascal-set-text-properties
-              search-start (point) (opascal-literal-text-properties kind))))
+             (opascal-set-token-property search-start (point) kind)))
 
           ((re-search-forward
             "\\(//\\)\\|\\({\\)\\|\\((\\*\\)\\|\\('\\)\\|\\(\"\\)"
@@ -520,13 +512,12 @@
                              ((match-beginning 4) 'string)
                              ((match-beginning 5) 'double-quoted-string)))
                  (start (match-beginning 0)))
-             (opascal-set-text-properties search-start start nil)
+             (opascal-set-token-property search-start start nil)
              (opascal-complete-literal kind limit)
-             (opascal-set-text-properties
-              start (point) (opascal-literal-text-properties kind))))
+             (opascal-set-token-property start (point) kind)))
 
           ;; Nothing found. Mark it as a non-literal.
-          ((opascal-set-text-properties search-start limit nil)))
+          ((opascal-set-token-property search-start limit nil)))
     (opascal-step-progress (point) "Parsing" opascal-parsing-progress-step)))
 
 (defun opascal-literal-token-at (p)
@@ -1570,7 +1561,7 @@
 
 (defun opascal-debug-unparse-buffer ()
   (interactive)
-  (opascal-set-text-properties (point-min) (point-max) nil))
+  (opascal-set-token-property (point-min) (point-max) nil))
 
 (defun opascal-debug-parse-region (from to)
   (interactive "r")





This bug report was last modified 12 years and 29 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.