meedstrom / org-node

A notetaking system like Roam using Emacs Org-mode
GNU General Public License v3.0
96 stars 4 forks source link

File names under Windows #43

Closed CRTandKDU closed 1 week ago

CRTandKDU commented 1 week ago

More trivial annoyances when running org-node with the Windows versions of Emacs!

The persistent hash-tables: https://github.com/meedstrom/org-node/blob/52b1f1adcfd9aa0fc85e855138999c8bab1e012a/org-node.el#L498 and https://github.com/meedstrom/org-node/blob/52b1f1adcfd9aa0fc85e855138999c8bab1e012a/org-node.el#L502 are silently persisted to files of the same name by the persist package when starting/exiting Emacs.

However characters < and > are not authorized in the Windows file naming conventions. This causes errors in Emacs, for instance when exiting.

The fix is easy: renaming said persistent variables without the <>, although it breaks with the general use of <> in other (non persistent) defvar definitions in the org-node.el file. Best, CRTandKDU

meedstrom commented 1 week ago

Thanks for reporting!

I'm leaning towards this fix, since the persistence is not that important (it was requested due to someone on a very slow device #26):

(when (memq system-type '(windows-nt ms-dos))
  (persist-unpersist 'org-node--file<>mtime)
  (persist-unpersist 'org-node--file<>previews))

Does that prevent the errors for you?

EDIT: Hang on, there's a timer in fakeroam-fast-render-mode that needs fixing too.

meedstrom commented 1 week ago

Fixed in 4aff97b.

meedstrom commented 1 week ago

Sent an email to the maintainer of persist.el.

CRTandKDU commented 1 week ago

Well... if the persistence is in fact not required, why not use defvar rather than persist-defvar for those two variables.

Seems to me cleaner than having if dependencies on the operating system in the source code at this, and possibly other, points. Best, CRTandKDU

meedstrom commented 6 days ago

It is not required, but it is a bonus to user experience. A bonus that still reaches most users, since only a minority uses Windows AFAIK.

The proper place for a fix is inside persist.el, but they are taking their time responding. We can keep these exceptions until then.