GitHub code review with Emacs

At work, my team uses GitHub enterprise to store and manage our repositories. We also use GitHub code review.

Issues with code review:

When reviewing code:

Wouldn’t it be nice to be able to review code in your favorite editor?

VSCode shipped last year integration for GitHub pull requests and I wanted to build the same kind of thing for my favorite editor, Emacs.

I built github-review an Emacs package to format and submit GitHub code reviews!

What does it look like?

In emacs you can start by calling github-review-start and entering a Pull Request URL. You will, then be prompted with a buffer containing the diff of the pull request. The diff contains the description of the PR at the top with line starting with ~. For example, reviewing this pull request would open the following buffer:

~ Fix broken link to closure cheat sheet
~
~ The owner of http://www.closurecheatsheet.com/ lost the domain and does not intend to maintain it. This commit replaces the now defunkt link to http://www.closurecheat$
~ ^M
~ I also opened an issue on the cheat sheet repo to follow up with the author of the cheat sheet https://github.com/kuzmisin/closurecheatsheet/issues/12.
diff --git a/content/reference/google-closure-library.adoc b/content/reference/google-closure-library.adoc
index 58baa4b..eae7707 100644
--- a/content/reference/google-closure-library.adoc
+++ b/content/reference/google-closure-library.adoc
@@ -18,7 +18,7 @@ rich-text editing, and UI widgets/controls.

 * http://google.github.io/closure-library/api/[Google Closure Library
 API Reference]
-* http://www.closurecheatsheet.com/[Closure Cheatsheet] - abridged API
+* https://github.com/kuzmisin/closurecheatsheet[Closure Cheatsheet] - abridged API
 with usage examples

 [[try-the-wrapper-libraries-first]]

You can add comments at the top level by writing lines starting with # after the PR description and before the beginning of the diff.

You can add comments inline by adding lines starting with # inline. See these features in the example below:

~ Fix broken link to closure cheat sheet
~
~ The owner of http://www.closurecheatsheet.com/ lost the domain and does not intend to maintain it. This commit replaces the now defunkt link to http://www.closurecheat$
~ ^M
~ I also opened an issue on the cheat sheet repo to follow up with the author of
the cheat sheet https://github.com/kuzmisin/closurecheatsheet/issues/12.
# This is a global comment at the top of the file
# with multiple
# lines and will be submitted as a top level review comment
diff --git a/content/reference/google-closure-library.adoc b/content/reference/google-closure-library.adoc
index 58baa4b..eae7707 100644
--- a/content/reference/google-closure-library.adoc
+++ b/content/reference/google-closure-library.adoc
@@ -18,7 +18,7 @@ rich-text editing, and UI widgets/controls.

 * http://google.github.io/closure-library/api/[Google Closure Library
 API Reference]
-* http://www.closurecheatsheet.com/[Closure Cheatsheet] - abridged API
+* https://github.com/kuzmisin/closurecheatsheet[Closure Cheatsheet] - abridged API
# And a comment inline about
# a specific line
# ```with some
# code```
  with usage examples
# Some other comment inline
 with usage examples

 [[try-the-wrapper-libraries-first]]

Once your are done, you can submit your review with one of github-review-approve, github-review-comment and github-review-reject.

Advantages

It solves the problem identified above:

This workflow has made me more focused, fast, and thorough when reviewing code!

Where is the code? How can I use it?

  (package! 
    github-review
    :recipe 
      (:fetcher github 
       :repo "charignon/github-review"
       :files ("github-review.el")))