Emacs personal configuration
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

91 lines
2.8KB

  1. ;; TODO: link commits from vc-log to magit-show-commit
  2. ;; TODO: smerge-mode
  3. (require-package 'magit)
  4. (require-package 'git-blame)
  5. (require-package 'git-commit-mode)
  6. (require-package 'git-rebase-mode)
  7. (require-package 'gitignore-mode)
  8. (require-package 'gitconfig-mode)
  9. (require-package 'git-messenger) ;; Though see also vc-annotate's "n" & "p" bindings
  10. (require-package 'git-timemachine)
  11. (setq-default
  12. magit-save-some-buffers nil
  13. magit-process-popup-time 10
  14. magit-diff-refine-hunk t
  15. magit-completing-read-function 'magit-ido-completing-read)
  16. ;; Hint: customize `magit-repo-dirs' so that you can use C-u M-F12 to
  17. ;; quickly open magit on any one of your projects.
  18. (global-set-key [(meta f12)] 'magit-status)
  19. (after-load 'magit
  20. (define-key magit-status-mode-map (kbd "C-M-<up>") 'magit-goto-parent-section))
  21. (require-package 'fullframe)
  22. (after-load 'magit
  23. (fullframe magit-status magit-mode-quit-window))
  24. (add-hook 'git-commit-mode-hook 'goto-address-mode)
  25. (after-load 'session
  26. (add-to-list 'session-mode-disable-list 'git-commit-mode))
  27. ;;; When we start working on git-backed files, use git-wip if available
  28. (after-load 'magit
  29. (global-magit-wip-save-mode)
  30. (diminish 'magit-wip-save-mode))
  31. (after-load 'magit
  32. (diminish 'magit-auto-revert-mode))
  33. (when *is-a-mac*
  34. (after-load 'magit
  35. (add-hook 'magit-mode-hook (lambda () (local-unset-key [(meta h)])))))
  36. ;; Convenient binding for vc-git-grep
  37. (global-set-key (kbd "C-x v f") 'vc-git-grep)
  38. ;;; git-svn support
  39. (require-package 'magit-svn)
  40. (autoload 'magit-svn-enabled "magit-svn")
  41. (defun sanityinc/maybe-enable-magit-svn-mode ()
  42. (when (magit-svn-enabled)
  43. (magit-svn-mode)))
  44. (add-hook 'magit-status-mode-hook #'sanityinc/maybe-enable-magit-svn-mode)
  45. (after-load 'compile
  46. (dolist (defn (list '(git-svn-updated "^\t[A-Z]\t\\(.*\\)$" 1 nil nil 0 1)
  47. '(git-svn-needs-update "^\\(.*\\): needs update$" 1 nil nil 2 1)))
  48. (add-to-list 'compilation-error-regexp-alist-alist defn)
  49. (add-to-list 'compilation-error-regexp-alist (car defn))))
  50. (defvar git-svn--available-commands nil "Cached list of git svn subcommands")
  51. (defun git-svn (dir)
  52. "Run a git svn subcommand in DIR."
  53. (interactive "DSelect directory: ")
  54. (unless git-svn--available-commands
  55. (setq git-svn--available-commands
  56. (sanityinc/string-all-matches
  57. "^ \\([a-z\\-]+\\) +"
  58. (shell-command-to-string "git svn help") 1)))
  59. (let* ((default-directory (vc-git-root dir))
  60. (compilation-buffer-name-function (lambda (major-mode-name) "*git-svn*")))
  61. (compile (concat "git svn "
  62. (ido-completing-read "git-svn command: " git-svn--available-commands nil t)))))
  63. (require-package 'git-messenger)
  64. (global-set-key (kbd "C-x v p") #'git-messenger:popup-message)
  65. (provide 'init-git)