GNU bug report logs - #48501
[PATCH] daemon: Replace Unicode single quotes with poor simulacra.

Previous Next

Package: guix-patches;

Reported by: Tobias Geerinckx-Rice <me <at> tobias.gr>

Date: Tue, 18 May 2021 16:35:01 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 48501 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#48501; Package guix-patches. (Tue, 18 May 2021 16:35:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Tobias Geerinckx-Rice <me <at> tobias.gr>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 18 May 2021 16:35:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Tobias Geerinckx-Rice <me <at> tobias.gr>
To: guix-patches <at> gnu.org
Subject: [PATCH] daemon: Replace Unicode single quotes with poor simulacra.
Date: Tue, 18 May 2021 18:34:05 +0200
The correct ‘ and ’ are not considered word boundaries by some(?)
terminal emulators like Alacritty, making double-click selection
tedious.  Avoid them in untranslated strings like it's 1992.

* nix/libstore/build.cc (UserLock::acquire)
(DerivationGoal::haveDerivation, DerivationGoal::closureRepaired)
(DerivationGoal::startBuilder, DerivationGoal::runChild)
(DerivationGoal::registerOutputs): Replace ‘’ with `' in output.
* nix/libstore/local-store.cc (canonicalisePathMetaData_)
(LocalStore::queryValidPathId): Likewise.
* nix/libstore/optimise-store.cc (LocalStore::optimisePath_): Likewise.
* nix/libutil/util.cc (readLink): Likewise.
---
 nix/libstore/build.cc          | 24 ++++++++++++------------
 nix/libstore/local-store.cc    |  4 ++--
 nix/libstore/optimise-store.cc |  4 ++--
 nix/libutil/util.cc            |  2 +-
 4 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index 5697ae5a43..d6f9a15a46 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -525,7 +525,7 @@ void UserLock::acquire()
             int err = getgrouplist(pw->pw_name, pw->pw_gid,
                 supplementaryGIDs.data(), &ngroups);
             if (err == -1)
-                throw Error(format("failed to get list of supplementary groups for ‘%1%’") % pw->pw_name);
+                throw Error(format("failed to get list of supplementary groups for `%1%’") % pw->pw_name);
 
             supplementaryGIDs.resize(ngroups);
 
@@ -903,7 +903,7 @@ void DerivationGoal::haveDerivation()
     trace("loading derivation");
 
     if (nrFailed != 0) {
-        printMsg(lvlError, format("cannot build missing derivation ‘%1%’") % drvPath);
+        printMsg(lvlError, format("cannot build missing derivation `%1%’") % drvPath);
         done(BuildResult::MiscFailure);
         return;
     }
@@ -1058,7 +1058,7 @@ void DerivationGoal::closureRepaired()
 {
     trace("closure repaired");
     if (nrFailed > 0)
-        throw Error(format("some paths in the output closure of derivation ‘%1%’ could not be repaired") % drvPath);
+        throw Error(format("some paths in the output closure of derivation `%1%’ could not be repaired") % drvPath);
     done(BuildResult::AlreadyValid);
 }
 
@@ -1748,10 +1748,10 @@ void DerivationGoal::startBuilder()
         printMsg(lvlChatty, format("setting up chroot environment in `%1%'") % chrootRootDir);
 
         if (mkdir(chrootRootDir.c_str(), 0750) == -1)
-            throw SysError(format("cannot create ‘%1%’") % chrootRootDir);
+            throw SysError(format("cannot create `%1%’") % chrootRootDir);
 
         if (chown(chrootRootDir.c_str(), 0, buildUser.getGID()) == -1)
-            throw SysError(format("cannot change ownership of ‘%1%’") % chrootRootDir);
+            throw SysError(format("cannot change ownership of `%1%’") % chrootRootDir);
 
         /* Create a writable /tmp in the chroot.  Many builders need
            this.  (Of course they should really respect $TMPDIR
@@ -1808,7 +1808,7 @@ void DerivationGoal::startBuilder()
         chmod_(chrootStoreDir, 01775);
 
         if (chown(chrootStoreDir.c_str(), 0, buildUser.getGID()) == -1)
-            throw SysError(format("cannot change ownership of ‘%1%’") % chrootStoreDir);
+            throw SysError(format("cannot change ownership of `%1%’") % chrootStoreDir);
 
         foreach (PathSet::iterator, i, inputPaths) {
             struct stat st;
@@ -2007,13 +2007,13 @@ void DerivationGoal::runChild()
                local to the namespace, though, so setting MS_PRIVATE
                does not affect the outside world. */
             if (mount(0, "/", 0, MS_REC|MS_PRIVATE, 0) == -1) {
-                throw SysError("unable to make ‘/’ private mount");
+                throw SysError("unable to make `/’ private mount");
             }
 
             /* Bind-mount chroot directory to itself, to treat it as a
                different filesystem from /, as needed for pivot_root. */
             if (mount(chrootRootDir.c_str(), chrootRootDir.c_str(), 0, MS_BIND, 0) == -1)
-                throw SysError(format("unable to bind mount ‘%1%’") % chrootRootDir);
+                throw SysError(format("unable to bind mount `%1%’") % chrootRootDir);
 
             /* Set up a nearly empty /dev, unless the user asked to
                bind-mount the host /dev. */
@@ -2423,7 +2423,7 @@ void DerivationGoal::registerOutputs()
                     if (pathExists(dst)) deletePath(dst);
                     if (rename(actualPath.c_str(), dst.c_str()))
                         throw SysError(format("renaming `%1%' to `%2%'") % actualPath % dst);
-                    throw Error(format("derivation `%1%' may not be deterministic: output `%2%' differs from ‘%3%’")
+                    throw Error(format("derivation `%1%' may not be deterministic: output `%2%' differs from `%3%’")
                         % drvPath % path % dst);
                 } else
                     throw Error(format("derivation `%1%' may not be deterministic: output `%2%' differs")
@@ -2501,11 +2501,11 @@ void DerivationGoal::registerOutputs()
                 Path prev = i->path + checkSuffix;
                 if (pathExists(prev))
                     throw NotDeterministic(
-                        format("output ‘%1%’ of ‘%2%’ differs from ‘%3%’ from previous round")
+                        format("output `%1%’ of `%2%’ differs from `%3%’ from previous round")
                         % i->path % drvPath % prev);
                 else
                     throw NotDeterministic(
-                        format("output ‘%1%’ of ‘%2%’ differs from previous round")
+                        format("output `%1%’ of `%2%’ differs from previous round")
                         % i->path % drvPath);
             }
         assert(false); // shouldn't happen
@@ -2518,7 +2518,7 @@ void DerivationGoal::registerOutputs()
             if (curRound < nrRounds) {
                 Path dst = i.second.path + checkSuffix;
                 if (rename(i.second.path.c_str(), dst.c_str()))
-                    throw SysError(format("renaming ‘%1%’ to ‘%2%’") % i.second.path % dst);
+                    throw SysError(format("renaming `%1%’ to `%2%’") % i.second.path % dst);
             }
         }
 
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 675d1ba66f..8b9c9bebd5 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -380,7 +380,7 @@ static void canonicalisePathMetaData_(const Path & path, uid_t fromUid, InodesSe
 
     /* Really make sure that the path is of a supported type. */
     if (!(S_ISREG(st.st_mode) || S_ISDIR(st.st_mode) || S_ISLNK(st.st_mode)))
-        throw Error(format("file ‘%1%’ has an unsupported type") % path);
+        throw Error(format("file `%1%’ has an unsupported type") % path);
 
     /* Fail if the file is not owned by the build user.  This prevents
        us from messing up the ownership/permissions of files
@@ -647,7 +647,7 @@ uint64_t LocalStore::queryValidPathId(const Path & path)
 {
     auto use(stmtQueryPathInfo.use()(path));
     if (!use.next())
-        throw Error(format("path ‘%1%’ is not valid") % path);
+        throw Error(format("path `%1%’ is not valid") % path);
     return use.getInt(0);
 }
 
diff --git a/nix/libstore/optimise-store.cc b/nix/libstore/optimise-store.cc
index eb303ab4c3..2662253b91 100644
--- a/nix/libstore/optimise-store.cc
+++ b/nix/libstore/optimise-store.cc
@@ -181,12 +181,12 @@ void LocalStore::optimisePath_(OptimiseStats & stats, const Path & path, InodeHa
     }
 
     if (st.st_size != stLink.st_size) {
-        printMsg(lvlError, format("removing corrupted link ‘%1%’") % linkPath);
+        printMsg(lvlError, format("removing corrupted link `%1%’") % linkPath);
         unlink(linkPath.c_str());
         goto retry;
     }
 
-    printMsg(lvlTalkative, format("linking ‘%1%’ to ‘%2%’") % path % linkPath);
+    printMsg(lvlTalkative, format("linking `%1%’ to `%2%’") % path % linkPath);
 
     /* Make the containing directory writable, but only if it's not
        the store itself (we don't want or need to mess with its
diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc
index 69f1c634a9..cf5099a4fe 100644
--- a/nix/libutil/util.cc
+++ b/nix/libutil/util.cc
@@ -202,7 +202,7 @@ Path readLink(const Path & path)
     if (rlsize == -1)
         throw SysError(format("reading symbolic link '%1%'") % path);
     else if (rlsize > st.st_size)
-        throw Error(format("symbolic link ‘%1%’ size overflow %2% > %3%")
+        throw Error(format("symbolic link `%1%’ size overflow %2% > %3%")
             % path % rlsize % st.st_size);
     return string(buf, st.st_size);
 }
-- 
2.31.1





Information forwarded to guix-patches <at> gnu.org:
bug#48501; Package guix-patches. (Tue, 18 May 2021 17:15:02 GMT) Full text and rfc822 format available.

Message #8 received at 48501 <at> debbugs.gnu.org (full text, mbox):

From: Maxime Devos <maximedevos <at> telenet.be>
To: Tobias Geerinckx-Rice <me <at> tobias.gr>, 48501 <at> debbugs.gnu.org
Subject: Re: [bug#48501] [PATCH] daemon: Replace Unicode single quotes with
 poor simulacra.
Date: Tue, 18 May 2021 19:13:56 +0200
[Message part 1 (text/plain, inline)]
Tobias Geerinckx-Rice via Guix-patches via schreef op di 18-05-2021 om 18:34 [+0200]:
> The correct ‘ and ’ are not considered word boundaries by some(?)
> terminal emulators like Alacritty, making double-click selection
> tedious.  Avoid them in untranslated strings like it's 1992.

N months later, while Tobias Geerinckx-Rice is asleep, a new patch appears:

Typographically Correct via Guix-patches [...]
> It isn't 1992 anymore; the proper ‘ and ’ quotation marks are now
> well-supported in software.  Use the typographically-correct ‘ and ’
> in the English translation instead of the unrelated characters ` and '.
>
> [...]

FWIW, double-click seems to work well in Emacs, Gnome Terminal.
Instead of working-around bugs, can ‘we’ fix the bug in Alacritty?
Or at least, open a bug report?

Unfortunately, GitHub's TOS and Privacy Policy were ... not great
last time I checked, though I can't find the ‘badness’ anymore except
for some weird section on ‘idemnity’.  In any case, there is an #alacritty
channel:

<https://github.com/alacritty/alacritty/blob/master/CONTRIBUTING.md#contact>

Greetings,
Maxime.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#48501; Package guix-patches. (Fri, 21 May 2021 10:29:02 GMT) Full text and rfc822 format available.

Message #11 received at 48501 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Tobias Geerinckx-Rice <me <at> tobias.gr>
Cc: 48501 <at> debbugs.gnu.org
Subject: Re: bug#48501: [PATCH] daemon: Replace Unicode single quotes with
 poor simulacra.
Date: Fri, 21 May 2021 12:28:27 +0200
Hi,

Tobias Geerinckx-Rice <me <at> tobias.gr> skribis:

> The correct ‘ and ’ are not considered word boundaries by some(?)
> terminal emulators like Alacritty, making double-click selection
> tedious.  Avoid them in untranslated strings like it's 1992.
>
> * nix/libstore/build.cc (UserLock::acquire)
> (DerivationGoal::haveDerivation, DerivationGoal::closureRepaired)
> (DerivationGoal::startBuilder, DerivationGoal::runChild)
> (DerivationGoal::registerOutputs): Replace ‘’ with `' in output.
> * nix/libstore/local-store.cc (canonicalisePathMetaData_)
> (LocalStore::queryValidPathId): Likewise.
> * nix/libstore/optimise-store.cc (LocalStore::optimisePath_): Likewise.
> * nix/libutil/util.cc (readLink): Likewise.
> ---
>  nix/libstore/build.cc          | 24 ++++++++++++------------
>  nix/libstore/local-store.cc    |  4 ++--
>  nix/libstore/optimise-store.cc |  4 ++--
>  nix/libutil/util.cc            |  2 +-
>  4 files changed, 17 insertions(+), 17 deletions(-)

No objection from me!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#48501; Package guix-patches. (Fri, 21 May 2021 14:24:01 GMT) Full text and rfc822 format available.

Message #14 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Thiago Jung Bauermann <bauermann <at> kolabnow.com>
To: 48501 <at> debbugs.gnu.org, guix-patches <at> gnu.org
Cc: Tobias Geerinckx-Rice <me <at> tobias.gr>
Subject: Re: [bug#48501] [PATCH] daemon: Replace Unicode single quotes with
 poor simulacra.
Date: Fri, 21 May 2021 11:23:20 -0300
Hello,

[ I'm just an onlooker on the Guix mailing lists, so don't assign much 
  weight to this comment. ]

Em terça-feira, 18 de maio de 2021, às 13:34:05 -03, Tobias Geerinckx-Rice 
via Guix-patches via escreveu:
> The correct ‘ and ’ are not considered word boundaries by some(?)
> terminal emulators like Alacritty, making double-click selection
> tedious.  Avoid them in untranslated strings like it's 1992.
> 
> * nix/libstore/build.cc (UserLock::acquire)
> (DerivationGoal::haveDerivation, DerivationGoal::closureRepaired)
> (DerivationGoal::startBuilder, DerivationGoal::runChild)
> (DerivationGoal::registerOutputs): Replace ‘’ with `' in output.
> * nix/libstore/local-store.cc (canonicalisePathMetaData_)
> (LocalStore::queryValidPathId): Likewise.
> * nix/libstore/optimise-store.cc (LocalStore::optimisePath_): Likewise.
> * nix/libutil/util.cc (readLink): Likewise.
> ---
>  nix/libstore/build.cc          | 24 ++++++++++++------------
>  nix/libstore/local-store.cc    |  4 ++--
>  nix/libstore/optimise-store.cc |  4 ++--
>  nix/libutil/util.cc            |  2 +-
>  4 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
> index 5697ae5a43..d6f9a15a46 100644
> --- a/nix/libstore/build.cc
> +++ b/nix/libstore/build.cc
> @@ -525,7 +525,7 @@ void UserLock::acquire()
>              int err = getgrouplist(pw->pw_name, pw->pw_gid,
>                  supplementaryGIDs.data(), &ngroups);
>              if (err == -1)
> -                throw Error(format("failed to get list of supplementary
> groups for ‘%1%’") % pw->pw_name); +                throw
> Error(format("failed to get list of supplementary groups for `%1%’") %
> pw->pw_name);

IMHO the backtick looks ugly when it tries to mimick the opening quote 
character. I think the text looks better if both quote characters are 
replaced with the straight quote character, e.g. '%1'.

-- 
Regards from the peanut gallery,
Thiago






Information forwarded to guix-patches <at> gnu.org:
bug#48501; Package guix-patches. (Fri, 21 May 2021 14:24:01 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 23 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.