File tree Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -11,7 +11,8 @@ local Footnote = require('orgmode.objects.footnote')
11
11
local Memoize = require (' orgmode.utils.memoize' )
12
12
13
13
--- @class OrgFileMetadata
14
- --- @field mtime number
14
+ --- @field mtime number File modified time in nanoseconds
15
+ --- @field mtime_sec number File modified time in seconds
15
16
--- @field changedtick number
16
17
17
18
--- @class OrgFileOpts
@@ -48,6 +49,7 @@ function OrgFile:new(opts)
48
49
index = 0 ,
49
50
metadata = {
50
51
mtime = stat and stat .mtime .nsec or 0 ,
52
+ mtime_sec = stat and stat .mtime .sec or 0 ,
51
53
changedtick = opts .bufnr and vim .api .nvim_buf_get_changedtick (opts .bufnr ) or 0 ,
52
54
},
53
55
}
@@ -150,7 +152,11 @@ function OrgFile:is_modified()
150
152
if not stat then
151
153
return false
152
154
end
153
- return stat .mtime .nsec ~= self .metadata .mtime
155
+ if stat .mtime .nsec > 0 then
156
+ return stat .mtime .nsec ~= self .metadata .mtime
157
+ end
158
+
159
+ return stat .mtime .sec ~= self .metadata .mtime_sec
154
160
end
155
161
156
162
--- Parse the file and update the root node
@@ -901,6 +907,7 @@ function OrgFile:_update_lines(lines, bufnr)
901
907
local stat = vim .uv .fs_stat (self .filename )
902
908
if stat then
903
909
self .metadata .mtime = stat .mtime .nsec
910
+ self .metadata .mtime_sec = stat .mtime .sec
904
911
end
905
912
return self
906
913
end
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ describe('OrgFile', function()
20
20
assert .are .same (' * Headline 1' , file .content )
21
21
local stat = vim .uv .fs_stat (filename ) or {}
22
22
assert .are .same (stat .mtime .nsec , file .metadata .mtime )
23
+ assert .are .same (stat .mtime .sec , file .metadata .mtime_sec )
23
24
assert .are .same (0 , file .metadata .changedtick )
24
25
end )
25
26
@@ -39,6 +40,7 @@ describe('OrgFile', function()
39
40
assert .are .same (' * Headline 2' , file .content )
40
41
local stat = vim .uv .fs_stat (filename ) or {}
41
42
assert .are .same (stat .mtime .nsec , file .metadata .mtime )
43
+ assert .are .same (stat .mtime .sec , file .metadata .mtime_sec )
42
44
assert .are .same (0 , file .metadata .changedtick )
43
45
vim .cmd (' write!' )
44
46
file :reload_sync ()
You can’t perform that action at this time.
0 commit comments