From 3cd88744e08431268052eeab5f0c8f53439eee17 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 28 Sep 2022 15:27:55 +1000 Subject: allow toggle display of exported ids in hcel-outline mode --- hcel-source.el | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'hcel-source.el') diff --git a/hcel-source.el b/hcel-source.el index 4151f63..e2158d1 100644 --- a/hcel-source.el +++ b/hcel-source.el @@ -21,6 +21,7 @@ (require 'dom) (require 'hcel-client) (require 'text-property-search) +(require 'json) (require 'xref) (defvar-local hcel-identifiers nil) @@ -373,19 +374,26 @@ the location with pulsing. ;; imenu (defun hcel-imenu-create-index () + (hcel-imenu-create-index-internal)) + +(defun hcel-imenu-create-index-internal (&optional exported-only) (unless (derived-mode-p 'hcel-mode) (error "Not in hcel-mode!")) (goto-char (point-min)) - (let ((index) (match)) + (let ((index) (match) (exported)) (while (setq match (text-property-search-forward 'declaration)) - (push (cons - (hcel-render-components - (alist-get 'components - (alist-get 'declType (prop-match-value match))) - (alist-get 'name (prop-match-value match))) - (1- (point))) - index)) - index)) + (setq exported (eq (alist-get 'isExported (prop-match-value match)) t)) + (unless (and exported-only (not exported)) + (push (cons + (propertize + (hcel-render-components + (alist-get 'components + (alist-get 'declType (prop-match-value match))) + (alist-get 'name (prop-match-value match))) + 'exported exported) + (1- (point))) + index))) + (reverse index))) (define-key hcel-mode-map "j" #'imenu) ;; xref -- cgit v1.2.3