;;; oni-magit.el --- Magit config -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2026.0427.130949 ;; Package-Requires: (magit magit-popup oni-hydra) ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Magit configuration. ;;; Code: (require 'hydra) (require 'magit) (defvar oni:magit-status-rx (rx bos (optional "*") "magit: ")) (defun oni-magit-display-buffer-in-only-window (buffer alist) "Show only BUFFER. Delete all other windows and then pass BUFFER and ALIST on to `display-buffer-same-window'." (delete-other-windows) (display-buffer-same-window buffer alist)) ;;;###autoload(autoload 'oni-hydra-magit/body "oni-magit") (defhydra oni-hydra-magit (:color teal :hint nil) " ^Magit^ ^^--------- _s_: Status _i_: Init " ("s" magit-status) ("i" magit-init)) (setq magit-diff-refine-hunk 'all) (add-to-list 'display-buffer-alist `(,oni:magit-status-rx oni-magit-display-buffer-in-only-window)) (add-hook 'magit-blame-mode-hook 'pulse-momentary-highlight-one-line) (when (eq system-type 'windows-nt) (setq magit-git-executable "c:/msys64/usr/bin/git.exe")) ;;; The behavior was changed recently. The return key now opens the index file ;;; rather than the worktree file. I'm so used to return going to the worktree ;;; file that I just don't like the new behavior. I'm not sure what I'd ever ;;; want to see the index file for. (setq magit-diff-visit-prefer-worktree t) ;;;###autoload (global-set-key (kbd "C-c v") '("Magit commands" . oni-hydra-magit/body)) (defun oni-magit-highlight-linear-keywords () "Highlight and link Linear links." (while (re-search-forward (rx "[" (or "15U" "GOL" "OPT") "-" (minimal-match (one-or-more digit)) "]") nil t) (let ((match-text (buffer-substring-no-properties (1+ (match-beginning 0)) (1- (match-end 0))))) (put-text-property (match-beginning 0) (match-end 0) 'font-lock-face 'link) (put-text-property (match-beginning 0) (match-end 0) 'local-map (let ((keymap (make-sparse-keymap))) (define-key keymap (kbd "RET") (lambda () (interactive) (browse-url (format "https://linear.app/goldcoin/issue/%s" match-text)))) keymap))))) (add-hook 'forge-topic-wash-title-hook 'oni-magit-highlight-linear-keywords) (provide 'oni-magit) ;;; oni-magit.el ends here