practicalli / spacemacs

Content for the book - Clojure Development with Spacemacs
https://practical.li/spacemacs
Creative Commons Attribution Share Alike 4.0 International
110 stars 33 forks source link

Investigate cider debugger key binding conflict with Evil #216

Open practicalli-johnny opened 4 years ago

practicalli-johnny commented 4 years ago

The clojure layer contains a wrapper function that should allow for keys from the cider debug menu to be used rather than their Evil normal actions.

spacemacs/cider-debug-setup

https://github.com/syl20bnr/spacemacs/commit/4a0abb18cc37e5311db6338872bd9a49fa96dc36

New issue https://github.com/syl20bnr/spacemacs/issues/13594

Original issue https://github.com/syl20bnr/spacemacs/issues/2356

Keys that call the cider debug menu

Keys that call Evil commands

practicalli-johnny commented 4 years ago

Thanks to dpsutton for the following advice:

https://github.com/clojure-emacs/cider/blob/master/cider-debug.el#L199 and this is authoritative as seen on line 360 where the debug map is created using this list of keys to accept

(defcustom cider-debug-prompt-commands
  '((?c "continue" "continue")
    (?C "continue-all" nil)
    (?n "next" "next")
    (?i "in" "in")
    (?o "out" "out")
    (?O "force-out" nil)
    (?h "here" "here")
    (?e "eval" "eval")
    (?p "inspect" "inspect")
    (?P "inspect-prompt" nil)
    (?l "locals" "locals")
    (?j "inject" "inject")
    (?s "stacktrace" "stacktrace")
    (?t "trace" "trace")
    (?q "quit" "quit"))
  "A list of debugger command specs.
Specs are in the format (KEY COMMAND-NAME DISPLAY-NAME?)
where KEY is a character which is mapped to the command
COMMAND-NAME is a valid debug command to be passed to the cider-nrepl middleware
DISPLAY-NAME is the string displayed in the debugger overlayIf DISPLAY-NAME is nil, that command is hidden from the overlay but still callable.
The rest of the commands are displayed in the same order as this list."
  :type '(alist :key-type character
                :value-type (list
                             (string :tag "command name")
                             (choice (string :tag "display name") nil)))
  :group 'cider-debug
  :package-version '(cider . "0.24.0"))
practicalli-johnny commented 4 years ago

Spacemacs PRs and Issues that seem related

https://github.com/syl20bnr/spacemacs/pull/13672

https://github.com/syl20bnr/spacemacs/pull/13643 - Add Git Blame Transient State

practicalli-johnny commented 4 years ago

From CIDER source code

cider-debug.el : cider-debug-prompt-commands :

A list of debugger command specs. Specs are in the format (KEY COMMAND-NAME DISPLAY-NAME?) where KEY is a character which is mapped to the command COMMAND-NAME is a valid debug command to be passed to the cider-nrepl middleware DISPLAY-NAME is the string displayed in the debugger overlay If DISPLAY-NAME is nil, that command is hidden from the overlay but still callable. The rest of the commands are displayed in the same order as this list.