PageRenderTime 78ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/lisp/ediff-hook.el

https://github.com/kamitchell/emacs
Emacs Lisp | 263 lines | 201 code | 20 blank | 42 comment | 1 complexity | 33f9effd8a782d739caa26a6a59b7c12 MD5 | raw file
  1. ;;; ediff-hook.el --- setup for Ediff's menus and autoloads
  2. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
  3. ;; 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
  4. ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
  5. ;; This file is part of GNU Emacs.
  6. ;; GNU Emacs is free software: you can redistribute it and/or modify
  7. ;; it under the terms of the GNU General Public License as published by
  8. ;; the Free Software Foundation, either version 3 of the License, or
  9. ;; (at your option) any later version.
  10. ;; GNU Emacs is distributed in the hope that it will be useful,
  11. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ;; GNU General Public License for more details.
  14. ;; You should have received a copy of the GNU General Public License
  15. ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
  16. ;;; Commentary:
  17. ;;; Code:
  18. ;;; These must be placed in menu-bar.el in Emacs
  19. ;;
  20. ;; (define-key menu-bar-tools-menu [ediff-misc]
  21. ;; '("Ediff Miscellanea" . menu-bar-ediff-misc-menu))
  22. ;; (define-key menu-bar-tools-menu [epatch]
  23. ;; '("Apply Patch" . menu-bar-epatch-menu))
  24. ;; (define-key menu-bar-tools-menu [ediff-merge]
  25. ;; '("Merge" . menu-bar-ediff-merge-menu))
  26. ;; (define-key menu-bar-tools-menu [ediff]
  27. ;; '("Compare" . menu-bar-ediff-menu))
  28. ;; Compiler pacifier
  29. (defvar ediff-menu)
  30. (defvar ediff-merge-menu)
  31. (defvar epatch-menu)
  32. (defvar ediff-misc-menu)
  33. ;; end pacifier
  34. ;; allow menus to be set up without ediff-wind.el being loaded
  35. (defvar ediff-window-setup-function)
  36. ;; This autoload is useless in Emacs because ediff-hook.el is dumped with
  37. ;; emacs, but it is needed in XEmacs
  38. ;;;###autoload
  39. (if (featurep 'xemacs)
  40. (progn
  41. (defun ediff-xemacs-init-menus ()
  42. (when (featurep 'menubar)
  43. (add-submenu
  44. '("Tools") ediff-menu "OO-Browser...")
  45. (add-submenu
  46. '("Tools") ediff-merge-menu "OO-Browser...")
  47. (add-submenu
  48. '("Tools") epatch-menu "OO-Browser...")
  49. (add-submenu
  50. '("Tools") ediff-misc-menu "OO-Browser...")
  51. (add-menu-button
  52. '("Tools") "-------" "OO-Browser...")
  53. ))
  54. (defvar ediff-menu
  55. '("Compare"
  56. ["Two Files..." ediff-files t]
  57. ["Two Buffers..." ediff-buffers t]
  58. ["Three Files..." ediff-files3 t]
  59. ["Three Buffers..." ediff-buffers3 t]
  60. "---"
  61. ["Two Directories..." ediff-directories t]
  62. ["Three Directories..." ediff-directories3 t]
  63. "---"
  64. ["File with Revision..." ediff-revision t]
  65. ["Directory Revisions..." ediff-directory-revisions t]
  66. "---"
  67. ["Windows Word-by-word..." ediff-windows-wordwise t]
  68. ["Windows Line-by-line..." ediff-windows-linewise t]
  69. "---"
  70. ["Regions Word-by-word..." ediff-regions-wordwise t]
  71. ["Regions Line-by-line..." ediff-regions-linewise t]
  72. ))
  73. (defvar ediff-merge-menu
  74. '("Merge"
  75. ["Files..." ediff-merge-files t]
  76. ["Files with Ancestor..." ediff-merge-files-with-ancestor t]
  77. ["Buffers..." ediff-merge-buffers t]
  78. ["Buffers with Ancestor..."
  79. ediff-merge-buffers-with-ancestor t]
  80. "---"
  81. ["Directories..." ediff-merge-directories t]
  82. ["Directories with Ancestor..."
  83. ediff-merge-directories-with-ancestor t]
  84. "---"
  85. ["Revisions..." ediff-merge-revisions t]
  86. ["Revisions with Ancestor..."
  87. ediff-merge-revisions-with-ancestor t]
  88. ["Directory Revisions..." ediff-merge-directory-revisions t]
  89. ["Directory Revisions with Ancestor..."
  90. ediff-merge-directory-revisions-with-ancestor t]
  91. ))
  92. (defvar epatch-menu
  93. '("Apply Patch"
  94. ["To a file..." ediff-patch-file t]
  95. ["To a buffer..." ediff-patch-buffer t]
  96. ))
  97. (defvar ediff-misc-menu
  98. '("Ediff Miscellanea"
  99. ["Ediff Manual" ediff-documentation t]
  100. ["Customize Ediff" ediff-customize t]
  101. ["List Ediff Sessions" ediff-show-registry t]
  102. ["Use separate frame for Ediff control buffer"
  103. ediff-toggle-multiframe
  104. :style toggle
  105. :selected (if (and (featurep 'ediff-util)
  106. (boundp 'ediff-window-setup-function))
  107. (eq ediff-window-setup-function
  108. 'ediff-setup-windows-multiframe))]
  109. ["Use a toolbar with Ediff control buffer"
  110. ediff-toggle-use-toolbar
  111. :style toggle
  112. :selected (if (featurep 'ediff-tbar)
  113. (ediff-use-toolbar-p))]))
  114. ;; put these menus before Object-Oriented-Browser in Tools menu
  115. (if (and (featurep 'menubar) (not (featurep 'infodock))
  116. (not (featurep 'ediff-hook)))
  117. (ediff-xemacs-init-menus)))
  118. ;; Emacs
  119. ;; initialize menu bar keymaps
  120. (defvar menu-bar-ediff-misc-menu
  121. (make-sparse-keymap "Ediff Miscellanea"))
  122. (fset 'menu-bar-ediff-misc-menu
  123. (symbol-value 'menu-bar-ediff-misc-menu))
  124. (defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch"))
  125. (fset 'menu-bar-epatch-menu (symbol-value 'menu-bar-epatch-menu))
  126. (defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge"))
  127. (fset 'menu-bar-ediff-merge-menu
  128. (symbol-value 'menu-bar-ediff-merge-menu))
  129. (defvar menu-bar-ediff-menu (make-sparse-keymap "Compare"))
  130. (fset 'menu-bar-ediff-menu (symbol-value 'menu-bar-ediff-menu))
  131. ;; define ediff compare menu
  132. (define-key menu-bar-ediff-menu [ediff-misc]
  133. `(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu))
  134. (define-key menu-bar-ediff-menu [separator-ediff-misc] '("--"))
  135. (define-key menu-bar-ediff-menu [window]
  136. `(menu-item ,(purecopy "This Window and Next Window") compare-windows
  137. :help ,(purecopy "Compare the current window and the next window")))
  138. (define-key menu-bar-ediff-menu [ediff-windows-linewise]
  139. `(menu-item ,(purecopy "Windows Line-by-line...") ediff-windows-linewise
  140. :help ,(purecopy "Compare windows line-wise")))
  141. (define-key menu-bar-ediff-menu [ediff-windows-wordwise]
  142. `(menu-item ,(purecopy "Windows Word-by-word...") ediff-windows-wordwise
  143. :help ,(purecopy "Compare windows word-wise")))
  144. (define-key menu-bar-ediff-menu [separator-ediff-windows] '("--"))
  145. (define-key menu-bar-ediff-menu [ediff-regions-linewise]
  146. `(menu-item ,(purecopy "Regions Line-by-line...") ediff-regions-linewise
  147. :help ,(purecopy "Compare regions line-wise")))
  148. (define-key menu-bar-ediff-menu [ediff-regions-wordwise]
  149. `(menu-item ,(purecopy "Regions Word-by-word...") ediff-regions-wordwise
  150. :help ,(purecopy "Compare regions word-wise")))
  151. (define-key menu-bar-ediff-menu [separator-ediff-regions] '("--"))
  152. (define-key menu-bar-ediff-menu [ediff-dir-revision]
  153. `(menu-item ,(purecopy "Directory Revisions...") ediff-directory-revisions
  154. :help ,(purecopy "Compare directory files with their older versions")))
  155. (define-key menu-bar-ediff-menu [ediff-revision]
  156. `(menu-item ,(purecopy "File with Revision...") ediff-revision
  157. :help ,(purecopy "Compare file with its older versions")))
  158. (define-key menu-bar-ediff-menu [separator-ediff-directories] '("--"))
  159. (define-key menu-bar-ediff-menu [ediff-directories3]
  160. `(menu-item ,(purecopy "Three Directories...") ediff-directories3
  161. :help ,(purecopy "Compare files common to three directories simultaneously")))
  162. (define-key menu-bar-ediff-menu [ediff-directories]
  163. `(menu-item ,(purecopy "Two Directories...") ediff-directories
  164. :help ,(purecopy "Compare files common to two directories simultaneously")))
  165. (define-key menu-bar-ediff-menu [separator-ediff-files] '("--"))
  166. (define-key menu-bar-ediff-menu [ediff-buffers3]
  167. `(menu-item ,(purecopy "Three Buffers...") ediff-buffers3
  168. :help ,(purecopy "Compare three buffers simultaneously")))
  169. (define-key menu-bar-ediff-menu [ediff-files3]
  170. `(menu-item ,(purecopy "Three Files...") ediff-files3
  171. :help ,(purecopy "Compare three files simultaneously")))
  172. (define-key menu-bar-ediff-menu [ediff-buffers]
  173. `(menu-item ,(purecopy "Two Buffers...") ediff-buffers
  174. :help ,(purecopy "Compare two buffers simultaneously")))
  175. (define-key menu-bar-ediff-menu [ediff-files]
  176. `(menu-item ,(purecopy "Two Files...") ediff-files
  177. :help ,(purecopy "Compare two files simultaneously")))
  178. ;; define ediff merge menu
  179. (define-key
  180. menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor]
  181. `(menu-item ,(purecopy "Directory Revisions with Ancestor...")
  182. ediff-merge-directory-revisions-with-ancestor
  183. :help ,(purecopy "Merge versions of the files in the same directory by comparing the files with common ancestors")))
  184. (define-key
  185. menu-bar-ediff-merge-menu [ediff-merge-dir-revisions]
  186. `(menu-item ,(purecopy "Directory Revisions...") ediff-merge-directory-revisions
  187. :help ,(purecopy "Merge versions of the files in the same directory (without using ancestor information)")))
  188. (define-key
  189. menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor]
  190. `(menu-item ,(purecopy "Revisions with Ancestor...")
  191. ediff-merge-revisions-with-ancestor
  192. :help ,(purecopy "Merge versions of the same file by comparing them with a common ancestor")))
  193. (define-key menu-bar-ediff-merge-menu [ediff-merge-revisions]
  194. `(menu-item ,(purecopy "Revisions...") ediff-merge-revisions
  195. :help ,(purecopy "Merge versions of the same file (without using ancestor information)")))
  196. (define-key menu-bar-ediff-merge-menu [separator-ediff-merge] '("--"))
  197. (define-key
  198. menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor]
  199. `(menu-item ,(purecopy "Directories with Ancestor...")
  200. ediff-merge-directories-with-ancestor
  201. :help ,(purecopy "Merge files common to a pair of directories by comparing the files with common ancestors")))
  202. (define-key menu-bar-ediff-merge-menu [ediff-merge-directories]
  203. `(menu-item ,(purecopy "Directories...") ediff-merge-directories
  204. :help ,(purecopy "Merge files common to a pair of directories")))
  205. (define-key
  206. menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] '("--"))
  207. (define-key
  208. menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor]
  209. `(menu-item ,(purecopy "Buffers with Ancestor...") ediff-merge-buffers-with-ancestor
  210. :help ,(purecopy "Merge buffers by comparing their contents with a common ancestor")))
  211. (define-key menu-bar-ediff-merge-menu [ediff-merge-buffers]
  212. `(menu-item ,(purecopy "Buffers...") ediff-merge-buffers
  213. :help ,(purecopy "Merge buffers (without using ancestor information)")))
  214. (define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor]
  215. `(menu-item ,(purecopy "Files with Ancestor...") ediff-merge-files-with-ancestor
  216. :help ,(purecopy "Merge files by comparing them with a common ancestor")))
  217. (define-key menu-bar-ediff-merge-menu [ediff-merge-files]
  218. `(menu-item ,(purecopy "Files...") ediff-merge-files
  219. :help ,(purecopy "Merge files (without using ancestor information)")))
  220. ;; define epatch menu
  221. (define-key menu-bar-epatch-menu [ediff-patch-buffer]
  222. `(menu-item ,(purecopy "To a Buffer...") ediff-patch-buffer
  223. :help ,(purecopy "Apply a patch to the contents of a buffer")))
  224. (define-key menu-bar-epatch-menu [ediff-patch-file]
  225. `(menu-item ,(purecopy "To a File...") ediff-patch-file
  226. :help ,(purecopy "Apply a patch to a file")))
  227. ;; define ediff miscellanea
  228. (define-key menu-bar-ediff-misc-menu [emultiframe]
  229. `(menu-item ,(purecopy "Use separate control buffer frame")
  230. ediff-toggle-multiframe
  231. :help ,(purecopy "Switch between the single-frame presentation mode and the multi-frame mode")))
  232. (define-key menu-bar-ediff-misc-menu [eregistry]
  233. `(menu-item ,(purecopy "List Ediff Sessions") ediff-show-registry
  234. :help ,(purecopy "List all active Ediff sessions; it is a convenient way to find and resume such a session")))
  235. (define-key menu-bar-ediff-misc-menu [ediff-cust]
  236. `(menu-item ,(purecopy "Customize Ediff") ediff-customize
  237. :help ,(purecopy "Change some of the parameters that govern the behavior of Ediff")))
  238. (define-key menu-bar-ediff-misc-menu [ediff-doc]
  239. `(menu-item ,(purecopy "Ediff Manual") ediff-documentation
  240. :help ,(purecopy "Bring up the Ediff manual"))))
  241. (provide 'ediff-hook)
  242. ;; arch-tag: 512f8656-8a4b-4789-af5d-5c6144498df3
  243. ;;; ediff-hook.el ends here