diff options
author | Artyom Bologov <aartaka@protonmail.com> | 2023-12-01 14:49:19 +0400 |
---|---|---|
committer | Andre A. Gomes <andremegafone@gmail.com> | 2023-12-11 10:51:55 +0200 |
commit | 3ea674963ae524923e36445bdbcc09f1b1922601 (patch) | |
tree | 771415b6cbeca87b561d5fea90688889049e8d6c | |
parent | 2c99ac60ab1a1cae9ce1cf5c824afbd3304b4845 (diff) |
renderer/gtk(context-source): Parse the existing contexts.
-rw-r--r-- | source/renderer/gtk.lisp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/source/renderer/gtk.lisp b/source/renderer/gtk.lisp index d5bce4476..fef71f444 100644 --- a/source/renderer/gtk.lisp +++ b/source/renderer/gtk.lisp @@ -2313,11 +2313,26 @@ As a second value, return the current buffer index starting from 0." WebKit-specific." (webkit:webkit-web-view-reload-bypass-cache (gtk-object buffer))) +(defun list-existing-contexts () + (loop for dir in (uiop:subdirectories + (files:expand (make-instance 'nyxt:nyxt-data-directory))) + ;; PATHNAME-DIRECTORY returns a list on most implementations (UIOP + ;; relies on that, at least), even though the standard doesn't mandate + ;; it. + for dirname = (alex:lastcar (uiop:ensure-list (pathname-directory dir))) + when (uiop:string-suffix-p dirname "web-context") + collect (subseq dirname + 0 + (- (length dirname) (length "web-context/"))))) + (define-class context-source (prompter:source) ((prompter:name "Context list") - (prompter:constructor (sort (delete-duplicates (append (mapcar #'context-name (buffer-list)) - (list +internal+ +default+)) - :test 'equal) + (prompter:constructor (sort (delete-duplicates + (append + (mapcar #'context-name (buffer-list)) + (list +internal+ +default+) + (list-existing-contexts)) + :test 'equal) 'string<))) (:export-class-name-p t)) |