r181766 - Update clang-format emacs integration.

Daniel Jasper djasper at google.com
Tue May 14 01:48:24 PDT 2013


Author: djasper
Date: Tue May 14 03:48:24 2013
New Revision: 181766

URL: http://llvm.org/viewvc/llvm-project?rev=181766&view=rev
Log:
Update clang-format emacs integration.

- Remove free variables
- Add function clang-format-buffer, e.g. for before-save-hooks
- Wrap restoring windows in an unwind-protect

Patch by Stephen Gildea!

Modified:
    cfe/trunk/tools/clang-format/clang-format.el

Modified: cfe/trunk/tools/clang-format/clang-format.el
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format.el?rev=181766&r1=181765&r2=181766&view=diff
==============================================================================
--- cfe/trunk/tools/clang-format/clang-format.el (original)
+++ cfe/trunk/tools/clang-format/clang-format.el Tue May 14 03:48:24 2013
@@ -7,25 +7,39 @@
 ;;   (global-set-key [C-M-tab] 'clang-format-region)
 ;;
 ;; Depending on your configuration and coding style, you might need to modify
-;; 'style' and 'binary' below.
+;; 'style' in clang-format, below.
+
+;; *Location of the clang-format binary. If it is on your PATH, a full path name
+;; need not be specified.
+(defvar clang-format-binary "clang-format")
+
 (defun clang-format-region ()
+  "Use clang-format to format the currently active region."
   (interactive)
+  (let ((beg (if mark-active
+                 (region-beginning)
+               (min (line-beginning-position) (1- (point-max)))))
+        (end (if mark-active
+                 (region-end)
+               (line-end-position))))
+    (clang-format beg end)))
+
+(defun clang-format-buffer ()
+  "Use clang-format to format the current buffer."
+  (clang-format (point-min) (point-max)))
 
+(defun clang-format (begin end)
+  "Use clang-format to format the code between BEGIN and END."
   (let* ((orig-windows (get-buffer-window-list (current-buffer)))
          (orig-window-starts (mapcar #'window-start orig-windows))
          (orig-point (point))
-         (binary "clang-format")
          (style "LLVM"))
-    (if mark-active
-        (setq beg (region-beginning)
-              end (region-end))
-      (setq beg (min (line-beginning-position) (1- (point-max)))
-            end (line-end-position)))
-    (call-process-region (point-min) (point-max) binary t t nil
-                         "-offset" (number-to-string (1- beg))
-                         "-length" (number-to-string (- end beg))
-                         "-style" style)
-    (goto-char orig-point)
-    (dotimes (index (length orig-windows))
-      (set-window-start (nth index orig-windows)
-                        (nth index orig-window-starts)))))
+    (unwind-protect
+        (call-process-region (point-min) (point-max) clang-format-binary t t nil
+                             "-offset" (number-to-string (1- begin))
+                             "-length" (number-to-string (- end begin))
+                             "-style" style)
+      (goto-char orig-point)
+      (dotimes (index (length orig-windows))
+        (set-window-start (nth index orig-windows)
+                          (nth index orig-window-starts))))))





More information about the cfe-commits mailing list