Add phabricator elisp
This commit is contained in:
parent
c1ba58c994
commit
2fb0acc5e0
1 changed files with 61 additions and 0 deletions
61
site-lisp/phabricator.el
Normal file
61
site-lisp/phabricator.el
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
;;; phabricator.el --- utils for jumping/navigating to phabricator
|
||||||
|
|
||||||
|
(require 'tbgX) ;; fb-find-repo-root
|
||||||
|
(require 'dired)
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
|
||||||
|
;; You need to ssh to your devbox with tunneling so that your ssh
|
||||||
|
;; session can run commands on your local machine i.e.:
|
||||||
|
;; `ssh -R12345:localhost:22 {your sandbox}`
|
||||||
|
(defvar phabricator-ssh-port "12345"
|
||||||
|
"default ssh port for calling into 'open' with the uri")
|
||||||
|
|
||||||
|
(defvar phabricator-diffusion-repo-alist
|
||||||
|
'(("admin" . "E/browse/admin/")
|
||||||
|
("dataswarm-hg" . "E/browse/projects/data/dataswarm/")
|
||||||
|
("dataswarm-git" . "E/browse/projects/data/dataswarm/")
|
||||||
|
("www" . "E/browse/tfb/trunk/www/")
|
||||||
|
("www-git" . "E/browse/tfb/trunk/www/")
|
||||||
|
("www-hg" . "E/browse/tfb/trunk/www/")
|
||||||
|
("configerator" . "CF/browse/master/")
|
||||||
|
("configerator-hg" . "CF/browse/master/")
|
||||||
|
("configerator-dsi" . "CFDSI/browse/master/")
|
||||||
|
("fbcode" . "FBCODE/browse/master/")
|
||||||
|
("fbobjc" . "FBOBJC/browse/master/")
|
||||||
|
("fbsource" . "FBS/browse/master/")
|
||||||
|
("opsfiles" . "O/browse/opsfiles/branches/PROD/")
|
||||||
|
("opsfiles-git" . "O/browse/opsfiles/branches/PROD/")
|
||||||
|
("fbandroid" . "FA/browse/master/")
|
||||||
|
("si_sigma" . "SIGMA/browse/master/"))
|
||||||
|
"repo-alist for determining the appropriate path to phabricator")
|
||||||
|
|
||||||
|
(defun phabricator-diffusion-url (beg end)
|
||||||
|
"Retrieves the corresponding diffusion (browse) URL for the current file,
|
||||||
|
prints it in the minibuffer (via message), and puts the URL on the
|
||||||
|
clipboard."
|
||||||
|
(interactive (if (use-region-p)
|
||||||
|
(list (region-beginning) (region-end))
|
||||||
|
(list nil nil)))
|
||||||
|
(flet ((line-num (pt)
|
||||||
|
(save-excursion
|
||||||
|
(goto-char pt)
|
||||||
|
(beginning-of-line)
|
||||||
|
(number-to-string (1+ (count-lines 1 (point)))))))
|
||||||
|
(let* ((file-name (file-truename
|
||||||
|
(or (buffer-file-name) (dired-file-name-at-point))))
|
||||||
|
(repo-path (directory-file-name (fb-find-repo-root file-name)))
|
||||||
|
(repo-name (file-name-nondirectory repo-path))
|
||||||
|
(rel-path (substring file-name (1+ (length repo-path))))
|
||||||
|
(diffusion-prefix "https://phabricator.fb.com/diffusion/")
|
||||||
|
(lines (if beg (concat "$" (line-num beg) "-" (line-num end)) ""))
|
||||||
|
(url (concat (concat diffusion-prefix
|
||||||
|
(cdr (assoc repo-name phabricator-diffusion-repo-alist))
|
||||||
|
rel-path lines))))
|
||||||
|
(with-temp-buffer
|
||||||
|
(message url)
|
||||||
|
(insert url)
|
||||||
|
(clipboard-kill-ring-save (point-min) (point-max))))))
|
||||||
|
|
||||||
|
(provide 'phabricator)
|
||||||
|
;;; phabricator.el ends here
|
||||||
Loading…
Add table
Add a link
Reference in a new issue