X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/0cce3623b169732a51f055a86fc926313b11a5ee..d3155315c85212f224fc5df0239182dafdfd6284:/admin/gitmerge.el diff --git a/admin/gitmerge.el b/admin/gitmerge.el index 88c633393a..43773f5cb3 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el @@ -1,6 +1,6 @@ ;;; 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 ;; Stefan Monnier @@ -90,6 +90,14 @@ Auto-commit" 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) @@ -157,7 +165,7 @@ Auto-commit" (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 @@ -361,7 +369,7 @@ Throw an user-error if we cannot resolve automatically." (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 @@ -393,7 +401,7 @@ Throw an user-error if we cannot resolve automatically." (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." @@ -420,7 +428,7 @@ 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 () @@ -459,23 +467,12 @@ Branch FROM will be prepended to the list." (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'."