mercurial/ui.py
branchstable
changeset 44594 c23877cb25a5
parent 44126 e2278581b1c6
child 44661 e147748f750b
--- a/mercurial/ui.py	Fri Mar 20 10:04:13 2020 -0400
+++ b/mercurial/ui.py	Mon Mar 23 14:38:00 2020 -0700
@@ -1914,6 +1914,12 @@
             # instead default to E to plumb commit messages to
             # avoid confusion.
             editor = b'E'
+        elif pycompat.isdarwin:
+            # vi on darwin is POSIX compatible to a fault, and that includes
+            # exiting non-zero if you make any mistake when running an ex
+            # command. Proof: `vi -c ':unknown' -c ':qa'; echo $?` produces 1,
+            # while s/vi/vim/ doesn't.
+            editor = b'vim'
         else:
             editor = b'vi'
         return encoding.environ.get(b"HGEDITOR") or self.config(