branch: elpa/d-mode
commit df1eddeb891ab1504031212edecb1958f412688d
Author: Vladimir Panteleev <[email protected]>
Commit: Vladimir Panteleev <[email protected]>
Fix imenu with extern declarations
---
d-mode.el | 17 +++++++++++++++--
tests/imenu.d | 5 ++++-
2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/d-mode.el b/d-mode.el
index 38ae8f0..2312f71 100644
--- a/d-mode.el
+++ b/d-mode.el
@@ -7,7 +7,7 @@
;; Maintainer: Russel Winder <[email protected]>
;; Vladimir Panteleev <[email protected]>
;; Created: March 2007
-;; Version: 201908262253
+;; Version: 201908262309
;; Keywords: D programming language emacs cc-mode
;; Package-Requires: ((emacs "24.3"))
@@ -493,7 +493,20 @@ Each list item should be a regexp matching a single
identifier."
(one-or-more (any "a-zA-Z0-9_"))
(zero-or-more space)
")"
- (zero-or-more space))))
+ (zero-or-more space))
+
+ ;; Extern declarations
+ (zero-or-one
+ "extern"
+ (zero-or-more space)
+ "("
+ (zero-or-more space)
+ (one-or-more (not (any "()")))
+ (zero-or-more space)
+ ")"
+ (zero-or-more space))
+
+ ))
(defconst d-imenu-method-name-pattern
(rx
diff --git a/tests/imenu.d b/tests/imenu.d
index b61d0f3..0dddfcd 100644
--- a/tests/imenu.d
+++ b/tests/imenu.d
@@ -1,5 +1,5 @@
// #run: (d-test-get-imenu-lines)
-// #out: (4 6 11 14 17 19 22 25 33 34 37 40 43 46 49 52 54 56 67 75)
+// #out: (4 6 11 14 17 19 22 25 33 34 37 40 43 46 49 52 54 56 67 75 78)
void foo(int x) {}
@@ -73,3 +73,6 @@ Entry getLog()
// Conditional declarations
version(CoreDdoc) enum ClockType {}
+
+// Extern declarations
+extern (D) void peekSlice() {}