From afb5d709049eb40291fa0126d48efca2f7061a10 Mon Sep 17 00:00:00 2001
From: Stephen Leake <stephen_leake@member.fsf.org>
Date: Thu, 21 Jan 2010 13:25:54 +0100
Subject: [PATCH] Fix bug#5435.

---
 lisp/ChangeLog             | 5 +++++
 lisp/progmodes/ada-mode.el | 5 +++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 3d99f723a31..4a453c58759 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-21  Stephen Leake  <stephen_leake@member.fsf.org>
+
+        * progmodes/ada-mode.el (ada-in-paramlist-p): Pragma syntax
+	is the same as subprogram call, not declaration.  (Bug#5435).
+
 2010-01-20  Chong Yidong  <cyd@stupidchicken.com>
 
 	* term.el (term-send-raw-meta): Revert 2009-12-04 change (Bug#5330).
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index 3694de23f88..6e7af70a683 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -4163,7 +4163,8 @@ Return nil if the private is part of the package name, as in
 
 
 (defun ada-in-paramlist-p ()
-  "Return t if point is inside a parameter-list."
+  "Return t if point is inside the parameter-list of a declaration,
+but not a subprogram call or aggregate."
   (save-excursion
     (and
      (ada-search-ignore-string-comment "(\\|)" t nil t)
@@ -4194,13 +4195,13 @@ Return nil if the private is part of the package name, as in
 
      ;; right keyword two words before parenthesis ?
      ;; Type is in this list because of discriminants
+     ;; pragma is not, because the syntax is that of a subprogram call.
      (looking-at (eval-when-compile
 		   (concat "\\<\\("
 			   "procedure\\|function\\|body\\|"
 			   "task\\|entry\\|accept\\|"
 			   "access[ \t]+procedure\\|"
 			   "access[ \t]+function\\|"
-			   "pragma\\|"
 			   "type\\)\\>"))))))
 
 (defun ada-search-ignore-complex-boolean (regexp backwardp)
-- 
2.39.5