From 2b75fe0777b350f03a3807929e2ed5708b12b5da Mon Sep 17 00:00:00 2001 From: Koihik Date: Thu, 13 Jun 2019 22:39:27 +0800 Subject: [PATCH] fix: incorrect indent when use tab Close #22 --- src/Config.cpp | 1 + src/Config.h | 1 + src/FormatVisitor.cpp | 12 +++++++++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Config.cpp b/src/Config.cpp index 16efaee..c489a80 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -12,6 +12,7 @@ Config::Config() { map_["column_limit"] = "80"; map_["indent_width"] = "4"; map_["use_tab"] = "false"; + map_["tab_width"] = "4"; map_["continuation_indent_width"] = "4"; map_["keep_simple_block_one_line"] = "true"; diff --git a/src/Config.h b/src/Config.h index 0b56614..6bdf8fe 100644 --- a/src/Config.h +++ b/src/Config.h @@ -26,6 +26,7 @@ class Config { BIND_INT(column_limit); BIND_INT(indent_width); BIND_BOOL(use_tab); + BIND_INT(tab_width); BIND_INT(continuation_indent_width); BIND_BOOL(keep_simple_block_one_line); diff --git a/src/FormatVisitor.cpp b/src/FormatVisitor.cpp index 4580297..0260450 100644 --- a/src/FormatVisitor.cpp +++ b/src/FormatVisitor.cpp @@ -1616,10 +1616,16 @@ string FormatVisitor::indent() { string FormatVisitor::indentWithAlign() { stringstream ss; - for (int i = 0; i < indent_ + indentForAlign_; i++) { - if (config_.use_tab()) { + if (config_.use_tab()) { + int indent = indent_; + int tabWidth = config_.tab_width(); + indent += indentForAlign_ / tabWidth; + if (indentForAlign_ % tabWidth) indent++; + for (int i = 0; i < indent; i++) { ss << "\t"; - } else { + } + } else { + for (int i = 0; i < indent_ + indentForAlign_; i++) { ss << " "; } }