annotate autoload/lawrencium/record.vim @ 150:7aa118f73e8c

Improve support for moved files in diff commands. Now we only check for moved files if we get an empty diff/cat output from the normal codepath. We also do that for both sides of a diff, and for the diff-summary commands.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 10 Oct 2020 09:30:27 -0700
parents 4d5f4233b04e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 function! lawrencium#record#init() abort
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 call lawrencium#add_command("Hgrecord call lawrencium#record#HgRecord(0)")
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 call lawrencium#add_command("Hgvrecord call lawrencium#record#HgRecord(1)")
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 function! lawrencium#record#HgRecord(split) abort
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 let l:repo = lawrencium#hg_repo()
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 let l:orig_buf = lawrencium#buffer_obj()
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 let l:tmp_path = l:orig_buf.GetName(':p') . '~record'
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 let l:diff_id = localtime()
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 " Start diffing on the current file, enable some commands.
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
14 call l:orig_buf.DefineCommand('Hgrecordabort', ':call lawrencium#record#HgRecord_Abort()')
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
15 call l:orig_buf.DefineCommand('Hgrecordcommit', ':call lawrencium#record#HgRecord_Execute()')
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 call lawrencium#diff#HgDiffThis(l:diff_id)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 setlocal foldmethod=diff
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 " Split the window and open the parent revision in the right or bottom
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 " window. Keep the current buffer in the left or top window... we're going
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 " to 'move' those changes into the parent revision.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 let l:cmd = 'keepalt rightbelow split '
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 if a:split == 1
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 let l:cmd = 'keepalt rightbelow vsplit '
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 let l:rev_path = l:repo.GetLawrenciumPath(expand('%:p'), 'rev', '')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 execute l:cmd . fnameescape(l:rev_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 " This new buffer with the parent revision is set as a Lawrencium buffer.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 " Let's save it to an actual file and reopen it like that (somehow we
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 " could probably do it with `:saveas` instead but we'd need to reset a
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 " bunch of other buffer settings, and Vim weirdly creates another backup
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 " buffer when you do that).
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 execute 'keepalt write! ' . fnameescape(l:tmp_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 execute 'keepalt edit! ' . fnameescape(l:tmp_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 setlocal bufhidden=delete
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 let b:mercurial_dir = l:repo.root_dir
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 let b:lawrencium_record_for = l:orig_buf.GetName(':p')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 let b:lawrencium_record_other_nr = l:orig_buf.nr
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 let b:lawrencium_record_commit_split = !a:split
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 call setbufvar(l:orig_buf.nr, 'lawrencium_record_for', '%')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 call setbufvar(l:orig_buf.nr, 'lawrencium_record_other_nr', bufnr('%'))
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 " Hookup the commit and abort commands.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 let l:rec_buf = lawrencium#buffer_obj()
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
46 call l:rec_buf.OnDelete('call lawrencium#record#HgRecord_Execute()')
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 call l:rec_buf.DefineCommand('Hgrecordcommit', ':quit')
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
48 call l:rec_buf.DefineCommand('Hgrecordabort', ':call lawrencium#record#HgRecord_Abort()')
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 call lawrencium#define_commands()
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 " Make it the other part of the diff.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 call lawrencium#diff#HgDiffThis(l:diff_id)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 setlocal foldmethod=diff
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 call l:rec_buf.SetVar('&filetype', l:orig_buf.GetVar('&filetype'))
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 call l:rec_buf.SetVar('&fileformat', l:orig_buf.GetVar('&fileformat'))
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 if g:lawrencium_record_start_in_working_buffer
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 wincmd p
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
62 function! lawrencium#record#HgRecord_Execute() abort
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 if exists('b:lawrencium_record_abort')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 " Abort flag is set, let's just cleanup.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65 let l:buf_nr = b:lawrencium_record_for == '%' ? bufnr('%') :
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66 \b:lawrencium_record_other_nr
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
67 call lawrencium#record#HgRecord_CleanUp(l:buf_nr)
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68 call lawrencium#error("abort: User requested aborting the record operation.")
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69 return
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 if !exists('b:lawrencium_record_for')
141
4d5f4233b04e Only set `v:errmsg` for real errors, not exceptions.
Ludovic Chabant <ludovic@chabant.com>
parents: 140
diff changeset
73 call lawrencium#throwerr("This doesn't seem like a record buffer, something's wrong!")
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75 if b:lawrencium_record_for == '%'
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76 " Switch to the 'recording' buffer's window.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77 let l:buf_obj = lawrencium#buffer_obj(b:lawrencium_record_other_nr)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
78 call l:buf_obj.MoveToFirstWindow()
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
80
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
81 " Setup the commit operation.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
82 let l:split = b:lawrencium_record_commit_split
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 let l:working_bufnr = b:lawrencium_record_other_nr
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84 let l:working_path = fnameescape(b:lawrencium_record_for)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 let l:record_path = fnameescape(expand('%:p'))
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86 let l:callbacks = [
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
87 \'call lawrencium#record#HgRecord_PostExecutePre('.l:working_bufnr.', "'.
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
88 \escape(l:working_path, '\').'", "'.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
89 \escape(l:record_path, '\').'")',
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
90 \'call lawrencium#record#HgRecord_PostExecutePost('.l:working_bufnr.', "'.
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
91 \escape(l:working_path, '\').'")',
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
92 \'call lawrencium#record#HgRecord_PostExecuteAbort('.l:working_bufnr.', "'.
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
93 \escape(l:record_path, '\').'")'
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
94 \]
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
95 call lawrencium#trace("Starting commit flow with callbacks: ".string(l:callbacks))
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
96 call lawrencium#commit#HgCommit(0, l:split, l:callbacks, b:lawrencium_record_for)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
98
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
99 function! lawrencium#record#HgRecord_PostExecutePre(working_bufnr, working_path, record_path) abort
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
100 " Just before committing, we switch the original file with the record
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101 " file... we'll restore things in the post-callback below.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
102 " We also switch on 'autoread' temporarily on the working buffer so that
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103 " we don't have an annoying popup in gVim.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
104 if has('dialog_gui')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105 call setbufvar(a:working_bufnr, '&autoread', 1)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
106 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 call lawrencium#trace("Backuping original file: ".a:working_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108 silent call rename(a:working_path, a:working_path.'~working')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 call lawrencium#trace("Committing recorded changes using: ".a:record_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 silent call rename(a:record_path, a:working_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111 sleep 200m
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
114 function! lawrencium#record#HgRecord_PostExecutePost(working_bufnr, working_path) abort
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115 " Recover the back-up file from underneath the buffer.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
116 call lawrencium#trace("Recovering original file: ".a:working_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117 silent call rename(a:working_path.'~working', a:working_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
118
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
119 " Clean up!
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
120 call lawrencium#record#HgRecord_CleanUp(a:working_bufnr)
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
121
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
122 " Restore default 'autoread'.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
123 if has('dialog_gui')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
124 set autoread<
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
125 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
126 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
127
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
128 function! lawrencium#record#HgRecord_PostExecuteAbort(working_bufnr, record_path) abort
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
129 call lawrencium#record#HgRecord_CleanUp(a:working_bufnr)
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
130 call lawrencium#trace("Delete discarded record file: ".a:record_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
131 silent call delete(a:record_path)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
132 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
133
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
134 function! lawrencium#record#HgRecord_Abort() abort
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
135 if b:lawrencium_record_for == '%'
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
136 " We're in the working directory buffer. Switch to the 'recording'
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
137 " buffer and quit.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
138 let l:buf_obj = lawrencium#buffer_obj(b:lawrencium_record_other_nr)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
139 call l:buf_obj.MoveToFirstWindow()
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
140 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
141 " We're now in the 'recording' buffer... set the abort flag and quit,
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
142 " which will run the execution (it will early out and clean things up).
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
143 let b:lawrencium_record_abort = 1
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
144 quit!
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
145 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
146
140
652a6f5df0f3 Fixed for broken things after the reorganization.
Ludovic Chabant <ludovic@chabant.com>
parents: 139
diff changeset
147 function! lawrencium#record#HgRecord_CleanUp(buf_nr) abort
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
148 " Get in the original buffer and clean the local commands/variables.
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
149 let l:buf_obj = lawrencium#buffer_obj(a:buf_nr)
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
150 call l:buf_obj.MoveToFirstWindow()
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
151 if !exists('b:lawrencium_record_for') || b:lawrencium_record_for != '%'
141
4d5f4233b04e Only set `v:errmsg` for real errors, not exceptions.
Ludovic Chabant <ludovic@chabant.com>
parents: 140
diff changeset
152 call lawrencium#throwerr("Cleaning up something else than the original buffer ".
139
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
153 \"for a record operation. That's suspiciously incorrect! ".
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
154 \"Aborting.")
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
155 endif
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
156 call l:buf_obj.DeleteCommand('Hgrecordabort')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
157 call l:buf_obj.DeleteCommand('Hgrecordcommit')
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
158 unlet b:lawrencium_record_for
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
159 unlet b:lawrencium_record_other_nr
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
160 endfunction
065625e1bb31 Split plugin file into multiple extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
161