;;; gitmerge.el --- help merge one Emacs branch into another
-;; Copyright (C) 2010-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2015 Free Software Foundation, Inc.
;; Authors: David Engster <deng@randomsample.de>
;; Stefan Monnier <monnier@iro.umontreal.ca>
map)
"Keymap for gitmerge major mode.")
+
+(defvar gitmerge-mode-font-lock-keywords
+ `((,gitmerge-log-regexp
+ (1 font-lock-warning-face)
+ (2 font-lock-constant-face)
+ (3 font-lock-builtin-face)
+ (4 font-lock-comment-face))))
+
(defvar gitmerge--commits nil)
(defvar gitmerge--from nil)
(delete-char 1)
(insert (if skip "M" " "))
(setq buffer-read-only t))))))
-
+
(defun gitmerge-highlight-skip-regexp ()
"Highlight strings that match `gitmerge-skip-regexp'."
(save-excursion
(goto-char (point-min))
(while (not (eobp))
(push (buffer-substring (point) (line-end-position)) files)
- (forward-line))
+ (forward-line))
(dolist (file files)
(if (gitmerge-resolve file)
;; File still has conflicts
(call-process "git" nil t nil
"diff" "--name-only")
(zerop (buffer-size))))
-
+
(defun gitmerge-maybe-resume ()
"Check if we have to resume a merge.
If so, add no longer conflicted files and commit."
(unless (zerop (call-process "git" nil t nil
"commit" "--no-edit"))
(error "Git error during merge - fix it manually"))))
- ;; Sucesfully resumed.
+ ;; Successfully resumed.
t))))
(defun gitmerge-get-all-branches ()
(prog1 (read (buffer-string))
(kill-buffer)))))
-(defun gitmerge-mode ()
+(define-derived-mode gitmerge-mode special-mode "gitmerge"
"Major mode for Emacs branch merging."
- (interactive)
- (kill-all-local-variables)
- (setq major-mode 'gitmerge-mode)
- (setq mode-name "gitmerge")
(set-syntax-table text-mode-syntax-table)
- (use-local-map gitmerge-mode-map)
- (make-local-variable 'font-lock-defaults)
- (setq gitmerge-mode-font-lock-keywords
- (list (list gitmerge-log-regexp
- '(1 font-lock-warning-face)
- '(2 font-lock-constant-face)
- '(3 font-lock-builtin-face)
- '(4 font-lock-comment-face))))
(setq buffer-read-only t)
- (setq font-lock-defaults '(gitmerge-mode-font-lock-keywords)))
+ (setq-local truncate-lines t)
+ (setq-local font-lock-defaults '(gitmerge-mode-font-lock-keywords)))
(defun gitmerge (from)
"Merge from branch FROM into `default-directory'."