nyxt
nyxt copied to clipboard
Extend prompt buffer keyscheme map bug
Steps to reproduce below. Originally reported here.
Write file ~/.config/nyxt/test-config.lisp
with the contents below.
(define-configuration input-buffer
((default-modes (pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))))
(define-configuration nyxt/mode/document:document-mode
((keyscheme-map
(keymaps:define-keyscheme-map "my-document" (list :import %slot-value%)
nyxt/keyscheme:emacs
(list
"j" 'follow-hint)))))
(define-configuration nyxt/mode/prompt-buffer:prompt-buffer-mode
((keyscheme-map
(keymaps:define-keyscheme-map "my-prompt-buffer" (list :import %slot-value%)
nyxt/keyscheme:emacs
(list
"C-s" 'next-suggestion
"C-r" 'previous-suggestion)))))
Issuing the command follow-hint
results in the error below.
The value
NIL
is not of type
NKEYMAPS/CORE:KEYMAP
when binding NKEYMAPS/CORE:KEYMAP
[Condition of type TYPE-ERROR]
Restarts:
0: [CONTINUE] Call next function in hook #<NHOOKS:HOOK-ANY {100517474B}>
1: [DISABLE-HANDLER] Disable handler #<HANDLER CONFIGURE-PROMPT-BUFFER-MODE-KEYSCHEME-MAP1046 {100FE783CB}> which causes the error.
2: [ABORT] abort thread (#<THREAD tid=1072 "Nyxt renderer thread" RUNNING {100FAEA9E3}>)
Backtrace:
0: (NKEYMAPS/CORE:DEFINE-KEY NIL "C-s" NYXT-USER::NEXT-SUGGESTION) [more]
Locals:
SB-DEBUG::ARG-0 = NIL
SB-DEBUG::ARG-1 = "C-s"
SB-DEBUG::ARG-2 = NYXT-USER::NEXT-SUGGESTION
SB-DEBUG::MORE = NIL
1: (NKEYMAPS/CORE:DEFINE-KEYSCHEME-MAP "my-prompt-buffer" (:IMPORT #<HASH-TABLE :TEST EQUAL :COUNT 1 {1009E063D3}>) #<NKEYMAPS/CORE:KEYSCHEME emacs {10053900D3}> ("C-s" NYXT-USER::NEXT-SUGGESTION "C-r" N..
Locals:
BINDINGS = ("C-s" NYXT-USER::NEXT-SUGGESTION "C-r" NYXT-USER::PREVIOUS-SUGGESTION)
KEYMAP = NIL
KEYSCHEME = #<NKEYMAPS/CORE:KEYSCHEME emacs {10053900D3}>
KEYSCHEME-MAP = #<HASH-TABLE :TEST EQUAL :COUNT 1 {1009E338C3}>
MORE-KEYSCHEMES+BINDINGS-PAIRS = NIL
SB-C::OBJECT = "my-prompt-buffer"
OPTIONS = (:IMPORT #<HASH-TABLE :TEST EQUAL :COUNT 1 {1009E063D3}>)
2: ((LAMBDA (NYXT::OBJECT) :IN "/home/aadcg/.config/nyxt/test-config.lisp") #<NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE {1009DFB443}>)
Locals:
SB-C::OBJECT = #<NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE {1009DFB443}>
3: ((:METHOD NHOOKS:DEFAULT-COMBINE-HOOK (NHOOKS:HOOK)) #<NHOOKS:HOOK-ANY {100517474B}> #<NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE {1009DFB443}>) [fast-method]
Locals:
NHOOKS::HANDLER-ENTRY = (#<NHOOKS:HANDLER CONFIGURE-PROMPT-BUFFER-MODE-KEYSCHEME-MAP1046 {100FE783CB}> . T)
NHOOKS:HOOK = #<NHOOKS:HOOK-ANY {100517474B}>
SB-DEBUG::MORE = (#<NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE {1009DFB443}>)
4: ((:METHOD SERAPEUM:RUN-HOOK (NHOOKS:HOOK)) #<NHOOKS:HOOK-ANY {100517474B}> #<NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE {1009DFB443}>) [fast-method]
Locals:
NHOOKS:HOOK = #<NHOOKS:HOOK-ANY {100517474B}>
SB-DEBUG::MORE = (#<NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE {1009DFB443}>)
5: ((:METHOD MAKE-INSTANCE :AROUND (NYXT::USER-MIXIN-CLASS)) #<NYXT:MODE-CLASS NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE> :BUFFER #<NYXT:PROMPT-BUFFER 1451 {10094E8EA3}>) [fast-method]
Locals:
SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (1 . T))
SB-PCL::.REST-ARG. = (:BUFFER #<NYXT:PROMPT-BUFFER 1451 {10094E8EA3}>)
CLASS = #<NYXT:MODE-CLASS NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE>
6: ((:METHOD NYXT:ENABLE-MODES* (T T)) (NYXT/MODE/PROMPT-BUFFER:PROMPT-BUFFER-MODE NYXT/MODE/EMACS:EMACS-MODE NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE) #<NYXT:PROMPT-BUFFER 1451 {10094E8EA3}>..
Locals:
NYXT:BUFFER#1 = #<NYXT:PROMPT-BUFFER 1451 {10094E8EA3}>
NYXT:BUFFERS = #<NYXT:PROMPT-BUFFER 1451 {10094E8EA3}>
NYXT:MODES = (NYXT/MODE/PROMPT-BUFFER:PROMPT-BUFFER-MODE NYXT/MODE/EMACS:EMACS-MODE NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE)
NYXT:MODES#1 = (NYXT/MODE/PROMPT-BUFFER:PROMPT-BUFFER-MODE NYXT/MODE/EMACS:EMACS-MODE NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE)
SB-DEBUG::MORE = NIL
7: ((SB-PCL::EMF NYXT:ENABLE-MODES*) #<unused argument> #<unused argument> (NYXT/MODE/PROMPT-BUFFER:PROMPT-BUFFER-MODE NYXT/MODE/EMACS:EMACS-MODE NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE) #<N..
Locals:
SB-PCL::.ARG0. = (NYXT/MODE/PROMPT-BUFFER:PROMPT-BUFFER-MODE NYXT/MODE/EMACS:EMACS-MODE NYXT/MODE/HINT-PROMPT-BUFFER:HINT-PROMPT-BUFFER-MODE)
SB-PCL::.ARG1. = #<NYXT:PROMPT-BUFFER 1451 {10094E8EA3}>
SB-DEBUG::MORE = NIL
Something interesting is happening here and my cursory investigation wasn't conclusive. I have the feeling that it may be related to the fact that hint-prompt-buffer-mode
inherits from prompt-buffer-mode
and the keymap can't be resolved. Maybe @Ambrevar can help.
I'll look into it.