about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-imenu.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-imenu.el')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-imenu.el241
1 files changed, 0 insertions, 241 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-imenu.el b/configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-imenu.el
deleted file mode 100644
index d7005e878e2b..000000000000
--- a/configs/shared/emacs/.emacs.d/elpa/lsp-ui-20180913.833/lsp-ui-imenu.el
+++ /dev/null
@@ -1,241 +0,0 @@
-;;; lsp-ui-imenu.el --- Lsp-Ui-Imenu  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2018 Sebastien Chapuis
-
-;; Author: Sebastien Chapuis <sebastien@chapu.is>
-;; URL: https://github.com/emacs-lsp/lsp-ui
-;; Keywords: lsp, ui
-
-;;; License
-;;
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
-;; Floor, Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-;;
-;; Show imenu entries
-;; Call the function `lsp-ui-imenu'
-;;
-;; (define-key lsp-ui-mode-map (kbd "C-c l") 'lsp-ui-imenu)
-;;
-
-;;; Code:
-
-(require 'lsp-mode)
-(require 'lsp-imenu)
-(require 'dash)
-
-(defgroup lsp-ui-imenu nil
-  "Display imenu entries."
-  :group 'tools
-  :group 'convenience
-  :group 'lsp-ui
-  :link '(custom-manual "(lsp-ui-imenu) Top")
-  :link '(info-link "(lsp-ui-imenu) Customizing"))
-
-(defcustom lsp-ui-imenu-enable t
-  "Whether or not to enable ‘lsp-ui-imenu’."
-  :type 'boolean
-  :group 'lsp-ui)
-
-(defcustom lsp-ui-imenu-kind-position 'top
-  "Where to show the entries kind."
-  :type '(choice (const :tag "Top" top)
-                 (const :tag "Left" left))
-  :group 'lsp-ui-imenu)
-
-(defcustom lsp-ui-imenu-colors '("deep sky blue" "green3")
-  "Color list to cycle through for entry groups."
-  :type '(repeat color)
-  :group 'lsp-ui-menu)
-
-(declare-function imenu--make-index-alist 'imenu)
-(declare-function imenu--subalist-p 'imenu)
-(defvar imenu--index-alist)
-
-(defun lsp-ui-imenu--pad (s len color &optional no-bar)
-  (let ((n (- len (length s))))
-    (propertize (concat (make-string n ?\s) s (unless no-bar " ┃ "))
-                'face `(:foreground ,color))))
-
-(defun lsp-ui-imenu--get-color (index)
-  (nth (mod index (length lsp-ui-imenu-colors)) lsp-ui-imenu-colors))
-
-(defun lsp-ui-imenu--make-line (title index padding entry color-index)
-  (let* ((color (lsp-ui-imenu--get-color color-index))
-         (prefix (if (and (= index 0) (eq lsp-ui-imenu-kind-position 'left)) title " "))
-         (text (concat (lsp-ui-imenu--pad prefix padding color)
-                       (propertize (car entry) 'face 'default)
-                       "\n"))
-         (len (length text)))
-    (add-text-properties 0 len `(index ,index title ,title marker ,(cdr entry) padding ,padding) text)
-    text))
-
-(defvar-local lsp-ui-imenu-ov nil)
-
-(defun lsp-ui-imenu--make-ov nil
-  (or (and (overlayp lsp-ui-imenu-ov) lsp-ui-imenu-ov)
-      (setq lsp-ui-imenu-ov (make-overlay 1 1))))
-
-(defun lsp-ui-imenu--post-command nil
-  (when (eobp)
-    (forward-line -1))
-  (-when-let (padding (get-char-property (point) 'padding))
-    (goto-char (+ 3 (line-beginning-position) padding)))
-  (when (eq lsp-ui-imenu-kind-position 'left)
-    (save-excursion
-      (when (overlayp lsp-ui-imenu-ov)
-        (overlay-put lsp-ui-imenu-ov 'display nil))
-      (redisplay)
-      (goto-char (window-start))
-      (if (not (= (get-text-property (point) 'index) 0))
-          (let* ((ov (lsp-ui-imenu--make-ov))
-                 (padding (get-text-property (point) 'padding))
-                 (title (get-text-property (point) 'title))
-                 (text (buffer-substring (+ (line-beginning-position) padding) (line-end-position))))
-            (move-overlay ov (line-beginning-position) (line-end-position))
-            (overlay-put ov 'display `(string ,(concat (let ((n (- padding (length title))))
-                                                         (propertize (concat (make-string n ?\s) title)))
-                                                       text))))
-        (when (overlayp lsp-ui-imenu-ov)
-          (delete-overlay lsp-ui-imenu-ov))))))
-
-(defvar lsp-ui-imenu--origin nil)
-
-(defun lsp-ui-imenu--put-separator nil
-  (let ((ov (make-overlay (point) (point))))
-    (overlay-put ov 'after-string (propertize "\n" 'face '(:height 0.6)))))
-
-(defun lsp-ui-imenu--put-kind (title padding color-index)
-  (when (eq lsp-ui-imenu-kind-position 'top)
-    (let ((ov (make-overlay (point) (point)))
-          (color (lsp-ui-imenu--get-color color-index)))
-      (overlay-put
-       ov 'after-string
-       (concat (lsp-ui-imenu--pad " " padding color t)
-               "\n"
-               title
-               (propertize "\n" 'face '(:height 1)))))))
-
-(defun lsp-ui-imenu nil
-  (interactive)
-  (setq lsp-ui-imenu--origin (current-buffer))
-  (imenu--make-index-alist)
-  (let ((list imenu--index-alist))
-    (with-current-buffer (get-buffer-create "*lsp-ui-imenu*")
-      (let* ((padding (or (and (eq lsp-ui-imenu-kind-position 'top) 1)
-                          (--> (-filter 'imenu--subalist-p list)
-                               (--map (length (car it)) it)
-                               (-max (or it '(1))))))
-             (grouped-by-subs (-partition-by 'imenu--subalist-p list))
-             (color-index 0)
-             buffer-read-only)
-        (remove-overlays)
-        (erase-buffer)
-        (lsp-ui-imenu--put-separator)
-        (dolist (group grouped-by-subs)
-          (if (imenu--subalist-p (car group))
-              (dolist (kind group)
-                (-let* (((title . entries) kind))
-                  (lsp-ui-imenu--put-kind title padding color-index)
-                  (--each-indexed entries
-                    (insert (lsp-ui-imenu--make-line title it-index padding it color-index)))
-                  (lsp-ui-imenu--put-separator)
-                  (setq color-index (1+ color-index))))
-            (--each-indexed group
-              (insert (lsp-ui-imenu--make-line " " it-index padding it color-index)))
-            (lsp-ui-imenu--put-separator)
-            (setq color-index (1+ color-index))))
-        (lsp-ui-imenu-mode)
-        (setq mode-line-format '(:eval (lsp-ui-imenu--win-separator)))
-        (goto-char 1)
-        (add-hook 'post-command-hook 'lsp-ui-imenu--post-command nil t)
-        ))
-    (let ((win (display-buffer-in-side-window (get-buffer "*lsp-ui-imenu*") '((side . right))))
-          (fit-window-to-buffer-horizontally t))
-      (set-window-margins win 1)
-      (select-window win)
-      (set-window-start win 1)
-      (set-window-dedicated-p win t)
-      (let ((fit-window-to-buffer-horizontally 'only))
-        (fit-window-to-buffer win))
-      (window-resize win 3 t))))
-
-(defun lsp-ui-imenu--win-separator ()
-  (when (and (window-combined-p)
-             (window-next-sibling)
-             (= (window-bottom-divider-width) 0))
-    (propertize (make-string (window-total-width) ?\─) 'face 'window-divider)))
-
-(defun lsp-ui-imenu--kill nil
-  (interactive)
-  (kill-buffer-and-window))
-
-(defun lsp-ui-imenu--jump (direction)
-  (let ((current (get-text-property (point) 'title)))
-    (forward-line direction)
-    (while (and current
-                (not (= (line-number-at-pos) 1))
-                (equal current (get-text-property (point) 'title)))
-      (forward-line direction))))
-
-(defun lsp-ui-imenu--next-kind nil
-  (interactive)
-  (lsp-ui-imenu--jump 1))
-
-(defun lsp-ui-imenu--prev-kind nil
-  (interactive)
-  (lsp-ui-imenu--jump -1)
-  (while (not (= (get-text-property (point) 'index) 0))
-    (forward-line -1)))
-
-(defun lsp-ui-imenu--visit nil
-  (interactive)
-  (let ((marker (get-text-property (point) 'marker)))
-    (select-window (get-buffer-window lsp-ui-imenu--origin))
-    (goto-char marker)
-    (pulse-momentary-highlight-one-line (point) 'next-error)))
-
-(defun lsp-ui-imenu--view nil
-  (interactive)
-  (let ((marker (get-text-property (point) 'marker)))
-    (with-selected-window (get-buffer-window lsp-ui-imenu--origin)
-      (goto-char marker)
-      (recenter)
-      (pulse-momentary-highlight-one-line (point) 'next-error))))
-
-(defvar lsp-ui-imenu-mode-map nil
-  "Keymap for ‘lsp-ui-peek-mode’.")
-(unless lsp-ui-imenu-mode-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map (kbd "q") 'lsp-ui-imenu--kill)
-    (define-key map (kbd "<right>") 'lsp-ui-imenu--next-kind)
-    (define-key map (kbd "<left>") 'lsp-ui-imenu--prev-kind)
-    (define-key map (kbd "<return>") 'lsp-ui-imenu--view)
-    (define-key map (kbd "<M-return>") 'lsp-ui-imenu--visit)
-    (setq lsp-ui-imenu-mode-map map)))
-
-(define-derived-mode lsp-ui-imenu-mode special-mode "lsp-ui-imenu"
-  "Mode showing imenu entries.")
-
-(defun lsp-ui-imenu-enable (enable)
-  (if enable
-      (lsp-enable-imenu)
-    (when (eq imenu-create-index-function 'lsp--imenu-create-index)
-      (setq imenu-create-index-function
-            'imenu-default-create-index-function))))
-
-(provide 'lsp-ui-imenu)
-;;; lsp-ui-imenu.el ends here