aboutsummaryrefslogtreecommitdiff
path: root/misc/.config/nyxt/config.lisp
blob: ec430ec015f4826c27a1201228cb2b5a92a6f708 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
;;; config.lisp -- My nyxt config

;; Copyright (C) 2023 Free Software Foundation.

;; Author: Yuchen Pei <id@ypei.org>

;; This file is part of dotted.

;; dotted is free software: you can redistribute it and/or modify it
;; under the terms of the GNU Affero General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.

;; dotted 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
;; Affero General Public License for more details.

;; You should have received a copy of the GNU Affero General Public
;; License along with dotted. If not, see
;; <https://www.gnu.org/licenses/>.

;;; Commentary:

;; My nyxt config. It is not usable yet - see the part with
;; prompt-buffer-mode binding

;;; Code:

(defvar *web-buffer-modes*
  '(:emacs-mode :no-script-mode :blocker-mode))

(define-configuration web-buffer
    ((default-modes `(,@*web-buffer-modes* ,@%slot-value%))))

(define-configuration (:modable-buffer :prompt-buffer :editor-buffer)
    "Set up Emacs keybindings everywhere possible."
  ((default-modes `(:emacs-mode ,@%slot-value%))))

(define-configuration :hint-mode
    "Set up QWERTY home row as the hint keys."
  ((hints-alphabet "ASDFGHJKL")))

(define-configuration :document-mode
    "Document mode keybindings."
  ((keyscheme-map
    (keymaps:define-keyscheme-map
        "my-document" (list :import %slot-value%)
      nyxt/keyscheme:emacs
      (list
       "B" 'switch-buffer-previous
       "F" 'switch-buffer-next
       "b" 'scroll-left
       "f" 'scroll-right
       "i" 'jump-to-heading
       "g" 'reload-current-buffer
       "j" 'follow-hint
       "J" 'follow-hint-new-buffer
       "k" 'delete-current-buffer
       "l" 'history-bakcwards
       "n" 'scroll-down
       "o" 'set-url
       "p" 'scroll-up
       "r" 'history-forwards
       "w" 'copy-url
       "<" 'scroll-to-top
       ">" 'scroll-to-bottom
       "C-h x" 'describe-command
       "C-s" :search-buffer
       "C-z" 'switch-buffer
       "M-n" 'next-heading
       "M-p" 'previous-heading
       )))))

;;; Does not work:
;;; https://discourse.atlas.engineer/t/hint-prompt-not-showing-up/840
(define-configuration :prompt-buffer-mode
    "Prompt buffer mode keybindings."
  ((keyscheme-map
    (keymaps:define-keyscheme-map
        "my-prompt-buffer" (list :import %slot-value%)
      ;; It is important to have the `nyxt/' namespace here
      nyxt/keyscheme:emacs
      (list
       "C-s" 'nyxt/mode/prompt-buffer:next-suggestion
       "C-r" 'nyxt/mode/prompt-buffer:previous-suggestion
       )))))

;;; Neither does this work
;; (define-configuration :prompt-buffer-mode
;;     "Prompt buffer mode keybindings."
;;   ((override-map
;;     (let ((map (make-keymap "override-map")))
;;       (define-key map
;;           "C-s" 'nyxt/mode/prompt-buffer:next-suggestion
;;           "C-r" 'nyxt/mode/prompt-buffer:previous-suggestion
;;           )))))