emacs-elpa-diffs
[Top][All Lists]
Advanced

[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") ".")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]