From: David Symonds <dsymonds@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Andreas Ericsson <ae@op5.se>,
David Symonds <dsymonds@gmail.com>
Subject: [PATCH 1/3] Implement parsing for new core.whitespace.* options.
Date: Sat, 3 Nov 2007 00:34:19 +1100 [thread overview]
Message-ID: <11940104611948-git-send-email-dsymonds@gmail.com> (raw)
Each of the new core.whitespace.* options (enumerated below) can be set to one
of:
* okay (default): Whitespace of this type is okay
* warn: Whitespace of this type should be warned about
* error: Whitespace of this type should raise an error
* autofix: Whitespace of this type should be automatically fixed
The initial options are:
* trailing: Whitespace at the end of a line
* space-before-tab: SP HT sequence in the initial whitespace of a line
* space-indent: At least 8 spaces in a row at the start of a line
Example usage:
[core "whitespace"]
trailing = autofix
space-before-tab = error
space-indent = warn
Signed-off-by: David Symonds <dsymonds@gmail.com>
---
cache.h | 16 ++++++++++++++++
config.c | 28 ++++++++++++++++++++++++++++
environment.c | 3 +++
3 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/cache.h b/cache.h
index bfffa05..51e3982 100644
--- a/cache.h
+++ b/cache.h
@@ -602,4 +602,20 @@ extern int diff_auto_refresh_index;
/* match-trees.c */
void shift_tree(const unsigned char *, const unsigned char *, unsigned char *, int);
+/*
+ * whitespace rules.
+ * used by both diff and apply
+ */
+enum whitespace_mode {
+ WS_OKAY = 0,
+ WS_WARN,
+ WS_ERROR,
+ WS_AUTOFIX
+};
+extern enum whitespace_mode ws_mode_trailing;
+extern enum whitespace_mode ws_mode_space_before_tab;
+extern enum whitespace_mode ws_mode_space_indent;
+extern enum whitespace_mode git_config_whitespace_mode(const char *, const char *);
+
+
#endif /* CACHE_H */
diff --git a/config.c b/config.c
index dc3148d..8e6f252 100644
--- a/config.c
+++ b/config.c
@@ -297,6 +297,19 @@ int git_config_bool(const char *name, const char *value)
return git_config_int(name, value) != 0;
}
+enum whitespace_mode git_config_whitespace_mode(const char *name, const char *value)
+{
+ if (!strcasecmp(value, "okay"))
+ return WS_OKAY;
+ if (!strcasecmp(value, "warn"))
+ return WS_WARN;
+ if (!strcasecmp(value, "error"))
+ return WS_ERROR;
+ if (!strcasecmp(value, "autofix"))
+ return WS_AUTOFIX;
+ die("bad config value for '%s' in %s", name, config_file_name);
+}
+
int git_default_config(const char *var, const char *value)
{
/* This needs a better name */
@@ -431,6 +444,21 @@ int git_default_config(const char *var, const char *value)
return 0;
}
+ if (!strcmp(var, "core.whitespace.trailing")) {
+ ws_mode_trailing = git_config_whitespace_mode(var, value);
+ return 0;
+ }
+
+ if (!strcmp(var, "core.whitespace.space-before-tab")) {
+ ws_mode_space_before_tab = git_config_whitespace_mode(var, value);
+ return 0;
+ }
+
+ if (!strcmp(var, "core.whitespace.space-indent")) {
+ ws_mode_space_indent = git_config_whitespace_mode(var, value);
+ return 0;
+ }
+
/* Add other config variables here and to Documentation/config.txt. */
return 0;
}
diff --git a/environment.c b/environment.c
index b5a6c69..71502fc 100644
--- a/environment.c
+++ b/environment.c
@@ -35,6 +35,9 @@ int pager_in_use;
int pager_use_color = 1;
char *editor_program;
int auto_crlf = 0; /* 1: both ways, -1: only when adding git objects */
+enum whitespace_mode ws_mode_trailing = WS_OKAY;
+enum whitespace_mode ws_mode_space_before_tab = WS_OKAY;
+enum whitespace_mode ws_mode_space_indent = WS_OKAY;
/* This is set by setup_git_dir_gently() and/or git_default_config() */
char *git_work_tree_cfg;
--
1.5.3.1
next reply other threads:[~2007-11-02 13:35 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-02 13:34 David Symonds [this message]
2007-11-02 13:34 ` [PATCH 2/3] Act on WS_WARN for ws_mode_space_before_tab David Symonds
2007-11-02 13:34 ` [PATCH 3/3] Act on WS_WARN for ws_mode_trailing David Symonds
2007-11-02 15:07 ` David Symonds
2007-11-02 15:25 ` [PATCH 1/3] Implement parsing for new core.whitespace.* options Baz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11940104611948-git-send-email-dsymonds@gmail.com \
--to=dsymonds@gmail.com \
--cc=ae@op5.se \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).