diff options
| author | smerten <smerten@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2011-03-20 17:20:36 +0000 |
|---|---|---|
| committer | smerten <smerten@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2011-03-20 17:20:36 +0000 |
| commit | 6dc6c5a2e1249836c3d6f890041412b0871a7cb5 (patch) | |
| tree | 1f25867704424351a22c79b42c6aec7546dd3876 /docutils/tools/editors/emacs/tests/shift.el | |
| parent | c9699f99550c77ea8df2b44e6855e148b94a9b4b (diff) | |
| download | docutils-6dc6c5a2e1249836c3d6f890041412b0871a7cb5.tar.gz | |
* Package version
There is a package version in `rst-version`. For a release it's only
the official version number, for development version in addition it
contains the revision and timestamp.
The package version is used for customizable variables according to
Emacs standards.
* Indentation and filling
Indentation and filling is completely revised / new. The general
idea is to determine tabs which make sense for reStructuredText and
use them for indentation and filling.
Like in other modes <tab> always indents the current line. If the
current indentation is irregular the most likely tab for continuing
the last block is used. If the indentation matches a tab already the
indentation for the next tab in the list of possible tabs is used.
The customization group `rst-indent` contains a couple of
customizable variables to match different styles.
Auto-fill uses these mechanism, too.
Filling also uses these mechanisms. For most types of
reStructuredText blocks <M-q> (`fill-paragraph`) does what you
expect including filling of regions.
These features should improve the experience of editing
reStructuredText in Emacs much. Feedback on these features is
welcome.
* Improved paragraph recognition
Most reStructuredText blocks are now recognized as paragraphs. Thus
things like <C-down> (`forward-paragraph`) and friends work. This
also influences filling.
* Comment handling
Comment handling is revised / new. <M-#> (`comment-region`) works
and comments are treated correctly in filling.
At the moment only one style for commenting regions is supported.
Feedback on this feature is welcome.
* Deprecated commands
The following commands had never been bound to keys. It seems
unlikely that they are used and for this reason they are deprecated
starting with this release:
* `rst-replace-lines`
* `rst-join-paragraph`
* `rst-force-fill-paragraph`
* `rst-repeat-last-character`
Feedback whether they are really used by someone is welcome.
Otherwise they are removed at some point.
* New customizable variables
A couple of variables defined by `defvar` so far are now
customizable:
* `rst-adjust-hook`
* `rst-new-adornment-down`
* `rst-preferred-bullets`
* New tests
Lots of tests have been added.
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@6993 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/tools/editors/emacs/tests/shift.el')
| -rw-r--r-- | docutils/tools/editors/emacs/tests/shift.el | 725 |
1 files changed, 627 insertions, 98 deletions
diff --git a/docutils/tools/editors/emacs/tests/shift.el b/docutils/tools/editors/emacs/tests/shift.el index c72630bbe..076725698 100644 --- a/docutils/tools/editors/emacs/tests/shift.el +++ b/docutils/tools/editors/emacs/tests/shift.el @@ -3,147 +3,676 @@ (add-to-list 'load-path ".") (load "ert-support" nil t) +(defun string-insert (s col char) + "Insert CHAR at position COL in S. Return S." + (let ((l (length s)) + (c (char-to-string char))) + (if (<= l col) + (concat s (make-string (- col l) ? ) c) + (concat (substring s 0 col) c (substring s (1+ col)))))) + +(defun line-tabs () + "Wrapper to call `rst-line-tabs' creating a readable result." + (let ((tabs (rst-line-tabs)) + (s "") + (cnt 0) + c) + (delete-region (point-min) (point-max)) + (dolist (tab tabs) + (setq c (+ ?A cnt)) + (if (cdr tab) (setq c (+ c (- ?a ?A)))) + (setq s (string-insert s (car tab) c)) + (setq cnt (1+ cnt))) + (insert "\n" s))) + +(ert-deftest rst-line-tabs () + "Tests for `rst-line-tabs'." + (let ((rst-indent-width 2) + (rst-indent-field 2) + (rst-indent-literal-normal 3) + (rst-indent-literal-minimized 2) + (rst-indent-comment 3)) + (should (equal-buffer + '(line-tabs) + "\^@" + " +" + )) + (should (equal-buffer + '(line-tabs) + " +* a\^@" + " +B a" + )) + (should (equal-buffer + '(line-tabs) + " + * b\^@" + " + B a" + )) + (should (equal-buffer + '(line-tabs) + " + XV. c\^@" + " + B a" + )) + (should (equal-buffer + '(line-tabs) + " +* \^@" + " +A" + )) + (should (equal-buffer + '(line-tabs) + " + *\tb\^@" + " + B a" + )) + (should (equal-buffer + '(line-tabs) + "Some para\^@" + " +A" + )) + (should (equal-buffer + '(line-tabs) + " A quoted block\^@" + " + A" + )) + (should (equal-buffer + '(line-tabs) + " +:Field: Content on same line\^@" + " +C b a" + )) + (should (equal-buffer + '(line-tabs) + " +:Field: \^@" + " +B a" + )) + (let ((rst-indent-field 0)) + (should (equal-buffer + '(line-tabs) + " +:Field: Content on same line\^@" + " +B a" + )) + (should (equal-buffer + '(line-tabs) + " +:Field: \^@" + " +B a" + ))) + (should (equal-buffer + '(line-tabs) + " +.. dir:: Content on same line\^@" + " +C b a" + )) + (should (equal-buffer + '(line-tabs) + " +.. dir:: \^@" + " +B a" + )) + (should (equal-buffer + '(line-tabs) + " +.. |sub| dir:: Content on same line\^@" + " +D c b a" + )) + (should (equal-buffer + '(line-tabs) + " +.. |sub| dir::\^@" + " +C b a" + )) + (should (equal-buffer + '(line-tabs) + " +.. [CIT] citation\^@" + " +C b a" + )) + (should (equal-buffer + '(line-tabs) + " +.. [#FN] Footnote\^@" + " +C b a" + )) + (should (equal-buffer + '(line-tabs) + " +.. [CIT]\^@" + " +B a" + )) + (should (equal-buffer + '(line-tabs) + " +Some text::\^@" + " +B a" + )) + (should (equal-buffer + '(line-tabs) + " +::\^@" + " +B a" + )) + (should (equal-buffer + '(line-tabs) + " + ::\^@" + " + B a" + )) + (should (equal-buffer + '(line-tabs) + " +.. First comment\^@" + " +B a" + )) + (should (equal-buffer + '(line-tabs) + " + XV. c::\^@" + " + C b a" + )) + (should (equal-buffer + '(line-tabs) + " + :f: val::\^@" + " + D c b a" + )) + )) + (defun compute-tabs () "Wrapper to call `rst-compute-tabs' creating a readable result." - (let ((tabs (mapcar 'car (rst-compute-tabs (point))))) + (let ((tabs (rst-compute-tabs (point))) + (s "") + (cnt 0)) (delete-region (point-min) (point-max)) (dolist (tab tabs) - (insert "\n" (make-string tab ? ) "@")))) + (setq s (string-insert s tab (+ ?A cnt))) + (setq cnt (1+ cnt))) + (insert "\n" s))) (ert-deftest rst-compute-tabs () "Tests for `rst-compute-tabs'." - (should (equal-buffer - '(compute-tabs) - "\^@" - "" - )) - (should (equal-buffer - '(compute-tabs) - " + (let ((rst-indent-width 2) + (rst-indent-field 2) + (rst-indent-literal-normal 3) + (rst-indent-literal-minimized 2) + (rst-indent-comment 3)) + (should (equal-buffer + '(compute-tabs) + "\^@" + " +" + )) + (should (equal-buffer + '(compute-tabs) + " * a \^@" - " -@ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a * b \^@" - " -@ - @ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a * b XV. c \^@" - " -@ - @ - @ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " +D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a XV. c \^@" - " -@ - @ - @ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " +D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " * XV. c \^@" - " -@ - @ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a * b XV. c * d \^@" - " -@ - @ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a * b XV. c * d * e \^@" - " -@ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a * b XV. c \^@" - " - @ - @ - @ - @" - )) - (should (equal-buffer - '(compute-tabs) - " + " + D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a *\tb \^@" - " -@ - @ - @" - )) - (should (equal-buffer - '(compute-tabs) - "* a -\^@" - " -@ - @" - )) - (should (equal-buffer - '(compute-tabs) - " * a + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + "* a +\^@" + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " * a * b XV. c \^@" - " - @ - @ - @ - @" - )) - ) + " + D C B A" + )) + (should (equal-buffer + '(compute-tabs) + "Some para + + A quoted block + + Quoting again +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +:Field: Content on same line +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +:Field: Content on same line + but continued differently +\^@" + " +D CA B" + )) + (should (equal-buffer + '(compute-tabs) + " +:Field: Content on same line + but continued differently +\^@" + " +D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +:Field: + + Content on next line +\^@" + " +C BA" + )) + (should (equal-buffer + '(compute-tabs) + " +:Field: Starts on same line + + Content on next line +\^@" + " +C A B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. dir:: Content on same line +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. dir:: + + Content on next line +\^@" + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. dir:: + + Content on next line +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. dir:: Same + + Content on next line +\^@" + " +D C A B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: Content on same line +\^@" + " +D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: + + Content on next line +\^@" + " +C A B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: + + Content on next line +\^@" + " +D C A B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: Same + + Content on next line +\^@" + " +E D A C B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: Same + + :par: val + + Content on next line +\^@" + " +E DC A B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: + + :par: val + + Content on next line +\^@" + " +C A B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: Same + + :f: val + + Content on next line +\^@" + " +E DAC B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: Same + + :f: val + + Content on next line +\^@" + " +D A C B" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: Same + + :f: val + + * Item +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. |sub| dir:: Same + + :f: val + + * Item + + 1. Enumerated +\^@" + " +D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. [CIT] citation +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. [#FN] Footnote +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. [CIT] + + citation +\^@" + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. [CIT] + + citation +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. [CIT] + + citation + + .. |sub| dir:: Same + + :f: val + + * Item + + 1. Enumerated +\^@" + " +E D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +Some text:: +\^@" + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " +No text + +:: +\^@" + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " +No text + + :: +\^@" + " +C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. [CIT] + + citation + + .. |sub| dir:: Same + + :f: val + + No text + + :: +\^@" + " +E D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. First comment +\^@" + " +B A" + )) + (should (equal-buffer + '(compute-tabs) + " +* a + XV. c:: +\^@" + " +E D C B A" + )) + (should (equal-buffer + '(compute-tabs) + " +.. [CIT] + + citation + + .. |sub| dir:: Same + + :f: val:: +\^@" + " +F E D C B A" + )) + )) (ert-deftest rst-shift-region-right () "Tests for `rst-shift-region' to the right." |
