Merge branch 'complete-on-dot'

This commit is contained in:
Takafumi Arakaki 2012-07-29 18:21:02 +02:00
commit 1be099d4e7
4 changed files with 45 additions and 12 deletions

View file

@ -307,6 +307,7 @@ Notebook
.. el:variable:: ein:cell-autoexec-prompt .. el:variable:: ein:cell-autoexec-prompt
.. el:variable:: ein:scratch-notebook-name-template .. el:variable:: ein:scratch-notebook-name-template
.. el:variable:: ein:iexec-delay .. el:variable:: ein:iexec-delay
.. el:variable:: ein:complete-on-dot
Connect Connect
^^^^^^^ ^^^^^^^
@ -482,6 +483,8 @@ v0.1.1
* Add auto-execution mode * Add auto-execution mode
(see :el:symbol:`ein:connect-toggle-autoexec` and (see :el:symbol:`ein:connect-toggle-autoexec` and
:el:symbol:`ein:notebook-turn-on-autoexec`). :el:symbol:`ein:notebook-turn-on-autoexec`).
* Start completion when "." is inserted.
Use :el:symbol:`ein:complete-on-dot` to disable this feature.
v0.1 v0.1

View file

@ -241,6 +241,14 @@ See also: `ein:connect-run-buffer', `ein:connect-eval-buffer'."
(interactive) (interactive)
(ein:notebook-complete-at-point (ein:connect-get-notebook))) (ein:notebook-complete-at-point (ein:connect-get-notebook)))
(defun ein:connect-complete-dot ()
"Insert dot and request completion."
(interactive)
(insert ".")
(let ((notebook (ein:connect-get-notebook)))
(when (and notebook (ein:kernel-live-p (ein:$notebook-kernel notebook)))
(ein:notebook-complete-at-point notebook))))
(defun ein:connect-pop-to-notebook () (defun ein:connect-pop-to-notebook ()
(interactive) (interactive)
(pop-to-buffer (ein:notebook-buffer (ein:connect-get-notebook)))) (pop-to-buffer (ein:notebook-buffer (ein:connect-get-notebook))))
@ -308,7 +316,8 @@ change the cells to run."
\\{ein:connect-mode-map}" \\{ein:connect-mode-map}"
:lighter (:eval (ein:connect-mode-get-lighter)) :lighter (:eval (ein:connect-mode-get-lighter))
:keymap ein:connect-mode-map :keymap ein:connect-mode-map
:group 'ein) :group 'ein
(ein:complete-on-dot-install ein:connect-mode-map 'ein:connect-complete-dot))
(provide 'ein-connect) (provide 'ein-connect)

View file

@ -179,8 +179,7 @@ This is the same workaround as `ein:ac-setup-maybe'."
ein:mumamo-chunk-headingcell ein:mumamo-chunk-headingcell
))) )))
;; "Sync" `ein:notebook-mumamo-mode-map' with `ein:notebook-mode-map'. (set-keymap-parent ein:notebook-mumamo-mode-map ein:notebook-mode-map)
(setcdr ein:notebook-mumamo-mode-map (cdr ein:notebook-mode-map))
(add-hook 'ein:notebook-mumamo-mode-hook 'ein:notebook-setup-kill-buffer-hook) (add-hook 'ein:notebook-mumamo-mode-hook 'ein:notebook-setup-kill-buffer-hook)
(add-hook 'ein:notebook-mumamo-mode-hook (add-hook 'ein:notebook-mumamo-mode-hook

View file

@ -137,6 +137,21 @@ notebook. For global setting and more information, see
(const :tag "Use global setting" nil)) (const :tag "Use global setting" nil))
:group 'ein) :group 'ein)
(defcustom ein:complete-on-dot t
"Start completion when inserting a dot. Note that
`ein:use-auto-complete' (or `ein:use-auto-complete-superpack')
must be `t' to enable this option. This variable has effect on
notebook buffers and connected buffers."
:type 'boolean
:group 'ein)
(defun ein:complete-on-dot-install (map func)
(if (and ein:complete-on-dot
(or ein:use-auto-complete
ein:use-auto-complete-superpack))
(define-key map "." func)
(define-key map "." nil)))
(defvar ein:notebook-after-rename-hook nil (defvar ein:notebook-after-rename-hook nil
"Hooks to run after notebook is renamed successfully. "Hooks to run after notebook is renamed successfully.
Current buffer for these functions is set to the notebook buffer.") Current buffer for these functions is set to the notebook buffer.")
@ -977,6 +992,15 @@ pager buffer. You can explicitly specify the object by selecting it."
(ein:kernel-if-ready (ein:$notebook-kernel ein:notebook) (ein:kernel-if-ready (ein:$notebook-kernel ein:notebook)
(ein:notebook-complete-at-point ein:notebook)))) (ein:notebook-complete-at-point ein:notebook))))
(defun ein:notebook-complete-dot ()
"Insert dot and request completion."
(interactive)
(insert ".")
(when (and ein:notebook
(ein:codecell-p (ein:notebook-get-current-cell))
(ein:kernel-live-p (ein:$notebook-kernel ein:notebook)))
(ein:notebook-complete-at-point ein:notebook)))
(defun ein:notebook-kernel-interrupt-command () (defun ein:notebook-kernel-interrupt-command ()
"Interrupt the kernel. "Interrupt the kernel.
This is equivalent to do ``C-c`` in the console program." This is equivalent to do ``C-c`` in the console program."
@ -1260,9 +1284,6 @@ Do not use `python-mode'. Use plain mode when MuMaMo is not installed::
if (functionp mode) if (functionp mode)
return mode)) return mode))
(defun ein:notebook-mode ()
(funcall (ein:notebook-choose-mode)))
(defvar ein:notebook-mode-map (make-sparse-keymap)) (defvar ein:notebook-mode-map (make-sparse-keymap))
(let ((map ein:notebook-mode-map)) (let ((map ein:notebook-mode-map))
@ -1309,6 +1330,11 @@ Do not use `python-mode'. Use plain mode when MuMaMo is not installed::
(define-key map (kbd "C-c C-,") 'ein:pytools-jump-back-command) (define-key map (kbd "C-c C-,") 'ein:pytools-jump-back-command)
map) map)
(defun ein:notebook-mode ()
(funcall (ein:notebook-choose-mode))
(ein:complete-on-dot-install
ein:notebook-mode-map 'ein:notebook-complete-dot))
(define-derived-mode ein:notebook-plain-mode fundamental-mode "ein:notebook" (define-derived-mode ein:notebook-plain-mode fundamental-mode "ein:notebook"
"IPython notebook mode without fancy coloring." "IPython notebook mode without fancy coloring."
(font-lock-mode)) (font-lock-mode))
@ -1320,12 +1346,8 @@ Do not use `python-mode'. Use plain mode when MuMaMo is not installed::
(add-hook 'ein:notebook-python-mode-hook 'ein:notebook-imenu-setup) (add-hook 'ein:notebook-python-mode-hook 'ein:notebook-imenu-setup)
;; "Sync" `ein:notebook-plain-mode-map' with `ein:notebook-mode-map'. (set-keymap-parent ein:notebook-plain-mode-map ein:notebook-mode-map)
;; This way, `ein:notebook-plain-mode-map' automatically changes when (set-keymap-parent ein:notebook-python-mode-map ein:notebook-mode-map)
;; `ein:notebook-mode-map' is changed.
(setcdr ein:notebook-plain-mode-map (cdr ein:notebook-mode-map))
(setcdr ein:notebook-python-mode-map (cdr ein:notebook-mode-map))
(defun ein:notebook-open-in-browser (&optional print) (defun ein:notebook-open-in-browser (&optional print)
"Open current notebook in web browser. "Open current notebook in web browser.