highlight-indentation: improve whitespace handling
This commit is contained in:
parent
11af0f487c
commit
843bc3e00d
2 changed files with 17 additions and 11 deletions
|
@ -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))
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue