Automatic DateTime Updates are Triggered Twice When File Doesn't Have Trailing Newline
See original GitHub issueDescribe the bug
When frontMatter.content.autoUpdateDate
is enabled and editing a document that doesn’t have a trailing newline, the automatic date updates are triggered twice. This doesn’t happen when the file does have a trailing new line. For example, after it updates twice (the newline is added for you), subsequent updates happen only once.
To Reproduce Steps to reproduce the behavior:
- Ensure
frontMatter.content.autoUpdateDate
is enabled. - Try to update a markdown (or MDX) file and wait for the debounce to trigger the autoupdate.
- Observe that the lastmod field is updated twice.
Expected behavior I’d expect the lastmod field to be updated only once.
Screenshots A gif which demonstrates the behavior:
VS Code Version
Version: 1.63.2 (Universal)
Commit: 899d46d82c4c95423fb7e10e68eba52050e30ba3
Date: 2021-12-15T09:37:28.172Z (2 wks ago)
Electron: 13.5.2
Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Darwin arm64 21.2.0
Extension Version
v5.9.0
Additional context This is likely due to the autoupdate logic defined here: https://github.com/estruyf/vscode-front-matter/blob/4d38a0881a9d43a4c1b4432c368618fa4590b844/src/commands/Article.ts#L243-L265
One way to solve this might be to adjust the change detection logic, but this may introduce new bugs.
Another possible solution would be to do away with change detection entirely-- moving away from vscode.workspace.onDidChangeTextDocument
to onWillSaveTextDocument
: https://code.visualstudio.com/api/references/vscode-api#3591 . This would move auto-updates to the pre-save lifecycle which would prevent the extension from updating the lastmod timestamp while the user is actively editing the document.
Issue Analytics
- State:
- Created 2 years ago
- Comments:10 (10 by maintainers)
Top GitHub Comments
I’ve merged your PR @farmerau, thanks again for the help on this one! 🙏
Included a check for the gray-matter new line as well. When the content does not contain a newline before the stringify function, it will remove it when included. Combined with your change, I think this will complete the issue.
Let us give it a try!