Skip to content

Commit e3cb72b

Browse files
committed
Fix swift-mode:forward-sexp for up-list and down-list
1 parent 56ee9b2 commit e3cb72b

File tree

1 file changed

+33
-6
lines changed

1 file changed

+33
-6
lines changed

swift-mode.el

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,43 @@ See `forward-sexp for ARG."
8484
(setq arg (or arg 1))
8585
(if (< 0 arg)
8686
(while (< 0 arg)
87-
(while (eq
88-
(swift-mode:token:type (swift-mode:forward-token-or-list))
89-
'implicit-\;))
87+
(while (eq (swift-mode:token:type (swift-mode:forward-sexp-1))
88+
'implicit-\;))
9089
(setq arg (1- arg))))
9190
(while (< arg 0)
92-
(while (eq
93-
(swift-mode:token:type (swift-mode:backward-token-or-list))
94-
'implicit-\;))
91+
(while (eq (swift-mode:token:type (swift-mode:backward-sexp-1))
92+
'implicit-\;))
9593
(setq arg (1+ arg))))
9694

95+
(defun swift-mode:forward-sexp-1 ()
96+
"Move forward a token or list.
97+
98+
Signal `scan-error' if it hits closing parentheses."
99+
(let ((token (swift-mode:forward-token-or-list))
100+
(pos (point)))
101+
(when (memq (swift-mode:token:type token) '(\] \) }))
102+
(goto-char pos)
103+
(signal 'scan-error
104+
(list "Unbalanced parentheses"
105+
(swift-mode:token:start token)
106+
(swift-mode:token:end token))))
107+
token))
108+
109+
(defun swift-mode:backward-sexp-1 ()
110+
"Move backward a token or list.
111+
112+
Signal `scan-error' if it hits opening parentheses."
113+
(let ((token (swift-mode:backward-token-or-list))
114+
(pos (point)))
115+
(when (memq (swift-mode:token:type token) '(\[ \( {))
116+
(goto-char pos)
117+
(signal 'scan-error
118+
(list "Unbalanced parentheses"
119+
(swift-mode:token:start token)
120+
(swift-mode:token:end token))))
121+
token))
122+
123+
97124
;; Imenu
98125

99126
(defun swift-mode:mk-regex-for-def (keyword)

0 commit comments

Comments
 (0)