From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.bugs Subject: bug#14134: 24.3; Delphi Mode Doesn't Work With Highlight Changes Mode Date: Wed, 24 Apr 2013 16:47:06 -0400 Message-ID: References: <20134314336.903334@A6> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1366836482 3518 80.91.229.3 (24 Apr 2013 20:48:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 24 Apr 2013 20:48:02 +0000 (UTC) Cc: 14134@debbugs.gnu.org To: Erik Knowles Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Apr 24 22:48:06 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UV6bj-0006ep-Uj for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Apr 2013 22:48:04 +0200 Original-Received: from localhost ([::1]:33697 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UV6bj-00050q-JG for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Apr 2013 16:48:03 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:45122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UV6bf-00050V-EZ for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2013 16:48:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UV6be-0004uR-Cs for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2013 16:47:59 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:37507) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UV6be-0004uA-9B for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2013 16:47:58 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1UV6gX-0002fG-O7 for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2013 16:53:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Stefan Monnier Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 24 Apr 2013 20:53:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 14134 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 14134-submit@debbugs.gnu.org id=B14134.136683673510139 (code B ref 14134); Wed, 24 Apr 2013 20:53:01 +0000 Original-Received: (at 14134) by debbugs.gnu.org; 24 Apr 2013 20:52:15 +0000 Original-Received: from localhost ([127.0.0.1]:41616 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UV6fm-0002dS-Ss for submit@debbugs.gnu.org; Wed, 24 Apr 2013 16:52:15 -0400 Original-Received: from ironport2-out.teksavvy.com ([206.248.154.182]:30037) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UV6fk-0002dI-A5 for 14134@debbugs.gnu.org; Wed, 24 Apr 2013 16:52:12 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EABK/CFFFpYYW/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJBOICwbBLY0ag3ADpHqBXoMTgUs X-IPAS-Result: Av4EABK/CFFFpYYW/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJBOICwbBLY0ag3ADpHqBXoMTgUs X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="8218015" Original-Received: from 69-165-134-22.dsl.teksavvy.com (HELO pastel.home) ([69.165.134.22]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 24 Apr 2013 16:47:03 -0400 Original-Received: by pastel.home (Postfix, from userid 20848) id 900A367A3A; Wed, 24 Apr 2013 16:47:06 -0400 (EDT) In-Reply-To: <20134314336.903334@A6> (Erik Knowles's message of "Wed, 3 Apr 2013 14:03:36 -0600") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:73652 Archived-At: > 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 + + * 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 * 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")