derived modes inherit from special-mode or view-mode as appropriate

this means that the derived modes get all the standard keybinding in the standard way.
This commit is contained in:
Sam Steingold 2016-09-13 09:32:31 -04:00
parent f10d2896a2
commit 99de3360c3
4 changed files with 50 additions and 39 deletions

View file

@ -789,28 +789,35 @@ Now you can open notebook list by `ein:notebooklist-open'." url-or-port))
;;; Notebook list mode
(define-derived-mode ein:notebooklist-mode fundamental-mode "ein:notebooklist"
"IPython notebook list mode.")
(define-derived-mode ein:notebooklist-mode special-mode "ein:notebooklist"
"IPython notebook list mode.
Commands:
\\{ein:notebooklist-mode-map}}"
(set (make-local-variable 'revert-buffer-function)
'ein:notebooklist-reload))
(defun ein:notebooklist-prev-item () (interactive) (move-beginning-of-line 0))
(defun ein:notebooklist-next-item () (interactive) (move-beginning-of-line 2))
(setq ein:notebooklist-mode-map (copy-keymap widget-keymap))
(defvar ein:notebooklist-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map (make-composed-keymap widget-keymap
special-mode-map))
(define-key map "\C-c\C-r" 'ein:notebooklist-reload)
(define-key map "p" 'ein:notebooklist-prev-item)
(define-key map "n" 'ein:notebooklist-next-item)
map)
"Keymap for ein:notebooklist-mode.")
(let ((map ein:notebooklist-mode-map))
(define-key map "\C-c\C-r" 'ein:notebooklist-reload)
(define-key map "g" 'ein:notebooklist-reload)
(define-key map "p" 'ein:notebooklist-prev-item)
(define-key map "n" 'ein:notebooklist-next-item)
(define-key map "q" 'bury-buffer)
(easy-menu-define ein:notebooklist-menu map "EIN Notebook List Mode Menu"
`("EIN Notebook List"
,@(ein:generate-menu
'(("Reload" ein:notebooklist-reload)
("New Notebook" ein:notebooklist-new-notebook)
("New Notebook (with name)"
ein:notebooklist-new-notebook-with-name)
("New Junk Notebook" ein:junk-new))))))
(easy-menu-define ein:notebooklist-menu ein:notebooklist-mode-map
"EIN Notebook List Mode Menu"
`("EIN Notebook List"
,@(ein:generate-menu
'(("Reload" ein:notebooklist-reload)
("New Notebook" ein:notebooklist-new-notebook)
("New Notebook (with name)"
ein:notebooklist-new-notebook-with-name)
("New Junk Notebook" ein:junk-new)))))
(provide 'ein-notebooklist)

View file

@ -73,17 +73,17 @@
(beginning-of-line 0)
(recenter 0))
(define-derived-mode ein:pager-mode fundamental-mode "ein:pager"
"IPython notebook pager mode."
(view-mode)
(define-derived-mode ein:pager-mode view-mode "ein:pager"
"IPython notebook pager mode.
Commands:
\\{ein:pager-mode-map}"
(font-lock-mode))
(setq ein:pager-mode-map (make-sparse-keymap))
(let ((map ein:pager-mode-map))
(define-key map "\C-c\C-b" 'ein:pager-goto-docstring-bset-loc)
(define-key map "q" 'bury-buffer)
map)
(defvar ein:pager-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\C-c\C-b" 'ein:pager-goto-docstring-bset-loc)
map)
"Keymap for ein:pager-mode.")
(provide 'ein-pager)

View file

@ -244,15 +244,17 @@ shared output buffer. You can open the buffer by the command
;;; ein:shared-output-mode
(define-derived-mode ein:shared-output-mode fundamental-mode "ein:so"
(define-derived-mode ein:shared-output-mode special-mode "ein:so"
"Shared output mode."
(font-lock-mode))
(let ((map ein:shared-output-mode-map))
(define-key map "\C-c\C-x" 'ein:tb-show)
(define-key map "\M-." 'ein:pytools-jump-to-source-command)
(define-key map (kbd "C-c C-.") 'ein:pytools-jump-to-source-command)
(define-key map "q" 'bury-buffer))
(defvar ein:shared-output-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\C-c\C-x" 'ein:tb-show)
(define-key map "\M-." 'ein:pytools-jump-to-source-command)
(define-key map (kbd "C-c C-.") 'ein:pytools-jump-to-source-command)
map)
"The map for ein:shared-output-mode-map.")
(add-hook 'ein:shared-output-mode-hook 'ein:truncate-lines-on)

View file

@ -128,7 +128,7 @@
(nb (oref traceback :source-notebook))
(ws (first (ein:$notebook-worksheets nb)))
(cells (ein:worksheet-get-cells ws))
(it (find cellnum cells :key #'(lambda (x)
(if (same-class-p x 'ein:codecell)
(oref x :input-prompt-number))))))
@ -163,16 +163,18 @@
(interactive)
(ewoc-goto-next (oref ein:%traceback% :ewoc) 1))
(define-derived-mode ein:traceback-mode fundamental-mode "ein:tb"
(define-derived-mode ein:traceback-mode special-mode "ein:tb"
(font-lock-mode))
(add-hook 'ein:traceback-mode-hook 'ein:truncate-lines-on)
(let ((map ein:traceback-mode-map))
(define-key map (kbd "RET") 'ein:tb-jump-to-source-at-point-command)
(define-key map "p" 'ein:tb-prev-item)
(define-key map "n" 'ein:tb-next-item)
(define-key map "q" 'bury-buffer))
(defvar ein:traceback-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "RET") 'ein:tb-jump-to-source-at-point-command)
(define-key map "p" 'ein:tb-prev-item)
(define-key map "n" 'ein:tb-next-item)
map)
"Keymap for ein:traceback-mode.")
(provide 'ein-traceback)