branch: elpa/typescript-mode
commit 42a60e5c881082db2ec2c541a5c154308c4863e6
Merge: f36fddeb54 710f5425a4
Author: Jostein Kjønigsen <[email protected]>
Commit: GitHub <[email protected]>
Merge pull request #137 from sirikid/feature/comma-first-lists
Add option for list items indenting
---
test-files/list-items-indent-comma-first.ts | 22 +++++++++++++++++++
test-files/list-items-indent-default.ts | 22 +++++++++++++++++++
typescript-mode-general-tests.el | 34 +++++++++++++++++++++++++++++
typescript-mode.el | 8 ++++++-
4 files changed, 85 insertions(+), 1 deletion(-)
diff --git a/test-files/list-items-indent-comma-first.ts
b/test-files/list-items-indent-comma-first.ts
new file mode 100644
index 0000000000..2a7485c89c
--- /dev/null
+++ b/test-files/list-items-indent-comma-first.ts
@@ -0,0 +1,22 @@
+const arr =
+ [ 'one'
+ , 'two'
+ , 'three' ];
+
+const obj =
+ { a: 111
+ , b: 222
+ , c: 333 };
+
+const depth = { arr: [ 'one'
+ , 'two'
+ , 'three' ]
+ , obj: { a: 111
+ , b: 222
+ , c: 333 }
+ , func_call: Object.assign
+ ( {}
+ , { x: 1
+ , y: 2
+ , z: 3 }
+ , { i: 'i', j: 'j' } ) };
diff --git a/test-files/list-items-indent-default.ts
b/test-files/list-items-indent-default.ts
new file mode 100644
index 0000000000..290c8250dc
--- /dev/null
+++ b/test-files/list-items-indent-default.ts
@@ -0,0 +1,22 @@
+const arr =
+ [ 'one'
+ , 'two'
+ , 'three' ];
+
+const obj =
+ { a: 111
+ , b: 222
+ , c: 333 };
+
+const depth = { arr: [ 'one'
+ , 'two'
+ , 'three' ]
+ , obj: { a: 111
+ , b: 222
+ , c: 333 }
+ , func_call: Object.assign
+ ( {}
+ , { x: 1
+ , y: 2
+ , z: 3 }
+ , { i: 'i', j: 'j' } ) };
diff --git a/typescript-mode-general-tests.el b/typescript-mode-general-tests.el
index 6e3f098aa7..aa1f1f8c78 100644
--- a/typescript-mode-general-tests.el
+++ b/typescript-mode-general-tests.el
@@ -52,6 +52,40 @@
(typescript-test-get-doc))))
(kill-buffer buffer)))
+(ert-deftest list-items-indent-default ()
+ (with-current-buffer (find-file "test-files/list-items-indent-default.ts")
+ (typescript-mode)
+ (let ((test-reference (typescript-test-get-doc)))
+ (typescript-test-indent-all)
+ (should (string= test-reference (typescript-test-get-doc))))
+ (kill-buffer)))
+
+(ert-deftest list-items-indent-default-not-comma-first ()
+ (with-current-buffer (find-file
"test-files/list-items-indent-comma-first.ts")
+ (typescript-mode)
+ (let ((test-reference (typescript-test-get-doc)))
+ (typescript-test-indent-all)
+ (should (not (string= test-reference (typescript-test-get-doc)))))
+ (kill-buffer)))
+
+(ert-deftest list-items-indent-comma-first ()
+ (with-current-buffer (find-file
"test-files/list-items-indent-comma-first.ts")
+ (typescript-mode)
+ (let ((test-reference (typescript-test-get-doc))
+ (typescript-indent-list-items nil))
+ (typescript-test-indent-all)
+ (should (string= test-reference (typescript-test-get-doc))))
+ (kill-buffer)))
+
+(ert-deftest list-items-indent-comma-first-not-default ()
+ (with-current-buffer (find-file "test-files/list-items-indent-default.ts")
+ (typescript-mode)
+ (let ((test-reference (typescript-test-get-doc))
+ (typescript-indent-list-items nil))
+ (typescript-test-indent-all)
+ (should (not (string= test-reference (typescript-test-get-doc)))))
+ (kill-buffer)))
+
(defun get-all-matched-strings (to-match)
(let (result)
(dotimes (x (/ (length (match-data)) 2))
diff --git a/typescript-mode.el b/typescript-mode.el
index 09add95553..7bad249e70 100644
--- a/typescript-mode.el
+++ b/typescript-mode.el
@@ -653,6 +653,11 @@ replicate tsserver behaviour. Indent level is taken to be
:type 'boolean
:group 'typescript)
+(defcustom typescript-indent-list-items t
+ "Enable indenting of list items, useful for certain code styles."
+ :type 'boolean
+ :group 'typescript)
+
(defcustom typescript-auto-indent-flag t
"Whether to automatically indent when typing punctuation characters.
If non-nil, the characters {}();,: also indent the current line
@@ -2535,7 +2540,8 @@ moved on success."
(if (and in-switch-p typescript-indent-switch-clauses)
(+ indent typescript-indent-level)
indent)))
- (unless same-indent-p
+ (when (and (not same-indent-p)
+ typescript-indent-list-items)
(forward-char)
(skip-chars-forward " \t"))
(if continued-expr-p