git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: [PATCH] whitespace: correct bit assignment comments
Date: Mon, 27 Oct 2025 13:36:46 -0700	[thread overview]
Message-ID: <xmqqfrb4hyjl.fsf@gitster.g> (raw)

A comment in diff.c claimed that bits up to 12th (counting from 0th)
are whitespace rules, and 13th thru 15th are for new/old/context,
but it turns out it was miscounting.  Correct the comment.

Also update the way these bit constants are defined to use (1
shifted by count) notation, instead of octal constants, as it tends
to make it easier to notice a breakage like this.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * I happened to be looking at this code today, and noticed this,
   but I very often make stupid mistakes while counting things, so
   sending it out (which should not change any behaviour) in the
   hope that somebody would (again) notice that I cannot count.

   Next step would be to make a gap between whitespace rules bits
   and WSEH_NEW/CONTEXT/OLD bits, so that we can smoothly add new
   whitespace rules later.

 diff.c |  4 ++--
 diff.h |  6 +++---
 ws.h   | 20 ++++++++++----------
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/diff.c b/diff.c
index a74e701806..08136ad5c5 100644
--- a/diff.c
+++ b/diff.c
@@ -803,8 +803,8 @@ enum diff_symbol {
 };
 /*
  * Flags for content lines:
- * 0..12 are whitespace rules
- * 13-15 are WSEH_NEW | WSEH_OLD | WSEH_CONTEXT
+ * 0..11 are whitespace rules
+ * 12-14 are WSEH_NEW | WSEH_CONTEXT | WSEH_OLD
  * 16 is marking if the line is blank at EOF
  */
 #define DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF	(1<<16)
diff --git a/diff.h b/diff.h
index 2fa256c3ef..60749154e7 100644
--- a/diff.h
+++ b/diff.h
@@ -331,9 +331,9 @@ struct diff_options {
 
 	int ita_invisible_in_index;
 /* white-space error highlighting */
-#define WSEH_NEW (1<<12)
-#define WSEH_CONTEXT (1<<13)
-#define WSEH_OLD (1<<14)
+#define WSEH_NEW	(1<<12)
+#define WSEH_CONTEXT	(1<<13)
+#define WSEH_OLD	(1<<14)
 	unsigned ws_error_highlight;
 	const char *prefix;
 	int prefix_length;
diff --git a/ws.h b/ws.h
index 5ba676c559..611c6b6d50 100644
--- a/ws.h
+++ b/ws.h
@@ -7,19 +7,19 @@ struct strbuf;
 /*
  * whitespace rules.
  * used by both diff and apply
- * last two digits are tab width
+ * last two octal-digits are tab width (we support only up to 63).
  */
-#define WS_BLANK_AT_EOL         0100
-#define WS_SPACE_BEFORE_TAB     0200
-#define WS_INDENT_WITH_NON_TAB  0400
-#define WS_CR_AT_EOL           01000
-#define WS_BLANK_AT_EOF        02000
-#define WS_TAB_IN_INDENT       04000
-#define WS_TRAILING_SPACE      (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF)
+#define WS_BLANK_AT_EOL         (1<<6)
+#define WS_SPACE_BEFORE_TAB     (1<<7)
+#define WS_INDENT_WITH_NON_TAB  (1<<8)
+#define WS_CR_AT_EOL            (1<<9)
+#define WS_BLANK_AT_EOF         (1<<10)
+#define WS_TAB_IN_INDENT        (1<<11)
+#define WS_TRAILING_SPACE       (WS_BLANK_AT_EOL|WS_BLANK_AT_EOF)
 #define WS_DEFAULT_RULE (WS_TRAILING_SPACE|WS_SPACE_BEFORE_TAB|8)
-#define WS_TAB_WIDTH_MASK        077
+#define WS_TAB_WIDTH_MASK       ((1<<6)-1)
 /* All WS_* -- when extended, adapt diff.c emit_symbol */
-#define WS_RULE_MASK           07777
+#define WS_RULE_MASK            ((1<<12)-1)
 extern unsigned whitespace_rule_cfg;
 unsigned whitespace_rule(struct index_state *, const char *);
 unsigned parse_whitespace_rule(const char *);
-- 
2.51.2-686-gf92ff40d17


             reply	other threads:[~2025-10-27 20:36 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-27 20:36 Junio C Hamano [this message]
2025-10-28  6:39 ` [PATCH] whitespace: correct bit assignment comments Patrick Steinhardt
2025-10-28 13:39   ` Junio C Hamano
2025-10-28 16:33     ` [PATCH v2] " Junio C Hamano
2025-10-29  7:17       ` Patrick Steinhardt
2025-10-29 13:21         ` Junio C Hamano

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=xmqqfrb4hyjl.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    /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).