color/progress: subclass ui instead of using wrapfunction (
issue2096)
This resolves the issue of hg cmd --mq not being colorized. This was due
to color wrapping only the instance of ui passed to dispatch._runcommand(),
which isn't the same ui object that mq.mqcommand() receives. After dispatch
calls extensions.loadall(), it makes sure any changes to ui.__class__ in
uisetup are propagated.
progress is updated to wrap ui in the same manner because wrapfunction
doesn't play well when ui.__class__ has been replaced by another extension
(orig will point to the old class method instead of color's).
# ==== setup LF repository ====
% hg init
adding .hgeol
adding native.txt
adding unix.txt
adding win.txt
% hg clone repo repo-LF
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
% printrepr.py native.txt
first
second
third
% printrepr.py unix.txt
first
second
third
% printrepr.py win.txt
first\r
second\r
third\r
% hg diff
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
% hg revert
reverting native.txt
reverting unix.txt
reverting win.txt
% hg import
applying p
% printrepr.py native.txt
first
third
% printrepr.py unix.txt
first
third
% printrepr.py win.txt
first\r
third\r
% hg diff -c tip
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
% hg clone repo repo-CRLF
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
% printrepr.py native.txt
first\r
second\r
third\r
% printrepr.py unix.txt
first
second
third
% printrepr.py win.txt
first\r
second\r
third\r
% hg diff
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
% hg revert
reverting native.txt
reverting unix.txt
reverting win.txt
% hg import
applying p
% printrepr.py native.txt
first\r
third\r
% printrepr.py unix.txt
first
third
% printrepr.py win.txt
first\r
third\r
% hg diff -c tip
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
# ==== setup CRLF repository ====
% hg init
adding .hgeol
adding native.txt
adding unix.txt
adding win.txt
% hg clone repo repo-LF
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
% printrepr.py native.txt
first
second
third
% printrepr.py unix.txt
first
second
third
% printrepr.py win.txt
first\r
second\r
third\r
% hg diff
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
% hg revert
reverting native.txt
reverting unix.txt
reverting win.txt
% hg import
applying p
% printrepr.py native.txt
first
third
% printrepr.py unix.txt
first
third
% printrepr.py win.txt
first\r
third\r
% hg diff -c tip
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
% hg clone repo repo-CRLF
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
% printrepr.py native.txt
first\r
second\r
third\r
% printrepr.py unix.txt
first
second
third
% printrepr.py win.txt
first\r
second\r
third\r
% hg diff
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
% hg revert
reverting native.txt
reverting unix.txt
reverting win.txt
% hg import
applying p
% printrepr.py native.txt
first\r
third\r
% printrepr.py unix.txt
first
third
% printrepr.py win.txt
first\r
third\r
% hg diff -c tip
diff --git a/native.txt b/native.txt
--- a/native.txt
+++ b/native.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r
diff --git a/unix.txt b/unix.txt
--- a/unix.txt
+++ b/unix.txt
@@ -1,3 +1,2 @@
first
-second
third
diff --git a/win.txt b/win.txt
--- a/win.txt
+++ b/win.txt
@@ -1,3 +1,2 @@
first\r
-second\r
third\r