update git status of file overwritten via fs.writeFileSync
pelallemant opened this issue · 3 comments
Prerequisites
- Put an X between the brackets on this line if you have done all of the following:
- Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/
- Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
- Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
- Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages
Description
I wrote a package which replaces the default TextEditor, by a graphical view in angularjs.
To update the file, I have 2 ways of doing it:
- directly from the package, using fs.writeFileSync to save it
- by executing a subprocess (spawn/exec) which will overwrite the file we are viewing
The problem is that when the file is updated by these 2 ways, it is not refreshed in the treeview (no git status).
If I use alt-tab or change the current ubuntu workspace and return to my atom window, then the treeview git status of the file is correctly changed.
Steps to Reproduce
- have a custom package
- In which the file URI is overwriten either by
var fs = require('fs'); fs.writeFileSync(uri, data);
, either by a subprocess called with spawn/exec functions.
Expected behavior:
I expect the file git status to be updated
Actual behavior:
The git status of the file isn't updated
Reproduces how often:
100%
Versions
Ubuntu 16.04
atom --version
Atom : 1.35.1
Electron: 2.0.18
Chrome : 61.0.3163.100
Node : 8.9.3
apm --version
apm 2.1.3
npm 6.2.0
node 8.9.3 x64
atom 1.35.1
python 2.7.12
git 2.7.4
Additional Information
Thanks for the report @pelallemant - I chatted with another maintainer and found that this behavior is a known issue on Linux (can you confirm if you see the same behavior on macOS or Windows?) but this work to switch over to a new file watching system may help: atom/atom#19244.
Thanks for the answer. I was already told to do that on atom's slack, and had already tried it.
It never worked by switching this mode.
I tried it again right now to ensure it doesn't work.
Each time I :
- use ctrl + alt + F5 to reload atom's window
- click on a button in my plugin, which edits the file
- look if the file in the treeview is updated: it is never shown as updated, until I use alt-tab two times
- go in the atom settings and change "File System Watcher" to the next value
- repeat again until no "File System Watcher" available
I tried with:
- Native Operating System API
- Experimental filesystem watching library
- Polling
- Emulated with atom events
None of them worked. With any of them, if I use alt-tab to focus another window, and alt-tab to refocus the atom's window, then the file appears as modified in the treeview.
My project is currently compatible only for Linux, I cannot test it right now on Windows nor macOS. I could try to make it work in windows soon.
but this work to switch over to a new file watching system may help: atom/atom#19244.
...
I was already told to do that on atom's slack, and had already tried it.
It never worked by switching this mode.
Just to clarify, from your issue report you mentioned you're on 1.35.1 - were you trying the different file system watcher settings from 1.35.1? If so, that won't include the work in atom/atom#19244, that's only available if you've built from source or use the nightly release for example.