##// END OF EJS Templates
contrib: make editmergeps able to work with notepad++...
Kostia Balytskyi -
r32345:a438f5a3 default
parent child Browse files
Show More
@@ -1,69 +1,79 b''
1 1 # A simple script for opening merge conflicts in editor
2 2 # A loose translation of contrib/editmerge to powershell
3 3 # Please make sure that both editmergeps.bat and editmerge.ps1 are available
4 4 # via %PATH% and use the following Mercurial settings to enable it
5 5 #
6 6 # [ui]
7 7 # editmergeps
8 8 # editmergeps.args=$output
9 9 # editmergeps.check=changed
10 10 # editmergeps.premerge=keep
11 11
12 12 $file=$args[0]
13 13
14 14 function Get-Lines
15 15 {
16 16 Select-String "^<<<<<<" $file | % {"$($_.LineNumber)"}
17 17 }
18 18
19 19 $ed = $Env:HGEDITOR;
20 20 if ($ed -eq $nil)
21 21 {
22 22 $ed = $Env:VISUAL;
23 23 }
24 24 if ($ed -eq $nil)
25 25 {
26 26 $ed = $Env:EDITOR;
27 27 }
28 28 if ($ed -eq $nil)
29 29 {
30 30 $ed = $(hg showconfig ui.editor);
31 31 }
32 32 if ($ed -eq $nil)
33 33 {
34 34 Write-Error "merge failed - unable to find editor"
35 35 exit 1
36 36 }
37 37
38 if (($ed -eq "vim") -or ($ed -eq "emacs") -or ($ed -eq "nano"))
38 if (($ed -eq "vim") -or ($ed -eq "emacs") -or `
39 ($ed -eq "nano") -or ($ed -eq "notepad++"))
39 40 {
40 41 $lines = Get-Lines
41 42 $firstline = if ($lines.Length -gt 0) { $lines[0] } else { $nil }
42 43 $previousline = $nil;
43 44
44 45
45 46 # open the editor to the first conflict until there are no more
46 47 # or the user stops editing the file
47 48 while (($firstline -ne $nil) -and ($firstline -ne $previousline))
48 49 {
50 if ($ed -eq "notepad++")
51 {
52 $linearg = "-n$firstline"
53 }
54 else
55 {
56 $linearg = "+$firstline"
57 }
58
49 59 Start-Process -Wait $ed $linearg,$file
50 60 $previousline = $firstline
51 61 $lines = Get-Lines
52 62 $firstline = if ($lines.Length -gt 0) { $lines[0] } else { $nil }
53 63 Write-Output "firstline is: $firstline, previousline is: $previousline"
54 64 }
55 65 }
56 66 else
57 67 {
58 68 $ "$ed" $file
59 69 }
60 70
61 71 $conflicts=Get-Lines
62 72 if ($conflicts.Length -ne 0)
63 73 {
64 74 Write-Output "merge failed - resolve the conflicts (line $conflicts) then use 'hg resolve --mark'"
65 75 exit 1
66 76 }
67 77
68 78 exit 0
69 79
General Comments 0
You need to be logged in to leave comments. Login now