highlight-indentation: improve whitespace handling

This commit is contained in:
Henrik Lissner 2016-04-14 12:55:17 -04:00
parent 11af0f487c
commit 843bc3e00d
2 changed files with 17 additions and 11 deletions

View file

@ -159,6 +159,7 @@
(if highlight-indentation-mode (if highlight-indentation-mode
(progn (progn
(narf/add-whitespace) (narf/add-whitespace)
(highlight-indentation-set-offset tab-width)
(add-hook 'after-save-hook 'narf/add-whitespace nil t)) (add-hook 'after-save-hook 'narf/add-whitespace nil t))
(remove-hook 'after-save-hook 'narf/add-whitespace t))) (remove-hook 'after-save-hook 'narf/add-whitespace t)))
(add-hook 'before-save-hook 'delete-trailing-whitespace)) (add-hook 'before-save-hook 'delete-trailing-whitespace))

View file

@ -58,20 +58,25 @@
(start (or start (point-min)))) (start (or start (point-min))))
(goto-char start) (goto-char start)
(while (and (re-search-forward "^$" end-marker t) (not (>= (point) end-marker))) (while (and (re-search-forward "^$" end-marker t) (not (>= (point) end-marker)))
(let (line-start line-end) (let (line-start line-end
next-start next-end)
(save-excursion (save-excursion
;; Check previous line indent
(forward-line -1) (forward-line -1)
(setq line-start (point) (setq line-start (point)
line-end (save-excursion (back-to-indentation) (point))) line-end (save-excursion (back-to-indentation) (point)))
(if (and (= line-start line-end) ;; Check next line indent
(/= line-end (line-end-position))) (forward-line 2)
(progn (setq next-start (point)
(forward-line 2) next-end (save-excursion (back-to-indentation) (point)))
(setq line-start (point) ;; Back to origin
line-end (save-excursion (back-to-indentation) (point))) (forward-line -1)
(forward-line -1)) ;; Adjust indent
(forward-line 1)) (let ((line-indent (- line-end line-start))
(insert (make-string (- line-end line-start) 32)))) (next-indent (- next-end next-start))
indent)
(setq indent (min line-indent next-indent))
(insert (make-string indent 32)))))
(forward-line 1))))) (forward-line 1)))))
(set-buffer-modified-p nil) (set-buffer-modified-p nil)
nil) nil)