[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/julia-mode a82e629 239/352: julia-mode: Indent manually in
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/julia-mode a82e629 239/352: julia-mode: Indent manually inside strings with \n |
Date: |
Sun, 29 Aug 2021 11:22:53 -0400 (EDT) |
branch: elpa/julia-mode
commit a82e6299bac675e6d006409febf7e2f138897bce
Author: justbur <justin@burkett.cc>
Commit: Yichao Yu <yyc1992@gmail.com>
julia-mode: Indent manually inside strings with \n
Don't try to automatically indent when inside strings with newline
characters. We don't want to add indentation where it is not intended,
so any automatic formatting should not assume that we want to indent
inside a string. This also fixes #12419, because we won't get confused
by keywords in multi-line strings.
Because it is still useful, make TAB and <backtab> increase and decrease
indentation when called inside a string.
---
julia-mode-tests.el | 18 ++++++++++++++++++
julia-mode.el | 24 ++++++++++++++++++++++++
2 files changed, 42 insertions(+)
diff --git a/julia-mode-tests.el b/julia-mode-tests.el
index de68089..239d078 100644
--- a/julia-mode-tests.el
+++ b/julia-mode-tests.el
@@ -252,6 +252,24 @@ y2 = g(x)"
z)
y2 = g(x)"))
+(ert-deftest julia--test-indentation-of-multi-line-strings ()
+ "Indentation should only affect the first line of a multi-line string."
+ (julia--should-indent
+ " a = \"\"\"
+ description
+begin
+ foo
+bar
+end
+\"\"\""
+ "a = \"\"\"
+ description
+begin
+ foo
+bar
+end
+\"\"\""))
+
(defun julia--run-tests ()
(interactive)
(if (featurep 'ert)
diff --git a/julia-mode.el b/julia-mode.el
index 2f53f29..9bad399 100644
--- a/julia-mode.el
+++ b/julia-mode.el
@@ -525,12 +525,28 @@ only comments."
;; above
(+ julia-indent-offset prev-indent)))))))
+(defun julia-indent-in-string ()
+ "Indentation inside strings with newlines is \"manual\",
+meaning always increase indent on TAB and decrease on S-TAB."
+ (save-excursion
+ (beginning-of-line)
+ (when (julia-in-string)
+ (if (member this-command '(julia-latexsub-or-indent
+ ess-indent-or-complete))
+ (+ julia-indent-offset (current-indentation))
+ ;; return the current indentation to prevent other functions from
+ ;; indenting inside strings
+ (current-indentation)))))
+
(defun julia-indent-line ()
"Indent current line of julia code."
(interactive)
(let* ((point-offset (- (current-column) (current-indentation))))
(indent-line-to
(or
+ ;; note: if this first function returns nil the beginning of the line
+ ;; cannot be in a string
+ (julia-indent-in-string)
;; If we're inside an open paren, indent to line up arguments.
(julia-paren-indent)
;; indent due to hanging operators or a line ending in =
@@ -602,6 +618,14 @@ only comments."
(setq imenu-generic-expression julia-imenu-generic-expression)
(imenu-add-to-menubar "Imenu"))
+(defun julia-manual-deindent ()
+ "Deindent by `julia-indent-offset' regardless of current
+indentation context. To be used to manually indent inside
+strings."
+ (interactive)
+ (indent-line-to (max 0 (- (current-indentation) julia-indent-offset))))
+(define-key julia-mode-map (kbd "<backtab>") 'julia-manual-deindent)
+
(defvar julia-latexsubs (make-hash-table :test 'equal))
(defun julia-latexsub ()
- [nongnu] elpa/julia-mode 80c6754 197/352: Silencing byte-compiler warning., (continued)
- [nongnu] elpa/julia-mode 80c6754 197/352: Silencing byte-compiler warning., ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode e4d0e09 199/352: Highlight quoted symbols, e.g. :foo., ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 4b22a79 205/352: julia-mode.el: remove types that are removed or deprecated, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode f84a425 219/352: Clean up stagedfunction, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode f378cbc 208/352: Mailmap update., ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode f3b490b 210/352: Added inferior-julia comint mode, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 8dd023d 223/352: julia-paren-indent: docstring, test, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 8d6ea60 233/352: Fix #11549 (top level after paren-indented line), ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 9cbde7b 236/352: julia-mode: Move tests to new file and improve, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 1f06e85 234/352: Alias `run-julia` to `inferior-julia` in julia-mode.el, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode a82e629 239/352: julia-mode: Indent manually inside strings with \n,
ELPA Syncer <=
- [nongnu] elpa/julia-mode 1746c4b 238/352: julia-mode: Improve paren indent perf, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 44c9959 241/352: julia-mode: Fix #15461, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 4f56ded 258/352: make lookback distance customizable, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 362be60 255/352: Merge pull request #26 from JeffBezanson/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 6add61b 254/352: fix indenting after commented `end`, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 8818ede 245/352: fix ignoring of keywords inside comments, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode 9067194 268/352: Merge pull request #38 from Wilfred/patch-1, ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode edaaff2 276/352: Bin op chars (#44), ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode c20a4e5 300/352: generate new LaTeX substitutions using 1.3-pre., ELPA Syncer, 2021/08/29
- [nongnu] elpa/julia-mode b194039 302/352: Merge pull request #72 from FelipeLema/unicode-for-in, ELPA Syncer, 2021/08/29