d7868dae22
1. Previously, the code had references to ein:notebook-mode which doesn't seem to work (anymore), so I changed these references to ein:notebook. 2. The previous code had a big convoluted function that produced the doc-string and that was difficult to read that depended on some other smaller functions, though not enough of them to make the code sufficiently modular, and therefore, it wasn't very maintainable. Besides, when I tried the previous version with the name of the mode fixed, spacemacs hung for a long time -- it's a mystery whether spacemacs would have continued normally if I had waited long enough. Therefore I replaced the doc-string with a hard coded one. 3. I added some keybindings from tkamat's fork to the code for I didn't see a good reason not to 4. I removed the cl- prefix from "second" and "mapcan", because cl is a deprecated package. However, I'm afraid the names without the prefix might end up being unrecognized by previous versions of emacs.
104 lines
5 KiB
EmacsLisp
104 lines
5 KiB
EmacsLisp
;;; packages.el --- ipython Layer packages File for Spacemacs
|
|
;;
|
|
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
|
|
;;
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
;;
|
|
;; This file is not part of GNU Emacs.
|
|
;;
|
|
;;; License: GPLv3
|
|
|
|
(setq ipython-notebook-packages '(ein))
|
|
|
|
(defun ipython-notebook/init-ein ()
|
|
(use-package ein
|
|
:init
|
|
(spacemacs/set-leader-keys "ayl" 'ein:login
|
|
"ayr" 'ein:run
|
|
"ays" 'ein:stop)
|
|
(spacemacs/declare-prefix "ay" "ipython notebook")
|
|
:config
|
|
(mapc
|
|
(lambda (mode)
|
|
(evil-define-minor-mode-key
|
|
mode 'ein:notebook
|
|
(kbd "<C-return>") 'ein:worksheet-execute-cell-km
|
|
(kbd "<S-return>") 'ein:worksheet-execute-cell-and-goto-next-km))
|
|
'(insert hybrid normal))
|
|
(evil-define-minor-mode-key
|
|
'normal 'ein:notebook
|
|
"gj" 'ein:worksheet-goto-next-input-km
|
|
"gk" 'ein:worksheet-goto-prev-input-km)
|
|
(with-eval-after-load 'ein-notebook
|
|
(let ((bindings '(("y" ein:worksheet-copy-cell)
|
|
("p" ein:worksheet-yank-cell)
|
|
("d" ein:worksheet-kill-cell)
|
|
("h" ein:notebook-worksheet-open-prev-or-last)
|
|
("i" ein:worksheet-insert-cell-below)
|
|
("I" ein:worksheet-insert-cell-above)
|
|
("j" ein:worksheet-goto-next-input)
|
|
("k" ein:worksheet-goto-prev-input)
|
|
("l" ein:notebook-worksheet-open-next-or-first)
|
|
("H" ein:notebook-worksheet-move-prev)
|
|
("J" ein:worksheet-move-cell-down)
|
|
("K" ein:worksheet-move-cell-up)
|
|
("L" ein:notebook-worksheet-move-next)
|
|
("t" ein:worksheet-toggle-output)
|
|
("R" ein:worksheet-rename-sheet)
|
|
("RET" ein:worksheet-execute-cell-and-goto-next)
|
|
;; Output
|
|
("C-l" ein:worksheet-clear-output)
|
|
("C-S-l" ein:worksheet-clear-all-output)
|
|
;;Console
|
|
;; ("C-o" ein:console-open)
|
|
;; Merge cells
|
|
("C-k" ein:worksheet-merge-cell)
|
|
;;("C-j" spacemacs/ein:worksheet-merge-cell-next)
|
|
("s" ein:worksheet-split-cell-at-point)
|
|
;; Notebook
|
|
("C-s" ein:notebook-save-notebook-command)
|
|
("C-r" ein:notebook-rename-command)
|
|
("1" ein:notebook-worksheet-open-1th)
|
|
("2" ein:notebook-worksheet-open-2th)
|
|
("3" ein:notebook-worksheet-open-3th)
|
|
("4" ein:notebook-worksheet-open-4th)
|
|
("5" ein:notebook-worksheet-open-5th)
|
|
("6" ein:notebook-worksheet-open-6th)
|
|
("7" ein:notebook-worksheet-open-7th)
|
|
("8" ein:notebook-worksheet-open-8th)
|
|
("9" ein:notebook-worksheet-open-last)
|
|
("+" ein:notebook-worksheet-insert-next)
|
|
("-" ein:notebook-worksheet-delete)
|
|
("x" ein:notebook-close)
|
|
("u" ein:worksheet-change-cell-type)
|
|
("fs" ein:notebook-save-notebook-command))))
|
|
(apply #'spacemacs/set-leader-keys-for-minor-mode
|
|
(quote ein:notebook)
|
|
(cl-mapcan
|
|
(lambda (bind)
|
|
(if (fboundp (cl-second bind))
|
|
bind
|
|
(prog1 nil
|
|
(display-warning
|
|
'warn (format "ipython-notebook/init-ein: undefined %s"
|
|
(cl-second bind))))))
|
|
(copy-tree bindings)))
|
|
(eval (append '(spacemacs|define-transient-state
|
|
ipython-notebook
|
|
:title "iPython Notebook Transient State"
|
|
:doc "
|
|
Operations on Cells^^^^^^ On Worksheets^^^^ Other
|
|
----------------------------^^^^^^ ------------------------^^^^ ----------------------------------^^^^
|
|
[_k_/_j_]^^ select prev/next [_h_/_l_] select prev/next [_t_]^^ toggle output
|
|
[_K_/_J_]^^ move up/down [_H_/_L_] move left/right [_C-l_/_C-S-l_] clear/clear all output
|
|
[_C-k_]^^ merge above [_1_.._9_] open [1st..last] ^^^^
|
|
[_y_/_p_/_d_] copy/paste [_+_/_-_] create/delete [_C-s_/_C-r_] save/rename notebook
|
|
[_u_]^^^^ change type ^^^^ [_x_]^^ close notebook
|
|
[_RET_]^^^^ execute ^^^^ [_q_]^^ quit transient-state
|
|
"
|
|
:evil-leader-for-mode (ein:notebook . ".")
|
|
:bindings
|
|
("q" nil :exit t))
|
|
bindings))))))
|