Skip to content

Commit

Permalink
rust-mode: make indentation customizable
Browse files Browse the repository at this point in the history
Add new variable rust-indent-offset, defaulting to
the old value, and use it.
  • Loading branch information
faebd7 committed Aug 8, 2013
1 parent 9db698a commit 3596f66
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/etc/emacs/rust-mode.el
Expand Up @@ -29,6 +29,11 @@

table))

(defcustom rust-indent-offset default-tab-width
"*Indent Rust code by this number of spaces.
The initializer is `DEFAULT-TAB-WIDTH'.")

(defun rust-paren-level () (nth 0 (syntax-ppss)))
(defun rust-in-str-or-cmnt () (nth 8 (syntax-ppss)))
(defun rust-rewind-past-str-cmnt () (goto-char (nth 8 (syntax-ppss))))
Expand All @@ -49,10 +54,10 @@
(let ((level (rust-paren-level)))
(cond
;; A function return type is 1 level indented
((looking-at "->") (* default-tab-width (+ level 1)))
((looking-at "->") (* rust-indent-offset (+ level 1)))

;; A closing brace is 1 level unindended
((looking-at "}") (* default-tab-width (- level 1)))
((looking-at "}") (* rust-indent-offset (- level 1)))

;; If we're in any other token-tree / sexp, then:
;; - [ or ( means line up with the opening token
Expand All @@ -70,18 +75,18 @@
(goto-char pt)
(back-to-indentation)
(if (looking-at "\\<else\\>")
(* default-tab-width (+ 1 level))
(* rust-indent-offset (+ 1 level))
(progn
(goto-char pt)
(beginning-of-line)
(rust-rewind-irrelevant)
(end-of-line)
(if (looking-back "[{};,]")
(* default-tab-width level)
(* rust-indent-offset level)
(back-to-indentation)
(if (looking-at "#")
(* default-tab-width level)
(* default-tab-width (+ 1 level))))))))))
(* rust-indent-offset level)
(* rust-indent-offset (+ 1 level))))))))))

;; Otherwise we're in a column-zero definition
(t 0))))))
Expand Down

0 comments on commit 3596f66

Please sign in to comment.