[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/scala-mode 8d4d99b 156/217: Add optional flattening to cre
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/scala-mode 8d4d99b 156/217: Add optional flattening to creation of imenu index (again). |
Date: |
Sun, 29 Aug 2021 11:31:03 -0400 (EDT) |
branch: elpa/scala-mode
commit 8d4d99b2a83118ac677a02bd085a3bce68db347d
Author: Ivan Malison <IvanMalison@gmail.com>
Commit: Ivan Malison <IvanMalison@gmail.com>
Add optional flattening to creation of imenu index (again).
---
scala-mode2-imenu.el | 44 ++++++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/scala-mode2-imenu.el b/scala-mode2-imenu.el
index 0b1aa8f..87927f4 100644
--- a/scala-mode2-imenu.el
+++ b/scala-mode2-imenu.el
@@ -5,25 +5,35 @@
;;; Code:
(require 'scala-mode2-syntax)
+
+;; Make lambdas proper clousures (only in this file)
(make-local-variable 'lexical-binding)
(setq lexical-binding t)
-(defcustom scala-imenu:should-flatten-index nil
+(defcustom scala-imenu:should-flatten-index t
"Controls whether or not the imenu index is flattened or hierarchical.")
(defcustom scala-imenu:build-imenu-candidate
'scala-imenu:default-build-imenu-candidate
"Controls whether or not the imenu index has definition type information.")
-(if scala-imenu:should-flatten-index (scala-imenu:flatten-index index) index)
+(defun scala-imenu:flatten-list (incoming-list &optional predicate)
+ (when (not predicate) (setq predicate 'listp))
+ (mapcan (lambda (x) (if (funcall predicate x)
+ (scala-imenu:flatten-list x predicate) (list x)))
incoming-list))
+
+(scala-imenu:flatten-list '((1 2) ((1 2 3) (1))))
-(defun scala-imenu:flatten-list (list)
- (mapcan (lambda (x)
- (if (listp x)
- (ensime-flatten-list x)
- (list x))) list))
+(defun scala-imenu:flatten-imenu-index (index)
+ (mapcan (lambda (x) (if (listp (cdr x))
+ (scala-imenu:flatten-imenu-index (cdr x))
+ (list x))) index))
(defun scala-imenu:create-imenu-index ()
- (mapcar 'scala-imenu:build-imenu-candidates (scala-imenu:create-index)))
+ (let ((imenu-index (mapcar 'scala-imenu:build-imenu-candidates
+ (scala-imenu:create-index))))
+ (if scala-imenu:should-flatten-index
+ (scala-imenu:flatten-imenu-index imenu-index)
+ imenu-index)))
(defun scala-imenu:build-imenu-candidates (member-info &optional parents)
(if (listp (car member-info))
@@ -50,12 +60,13 @@
(defun scala-imenu:destructure-for-build-imenu-candidate (member-info parents)
(cl-destructuring-bind (member-name definition-type marker)
member-info (funcall scala-imenu:build-imenu-candidate
- member-name definition-type marker parents)))
+ member-name definition-type marker parents)))
(defun scala-imenu:default-build-imenu-candidate (member-name definition-type
marker parents)
- (let* ((all-names (append (mapcar (lambda (parent) (car parent)) parents)
- `(,member-name)))
+ (let* ((all-names
+ (append (mapcar (lambda (parent) (car parent)) parents)
+ `(,member-name)))
(member-string (mapconcat 'identity all-names ".")))
`(,(format "(%s)%s" definition-type member-string) . ,marker)))
@@ -107,17 +118,6 @@
(save-excursion (scala-imenu:parse-nested-from-beginning))
`(,member-name ,definition-type ,(point-marker)))))
-(defun scala-imenu:flatten-index (index)
- (reduce #'append
- (mapcar
- (lambda (class-info)
- (let ((class-name (car class-info)))
- (mapcar (lambda (member-info)
- `(,(concat class-name "." (car member-info)) .
- ,(cdr member-info)))
- (cdr class-info)))) index)))
-
(provide 'scala-mode2-imenu)
;;; scala-mode2-imenu.el ends here
-(mapconcat 'identity '("d" "c") ".")
- [nongnu] elpa/scala-mode 689bd7d 089/217: (require 'package), (continued)
- [nongnu] elpa/scala-mode 689bd7d 089/217: (require 'package), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode cb3f278 086/217: Update for marmalade / melpa package., ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 1a241eb 076/217: Add `scala-indent:insert-asterisk-on-multiline-comment`., ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 5cd1b20 068/217: Properly align constructor val and var params., ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode ad73d10 096/217: Merge pull request #49 from zbskii/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode defa2af 098/217: pkg.el cleanup, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 13b30a6 093/217: Added Hugh Giddens to contributors, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 9ab0a59 091/217: Update README.md, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode c48b479 113/217: Update README.md, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode af2dc30 136/217: Removed Marmelade from README.md, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 8d4d99b 156/217: Add optional flattening to creation of imenu index (again).,
ELPA Syncer <=
- [nongnu] elpa/scala-mode aebed53 168/217: Mark a couple of indentation variables as safe (#105), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode ece95ca 170/217: use CI to compile PRs, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 37e7537 173/217: rename to scala-mode (#110), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 474a616 175/217: Merge ob-scala into scala-mode (#107), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode a0b73b2 177/217: add string interpolation (#116), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 4b492b9 179/217: Fix for fill-paragraph (#123), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 5ffaa1f 185/217: Merge pull request #129 from ensime/hvesalai-patch-94, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode f88091a 191/217: `**` at end of multiline comment cause issue #140 (#141), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 44772cb 196/217: fixed some compilation warnings, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 9e5b8af 190/217: Operator characters ids cannot be adjoint to word constituent ids (#139), ELPA Syncer, 2021/08/29