-;; If `idlwave-shell-activate-alt-keybindings' is non-nil, the second key
-;; in the list gets bound directly in both idlwave-mode-map and
-;; idlwave-shell-mode-map.
-
-;; Used keys: abcde hi klmnopqrs u wxyz
-;; Unused keys: fg j t v
-(let ((specs
- '(([(control ?b)] [(alt ?b)] idlwave-shell-break-here)
- ([(control ?i)] [(alt ?i)] idlwave-shell-break-in)
- ([(control ?d)] [(alt ?d)] idlwave-shell-clear-current-bp)
- ([(control ?a)] [(alt ?a)] idlwave-shell-clear-all-bp)
- ([(control ?s)] [(alt ?s)] idlwave-shell-step)
- ([(control ?n)] [(alt ?n)] idlwave-shell-stepover)
- ([(control ?k)] [(alt ?k)] idlwave-shell-skip)
- ([(control ?u)] [(alt ?u)] idlwave-shell-up)
- ([(control ?o)] [(alt ?o)] idlwave-shell-out)
- ([(control ?m)] [(alt ?m)] idlwave-shell-return)
- ([(control ?h)] [(alt ?h)] idlwave-shell-to-here)
- ([(control ?r)] [(alt ?r)] idlwave-shell-cont)
- ([(control ?y)] [(alt ?y)] idlwave-shell-execute-default-command-line)
- ([(control ?z)] [(alt ?z)] idlwave-shell-reset)
- ([(control ?q)] [(alt ?q)] idlwave-shell-quit)
- ([(control ?p)] [(alt ?p)] idlwave-shell-print)
- ([(??)] [(alt ??)] idlwave-shell-help-expression)
- ([(control ?c)] [(alt ?c)] idlwave-shell-save-and-run)
- ([( ?@)] [(alt ?@)] idlwave-shell-save-and-batch)
- ([(control ?x)] [(alt ?x)] idlwave-shell-goto-next-error)
- ([(control ?e)] [(alt ?e)] idlwave-shell-run-region)
- ([(control ?w)] [(alt ?w)] idlwave-shell-resync-dirs)
- ([(control ?l)] [(alt ?l)] idlwave-shell-redisplay)
- ([(control ?t)] [(alt ?t)] idlwave-shell-toggle-toolbar)
- ([(control up)] [(alt up)] idlwave-shell-stack-up)
- ([(control down)] [(alt down)] idlwave-shell-stack-down)
- ))
- s k1 k2 cmd)
+;; If `idlwave-shell-debug-modifiers' is non-nil, the second key
+;; in the list gets bound with the specified modifiers in both
+;; `idlwave-mode-map' and `idlwave-shell-mode-map'.
+
+;; Used keys: abcdef hi klmnopqrs u wxyz
+;; Unused keys: g j t v
+(let* ((specs
+ '(([(control ?b)] ?b idlwave-shell-break-here)
+ ([(control ?i)] ?i idlwave-shell-break-in)
+ ([(control ?d)] ?d idlwave-shell-clear-current-bp)
+ ([(control ?a)] ?a idlwave-shell-clear-all-bp)
+ ([(control ?s)] ?s idlwave-shell-step)
+ ([(control ?n)] ?n idlwave-shell-stepover)
+ ([(control ?k)] ?k idlwave-shell-skip)
+ ([(control ?u)] ?u idlwave-shell-up)
+ ([(control ?o)] ?o idlwave-shell-out)
+ ([(control ?m)] ?m idlwave-shell-return)
+ ([(control ?h)] ?h idlwave-shell-to-here)
+ ([(control ?r)] ?r idlwave-shell-cont)
+ ([(control ?y)] ?y idlwave-shell-execute-default-command-line)
+ ([(control ?z)] ?z idlwave-shell-reset)
+ ([(control ?q)] ?q idlwave-shell-quit)
+ ([(control ?p)] ?p idlwave-shell-print)
+ ([(??)] ?? idlwave-shell-help-expression)
+ ([(control ?c)] ?c idlwave-shell-save-and-run)
+ ([( ?@)] ?@ idlwave-shell-save-and-batch)
+ ([(control ?x)] ?x idlwave-shell-goto-next-error)
+ ([(control ?e)] ?e idlwave-shell-run-region)
+ ([(control ?w)] ?w idlwave-shell-resync-dirs)
+ ([(control ?l)] ?l idlwave-shell-redisplay)
+ ([(control ?t)] ?t idlwave-shell-toggle-toolbar)
+ ([(control up)] up idlwave-shell-stack-up)
+ ([(control down)] down idlwave-shell-stack-down)
+ ([(control ?f)] ?f idlwave-shell-window)))
+ (mod (cond ((and idlwave-shell-debug-modifiers
+ (listp idlwave-shell-debug-modifiers)
+ (not (equal '() idlwave-shell-debug-modifiers)))
+ idlwave-shell-debug-modifiers)
+ (idlwave-shell-activate-alt-keybindings
+ '(alt))))
+ (shift (memq 'shift mod))
+ (mod-noshift (delete 'shift (copy-sequence mod)))
+ s k1 c2 k2 cmd)