[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/nix-mode 37f641a913 434/500: Add menu to nix search mode
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/nix-mode 37f641a913 434/500: Add menu to nix search mode |
Date: |
Sat, 29 Jan 2022 08:27:52 -0500 (EST) |
branch: elpa/nix-mode
commit 37f641a9132269bf4c9b36ff312bc8952e2550bc
Author: Matthew Bauer <mjbauer95@gmail.com>
Commit: Matthew Bauer <mjbauer95@gmail.com>
Add menu to nix search mode
---
nix-search.el | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 80 insertions(+), 12 deletions(-)
diff --git a/nix-search.el b/nix-search.el
index 435e17d45a..38116bf678 100644
--- a/nix-search.el
+++ b/nix-search.el
@@ -27,23 +27,91 @@
(goto-char (point-min))
(json-read)))
+(defface nix-search-pname
+ '((t :height 1.5
+ :weight bold))
+ "Face used for package names."
+ :group 'nix-mode)
+
+(defface nix-search-version
+ '((((class color) (background dark))
+ :foreground "light blue")
+ (((class color) (background light))
+ :foreground "blue"))
+ "Face used for package version."
+ :group 'nix-mode)
+
+(defface nix-search-description
+ '((t))
+ "Face used for package description."
+ :group 'nix-mode)
+
+(defvar nix-search-mode-menu (make-sparse-keymap "Nix")
+ "Menu for Nix Search mode.")
+
+(defvar nix-search-mode-map (make-sparse-keymap)
+ "Local keymap used for Nix Search mode.")
+
+(defvar-local nix-search--filter nil
+ "Search filter used for current buffer")
+(defvar-local nix-search---file nil
+ "File/flake used for current buffer")
+
+(defun nix-search--refresh ()
+ "Refresh Nix Search buffer"
+ (interactive)
+ (let ((results (nix-search--search nix-search--filter nix-search--file nil
use-flakes)))
+ (nix-search--display results (current-buffer) use-flakes
nix-search--filter nix-search--file)))
+
+(defun nix-search-create-keymap ()
+ "Create the keymap associated with the Nix Search mode.")
+
+(defun nix-search-create-menu ()
+ "Create the Nix Search menu as shown in the menu bar."
+ (let ((m '("Nix Search"
+ ["Refresh" nix-search--refresh t])))
+ (easy-menu-define nix-search-mode-menu nix-search-mode-map "Menu keymap
for Nix mode" m)))
+
+(nix-search-create-keymap)
+(nix-search-create-menu)
+
+(define-derived-mode nix-search-mode view-mode "Nix Search"
+ "Major mode for showing Nix search results.
+
+\\{nix-search-mode-map}"
+ :group 'nix-mode
+
+ (easy-menu-add nix-search-mode-menu)
+
+ (read-only-mode 1))
+
;;;###autoload
-(defun nix-search--display (results &optional display-buffer use-flakes)
+(defun nix-search--display (results &optional display-buffer use-flakes search
file)
(unless display-buffer (setq display-buffer (generate-new-buffer "*nix
search*")))
(with-current-buffer display-buffer
- (dolist (entry results)
- (widget-insert
- (format "attr: %s\nname: %s\nversion: %s\ndescription: %s\n\n"
- (car entry)
- (if use-flakes
- (alist-get 'pname (cdr entry))
- (alist-get 'pkgName (cdr entry)))
- (alist-get 'version (cdr entry))
- (alist-get 'description (cdr entry))))))
+ (setq-local nix-search--filter search)
+ (setq-local nix-search--file file)
+ (unless (derived-mode-p 'nix-search-mode)
+ (nix-search-mode))
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (insert
"-------------------------------------------------------------------------------\n")
+ (dolist (entry results)
+ (let ((pname (if use-flakes
+ (alist-get 'pname (cdr entry))
+ (alist-get 'pkgName (cdr entry))))
+ (version (alist-get 'version (cdr entry)))
+ (description (alist-get 'description (cdr entry))))
+ (put-text-property 0 (length pname) 'face 'nix-search-pname pname)
+ (put-text-property 0 (length version) 'face 'nix-search-version
version)
+ (put-text-property 0 (length description) 'face
'nix-search-description description)
+ (insert (format "* %s (%s)\n%s\n" pname version description))
+ (insert
"-------------------------------------------------------------------------------\n")
+ ))))
(display-buffer display-buffer))
;;;###autoload
-(defun nix-search (search &optional file)
+(defun nix-search (search &optional file display-buffer)
"Run nix search.
SEARCH a search term to use.
FILE a Nix expression to search in."
@@ -52,7 +120,7 @@ FILE a Nix expression to search in."
(setq file (or file (if use-flakes (nix-read-flake) (nix-read-file))))
(let ((results (nix-search--search search file nil use-flakes)))
(when (called-interactively-p 'any)
- (nix-search--display results nil use-flakes))
+ (nix-search--display results display-buffer use-flakes search file))
results))
(defun nix-search-read-attr (file)
- [nongnu] elpa/nix-mode e7bf2e4cc4 489/500: Merge pull request #140 from akirak/flake-transient, (continued)
- [nongnu] elpa/nix-mode e7bf2e4cc4 489/500: Merge pull request #140 from akirak/flake-transient, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 1f922d78eb 291/500: Fix regex regression that caused the indent to indent too much, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 9ebf7389eb 298/500: Merge branch 'etu-fix-issue-72', ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode d5a53e2050 300/500: Indent using SMIE - initial working version., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 8118355e81 306/500: Change smie indent functions in a cleaner (and correct) way., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 9d1d025cb7 313/500: Use "check" as test target, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 8812eec39a 314/500: Allow using nix-indent-region without arguments, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 29a93838bb 316/500: Add hello.nix to tests, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 0cb2b32485 323/500: Add a failing test that checks the indentation of function bodies., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 79507ee193 327/500: Add more test cases to smie-lambdas.nix, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 37f641a913 434/500: Add menu to nix search mode,
ELPA Syncer <=
- [nongnu] elpa/nix-mode f38d4e9b37 459/500: Remove f dependency, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 3cca5b6527 452/500: Merge pull request #133 from nagy/small-fixes, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 89755c1e7e 475/500: nix-flake: Fix the default value, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 3865b7bc98 449/500: Specialize two defcustom types, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 1b85a1986d 479/500: nix-flake: Use = key consistently to switch the flake, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 7929f9623d 483/500: chore: Add transient to the dependencies, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 33b2edf8ac 005/500: set spacing to defaults, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 24e8281149 013/500: Refactor keywords, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 3c7afb9478 026/500: Add nix-visit-file function., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 4edccb66e5 071/500: Small nitpicks, ELPA Syncer, 2022/01/29