From 92a31305099285290f11bed8b444d121c3fbfee3 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Fri, 12 Apr 2013 10:12:01 +0000 Subject: [PATCH] Provide better emacs integration. The new emacs integration is simpler, does not save the current file before reformatting and ensures that emacs does not scroll as a result of formatting. Also explicitly set the style in clang-format tests to make them more robust. llvm-svn: 179372 --- clang/test/Format/basic.cpp | 2 +- clang/test/Format/ranges.cpp | 2 +- clang/tools/clang-format/clang-format.el | 46 +++++++----------------- 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/clang/test/Format/basic.cpp b/clang/test/Format/basic.cpp index 375bbd2ec71a..a12866b9c1e4 100644 --- a/clang/test/Format/basic.cpp +++ b/clang/test/Format/basic.cpp @@ -1,5 +1,5 @@ // RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp -// RUN: clang-format -i %t.cpp +// RUN: clang-format -style=LLVM -i %t.cpp // RUN: FileCheck -strict-whitespace -input-file=%t.cpp %s // CHECK: {{^int\ \*i;}} diff --git a/clang/test/Format/ranges.cpp b/clang/test/Format/ranges.cpp index 0244fc195ca1..c7fdd4b97a43 100644 --- a/clang/test/Format/ranges.cpp +++ b/clang/test/Format/ranges.cpp @@ -1,5 +1,5 @@ // RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp -// RUN: clang-format -offset=2 -length=0 -offset=28 -length=0 -i %t.cpp +// RUN: clang-format -style=LLVM -offset=2 -length=0 -offset=28 -length=0 -i %t.cpp // RUN: FileCheck -strict-whitespace -input-file=%t.cpp %s // CHECK: {{^int\ \*i;$}} int*i; diff --git a/clang/tools/clang-format/clang-format.el b/clang/tools/clang-format/clang-format.el index c63c62ee551e..1277885996ce 100644 --- a/clang/tools/clang-format/clang-format.el +++ b/clang/tools/clang-format/clang-format.el @@ -10,38 +10,18 @@ ;; 'style' and 'binary' below. (defun clang-format-region () (interactive) - (let ((orig-file buffer-file-name) + (let ((orig-window-start (window-start)) (orig-point (point)) - (orig-mark (mark t)) - (orig-mark-active mark-active) (binary "clang-format") - (style "LLVM") - replacement-text replaced beg end) - (basic-save-buffer) - (save-restriction - (widen) - (if mark-active - (setq beg (1- (region-beginning)) - end (1- (region-end))) - (setq beg (1- (line-beginning-position)) - end (1- (line-end-position)))) - (with-temp-buffer - (call-process - binary orig-file '(t nil) t - "-offset" (number-to-string beg) - "-length" (number-to-string (- end beg)) - "-style" style) - (setq replacement-text - (buffer-substring-no-properties (point-min) (point-max)))) - (unless (string= replacement-text - (buffer-substring-no-properties (point-min) (point-max))) - (delete-region (point-min) (point-max)) - (insert replacement-text) - (setq replaced t))) - (ignore-errors - (when orig-mark - (push-mark orig-mark) - (when orig-mark-active - (activate-mark) - (setq deactivate-mark nil))) - (goto-char orig-point)))) + (style "LLVM")) + (if mark-active + (setq beg (1- (region-beginning)) + end (1- (region-end))) + (setq beg (1- (line-beginning-position)) + end (1- (line-end-position)))) + (call-process-region (point-min) (point-max) "clang-format" t t nil + "-offset" (number-to-string beg) + "-length" (number-to-string (- end beg)) + "-style" style) + (goto-char orig-point) + (set-window-start (selected-window) orig-window-start)))