From: Chong Yidong Date: Mon, 1 Sep 2008 17:24:52 +0000 (+0000) Subject: New maintainer. X-Git-Tag: emacs-pretest-23.0.90~3093 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c05423d4679b2c274339ca9127be1c14e93bed98;p=emacs.git New maintainer. (delphi-interface-types): New var. (delphi-composite-types): Use it. (delphi-enclosing-indent-of): Distinguish between "interface" keyword as a unit separator and used like a class declaration. --- diff --git a/lisp/progmodes/delphi.el b/lisp/progmodes/delphi.el index 76fe297f124..a64ff884ba0 100644 --- a/lisp/progmodes/delphi.el +++ b/lisp/progmodes/delphi.el @@ -3,8 +3,9 @@ ;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, ;; 2008 Free Software Foundation, Inc. -;; Author: Ray Blaak -;; Maintainer: FSF (Blaak's email addr bounces, Aug 2005) +;; Authors: Ray Blaak , +;; Simon South +;; Maintainer: Simon South ;; Keywords: languages ;; This file is part of GNU Emacs. @@ -238,10 +239,14 @@ are followed by an expression.") (defconst delphi-decl-sections '(type const var label resourcestring) "Denotes the start of a declaration section.") +(defconst delphi-interface-types '(dispinterface interface) + "Interface types.") + (defconst delphi-class-types '(class object) "Class types.") -(defconst delphi-composite-types `(,@delphi-class-types record) +(defconst delphi-composite-types + `(,@delphi-class-types ,@delphi-interface-types record) "Types that contain declarations within them.") (defconst delphi-unit-sections @@ -835,8 +840,9 @@ non-delphi buffer. Set to nil in a delphi buffer. To override, just do: (delphi-stmt-line-indent-of token delphi-indent-level)))) (defun delphi-composite-type-start (token last-token) - ;; Returns true (actually the last-token) if the pair equals (= class) or (= - ;; record), and nil otherwise. + ;; Returns true (actually the last-token) if the pair equals (= class), (= + ;; dispinterface), (= interface), (= object), or (= record), and nil + ;; otherwise. (if (and (eq 'equals (delphi-token-kind token)) (delphi-is (delphi-token-kind last-token) delphi-composite-types)) last-token)) @@ -1327,7 +1333,29 @@ non-delphi buffer. Set to nil in a delphi buffer. To override, just do: delphi-indent-level))) ;; In unit sections we indent right to the left. - ((delphi-is token-kind delphi-unit-sections) (throw 'done 0)) + ((delphi-is token-kind delphi-unit-sections) + (throw 'done + ;; Handle specially the case of "interface", which can be used + ;; to start either a unit section or an interface definition. + (if (delphi-is token-kind delphi-interface-types) + (progn + ;; Find the previous non-whitespace token. + (while (progn + (setq last-token token + token (delphi-previous-token token) + token-kind (delphi-token-kind token)) + (and token + (delphi-is token-kind + delphi-whitespace)))) + ;; If this token is an equals sign, "interface" is being + ;; used to start an interface definition and we should + ;; treat it as a composite type; otherwise, we should + ;; consider it the start of a unit section. + (if (and token (eq token-kind 'equals)) + (delphi-line-indent-of last-token + delphi-indent-level) + 0)) + 0))) ;; A previous terminator means we can stop. ((delphi-is token-kind delphi-previous-terminators)