* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version [not found] ` <<83hahfxkw9.fsf@gnu.org> @ 2013-06-03 16:21 ` Drew Adams 2013-06-03 16:37 ` Eli Zaretskii 2013-06-03 16:50 ` Achim Gratz 0 siblings, 2 replies; 13+ messages in thread From: Drew Adams @ 2013-06-03 16:21 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 14541 > > But I wonder if `ediff-buffers' could perhaps prevent the error/warning > > anyway. I don't know whether it is really the 8-char DOS file-name > > format that Cygwin objects to, but I think so. Maybe just having it > > use full Windows (not DOS) file names would be a fix? > > No. Cygwin w[h]ines about drive letters, not about the 8+3 aliases. So > using long file names will not help. You can verify that by invoking > Diff from the shell prompt. I see. That was not clear to me, but it seems you are right. > We could perhaps push "CYGWIN=nodosfilewarning" into the environment > when Emacs launches child processes. However, as these URLs indicate: > > http://stackoverflow.com/questions/9079982/cygwin-nodosfilewarning-doesnt- > help-cygwin-warning > http://superuser.com/questions/370545/behaviour-of-cygwins- > nodosfilewarning > > this solution is not reliable if there's some other Cygwin process > running on the same system. So I think the only reliable solution is > to put the above into the System environment variables, so that > whatever the first Cygwin process is, it always sees it. I read the postings at both of those URLs, but I do not see anywhere where they say what you say about reliability. What is a concrete example of a problem introduced by Emacs setting this env var? FWIW, I have added (setenv "CYGWIN" "nodosfilewarning") to setup-cygwin.el. That seems to take care of the problem without, AFAICT, creating other problems. But if you know of problems that it introduces, please let me know. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-03 16:21 ` bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version Drew Adams @ 2013-06-03 16:37 ` Eli Zaretskii 2013-06-03 16:50 ` Achim Gratz 1 sibling, 0 replies; 13+ messages in thread From: Eli Zaretskii @ 2013-06-03 16:37 UTC (permalink / raw) To: Drew Adams; +Cc: 14541 > Date: Mon, 3 Jun 2013 09:21:10 -0700 (PDT) > From: Drew Adams <drew.adams@oracle.com> > Cc: 14541@debbugs.gnu.org > > > We could perhaps push "CYGWIN=nodosfilewarning" into the environment > > when Emacs launches child processes. However, as these URLs indicate: > > > > http://stackoverflow.com/questions/9079982/cygwin-nodosfilewarning-doesnt- > > help-cygwin-warning > > http://superuser.com/questions/370545/behaviour-of-cygwins- > > nodosfilewarning > > > > this solution is not reliable if there's some other Cygwin process > > running on the same system. So I think the only reliable solution is > > to put the above into the System environment variables, so that > > whatever the first Cygwin process is, it always sees it. > > I read the postings at both of those URLs, but I do not see anywhere where > they say what you say about reliability. What is a concrete example of a > problem introduced by Emacs setting this env var? According to those URLs, only the first Cygwin process invoked on a system checks the CYGWIN environment variable. It leaves the result in a shared memory, which all the other Cygwin processes access. So if the first process was invoked outside of Emacs, and didn't see that variable, you will get the warning, even if we push the variable into the environment of our child programs. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-03 16:21 ` bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version Drew Adams 2013-06-03 16:37 ` Eli Zaretskii @ 2013-06-03 16:50 ` Achim Gratz 2013-06-03 20:15 ` Drew Adams 1 sibling, 1 reply; 13+ messages in thread From: Achim Gratz @ 2013-06-03 16:50 UTC (permalink / raw) To: 14541 Drew Adams writes: > I read the postings at both of those URLs, but I do not see anywhere where > they say what you say about reliability. What is a concrete example of a > problem introduced by Emacs setting this env var? It is not your business (or anyone else's but the user) to set that environment variable. Despite the appearance, setting things there is a lot more akin to giving an option on the kernel boot line. It only takes effect when the cygwin1.dll is first loaded and can't be changed later as long as at least once Cygwin process is runnning. > FWIW, I have added (setenv "CYGWIN" "nodosfilewarning") to setup-cygwin.el. > That seems to take care of the problem without, AFAICT, creating other > problems. But if you know of problems that it introduces, please let me know. Don't. You might override other settings that the user wants to take effect or at best produce a confusing no-op. You'd be much better off if you would use cygpath to convert to POSIX instead. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptations for KORG EX-800 and Poly-800MkII V0.9: http://Synth.Stromeko.net/Downloads.html#KorgSDada ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-03 16:50 ` Achim Gratz @ 2013-06-03 20:15 ` Drew Adams 2013-06-03 20:23 ` Eli Zaretskii 2013-06-05 20:17 ` Achim Gratz 0 siblings, 2 replies; 13+ messages in thread From: Drew Adams @ 2013-06-03 20:15 UTC (permalink / raw) To: Achim Gratz, 14541 > > I read the postings at both of those URLs, but I do not see anywhere where > > they say what you say about reliability. What is a concrete example of a > > problem introduced by Emacs setting this env var? > > It is not your business (or anyone else's but the user) to set that > environment variable. I am the user. Just trying to make the recent Cygwin versionn work with Emacs, like an older version did. > Despite the appearance, setting things there is a > lot more akin to giving an option on the kernel boot line. It only > takes effect when the cygwin1.dll is first loaded and can't be changed > later as long as at least once Cygwin process is runnning. Does not sound like a great design. But what do I know? > > FWIW, I have added (setenv "CYGWIN" "nodosfilewarning") to setup- > > cygwin.el. That seems to take care of the problem without, AFAICT, > > creating other problems. But if you know of problems that it > > introduces, please let me know. > > Don't. You might override other settings that the user wants to take > effect or at best produce a confusing no-op. You'd be much better off > if you would use cygpath to convert to POSIX instead. I'll leave it in setup-cygwin.el, at least for now. But I'll add a comment per what Eli said: that if come other Cygwin process started earlier and turned this off then turning it on here has no effect. So it sounds like even Emacs Dev (i.e., what this bug report is about) cannot fix this. If the env var was already looked up once then Emacs cannot change it. Sounds like the only good approach for an Emacs user on Windows, with Cygwin installed, is to set the env var at the system level. If that is the case (please confirm) then I'll mention that too in a setup-cygwin.el comment. (And we might want to mention that in the Emacs manual?) OK, I suppose that's not the only good approach. I guess you're suggesting another, for someone who is willing to change to POSIX: use the cygpath utility. Feel free to document that one (for Emacs users)... ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-03 20:15 ` Drew Adams @ 2013-06-03 20:23 ` Eli Zaretskii 2013-06-05 20:17 ` Achim Gratz 1 sibling, 0 replies; 13+ messages in thread From: Eli Zaretskii @ 2013-06-03 20:23 UTC (permalink / raw) To: Drew Adams; +Cc: 14541, Stromeko > Date: Mon, 3 Jun 2013 13:15:02 -0700 (PDT) > From: Drew Adams <drew.adams@oracle.com> > > Sounds like the only good approach for an Emacs user on Windows, with > Cygwin installed, is to set the env var at the system level. That's the only way, yes. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-03 20:15 ` Drew Adams 2013-06-03 20:23 ` Eli Zaretskii @ 2013-06-05 20:17 ` Achim Gratz 2013-06-05 23:55 ` Drew Adams 1 sibling, 1 reply; 13+ messages in thread From: Achim Gratz @ 2013-06-05 20:17 UTC (permalink / raw) To: 14541 Drew Adams writes: >> It is not your business (or anyone else's but the user) to set that >> environment variable. > > I am the user. Just trying to make the recent Cygwin versionn work with > Emacs, like an older version did. You are putting this file on EmacsWiki for others to use, aren't you? Secondly, that warning is there for a reason, so simply switching it off certainly isn't going to do the right thing for everyone. >> Don't. You might override other settings that the user wants to take >> effect or at best produce a confusing no-op. You'd be much better off >> if you would use cygpath to convert to POSIX instead. > > I'll leave it in setup-cygwin.el, at least for now. But I'll add a > comment per what Eli said: that if come other Cygwin process started > earlier and turned this off then turning it on here has no effect. Again: it simply doesn't work the way you think it works. The comment isn't helping that issue in any way. It is wrong to do this in setup-cygwin.el even when you want this environment variable to have exactly that value. It must already be set before Emacs gets started. > Sounds like the only good approach for an Emacs user on Windows, with > Cygwin installed, is to set the env var at the system level. If that > is the case (please confirm) then I'll mention that too in a > setup-cygwin.el comment. (And we might want to mention that in the > Emacs manual?) The only way to have it working reliably is to set it from the system panel, then log off and on again. I'm not sure what you want Emacs to document: the problem is that you are using non-Windows tools together with a Windows Emacs and you aren't correctly converting the different path conventions by these tools and Emacs. That is not a Cygwin problem and not an Emacs problem. > OK, I suppose that's not the only good approach. I guess you're > suggesting another, for someone who is willing to change to POSIX: > use the cygpath utility. Feel free to document that one (for Emacs > users)... Actually, emacs-w32 from Cygwin is much better in almost all regards and doesn't have the problem to begin with because it never uses any Windows path names. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Wavetables for the Terratec KOMPLEXER: http://Synth.Stromeko.net/Downloads.html#KomplexerWaves ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-05 20:17 ` Achim Gratz @ 2013-06-05 23:55 ` Drew Adams 2013-06-06 19:07 ` Achim Gratz 0 siblings, 1 reply; 13+ messages in thread From: Drew Adams @ 2013-06-05 23:55 UTC (permalink / raw) To: Achim Gratz, 14541 > You are putting this file on EmacsWiki for others to use, aren't you? Yes, I am. To use if they want to. I put a lot of stuff on Emacs Wiki for others to use. Some of it good, some of it no doubt not as good. And I will continue to do so, until I stop hacking Emacs. I put code (and doc and...) on the wiki for anyone who finds it helpful and wants to use it. Anyone who does not want to use it need not use it. Anyone who wants to use setup-cygwin.el as inspiration for their own, better setup file is welcome to copy & adapt it. They are also welcome to ignore it altogether. It is offered as is - no guarantees. You clearly have your idea of what can be helpful; I have mine. I know that this file has helped people. And I don't know of anyone who has been harmed by its existence. But no doubt we can do better - please do! > Secondly, that warning is there for a reason, so simply switching > it off certainly isn't going to do the right thing for everyone. No one says that switching it off pretends to do the right thing for everyone. (Like Cygwin, for that matter, or even Emacs...) Are you always this black & white? Surely, turning it off (or on) for everyone would *NOT* DTRT for everyone. Otherwise there would be no need for the switch. Where you go wrong (apparently) is assuming that setup-cygwin.el is for everyone. And (seemingly) that if it is not good for everyone then it cannot be good for anyone. > >> Don't. You might override other settings that the user wants to take > >> effect or at best produce a confusing no-op. You'd be much better off > >> if you would use cygpath to convert to POSIX instead. > > > > I'll leave it in setup-cygwin.el, at least for now. But I'll add a > > comment per what Eli said: that if come other Cygwin process started > > earlier and turned this off then turning it on here has no effect. > > Again: it simply doesn't work the way you think it works. I like how you are so certain of what I think. ;-) Should we judge your certainty about Cygwin and Emacs similarly? I hope not. > The comment isn't helping that issue in any way. I disagree. I believe there are others who, like me, use Cygwin mainly to provide `grep' etc. to Emacs. There are also people who do not even know how to set an env var in Windows, or might be hesitant to do so. For such a user, this file likely - typically - will get Emacs working with Cygwin. The real shame is that Cygwin no longer works with Emacs out of the box. From my perspective, which is admittedly limited wrt Cygwin, that's more or less a regression. (Perhaps I should have hung onto my old version of Cygwin...) And the thing about the env var being cached and looked up only by the first Cygwin process seems downright perverted. I repeat: from my limited and ignorant perspective. I have used Emacs on Windows with Cygwin for many moon (decades). Always in a limited way, but always with no particular problem. > It is wrong to do this in setup-cygwin.el even when you want this > environment variable to have exactly that value. Wrong? Feel free to provide an Emacs setup file that "DTRT for everyone" all the time. Feel free to point out, on the wiki or anywhere else, that setup-cygwin.el is wrong, bad, evil, or whatever. But especially, please do provide something better. I will be the first to use it and to point others to it, believe me! I posted setup-cygwin.el because it took me a while to piece together the stuff it contains, and I found that I needed it, in addition to cygwin-mount.el. I don't know or imagine that everyone needs it. I make no claim about its contents being 100% correct or complete. Far from it. It is a hack job born out of ignorance. It is just something I have used and still use. And I know it has helped others too, regardless of its probably being "wrong" in more than one way. And I'll be glad to use something better, when I come across it. > It must already be set before Emacs gets started. Not as far as I can see. Not for the case I use it for: using Cygwin almost exclusively with Emacs. In that use case, the first Cygwin process is launched by Emacs. I do understand that setting the env var is better (and is sure). I understand that it is needed if you expect to use Cygwin outside Emacs, to be sure that the first Cygwin process sees the same value. But setup-cygwin.el works for the simple Emacs-only use case - just in case you have not set the env var . > > Sounds like the only good approach for an Emacs user on Windows, with > > Cygwin installed, is to set the env var at the system level. If that > > is the case (please confirm) then I'll mention that too in a > > setup-cygwin.el comment. (And we might want to mention that in the > > Emacs manual?) > > The only way to have it working reliably is to set it from the > system panel, then log off and on again. Sounds right to me. And Eli too confirmed that. But wasn't it you, BTW, who said that an alternative (presumably working reliably) is to "use cygpath to convert to POSIX instead"? Eli was more definitive, seemingly rejecting that alternative you mentioned, when he confirmed "That's the _only_ way, yes." Of course, "working reliably" is a strange term for a workaround for such a hack (apparently) as this exceptional env var presents. It may work reliably, but it seems to be a weird way of doing things (the caching/one-time-lookup, I mean). (Thinking that it seems weird does not mean that I have a better idea for Cygwin, obviously. Presumably this hack was the best approach available.) > I'm not sure what you want Emacs to document: the problem is that you > are using non-Windows tools together with a Windows Emacs and you aren't > correctly converting the different path conventions by these tools and > Emacs. That is not a Cygwin problem and not an Emacs problem. Fair enough (though Cygwin is a Windows tool, AFAIK). Nevertheless, at least for the uses I make of Cygwin with Emacs, it seems to work fine (once the env var is set), and it has for decades (without the env var). Now, if I used Cygwin as a *developer* on Windows (outside Emacs), that might be different, as Eli has pointed out in the past. I don't doubt that there is an impedance mismatch between Windows Emacs and Cygwin, if you look hard enough. For what I do, however, I haven't run into it, so far. I make no claim for anyone else. > > OK, I suppose that's not the only good approach. I guess you're > > suggesting another, for someone who is willing to change to POSIX: > > use the cygpath utility. Feel free to document that one (for Emacs > > users)... > > Actually, emacs-w32 from Cygwin is much better in almost all regards and > doesn't have the problem to begin with because it never uses any Windows > path names. Aha - that's where you're coming from. Thanks, but no thanks. I will stick with vanilla GNU Emacs. (Call me wrong.) But I am sure both you and Eli are right that the combination of Windows Emacs with Cygwin is not ideal for either. It happens that it works well enough for me, and it's the package I prefer - so far. Sorry about that. IMO, it would be good if Cygwin played better with Windows Emacs. But I have no idea how feasible or difficult that would be to realize. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-05 23:55 ` Drew Adams @ 2013-06-06 19:07 ` Achim Gratz 2013-06-06 20:21 ` Eli Zaretskii 2013-06-06 20:42 ` Drew Adams 0 siblings, 2 replies; 13+ messages in thread From: Achim Gratz @ 2013-06-06 19:07 UTC (permalink / raw) To: 14541 Drew Adams writes: >> It is wrong to do this in setup-cygwin.el even when you want this >> environment variable to have exactly that value. > > Wrong? Feel free to provide an Emacs setup file that "DTRT for > everyone" all the time. As I've been unsuccessfully trying to explain to you, there can be no such setup file. > But especially, please do provide something better. I will be > the first to use it and to point others to it, believe me! I think I've already said that if you want to set that option and be sure it takes effect, you need to do it from the system panel. That's what you might put in a comment in setup-cygwin.el, without trying to produce unknown and potentially undefined or unwanted effects by setting the CYGWIN environment variable. >> It must already be set before Emacs gets started. > > Not as far as I can see. Not for the case I use it for: using > Cygwin almost exclusively with Emacs. In that use case, the > first Cygwin process is launched by Emacs. There never was a dispute that it didn't solved your problem. In general however, you can't even be sure that Emacs starts the first Cygwin process after it gets to setup-cygwin.el and if you install Cygwin to provide services there will never be any point in time where there is no Cygwin process while your session is active. > But wasn't it you, BTW, who said that an alternative (presumably > working reliably) is to "use cygpath to convert to POSIX instead"? Yes. That warning says "please do not hand a Windows path to Cygwin", so you would never see this warning or need an option to suppress it if you would use POSIX paths only. The tool to convert between the two representations is cygpath. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Factory and User Sound Singles for Waldorf rackAttack: http://Synth.Stromeko.net/Downloads.html#WaldorfSounds ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-06 19:07 ` Achim Gratz @ 2013-06-06 20:21 ` Eli Zaretskii 2022-02-13 9:26 ` Lars Ingebrigtsen 2013-06-06 20:42 ` Drew Adams 1 sibling, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2013-06-06 20:21 UTC (permalink / raw) To: Achim Gratz; +Cc: 14541 > From: Achim Gratz <Stromeko@nexgo.de> > Date: Thu, 06 Jun 2013 21:07:08 +0200 > > Yes. That warning says "please do not hand a Windows path to Cygwin", > so you would never see this warning or need an option to suppress it if > you would use POSIX paths only. The tool to convert between the two > representations is cygpath. That's unworkable. There's no way to set up Emacs to use cygpath in every place it passes a file name to external programs. Especially if some of those programs are native Windows executables, not Cygwin programs. So no, there's no way at all to arrange for Cygwin programs invoked from a native Emacs to always get Posix-style file names. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-06 20:21 ` Eli Zaretskii @ 2022-02-13 9:26 ` Lars Ingebrigtsen 0 siblings, 0 replies; 13+ messages in thread From: Lars Ingebrigtsen @ 2022-02-13 9:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 14541, Achim Gratz Eli Zaretskii <eliz@gnu.org> writes: > That's unworkable. There's no way to set up Emacs to use cygpath in > every place it passes a file name to external programs. Especially if > some of those programs are native Windows executables, not Cygwin > programs. > > So no, there's no way at all to arrange for Cygwin programs invoked > from a native Emacs to always get Posix-style file names. Skimming this thread, it seems like there's nothing actionable here on the Emacs side, so I'm therefore closing this bug report. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-06 19:07 ` Achim Gratz 2013-06-06 20:21 ` Eli Zaretskii @ 2013-06-06 20:42 ` Drew Adams 1 sibling, 0 replies; 13+ messages in thread From: Drew Adams @ 2013-06-06 20:42 UTC (permalink / raw) To: Achim Gratz, 14541 > As I've been unsuccessfully trying to explain to you, there can be no > such setup file. And yet there is such a file. > > But especially, please do provide something better. I will be > > the first to use it and to point others to it, believe me! > > I think I've already said that if you want to set that option and be > sure it takes effect, you need to do it from the system panel. I think I've already said that I recognize that. > That's what you might put in a comment in setup-cygwin.el, Which is just what I did. Here is the comment, in case you have not already taken a look: ;;; Without this env var setting, Cygwin causes `ediff-buffers', at ;;; least, to raise an error. Making this setting here might have no ;;; effect, as the env var is checked only by the first Cygwin process ;;; invoked during your Windows session. For best results, set this ;;; env var globally, in Windows itself. An alternative might be to ;;; use `cygpath' to change from MS Windows file names to POSIX. I might even cite this bug report there, so users can get more detail. > without trying to produce unknown and potentially undefined or > unwanted effects by setting the CYGWIN environment variable. Sorry, bug I want to set that variable. In the file, just in case it is not set yet. > >> It must already be set before Emacs gets started. > > > > Not as far as I can see. Not for the case I use it for: using > > Cygwin almost exclusively with Emacs. In that use case, the > > first Cygwin process is launched by Emacs. > > There never was a dispute that it didn't solved your problem. In > general however, you can't even be sure that Emacs starts the first > Cygwin process after it gets to setup-cygwin.el and if you install > Cygwin to provide services there will never be any point in time where > there is no Cygwin process while your session is active. Maybe so. There was never any dispute that setting the var in this file is not a panacea. > > But wasn't it you, BTW, who said that an alternative (presumably > > working reliably) is to "use cygpath to convert to POSIX instead"? > > Yes. That warning says "please do not hand a Windows path to Cygwin", > so you would never see this warning or need an option to suppress it if > you would use POSIX paths only. The tool to convert between the two > representations is cygpath. You claimed explicitly that the _only_ solution is to set the env var at the system level. And yet you also claim that there is another solution: convert to POSIX using cygpath. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version @ 2013-06-03 4:12 Drew Adams 2013-06-03 15:40 ` Eli Zaretskii 0 siblings, 1 reply; 13+ messages in thread From: Drew Adams @ 2013-06-03 4:12 UTC (permalink / raw) To: 14541 I used to use an old (2007?) version of Cygwin. I just installed the latest Cygwin verion on Windows 7. I use the same setup for Emacs as previously (cygwin-mount.el, then setup-cygwin.el, both from Emacs Wiki). Previously, Cygwin handled MS DOS-style file names OK. But `ediff-buffers' passes such file names for its temporary files, and the latest version of Cygwin (on Windows 7 at least) does not, by default, handle such file names: it issues a warning, which means that Emacs raises an error and prints the Cygwin warning. This makes `ediff-buffers' unusable. There is a workaround: set env var CYGWIN to `nodosfilewarning'. I have added that to file setup-cygwin.el as a workaround. But I wonder if `ediff-buffers' could perhaps prevent the error/warning anyway. I don't know whether it is really the 8-char DOS file-name format that Cygwin objects to, but I think so. Maybe just having it use full Windows (not DOS) file names would be a fix? This is the error shown in buffer *ediff-errors*: cygwin warning: MS-DOS style path detected: c:/Users/XXXXXX~1.XXX/AppData/Local/Temp/foo.el Preferred POSIX equivalent is: /cygdrive/c/Users/XXXXXX~1.XXX/AppData/Local/Temp/foo.el CYGWIN environment variable option "nodosfilewarning" turns off this warning. Consult the user's guide for more details about POSIX paths: http://cygwin.com/cygwin-ug-net/using.html#using-pathnames And this is the *Backtrace* I see: Debugger entered--Lisp error: (error "Errors in diff output. Diff output is in #<buffer *ediff-diff*>") signal(error ("Errors in diff output. Diff output is in #<buffer *ediff-diff*>")) error("Errors in diff output. Diff output is in %S" #<buffer *ediff-diff*>) ediff-prepare-error-list("^\\([0-9,]+[acd][0-9,]+ ?$\\|[<>] \\|---\\|.*Warning *:\\|.*No +newline\\|.*missing +newline\\|^ ?$\\)" #<buffer *ediff-diff*>) ediff-setup-diff-regions("c:/Users/XXXXXX~1.XXX/AppData/Local/Temp/foo.el" "c:/Users/XXXXXX~1.XXX/AppData/Local/Temp/bar.el" nil) ediff-setup(#<buffer foo.el> "c:/Users/XXXXXX~1.XXX/AppData/Local/Temp/foo.el" #<buffer bar.el> "c:/Users/XXXXXX~1.XXX/AppData/Local/Temp/bar.el" nil nil ((lambda nil (delete-file "c:/Users/XXXXXX~1.XXX/AppData/Local/Temp/foo.el") (delete-file "c:/Users/XXXXXX~1.XXX/AppData/Local/Temp/bar.el") (if (stringp nil) (delete-file nil)))) ((ediff-job-name . ediff-buffers)) nil) ediff-buffers-internal("foo.el" "bar.el" nil nil ediff-buffers) ediff-buffers("foo.el" "bar.el") call-interactively(ediff-buffers nil nil) command-execute(ediff-buffers) In GNU Emacs 24.3.50.1 (i386-mingw-nt6.1.7601) of 2013-06-01 on ODIEONE Bzr revision: 112809 xfq.free@gmail.com-20130601123514-of64qkop6z48i3ko Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --with-gcc (4.7) --no-opt --enable-checking --cflags -IC:/Devel/emacs/build/include --ldflags -LC:/Devel/emacs/build/lib' ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version 2013-06-03 4:12 Drew Adams @ 2013-06-03 15:40 ` Eli Zaretskii 0 siblings, 0 replies; 13+ messages in thread From: Eli Zaretskii @ 2013-06-03 15:40 UTC (permalink / raw) To: Drew Adams; +Cc: 14541 > Date: Sun, 2 Jun 2013 21:12:40 -0700 (PDT) > From: Drew Adams <drew.adams@oracle.com> > > I used to use an old (2007?) version of Cygwin. I just > installed the latest Cygwin verion on Windows 7. I use the same setup > for Emacs as previously (cygwin-mount.el, then setup-cygwin.el, both > from Emacs Wiki). > > Previously, Cygwin handled MS DOS-style file names OK. > But `ediff-buffers' passes such file names for its temporary files, > and the latest version of Cygwin (on Windows 7 at least) does not, > by default, handle such file names: it issues a warning, which means > that Emacs raises an error and prints the Cygwin warning. > > This makes `ediff-buffers' unusable. There is a workaround: set env var > CYGWIN to `nodosfilewarning'. I have added that to file setup-cygwin.el > as a workaround. May I again urge you to consider switching to MinGW ports instead? I can point to those I use for years, which means they are reliable. > But I wonder if `ediff-buffers' could perhaps prevent the error/warning > anyway. I don't know whether it is really the 8-char DOS file-name > format that Cygwin objects to, but I think so. Maybe just having it > use full Windows (not DOS) file names would be a fix? No. Cygwin wines about drive letters, not about the 8+3 aliases. So using long file names will not help. You can verify that by invoking Diff from the shell prompt. We could perhaps push "CYGWIN=nodosfilewarning" into the environment when Emacs launches child processes. However, as these URLs indicate: http://stackoverflow.com/questions/9079982/cygwin-nodosfilewarning-doesnt-help-cygwin-warning http://superuser.com/questions/370545/behaviour-of-cygwins-nodosfilewarning this solution is not reliable if there's some other Cygwin process running on the same system. So I think the only reliable solution is to put the above into the System environment variables, so that whatever the first Cygwin process is, it always sees it. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-02-13 9:26 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <<7d461150-fe55-4278-bb7a-22fc24811364@default> [not found] ` <<83hahfxkw9.fsf@gnu.org> 2013-06-03 16:21 ` bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version Drew Adams 2013-06-03 16:37 ` Eli Zaretskii 2013-06-03 16:50 ` Achim Gratz 2013-06-03 20:15 ` Drew Adams 2013-06-03 20:23 ` Eli Zaretskii 2013-06-05 20:17 ` Achim Gratz 2013-06-05 23:55 ` Drew Adams 2013-06-06 19:07 ` Achim Gratz 2013-06-06 20:21 ` Eli Zaretskii 2022-02-13 9:26 ` Lars Ingebrigtsen 2013-06-06 20:42 ` Drew Adams 2013-06-03 4:12 Drew Adams 2013-06-03 15:40 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git 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 read-only IMAP folder(s) and NNTP newsgroup(s).