Subject: Re: bug#28924: 25.3; All hg entries on single line possibly due to typo in vc-hg-root-log-format.

From: Oleksandr Gavenko <[email-masked]>
Date: Wed, 25 Oct 2017 00:37:56 +0300

On Tue, Oct 24, 2017 at 8:24 PM, Eli Zaretskii <[email-masked]> wrote:
>> All changelog entries placed on one line on vc-print-root-log for HG with \n
>> symbols between entries.
>>
>> When I changed:
>>
>>  (defcustom vc-hg-root-log-format
>>    `(,(concat "{rev}:{ifeq(branch, 'default','', '{branch}')}"
>>               ":{bookmarks}:{tags}:{author|person}"
>> -             " {date|shortdate} {desc|firstline}\\n")
>> +             " {date|shortdate} {desc|firstline}\n")
>>
>> it starts working fine.
>
> I tried to reproduce this, but couldn't.  Can you show a complete
> recipe, starting with "emacs -Q", and using some public hg repository
> one can clone?
>
Hi! I troubleshooted another issue recently and found that
CYGWIN=noglob option cause problem when arguments passed from native
Windows app (Emacs) to Cygwin app.

In our situation with my fix \n resolved to new line character code by
Emacs and Cygwin is happy with it. With double slashes single one is
passed (with "n") to Cygwin application and I see long:

1544:::tip:Oleksandr Gavenko 2017-10-23 Make function silent if file
is modified.\n1543::::Oleksandr Gavenko 2017-10-22 Prefer Python 3 for
interactive shell.\n1542::::Oleksandr Gavenko 2017-10-21 Use UTF-8 on
Windows fpr processes.\n1541::::Oleksandr Gavenko 2017-10-11 Set font
size depending on DPI.\n1540::::Oleksandr Gavenko 2017-10-10 Mistaken
s-TAB key binding broke my workflow.\n.......

That is native Emacs with Cygwin wrapper to Cygwin hg. It can be that
no one on a planet works like that. I believe that people use native
ports of HG/GIT/ag/ack/etc.

Actually everything with backslash escaping is broken when CYGWIN=noglob.

I live with:

+  ;; Workaround for Cygwin shell, when set 'CYGWIN=noglob'. By
default 'shell-quote-argument'
+  ;; quoted by double '\' chars this cause failure.
+  (defun shell-quote-argument (argument)
+    (concat "'" argument "'"))

since 2011-08-05 and this has only one drawback - when quoted string
contains single quote...

Most of the time it's not a problem. Sometime I forget about this and
debugging session refreshes my memory when I face a problem ))

Cygwin Emacs w32 is not stable to day long usage. Due to BLODA fork()
it sticks once or twice a day.

Ideally I would like to have Cygwin Emacs with native Windows exec()
instead of unstable fork(). Emacs isn't server app that is needed the
fork().

Native Emacs don't have pty (and M-x term) and lack of smooth
integration with Cygwin. I use cygwin-mount.el and wrappers with .exe
suffix around Cygwin scripts to increase Emacs usefulness...

Without CYGWIN=noglob Emacs fail on some vc-hg.el commands as commands
passes '{rev}' and curly braces from native application are expanded
(stripped) by Cygwin apps.

Windows is extremely unpleasant platform for Emacs usage. With stable
Cygwin Emacs w32 this can be changed ))

Now we have Cygwin Emacs with native Windows widgets (emacs-w32). In
Cygwin list maintainer responded that it would accept patch for
replacing gam_server.exe with native port to Windows API to detect
file changes.

I would like to replace each Emacs Cygwin fork() with exec(). I'll ask
on dev list if it's possible and acceptable when I have enough spare
time for experiment.