finalpatch

indent ifdef

Sep 6th, 2014
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.92 KB | None | 0 0
  1. (defun my-indent-ifdef ()
  2.   (let ((extra-indent 0)
  3.         (ifdef "^[ \t]*#if\\(def\\)?\\b")
  4.         (endif "^[ \t]*#endif\\b"))
  5.     (save-excursion
  6.       (beginning-of-line)
  7.       (if (not (bobp))
  8.           (progn
  9.             (c-backward-comments)
  10.             (if (/= (line-number-at-pos) 1)
  11.                 (progn
  12.                   (beginning-of-line)
  13.                   (if (looking-at ifdef)
  14.                       (setq extra-indent tab-width)
  15.                     (if (looking-at endif)
  16.                         (setq extra-indent (- extra-indent tab-width)))))))))
  17.     (save-excursion
  18.       (beginning-of-line)
  19.       (if (looking-at endif)
  20.           (setq extra-indent (- extra-indent tab-width))))
  21.     (if (/= extra-indent 0)
  22.         (let ((new-indent (+ (current-indentation) extra-indent)))
  23.           (if (>= new-indent 0)
  24.               (if (eq (current-column) (current-indentation))
  25.                   (indent-line-to new-indent)
  26.                 (save-excursion
  27.                   (indent-line-to new-indent))))))))
  28. (add-hook 'c-mode-common-hook
  29.   (lambda () (add-hook 'c-special-indent-hook 'my-indent-ifdef)))
Advertisement
Add Comment
Please, Sign In to add comment