~mathrick/dvc/trunk

« back to all changes in this revision

Viewing changes to lisp/xgit-rebase-todo.el

  • Committer: Stefan Reichoer
  • Date: 2009-07-09 21:00:06 UTC
  • Revision ID: stefan@xsteve.at-20090709210006-hrz9bfxxh7d2tli7
Patch from Thierry Volpiatto: New function xhg-search-regexp-in-log (bound to G in *xhg-log* buffers)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
;;; xgit-rebase-todo.el --- Major mode for editting git-rebase-todo files.
2
 
 
3
 
;; Copyright (C) 2009  Matthieu Moy
4
 
 
5
 
;; Author: Matthieu Moy <Matthieu.Moy@imag.fr>
6
 
;; Keywords:
7
 
 
8
 
;; This program is free software; you can redistribute it and/or modify
9
 
;; it under the terms of the GNU General Public License as published by
10
 
;; the Free Software Foundation, either version 3 of the License, or
11
 
;; (at your option) any later version.
12
 
 
13
 
;; This program is distributed in the hope that it will be useful,
14
 
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 
;; GNU General Public License for more details.
17
 
 
18
 
;; You should have received a copy of the GNU General Public License
19
 
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
 
 
21
 
;;; Commentary:
22
 
 
23
 
;;
24
 
 
25
 
;;; Code:
26
 
 
27
 
;;;###autoload
28
 
(add-to-list 'auto-mode-alist '("/git-rebase-todo$" . xgit-rebase-todo-mode))
29
 
 
30
 
(defvar xgit-rebase-todo-mode-map
31
 
  (let ((map (make-sparse-keymap)))
32
 
    (define-key map [(meta ?n)] 'xgit-rebase-todo-move-down)
33
 
    (define-key map [(meta ?p)] 'xgit-rebase-todo-move-up)
34
 
    map)
35
 
  "Keymap used in `xgit-rebase-todo-mode' buffers.")
36
 
 
37
 
(defun xgit-rebase-todo-move-down ()
38
 
  (interactive)
39
 
  (beginning-of-line)
40
 
  (let* ((next (+ 1 (line-end-position)))
41
 
         (line (buffer-substring (point) next)))
42
 
    (delete-region (point) next)
43
 
    (forward-line 1)
44
 
    (insert line)
45
 
    (forward-line -1)))
46
 
 
47
 
(defun xgit-rebase-todo-move-up ()
48
 
  (interactive)
49
 
  (beginning-of-line)
50
 
  (let* ((next (+ 1 (line-end-position)))
51
 
         (line (buffer-substring (point) next)))
52
 
    (delete-region (point) next)
53
 
    (forward-line -1)
54
 
    (insert line)
55
 
    (forward-line -1)))
56
 
 
57
 
;; (easy-menu-define xgit-rebase-todo-mode-menu xgit-rebase-todo-mode-map
58
 
;;   "`xgit-rebase-todo-mode' menu"
59
 
;;   '("Rebase-todo"
60
 
;;     ["Action"     xgit-rebase-todo-function t]
61
 
;;     ))
62
 
 
63
 
(defvar xgit-rebase-todo-font-lock-keywords
64
 
  '(("^\\([a-z]+\\) \\([0-9a-f]+\\) \\(.*\\)$"
65
 
     (1 'dvc-keyword)
66
 
     (2 'dvc-revision-name))
67
 
    ("^#.*$" . 'dvc-comment))
68
 
  "Keywords in xgit-rebase-todo mode.")
69
 
 
70
 
;;;###autoload
71
 
(define-derived-mode xgit-rebase-todo-mode fundamental-mode "xgit-rebase-todo"
72
 
  "Major Mode to edit xgit rebase-todo files.
73
 
 
74
 
These files are the ones on which git launches the editor for
75
 
'git rebase --interactive' commands.
76
 
 
77
 
Commands:
78
 
\\{xgit-rebase-todo-mode-map}
79
 
"
80
 
  (use-local-map xgit-rebase-todo-mode-map)
81
 
  ;;(easy-menu-add xgit-rebase-todo-mode-menu)
82
 
  (dvc-install-buffer-menu)
83
 
  (set (make-local-variable 'font-lock-defaults)
84
 
       '(xgit-rebase-todo-font-lock-keywords t))
85
 
  (set (make-local-variable 'comment-start) "#")
86
 
  (set (make-local-variable 'comment-end) "")
87
 
  (run-hooks 'xgit-rebase-todo-mode-hook))
88
 
 
89
 
 
90
 
(provide 'xgit-rebase-todo)
91
 
;;; xgit-rebase-todo.el ends here