mirror of
https://github.com/vale981/emacs-ipython-notebook
synced 2025-03-06 09:31:39 -05:00
commit
e04321603e
4 changed files with 66 additions and 1 deletions
|
@ -1114,7 +1114,9 @@ This hook is run regardless the actual major mode used."
|
|||
("Go to next cell" ein:worksheet-goto-next-input)
|
||||
("Go to previous cell" ein:worksheet-goto-prev-input)
|
||||
("Move cell up" ein:worksheet-move-cell-up)
|
||||
("Move cell down" ein:worksheet-move-cell-down))))
|
||||
("Move cell down" ein:worksheet-move-cell-down)
|
||||
("Dedent text in CELL" ein:worksheet-dedent-cell-text)
|
||||
)))
|
||||
("Cell/Code"
|
||||
,@(ein:generate-menu
|
||||
'(("Execute cell" ein:worksheet-execute-cell
|
||||
|
|
|
@ -278,6 +278,24 @@ Adapted from twittering-mode.el's `case-string'."
|
|||
,@body)))
|
||||
clauses)))
|
||||
|
||||
|
||||
;;; Text manipulation on buffer
|
||||
|
||||
(defun ein:find-leftmot-column (beg end)
|
||||
"Return the leftmost column in region BEG to END."
|
||||
(save-excursion
|
||||
(let (mincol)
|
||||
(goto-char beg)
|
||||
(while (< (point) end)
|
||||
(back-to-indentation)
|
||||
(unless (= (point) (point-at-eol))
|
||||
(setq mincol (if mincol
|
||||
(min mincol (current-column))
|
||||
(current-column))))
|
||||
(unless (= (forward-line 1) 0)
|
||||
(return-from ein:find-leftmot-column mincol)))
|
||||
mincol)))
|
||||
|
||||
|
||||
;;; Misc
|
||||
|
||||
|
|
|
@ -886,6 +886,17 @@ in the history."
|
|||
(or (oref ws :dirty)
|
||||
(buffer-modified-p buffer)))))
|
||||
|
||||
|
||||
;;; Utility commands
|
||||
|
||||
(defun ein:worksheet-dedent-cell-text (cell)
|
||||
"Dedent text in CELL."
|
||||
(interactive (list (ein:worksheet-get-current-cell)))
|
||||
(let* ((beg (ein:cell-input-pos-min cell))
|
||||
(end (ein:cell-input-pos-max cell)))
|
||||
(indent-rigidly
|
||||
beg end (- (ein:find-leftmot-column beg end)))))
|
||||
|
||||
|
||||
;;; Auto-execution
|
||||
|
||||
|
|
|
@ -82,6 +82,40 @@ def func():
|
|||
"))
|
||||
(should (equal (ein:trim-indent original) trimmed))))
|
||||
|
||||
|
||||
;;; Text manipulation on buffer
|
||||
|
||||
(ert-deftest ein:find-leftmot-column-simple-cases ()
|
||||
(loop for (indent text) in
|
||||
'(;; No indent
|
||||
(0 "\
|
||||
def f():
|
||||
pass")
|
||||
;; Indented python code
|
||||
(4 "\
|
||||
def f():
|
||||
pass")
|
||||
;; Deeper indent can come first
|
||||
(4 "\
|
||||
# indent = 8
|
||||
# indent 4")
|
||||
;; With empty lines
|
||||
(4 "\
|
||||
|
||||
# indent = 8
|
||||
|
||||
# indent 4
|
||||
|
||||
")
|
||||
)
|
||||
do (with-temp-buffer
|
||||
(insert text)
|
||||
(should (= (ein:find-leftmot-column (point-min) (point-max))
|
||||
indent)))))
|
||||
|
||||
|
||||
;;; Misc
|
||||
|
||||
(ert-deftest ein:list-insert-after ()
|
||||
(should (equal (ein:list-insert-after '(a) 'a 'X) '(a X)))
|
||||
(should (equal (ein:list-insert-after '(a b c) 'a 'X) '(a X b c)))
|
||||
|
|
Loading…
Add table
Reference in a new issue