[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/rust-mode b8126e4 284/486: Recognize "extern" imenu items
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/rust-mode b8126e4 284/486: Recognize "extern" imenu items |
Date: |
Sat, 7 Aug 2021 09:25:37 -0400 (EDT) |
branch: elpa/rust-mode
commit b8126e4f647ed6a4f79e623752b0b0821f42890e
Author: mrBliss <dewinant@gmail.com>
Commit: mrBliss <dewinant@gmail.com>
Recognize "extern" imenu items
Fixes #188.
---
rust-mode-tests.el | 40 ++++++++++++++++++++++++++++++++++++++++
rust-mode.el | 3 +++
2 files changed, 43 insertions(+)
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index 2585237..7b29ee1 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -3,6 +3,7 @@
(require 'rust-mode)
(require 'ert)
(require 'cl)
+(require 'imenu)
(setq rust-test-fill-column 32)
@@ -2614,6 +2615,45 @@ Fontification needs to include this whole string or none
of it.
(rust--after-revert-hook)
(should (equal initial-point (point))))))
+(defun test-imenu (code expected-items)
+ (with-temp-buffer
+ (rust-mode)
+ (insert code)
+ (let ((actual-items
+ ;; Replace ("item" . #<marker at ? in ?.rs) with "item"
+ (mapcar (lambda (class)
+ (cons (car class)
+ (mapcar #'car (cdr class))))
+ (imenu--generic-function rust-imenu-generic-expression))))
+ (should (equal expected-items actual-items)))))
+
+(ert-deftest rust-test-imenu-extern-unsafe-fn ()
+ (test-imenu
+ "
+fn one() {
+}
+
+unsafe fn two() {
+}
+
+extern \"C\" fn three() {
+}
+
+pub extern fn four() {
+
+}
+
+extern \"rust-intrinsic\" fn five() {
+
+}
+"
+ '(("Fn"
+ "one"
+ "two"
+ "three"
+ "four"
+ "five"))))
+
;; If electric-pair-mode is available, load it and run the tests that use it.
If not,
;; no error--the tests will be skipped.
(require 'elec-pair nil t)
diff --git a/rust-mode.el b/rust-mode.el
index 1527c7a..dfe3e9a 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -33,6 +33,7 @@
(defconst rust-re-uc-ident "[[:upper:]][[:word:][:multibyte:]_[:digit:]]*")
(defconst rust-re-vis "pub")
(defconst rust-re-unsafe "unsafe")
+(defconst rust-re-extern "extern")
(defconst rust-re-non-standard-string
(rx
@@ -571,6 +572,8 @@ buffer."
(concat "^[[:space:]]*"
(rust-re-shy (concat (rust-re-word rust-re-vis) "[[:space:]]+")) "?"
(rust-re-shy (concat (rust-re-word rust-re-unsafe) "[[:space:]]+"))
"?"
+ (rust-re-shy (concat (rust-re-word rust-re-extern) "[[:space:]]+"
+ (rust-re-shy "\"[^\"]+\"[[:space:]]+") "?")) "?"
(rust-re-item-def itype)))
(defconst rust-re-special-types (regexp-opt rust-special-types 'symbols))
- [nongnu] elpa/rust-mode 07943f0 178/486: Perform syntactic angle bracket matching, (continued)
- [nongnu] elpa/rust-mode 07943f0 178/486: Perform syntactic angle bracket matching, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 54e24e6 200/486: Add basic license information, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode e3c545e 252/486: imenu: don't add item defs in single-line comments, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 6886300 256/486: [master] Copy buffer only when format changes., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode e452995 261/486: rust--after-revert-hook should preserve point position., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode d2e57a9 263/486: fix regex to account for `[E123]`, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode bec3d0c 267/486: Test #169, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 7fb78d4 273/486: Bump version, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode f6cf013 275/486: Add instructions for version tag update requests, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 4935090 279/486: convert http links into https links, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode b8126e4 284/486: Recognize "extern" imenu items,
ELPA Syncer <=
- [nongnu] elpa/rust-mode a436945 294/486: Merge pull request #172 from nokaa/master, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 954221f 316/486: Define `rust-test-project-located' conditionally instead of using `skip-unless'., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 1d4a75f 324/486: Make rust-beginning-of-defun ignore comments and strings, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode dea81aa 334/486: Types get correct font-lock in if-let statements, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode ac5dac0 335/486: Added test for if-let font lock, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 6550d94 336/486: Renamed and relocated if-let font-lock test, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode a814cd8 338/486: Pass 'visible to get-buffer-window, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode c8280ae 339/486: Merge pull request #235 from tromey/get-buffer-window-fixlet, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode fca71c6 342/486: feat(rust-mode): add yield to the keywords list, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode eae291a 343/486: Merge pull request #240 from michael-zapata/feat/add-yield-keyword, ELPA Syncer, 2021/08/07