aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Carter2016-01-30 22:09:28 -0500
committerMatthew Carter2016-01-30 22:09:28 -0500
commit4699c325be1fa5daa258719a935f40b36664fcf2 (patch)
tree3d88dfd9a52485ae7bc37dfffc34ee6655d446ce
parent440a35f6b5770596981189ad65eaa5750b901908 (diff)
parentbdfee01a6567b9f08f82bc84d1196e6cb62587ca (diff)
downloademacs-4699c325be1fa5daa258719a935f40b36664fcf2.tar.gz
emacs-4699c325be1fa5daa258719a935f40b36664fcf2.zip
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
-rw-r--r--lisp/vc/smerge-mode.el179
-rw-r--r--src/lastfile.c4
2 files changed, 106 insertions, 77 deletions
diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index 489ece81bec..5198624ea7f 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -67,34 +67,34 @@
67 (append '("-d" "-b") 67 (append '("-d" "-b")
68 (if (listp diff-switches) diff-switches (list diff-switches))) 68 (if (listp diff-switches) diff-switches (list diff-switches)))
69 "A list of strings specifying switches to be passed to diff. 69 "A list of strings specifying switches to be passed to diff.
70Used in `smerge-diff-base-mine' and related functions." 70Used in `smerge-diff-base-upper' and related functions."
71 :type '(repeat string)) 71 :type '(repeat string))
72 72
73(defcustom smerge-auto-leave t 73(defcustom smerge-auto-leave t
74 "Non-nil means to leave `smerge-mode' when the last conflict is resolved." 74 "Non-nil means to leave `smerge-mode' when the last conflict is resolved."
75 :type 'boolean) 75 :type 'boolean)
76 76
77(defface smerge-mine 77(defface smerge-upper
78 '((((class color) (min-colors 88) (background light)) 78 '((((class color) (min-colors 88) (background light))
79 :background "#ffdddd") 79 :background "#ffdddd")
80 (((class color) (min-colors 88) (background dark)) 80 (((class color) (min-colors 88) (background dark))
81 :background "#553333") 81 :background "#553333")
82 (((class color)) 82 (((class color))
83 :foreground "red")) 83 :foreground "red"))
84 "Face for your code.") 84 "Face for the `upper' version of a conflict.")
85(define-obsolete-face-alias 'smerge-mine-face 'smerge-mine "22.1") 85(define-obsolete-face-alias 'smerge-mine 'smerge-upper "25.2")
86(defvar smerge-mine-face 'smerge-mine) 86(defvar smerge-upper-face 'smerge-upper)
87 87
88(defface smerge-other 88(defface smerge-lower
89 '((((class color) (min-colors 88) (background light)) 89 '((((class color) (min-colors 88) (background light))
90 :background "#ddffdd") 90 :background "#ddffdd")
91 (((class color) (min-colors 88) (background dark)) 91 (((class color) (min-colors 88) (background dark))
92 :background "#335533") 92 :background "#335533")
93 (((class color)) 93 (((class color))
94 :foreground "green")) 94 :foreground "green"))
95 "Face for the other code.") 95 "Face for the `lower' version of a conflict.")
96(define-obsolete-face-alias 'smerge-other-face 'smerge-other "22.1") 96(define-obsolete-face-alias 'smerge-other 'smerge-lower "25.2")
97(defvar smerge-other-face 'smerge-other) 97(defvar smerge-lower-face 'smerge-lower)
98 98
99(defface smerge-base 99(defface smerge-base
100 '((((class color) (min-colors 88) (background light)) 100 '((((class color) (min-colors 88) (background light))
@@ -149,16 +149,18 @@ Used in `smerge-diff-base-mine' and related functions."
149 ("r" . smerge-resolve) 149 ("r" . smerge-resolve)
150 ("a" . smerge-keep-all) 150 ("a" . smerge-keep-all)
151 ("b" . smerge-keep-base) 151 ("b" . smerge-keep-base)
152 ("o" . smerge-keep-other) 152 ("o" . smerge-keep-lower) ; for the obsolete keep-other
153 ("m" . smerge-keep-mine) 153 ("l" . smerge-keep-lower)
154 ("m" . smerge-keep-upper) ; for the obsolete keep-mine
155 ("u" . smerge-keep-upper)
154 ("E" . smerge-ediff) 156 ("E" . smerge-ediff)
155 ("C" . smerge-combine-with-next) 157 ("C" . smerge-combine-with-next)
156 ("R" . smerge-refine) 158 ("R" . smerge-refine)
157 ("\C-m" . smerge-keep-current) 159 ("\C-m" . smerge-keep-current)
158 ("=" . ,(make-sparse-keymap "Diff")) 160 ("=" . ,(make-sparse-keymap "Diff"))
159 ("=<" "base-mine" . smerge-diff-base-mine) 161 ("=<" "base-upper" . smerge-diff-base-upper)
160 ("=>" "base-other" . smerge-diff-base-other) 162 ("=>" "base-lower" . smerge-diff-base-lower)
161 ("==" "mine-other" . smerge-diff-mine-other)) 163 ("==" "upper-lower" . smerge-diff-upper-lower))
162 "The base keymap for `smerge-mode'.") 164 "The base keymap for `smerge-mode'.")
163 165
164(defcustom smerge-command-prefix "\C-c^" 166(defcustom smerge-command-prefix "\C-c^"
@@ -196,19 +198,19 @@ Used in `smerge-diff-base-mine' and related functions."
196 "--" 198 "--"
197 ["Revert to Base" smerge-keep-base :help "Revert to base version" 199 ["Revert to Base" smerge-keep-base :help "Revert to base version"
198 :active (smerge-check 2)] 200 :active (smerge-check 2)]
199 ["Keep Other" smerge-keep-other :help "Keep `other' version" 201 ["Keep Upper" smerge-keep-upper :help "Keep `upper' version"
200 :active (smerge-check 3)]
201 ["Keep Yours" smerge-keep-mine :help "Keep your version"
202 :active (smerge-check 1)] 202 :active (smerge-check 1)]
203 ["Keep Lower" smerge-keep-lower :help "Keep `lower' version"
204 :active (smerge-check 3)]
203 "--" 205 "--"
204 ["Diff Base/Mine" smerge-diff-base-mine 206 ["Diff Base/Upper" smerge-diff-base-upper
205 :help "Diff `base' and `mine' for current conflict" 207 :help "Diff `base' and `upper' for current conflict"
206 :active (smerge-check 2)] 208 :active (smerge-check 2)]
207 ["Diff Base/Other" smerge-diff-base-other 209 ["Diff Base/Lower" smerge-diff-base-lower
208 :help "Diff `base' and `other' for current conflict" 210 :help "Diff `base' and `lower' for current conflict"
209 :active (smerge-check 2)] 211 :active (smerge-check 2)]
210 ["Diff Mine/Other" smerge-diff-mine-other 212 ["Diff Upper/Lower" smerge-diff-upper-lower
211 :help "Diff `mine' and `other' for current conflict" 213 :help "Diff `upper' and `lower' for current conflict"
212 :active (smerge-check 1)] 214 :active (smerge-check 1)]
213 "--" 215 "--"
214 ["Invoke Ediff" smerge-ediff 216 ["Invoke Ediff" smerge-ediff
@@ -223,7 +225,7 @@ Used in `smerge-diff-base-mine' and related functions."
223 )) 225 ))
224 226
225(easy-menu-define smerge-context-menu nil 227(easy-menu-define smerge-context-menu nil
226 "Context menu for mine area in `smerge-mode'." 228 "Context menu for upper area in `smerge-mode'."
227 '(nil 229 '(nil
228 ["Keep Current" smerge-keep-current :help "Use current (at point) version"] 230 ["Keep Current" smerge-keep-current :help "Use current (at point) version"]
229 ["Kill Current" smerge-kill-current :help "Remove current (at point) version"] 231 ["Kill Current" smerge-kill-current :help "Remove current (at point) version"]
@@ -234,9 +236,9 @@ Used in `smerge-diff-base-mine' and related functions."
234 236
235(defconst smerge-font-lock-keywords 237(defconst smerge-font-lock-keywords
236 '((smerge-find-conflict 238 '((smerge-find-conflict
237 (1 smerge-mine-face prepend t) 239 (1 smerge-upper-face prepend t)
238 (2 smerge-base-face prepend t) 240 (2 smerge-base-face prepend t)
239 (3 smerge-other-face prepend t) 241 (3 smerge-lower-face prepend t)
240 ;; FIXME: `keep' doesn't work right with syntactic fontification. 242 ;; FIXME: `keep' doesn't work right with syntactic fontification.
241 (0 smerge-markers-face keep) 243 (0 smerge-markers-face keep)
242 (4 nil t t) 244 (4 nil t t)
@@ -246,7 +248,7 @@ Used in `smerge-diff-base-mine' and related functions."
246(defconst smerge-begin-re "^<<<<<<< \\(.*\\)\n") 248(defconst smerge-begin-re "^<<<<<<< \\(.*\\)\n")
247(defconst smerge-end-re "^>>>>>>> \\(.*\\)\n") 249(defconst smerge-end-re "^>>>>>>> \\(.*\\)\n")
248(defconst smerge-base-re "^||||||| \\(.*\\)\n") 250(defconst smerge-base-re "^||||||| \\(.*\\)\n")
249(defconst smerge-other-re "^=======\n") 251(defconst smerge-lower-re "^=======\n")
250 252
251(defvar smerge-conflict-style nil 253(defvar smerge-conflict-style nil
252 "Keep track of which style of conflict is in use. 254 "Keep track of which style of conflict is in use.
@@ -267,7 +269,7 @@ Can be nil if the style is undecided, or else:
267 (if diff-auto-refine-mode 269 (if diff-auto-refine-mode
268 (condition-case nil (smerge-refine) (error nil)))) 270 (condition-case nil (smerge-refine) (error nil))))
269 271
270(defconst smerge-match-names ["conflict" "mine" "base" "other"]) 272(defconst smerge-match-names ["conflict" "upper" "base" "lower"])
271 273
272(defun smerge-ensure-match (n) 274(defun smerge-ensure-match (n)
273 (unless (match-end n) 275 (unless (match-end n)
@@ -570,7 +572,7 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
570 (zerop (call-process diff-command nil buf nil "-bc" b m))) 572 (zerop (call-process diff-command nil buf nil "-bc" b m)))
571 (set-match-data md) 573 (set-match-data md)
572 (smerge-keep-n 3)) 574 (smerge-keep-n 3))
573 ;; Try "diff -b BASE MINE | patch OTHER". 575 ;; Try "diff -b BASE UPPER | patch LOWER".
574 ((when (and (not safe) m2e b 576 ((when (and (not safe) m2e b
575 ;; If the BASE is empty, this would just concatenate 577 ;; If the BASE is empty, this would just concatenate
576 ;; the two, which is rarely right. 578 ;; the two, which is rarely right.
@@ -585,7 +587,7 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
585 (narrow-to-region m0b m0e) 587 (narrow-to-region m0b m0e)
586 (smerge-remove-props m0b m0e) 588 (smerge-remove-props m0b m0e)
587 (insert-file-contents o nil nil nil t))) 589 (insert-file-contents o nil nil nil t)))
588 ;; Try "diff -b BASE OTHER | patch MINE". 590 ;; Try "diff -b BASE LOWER | patch UPPER".
589 ((when (and (not safe) m2e b 591 ((when (and (not safe) m2e b
590 ;; If the BASE is empty, this would just concatenate 592 ;; If the BASE is empty, this would just concatenate
591 ;; the two, which is rarely right. 593 ;; the two, which is rarely right.
@@ -685,22 +687,40 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
685 (smerge-keep-n 2) 687 (smerge-keep-n 2)
686 (smerge-auto-leave)) 688 (smerge-auto-leave))
687 689
688(defun smerge-keep-other () 690(defun smerge-keep-lower ()
689 "Use \"other\" version." 691 "Keep the \"lower\" version of a merge conflict.
692In a conflict that looks like:
693 <<<<<<<
694 UUU
695 =======
696 LLL
697 >>>>>>>
698this keeps \"LLL\"."
690 (interactive) 699 (interactive)
691 (smerge-match-conflict) 700 (smerge-match-conflict)
692 ;;(smerge-ensure-match 3) 701 ;;(smerge-ensure-match 3)
693 (smerge-keep-n 3) 702 (smerge-keep-n 3)
694 (smerge-auto-leave)) 703 (smerge-auto-leave))
695 704
696(defun smerge-keep-mine () 705(define-obsolete-function-alias 'smerge-keep-other 'smerge-keep-lower "25.2")
697 "Keep your version." 706
707(defun smerge-keep-upper ()
708 "Keep the \"upper\" version of a merge conflict.
709In a conflict that looks like:
710 <<<<<<<
711 UUU
712 =======
713 LLL
714 >>>>>>>
715this keeps \"UUU\"."
698 (interactive) 716 (interactive)
699 (smerge-match-conflict) 717 (smerge-match-conflict)
700 ;;(smerge-ensure-match 1) 718 ;;(smerge-ensure-match 1)
701 (smerge-keep-n 1) 719 (smerge-keep-n 1)
702 (smerge-auto-leave)) 720 (smerge-auto-leave))
703 721
722(define-obsolete-function-alias 'smerge-keep-mine 'smerge-keep-upper "25.2")
723
704(defun smerge-get-current () 724(defun smerge-get-current ()
705 (let ((i 3)) 725 (let ((i 3))
706 (while (or (not (match-end i)) 726 (while (or (not (match-end i))
@@ -734,28 +754,37 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
734 (smerge-keep-n (car left)) 754 (smerge-keep-n (car left))
735 (smerge-auto-leave)))))) 755 (smerge-auto-leave))))))
736 756
737(defun smerge-diff-base-mine () 757(defun smerge-diff-base-upper ()
738 "Diff `base' and `mine' version in current conflict region." 758 "Diff `base' and `upper' version in current conflict region."
739 (interactive) 759 (interactive)
740 (smerge-diff 2 1)) 760 (smerge-diff 2 1))
741 761
742(defun smerge-diff-base-other () 762(define-obsolete-function-alias 'smerge-diff-base-mine
743 "Diff `base' and `other' version in current conflict region." 763 'smerge-diff-base-upper "25.2")
764
765(defun smerge-diff-base-lower ()
766 "Diff `base' and `lower' version in current conflict region."
744 (interactive) 767 (interactive)
745 (smerge-diff 2 3)) 768 (smerge-diff 2 3))
746 769
747(defun smerge-diff-mine-other () 770(define-obsolete-function-alias 'smerge-diff-base-other
748 "Diff `mine' and `other' version in current conflict region." 771 'smerge-diff-base-lower "25.2")
772
773(defun smerge-diff-upper-lower ()
774 "Diff `upper' and `lower' version in current conflict region."
749 (interactive) 775 (interactive)
750 (smerge-diff 1 3)) 776 (smerge-diff 1 3))
751 777
778(define-obsolete-function-alias 'smerge-diff-mine-other
779 'smerge-diff-upper-lower "25.2")
780
752(defun smerge-match-conflict () 781(defun smerge-match-conflict ()
753 "Get info about the conflict. Puts the info in the `match-data'. 782 "Get info about the conflict. Puts the info in the `match-data'.
754The submatches contain: 783The submatches contain:
755 0: the whole conflict. 784 0: the whole conflict.
756 1: your code. 785 1: upper version of the code.
757 2: the base code. 786 2: base version of the code.
758 3: other code. 787 3: lower version of the code.
759An error is raised if not inside a conflict." 788An error is raised if not inside a conflict."
760 (save-excursion 789 (save-excursion
761 (condition-case nil 790 (condition-case nil
@@ -765,26 +794,26 @@ An error is raised if not inside a conflict."
765 (_ (re-search-backward smerge-begin-re)) 794 (_ (re-search-backward smerge-begin-re))
766 795
767 (start (match-beginning 0)) 796 (start (match-beginning 0))
768 (mine-start (match-end 0)) 797 (upper-start (match-end 0))
769 (filename (or (match-string 1) "")) 798 (filename (or (match-string 1) ""))
770 799
771 (_ (re-search-forward smerge-end-re)) 800 (_ (re-search-forward smerge-end-re))
772 (_ (cl-assert (< orig-point (match-end 0)))) 801 (_ (cl-assert (< orig-point (match-end 0))))
773 802
774 (other-end (match-beginning 0)) 803 (lower-end (match-beginning 0))
775 (end (match-end 0)) 804 (end (match-end 0))
776 805
777 (_ (re-search-backward smerge-other-re start)) 806 (_ (re-search-backward smerge-lower-re start))
778 807
779 (mine-end (match-beginning 0)) 808 (upper-end (match-beginning 0))
780 (other-start (match-end 0)) 809 (lower-start (match-end 0))
781 810
782 base-start base-end) 811 base-start base-end)
783 812
784 ;; handle the various conflict styles 813 ;; handle the various conflict styles
785 (cond 814 (cond
786 ((save-excursion 815 ((save-excursion
787 (goto-char mine-start) 816 (goto-char upper-start)
788 (re-search-forward smerge-begin-re end t)) 817 (re-search-forward smerge-begin-re end t))
789 ;; There's a nested conflict and we're after the beginning 818 ;; There's a nested conflict and we're after the beginning
790 ;; of the outer one but before the beginning of the inner one. 819 ;; of the outer one but before the beginning of the inner one.
@@ -797,8 +826,8 @@ An error is raised if not inside a conflict."
797 ((re-search-backward smerge-base-re start t) 826 ((re-search-backward smerge-base-re start t)
798 ;; a 3-parts conflict 827 ;; a 3-parts conflict
799 (set (make-local-variable 'smerge-conflict-style) 'diff3-A) 828 (set (make-local-variable 'smerge-conflict-style) 'diff3-A)
800 (setq base-end mine-end) 829 (setq base-end upper-end)
801 (setq mine-end (match-beginning 0)) 830 (setq upper-end (match-beginning 0))
802 (setq base-start (match-end 0))) 831 (setq base-start (match-end 0)))
803 832
804 ((string= filename (file-name-nondirectory 833 ((string= filename (file-name-nondirectory
@@ -811,17 +840,17 @@ An error is raised if not inside a conflict."
811 (equal filename "ANCESTOR") 840 (equal filename "ANCESTOR")
812 (string-match "\\`[.0-9]+\\'" filename))) 841 (string-match "\\`[.0-9]+\\'" filename)))
813 ;; a same-diff conflict 842 ;; a same-diff conflict
814 (setq base-start mine-start) 843 (setq base-start upper-start)
815 (setq base-end mine-end) 844 (setq base-end upper-end)
816 (setq mine-start other-start) 845 (setq upper-start lower-start)
817 (setq mine-end other-end))) 846 (setq upper-end lower-end)))
818 847
819 (store-match-data (list start end 848 (store-match-data (list start end
820 mine-start mine-end 849 upper-start upper-end
821 base-start base-end 850 base-start base-end
822 other-start other-end 851 lower-start lower-end
823 (when base-start (1- base-start)) base-start 852 (when base-start (1- base-start)) base-start
824 (1- other-start) other-start)) 853 (1- lower-start) lower-start))
825 t) 854 t)
826 (search-failed (user-error "Point not in conflict region"))))) 855 (search-failed (user-error "Point not in conflict region")))))
827 856
@@ -1133,10 +1162,10 @@ repeating the command will highlight other two parts."
1133 '((smerge . refine) (face . smerge-refined-added)))))) 1162 '((smerge . refine) (face . smerge-refined-added))))))
1134 1163
1135(defun smerge-swap () 1164(defun smerge-swap ()
1136 "Swap the \"Mine\" and the \"Other\" chunks. 1165 "Swap the \"Upper\" and the \"Lower\" chunks.
1137Can be used before things like `smerge-keep-all' or `smerge-resolve' where the 1166Can be used before things like `smerge-keep-all' or `smerge-resolve' where the
1138ordering can have some subtle influence on the result, such as preferring the 1167ordering can have some subtle influence on the result, such as preferring the
1139spacing of the \"Other\" chunk." 1168spacing of the \"Lower\" chunk."
1140 (interactive) 1169 (interactive)
1141 (smerge-match-conflict) 1170 (smerge-match-conflict)
1142 (goto-char (match-beginning 3)) 1171 (goto-char (match-beginning 3))
@@ -1205,9 +1234,9 @@ spacing of the \"Other\" chunk."
1205 default))) 1234 default)))
1206 1235
1207;;;###autoload 1236;;;###autoload
1208(defun smerge-ediff (&optional name-mine name-other name-base) 1237(defun smerge-ediff (&optional name-upper name-lower name-base)
1209 "Invoke ediff to resolve the conflicts. 1238 "Invoke ediff to resolve the conflicts.
1210NAME-MINE, NAME-OTHER, and NAME-BASE, if non-nil, are used for the 1239NAME-UPPER, NAME-LOWER, and NAME-BASE, if non-nil, are used for the
1211buffer names." 1240buffer names."
1212 (interactive) 1241 (interactive)
1213 (let* ((buf (current-buffer)) 1242 (let* ((buf (current-buffer))
@@ -1215,18 +1244,18 @@ buffer names."
1215 ;;(ediff-default-variant 'default-B) 1244 ;;(ediff-default-variant 'default-B)
1216 (config (current-window-configuration)) 1245 (config (current-window-configuration))
1217 (filename (file-name-nondirectory (or buffer-file-name "-"))) 1246 (filename (file-name-nondirectory (or buffer-file-name "-")))
1218 (mine (generate-new-buffer 1247 (upper (generate-new-buffer
1219 (or name-mine 1248 (or name-upper
1220 (concat "*" filename " " 1249 (concat "*" filename " "
1221 (smerge--get-marker smerge-begin-re "MINE") 1250 (smerge--get-marker smerge-begin-re "UPPER")
1222 "*")))) 1251 "*"))))
1223 (other (generate-new-buffer 1252 (lower (generate-new-buffer
1224 (or name-other 1253 (or name-lower
1225 (concat "*" filename " " 1254 (concat "*" filename " "
1226 (smerge--get-marker smerge-end-re "OTHER") 1255 (smerge--get-marker smerge-end-re "LOWER")
1227 "*")))) 1256 "*"))))
1228 base) 1257 base)
1229 (with-current-buffer mine 1258 (with-current-buffer upper
1230 (buffer-disable-undo) 1259 (buffer-disable-undo)
1231 (insert-buffer-substring buf) 1260 (insert-buffer-substring buf)
1232 (goto-char (point-min)) 1261 (goto-char (point-min))
@@ -1237,7 +1266,7 @@ buffer names."
1237 (set-buffer-modified-p nil) 1266 (set-buffer-modified-p nil)
1238 (funcall mode)) 1267 (funcall mode))
1239 1268
1240 (with-current-buffer other 1269 (with-current-buffer lower
1241 (buffer-disable-undo) 1270 (buffer-disable-undo)
1242 (insert-buffer-substring buf) 1271 (insert-buffer-substring buf)
1243 (goto-char (point-min)) 1272 (goto-char (point-min))
@@ -1269,9 +1298,9 @@ buffer names."
1269 ;; Fire up ediff. 1298 ;; Fire up ediff.
1270 (set-buffer 1299 (set-buffer
1271 (if base 1300 (if base
1272 (ediff-merge-buffers-with-ancestor mine other base) 1301 (ediff-merge-buffers-with-ancestor upper lower base)
1273 ;; nil 'ediff-merge-revisions-with-ancestor buffer-file-name) 1302 ;; nil 'ediff-merge-revisions-with-ancestor buffer-file-name)
1274 (ediff-merge-buffers mine other))) 1303 (ediff-merge-buffers upper lower)))
1275 ;; nil 'ediff-merge-revisions buffer-file-name))) 1304 ;; nil 'ediff-merge-revisions buffer-file-name)))
1276 1305
1277 ;; Ediff is now set up, and we are in the control buffer. 1306 ;; Ediff is now set up, and we are in the control buffer.
@@ -1313,21 +1342,21 @@ with a \\[universal-argument] prefix, makes up a 3-way conflict."
1313 (pcase-let ((`(,pt1 ,pt2 ,pt3 ,pt4) 1342 (pcase-let ((`(,pt1 ,pt2 ,pt3 ,pt4)
1314 (sort `(,pt1 ,pt2 ,pt3 ,@(if pt4 (list pt4))) '>=))) 1343 (sort `(,pt1 ,pt2 ,pt3 ,@(if pt4 (list pt4))) '>=)))
1315 (goto-char pt1) (beginning-of-line) 1344 (goto-char pt1) (beginning-of-line)
1316 (insert ">>>>>>> OTHER\n") 1345 (insert ">>>>>>> LOWER\n")
1317 (goto-char pt2) (beginning-of-line) 1346 (goto-char pt2) (beginning-of-line)
1318 (insert "=======\n") 1347 (insert "=======\n")
1319 (goto-char pt3) (beginning-of-line) 1348 (goto-char pt3) (beginning-of-line)
1320 (when pt4 1349 (when pt4
1321 (insert "||||||| BASE\n") 1350 (insert "||||||| BASE\n")
1322 (goto-char pt4) (beginning-of-line)) 1351 (goto-char pt4) (beginning-of-line))
1323 (insert "<<<<<<< MINE\n")) 1352 (insert "<<<<<<< UPPER\n"))
1324 (if smerge-mode nil (smerge-mode 1)) 1353 (if smerge-mode nil (smerge-mode 1))
1325 (smerge-refine)) 1354 (smerge-refine))
1326 1355
1327 1356
1328(defconst smerge-parsep-re 1357(defconst smerge-parsep-re
1329 (concat smerge-begin-re "\\|" smerge-end-re "\\|" 1358 (concat smerge-begin-re "\\|" smerge-end-re "\\|"
1330 smerge-base-re "\\|" smerge-other-re "\\|")) 1359 smerge-base-re "\\|" smerge-lower-re "\\|"))
1331 1360
1332;;;###autoload 1361;;;###autoload
1333(define-minor-mode smerge-mode 1362(define-minor-mode smerge-mode
diff --git a/src/lastfile.c b/src/lastfile.c
index 9c73fb44700..de4e4f45362 100644
--- a/src/lastfile.c
+++ b/src/lastfile.c
@@ -38,8 +38,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
38 38
39#include "lisp.h" 39#include "lisp.h"
40 40
41#if ((!defined SYSTEM_MALLOC && !defined HYBRID_MALLOC && !defined WINDOWSNT) \ 41#if ((!defined SYSTEM_MALLOC && !defined HYBRID_MALLOC) \
42 || defined CYGWIN || defined DARWIN_OS) 42 || defined WINDOWSNT || defined CYGWIN || defined DARWIN_OS)
43char my_edata[] = "End of Emacs initialized data"; 43char my_edata[] = "End of Emacs initialized data";
44#endif 44#endif
45 45