Skip to content

Instantly share code, notes, and snippets.

@tam17aki
Last active August 21, 2020 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tam17aki/0804c4a6064290dadf1da1af3e5bbae0 to your computer and use it in GitHub Desktop.
Save tam17aki/0804c4a6064290dadf1da1af3e5bbae0 to your computer and use it in GitHub Desktop.
;; -*- mode: emacs-lisp; coding: utf-8-unix -*-
;; 1. jupyterをインストール: pip3 install jupyter
;; 2. ipyparallelもインストール: pip3 install ipyparallel
;; 3. jupyter-notebookを起動
;; 4. M-x ein:run を実行して ipynbを作成したいフォルダを指定
;; 5. ノートブック一覧から [Open]をクリックする
;; 6. ノートブックの保存はC-x C-s or C-x C-w
;; 7. jupyterを終了するときは M-x ein:stop
;; キーバインド一覧
;; https://github.com/millejoh/emacs-ipython-notebook#keybindings---notebook
;;
;; C-c C-t : 当該セルの評価モードをPython->MarkDown->rawの順に切り替える
;;
;; C-c C-n : 1つ下のセルに移動
;; C-c C-p : 1つ上のセルに移動
;;
;; C-c C-e : 当該セルの表示をトグル
;; C-c C-c : 当該セルを評価(Pythonのみ; Markdownは不可)
;; C-uをつけて実行すると すべてのセルを先頭から評価できる
;; C-c C-k : 当該セルを削除
;;
;; C-c C-a : 新規セルを当該セルの上に作成 (C-uを先につけるとMarkdownで作成)
;; C-c C-b : 新規セルを当該セルの下に作成 (C-uを先につけるとMarkdownで作成)
;;
;; C-c C-s : 当該セルを分割(split)
;; C-c C-m : 当該セルをマージ(merge)
;;
;; C-c C-l : 当該セルの出力をクリア
;; C-c C-S-l : 全てのセルの出力をクリア
;;
;; C-x C-s : 現在のnotebookを保存
;; C-x C-w : 現在のnotebookを別名保存
;; M-x ein:notebook-save-to-command は 当該ノートのコピーを、名前を付けて保存
;;
;; C-c C-x C-r : notebookのセッションを再起動する -> 番号をクリアしたいときに使う?
;;
;; M-x ein:stop : jupyterを終了
(eval-when-compile
(require 'ein)
(require 'ein-notebook)
(require 'ein-notebooklist)
(require 'ein-markdown-mode)
(require 'smartrep))
(add-hook 'ein:notebook-mode-hook 'electric-pair-mode)
(add-hook 'ein:notebook-mode-hook 'undo-tree-mode)
;; undoを有効化 (customizeから設定しておいたほうが良さげ)
(setq ein:worksheet-enable-undo t)
;; 画像をインライン表示 (customizeから設定しておいたほうが良さげ)
(setq ein:output-area-inlined-images t)
;; markdownパーサー
;; →HTMLに翻訳した結果を*markdown-output*バッファに出力
(require 'ein-markdown-mode)
;; pandocと markdownコマンドは入れておく
;; brew install pandoc
;; brew install markdown
(setq ein:markdown-command "pandoc --metadata pagetitle=\"markdown preview\" -f markdown -c ~/.pandoc/github-markdown.css -s --self-contained --mathjax=https://raw.githubusercontent.com/ustasb/dotfiles/b54b8f502eb94d6146c2a02bfc62ebda72b91035/pandoc/mathjax.js")
;; markdownをhtmlに出力してブラウザでプレビュー
(defun ein:markdown-preview ()
(interactive)
(ein:markdown-standalone)
(browse-url-of-buffer ein:markdown-output-buffer-name))
(declare-function ein:format-time-string "ein-utils")
(declare-function smartrep-define-key "smartrep")
(with-eval-after-load "ein-notebook"
(smartrep-define-key ein:notebook-mode-map "C-c"
'(("C-n" . 'ein:worksheet-goto-next-input-km)
("C-p" . 'ein:worksheet-goto-prev-input-km))))
(with-eval-after-load "ein-notebooklist"
(defun ein:format-nbitem-data (name last-modified)
(let ((dt (date-to-time last-modified)))
(format "%-30s%+20s" name
(ein:format-time-string ein:notebooklist-date-format dt)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment