annotate plugins/hghelp/hghelp.vim @ 18:203279635445 default tip

Adding in the voice note ability. It's not perfect but it is working.
author Luka Sitas <lsitas@avatarasoftware.com>
date Tue, 16 Dec 2025 11:03:27 -0500
parents 412c33afd395
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
1 let g:hg_format_command = ""
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
2
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
3
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
4 function! s:CommitWithFormat()
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
5 wa
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
6 if exists("g:hg_format_command") && !empty(g:hg_format_command)
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
7 execute '!'.g:hg_format_command
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
8 endif
8
9c80955f0c6e I think I got popups working on the commit
Luka Sitas <lsitas@avatarasoftware.com>
parents: 7
diff changeset
9 execute
18
203279635445 Adding in the voice note ability. It's not perfect but it is working.
Luka Sitas <lsitas@avatarasoftware.com>
parents: 17
diff changeset
10 call ExecuteCommand('hg addremove')
8
9c80955f0c6e I think I got popups working on the commit
Luka Sitas <lsitas@avatarasoftware.com>
parents: 7
diff changeset
11 call PopupCommand('hg commit')
6
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
12 endfunction
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
13
17
412c33afd395 Update for core and some minor fixes
Luka Sitas <lsitas@avatarasoftware.com>
parents: 15
diff changeset
14
6
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
15 function! s:OpenHgDiff(file)
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
16 let l:current_file = a:file !=# '' ? a:file : expand('%')
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
17 let l:filetype = &filetype
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
18 let l:temp_file = tempname()
7
34930197e9d4 Updating hg diff tool.
Luka Sitas <lsitas@avatarasoftware.com>
parents: 6
diff changeset
19 let l:command = 'hg cat -r . ' . l:current_file . ' > ' . l:temp_file
8
9c80955f0c6e I think I got popups working on the commit
Luka Sitas <lsitas@avatarasoftware.com>
parents: 7
diff changeset
20 call ExecuteCommand(l:command)
7
34930197e9d4 Updating hg diff tool.
Luka Sitas <lsitas@avatarasoftware.com>
parents: 6
diff changeset
21 execute 'tabe ' . l:temp_file
6
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
22 execute 'setfiletype' l:filetype
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
23 setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
24 execute 'vert diffsplit' l:current_file
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
25 endfunction
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
26
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
27 command HGDiff call s:OpenHgDiff(expand('%'))
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
28 command! HGCommit call <SID>HgCommitUI()
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
29 " command Commit call s:CommitWithFormat()
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
30 " map <C-k> :Commit<CR>
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
31 "
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
32
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
33 nnoremap <Leader>df :HGDiff<CR>
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
34 nnoremap <C-k> :HGCommit<CR>
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
35
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
36
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
37
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
38 " HG UI
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
39 function! s:HgCommitUI()
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
40 " Save current window to go back if needed
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
41 let l:save_winid = win_getid()
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
42
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
43 " Get hg status
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
44 let l:status = ExecuteCommand('hg status -T"[ ] {status} {path}\n"')
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
45 if v:shell_error != 0
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
46 echohl ErrorMsg
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
47 echom "hg status failed:"
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
48 echom l:status
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
49 echohl None
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
50 return
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
51 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
52 let l:lines = split(l:status, "\n")
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
53 if empty(l:lines)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
54 echo "No changes to commit."
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
55 return
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
56 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
57
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
58 " Open a new tab for this commit UI
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
59 tabnew
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
60 " Top window for file selection
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
61 enew
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
62 let b:hgcommit_type = 'filelist'
15
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
63 call setline(1, l:lines)
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
64 setlocal buftype=acwrite bufhidden=wipe nobuflisted noswapfile
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
65 setlocal nomodifiable
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
66 setlocal cursorline
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
67 nnoremap <silent> <buffer> <CR> :call <SID>ToggleHgFileSelection()<CR>
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
68 nnoremap <silent> <buffer> <leader>aa :call <SID>ToggleHgSelectAll()<CR>
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
69
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
70 " Split for commit message
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
71 belowright split
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
72 resize 10
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
73 enew
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
74 let b:hgcommit_type = 'message'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
75 setlocal buftype=acwrite bufhidden=wipe nobuflisted noswapfile
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
76 " Optional: initial comment
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
77 call setline(1, ['# Enter commit message above. Lines starting with # are ignored.'])
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
78 " Map to commit
15
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
79 nnoremap <silent> <buffer> <leader>c :call <SID>DoHgCommit()<CR>
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
80
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
81 " Go back to top window to start there
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
82 wincmd k
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
83 endfunction
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
84
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
85 function! s:FormatHgStatusLines(lines) abort
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
86 let l:out = []
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
87 for l in a:lines
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
88 if empty(l)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
89 continue
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
90 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
91 " Typical hg status line: "M path/to/file"
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
92 " We keep status char and the rest of line, but prepend [ ]
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
93 call add(l:out, l)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
94 endfor
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
95 return l:out
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
96 endfunction
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
97
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
98 function! s:ToggleHgFileSelection() abort
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
99 if get(b:, 'hgcommit_type', '') !=# 'filelist'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
100 return
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
101 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
102 setlocal modifiable
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
103 let l:lnum = line('.')
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
104 let l:line = getline(l:lnum)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
105 if l:line =~# '^\[ \]'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
106 " select
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
107 let l:line = substitute(l:line, '^\[ \]', '[x]', '')
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
108 elseif l:line =~# '^\[x\]'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
109 " unselect
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
110 let l:line = substitute(l:line, '^\[x\]', '[ ]', '')
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
111 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
112 call setline(l:lnum, l:line)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
113 setlocal nomodifiable
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
114 endfunction
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
115
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
116
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
117 function! s:ToggleHgSelectAll() abort
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
118 if get(b:, 'hgcommit_type', '') !=# 'filelist'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
119 return
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
120 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
121 setlocal modifiable
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
122 let l:lines = getline(1, '$')
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
123
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
124 " Decide if we're selecting all or deselecting all:
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
125 let l:any_unselected = 0
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
126 for l:l in l:lines
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
127 if l:l =~# '^\[ \]'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
128 let l:any_unselected = 1
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
129 break
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
130 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
131 endfor
6
3017fd33ad8b Better support for db tables.
Luka Sitas <lsitas@avatarasoftware.com>
parents:
diff changeset
132
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
133 let l:new = []
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
134 if l:any_unselected
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
135 " select all
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
136 for l:l in l:lines
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
137 if l:l =~# '^\[ \]'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
138 call add(l:new, substitute(l:l, '^\[ \]', '[x]', ''))
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
139 else
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
140 call add(l:new, l:l)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
141 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
142 endfor
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
143 else
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
144 " deselect all
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
145 for l:l in l:lines
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
146 if l:l =~# '^\[x\]'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
147 call add(l:new, substitute(l:l, '^\[x\]', '[ ]', ''))
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
148 else
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
149 call add(l:new, l:l)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
150 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
151 endfor
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
152 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
153
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
154 call setline(1, l:new)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
155 setlocal nomodifiable
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
156 endfunction
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
157
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
158
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
159 function! s:GetSelectedHgFiles() abort
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
160 " Find the filelist buffer in this tab
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
161 let l:files = []
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
162 for l:w in range(1, winnr('$'))
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
163 execute l:w . 'wincmd w'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
164 if get(b:, 'hgcommit_type', '') ==# 'filelist'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
165 let l:lines = getline(1, '$')
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
166 for l:L in l:lines
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
167 if l:L =~# '^\[x\] '
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
168 " Format: "[x] X path/to/file"
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
169 " Strip "[x] "
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
170 let l:rest = substitute(l:L, '^\[x\] ', '', '')
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
171 " First char is hg status, then space, then filename
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
172 if len(l:rest) >= 3
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
173 let l:file = strpart(l:rest, 2)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
174 call add(l:files, l:file)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
175 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
176 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
177 endfor
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
178 break
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
179 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
180 endfor
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
181 " Go back to original window (optional; this simple version just leaves you where you end)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
182 return l:files
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
183 endfunction
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
184
15
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
185 function! s:GetHgCommitMessage() abort
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
186 let l:msg_lines = []
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
187 for l:w in range(1, winnr('$'))
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
188 execute l:w . 'wincmd w'
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
189 if get(b:, 'hgcommit_type', '') ==# 'message'
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
190 " Get commit message lines, ignoring leading '#' lines
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
191 let l:all_lines = getline(1, '$')
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
192 let l:msg_lines = []
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
193 for l:L in l:all_lines
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
194 if l:L =~# '^#'
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
195 continue
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
196 endif
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
197 call add(l:msg_lines, l:L)
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
198 endfor
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
199 endif
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
200 endfor
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
201 return l:msg_lines
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
202 endfunction
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
203
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
204 function! s:DoHgCommit() abort
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
205 if get(b:, 'hgcommit_type', '') !=# 'message'
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
206 return
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
207 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
208
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
209 " Get selected files
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
210 let l:files = s:GetSelectedHgFiles()
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
211 if empty(l:files)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
212 echohl ErrorMsg
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
213 echom "No files selected for commit."
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
214 echohl None
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
215 return
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
216 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
217
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
218
15
7edd5f6fe136 This is another test of commiting with the message this time
Luka Sitas <lsitas@avatarasoftware.com>
parents: 14
diff changeset
219 let l:msg_lines = s:GetHgCommitMessage()
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
220 let l:msg = join(l:msg_lines, "\n")
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
221 if empty(l:msg)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
222 echohl ErrorMsg
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
223 echom "Commit message is empty."
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
224 echohl None
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
225 return
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
226 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
227
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
228 " Write commit message to temp file
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
229 let l:tmpfile = tempname()
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
230 call writefile(l:msg_lines, l:tmpfile)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
231
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
232 " Build command: hg commit -l tmpfile file1 file2 ...
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
233 let l:cmd = 'hg commit -l ' . shellescape(l:tmpfile)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
234 for l:f in l:files
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
235 let l:cmd .= ' ' . shellescape(l:f)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
236 endfor
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
237
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
238 " Run it
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
239 let l:out = ExecuteCommand(l:cmd)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
240 let l:status = v:shell_error
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
241
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
242 " Clean up temp file
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
243 call delete(l:tmpfile)
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
244
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
245 if l:status != 0
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
246 echohl ErrorMsg
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
247 echom "hg commit failed:"
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
248 echom l:out
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
249 echohl None
14
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
250 return
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
251 endif
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
252
14
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
253 echom "hg commit succeeded."
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
254
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
255 " Close only the commit UI buffers in this tab
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
256 try
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
257 for l:w in range(1, winnr('$'))
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
258 execute l:w . 'wincmd w'
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
259 if get(b:, 'hgcommit_type', '') ==# 'filelist'
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
260 bwipeout!
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
261 elseif get(b:, 'hgcommit_type', '') ==# 'message'
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
262 bwipeout!
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
263 endif
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
264 endfor
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
265 catch /^Vim\%((\a\+)\)\=:E/
6ee7fce1cba8 [x] M plugins/hghelp/hghelp.vim
Luka Sitas <lsitas@avatarasoftware.com>
parents: 13
diff changeset
266 endtry
13
027a85d0e60e [x] M .vimrc
Luka Sitas <lsitas@avatarasoftware.com>
parents: 9
diff changeset
267 endfunction