All Projects → alphapapa → Magit Todos

alphapapa / Magit Todos

Licence: gpl-3.0
Show source files' TODOs (and FIXMEs, etc) in Magit status buffer

Labels

Projects that are alternatives of or similar to Magit Todos

Sayid
A debugger for Clojure
Stars: ✭ 367 (-12.41%)
Mutual labels:  emacs
Org Capture Extension
A Chrome and firefox extension facilitating org-capture in emacs
Stars: ✭ 396 (-5.49%)
Mutual labels:  emacs
Emacs Tree Sitter
Tree-sitter for Emacs
Stars: ✭ 409 (-2.39%)
Mutual labels:  emacs
Writegood Mode
Minor mode for Emacs to improve English writing
Stars: ✭ 369 (-11.93%)
Mutual labels:  emacs
.emacs.d
M-EMACS, a full-featured GNU Emacs configuration "distribution"
Stars: ✭ 387 (-7.64%)
Mutual labels:  emacs
Parinfer Mode
Parinfer for Emacs :)
Stars: ✭ 406 (-3.1%)
Mutual labels:  emacs
Org Sidebar
A helpful sidebar for Org mode
Stars: ✭ 354 (-15.51%)
Mutual labels:  emacs
Zero To Emacs And Org Roam
Step by step guide from zero to installing and setting up Emacs and Org-roam on Windows 10
Stars: ✭ 418 (-0.24%)
Mutual labels:  emacs
Company Box
A company front-end with icons
Stars: ✭ 395 (-5.73%)
Mutual labels:  emacs
Awesome Dotfiles
Dotfiles for awesome people using the awesomewm linux environment
Stars: ✭ 409 (-2.39%)
Mutual labels:  emacs
Kubernetes El
Emacs porcelain for Kubernetes.
Stars: ✭ 372 (-11.22%)
Mutual labels:  emacs
Emacs Racer
Racer support for Emacs
Stars: ✭ 381 (-9.07%)
Mutual labels:  emacs
Emacs Purpose
Manage Windows and Buffers According to Purposes
Stars: ✭ 407 (-2.86%)
Mutual labels:  emacs
Pg
This repo is the new home of Proof General
Stars: ✭ 367 (-12.41%)
Mutual labels:  emacs
Centaur Tabs
Emacs plugin aiming to become an aesthetic, modern looking tabs plugin
Stars: ✭ 414 (-1.19%)
Mutual labels:  emacs
Ensime Emacs
ENhanced Scala Interaction Mode for Emacs
Stars: ✭ 361 (-13.84%)
Mutual labels:  emacs
Emacs Theme Gruvbox
Gruvbox is a retro groove color scheme for Emacs. Port of the Vim version.
Stars: ✭ 402 (-4.06%)
Mutual labels:  emacs
Deadgrep
fast, friendly searching with ripgrep and Emacs
Stars: ✭ 419 (+0%)
Mutual labels:  emacs
Emacs From Scratch
An example of a fully custom Emacs configuration developed live on YouTube!
Stars: ✭ 412 (-1.67%)
Mutual labels:  emacs
Jdee
The JDEE is an add-on software package that turns Emacs into a comprehensive system for creating, editing, debugging, and documenting Java applications.
Stars: ✭ 409 (-2.39%)
Mutual labels:  emacs

#+BEGIN_HTML #+END_HTML

  • magit-todos

    [[https://melpa.org/#/magit-todos][file:https://melpa.org/packages/magit-todos-badge.svg]] [[https://stable.melpa.org/#/magit-todos][file:https://stable.melpa.org/packages/magit-todos-badge.svg]]

This package displays keyword entries from source code comments and Org files in the Magit status buffer. Activating an item jumps to it in its file. By default, it uses keywords from [[https://github.com/tarsius/hl-todo][hl-todo]], minus a few (like =NOTE=).

** Contents :PROPERTIES: :TOC: siblings :END:

-  [[#screenshots][Screenshots]]
-  [[#installation][Installation]]
-  [[#usage][Usage]]
-  [[#changelog][Changelog]]
-  [[#credits][Credits]]

** Screenshots

[[screenshots/matrix.png]]

Items from Org files can be displayed, and can be fontified like in Org buffers:

[[screenshots/fancy-org.png]]

Items can also be automatically grouped in a customizable way, which can be helpful in large repos:

[[screenshots/emacs-grouped.png]]

This shows grouping items by the first path component, then keyword, then filename, and with optional keyword header fontification:

[[screenshots/emacs-grouped-by-path.png]]

Items in =KEYWORD(username):= format are also read:

[[screenshots/thiderman.png]]

Items specific to the current branch (or =git diff=) can be displayed in a separate list:

[[screenshots/branch-list.png]]

** Installation :PROPERTIES: :TOC: 0 :END:

*** External scanner

One of the following external scanners is required:

  • [[https://github.com/BurntSushi/ripgrep][ripgrep]]
  • =git grep= (built with PCRE support)
  • GNU =grep= (built with PCRE support)

Most Linux systems should have the latter two by default, but some non-standard systems may not. For example, on MacOS you may use [[https://brew.sh/][Homebrew]] to install =ripgrep=, or =git= with PCRE support, like: brew reinstall --with-pcre2 git.

*** Emacs package

If you installed from MELPA, you're done!

**** Manually

Install these required packages:

  • =async=
  • =dash=
  • =f=
  • =hl-todo=
  • =magit=
  • =pcre2el=
  • =s=

Then put this file in your =load-path=, and put this in your init file:

#+BEGIN_SRC elisp (require 'magit-todos) #+END_SRC

** Usage :PROPERTIES: :TOC: 0 :END:

Activate =magit-todos-mode=. Then open a Magit status buffer, or run magit-todos-list to show a dedicated to-do list buffer.

*** Key bindings

In Magit status buffer:

With point in to-do list:

*** Commands

  • =magit-todos-mode= :: Activate =magit-todos-mode=, which automatically inserts the to-do list in Magit status buffers.
  • =magit-todos-list= :: Display the to-do list in a separate buffer. This also works outside of git repos.

Helm and Ivy are also supported. Note that the =helm= and =ivy= packages are not required, nor does this package depend on them; they are only used if present. Note as well that these commands can be used directly from source buffers, independently of Magit.

  • =helm-magit-todos= :: Display the project to-do list with Helm.
  • =ivy-magit-todos= :: Display the project to-do list with Ivy.

*** Tips

  • Customize settings in the =magit-todos= group.
  • Use dir-local variables to set per-repository settings. For example, to exclude files and directories from being scanned for to-dos in a repo:
    1. From a buffer in the repo's directory (like a magit-status buffer), run the command add-dir-local-variable.
    2. Choose the mode magit-status-mode.
    3. Choose the variable magit-todos-exclude-globs.
    4. Input the glob value, like ("*.html") to exclude HTML files. (Note that the input is read as a lisp value, and this variable must be a list of strings.)
    5. Now Emacs will remember that setting in that repository. (You may also want to commit the =.dir-locals.el= file to the repo.)
  • The magit-todos-list command also works outside of git repos.

**** TRAMP :PROPERTIES: :CUSTOM_ID: TRAMP :END:

=magit-todos= attempts to work in remote repositories accessed via TRAMP. Note that if TRAMP can't find the scanner configured in =magit-todos-scanner=, you may need to use directory-local variables to either add the correct path to =tramp-remote-path= or choose a different scanner.

** Changelog :PROPERTIES: :TOC: 0 :END:

*** 1.6-pre

Added

  • Option =magit-todos-submodule-list= controls whether to-dos in submodules are displayed (default: off). (Thanks to [[https://github.com/matsievskiysv][Matsievskiy S.V.]])

*** 1.5.3

Fixes

  • Remove face from indentation. (Thanks to [[https://github.com/Alexander-Miller][Alexander Miller]].)

*** 1.5.2

Fixes

  • Use =magit-todos-exclude-globs= in branch todo list.

*** 1.5.1

Fixes

  • Add insertion function to end of =magit-status-sections-hook=.

*** 1.5

Added

  • Support for remote repositories accessed via TRAMP. See [[#TRAMP][usage notes]].
  • Ivy history support. (Thanks to [[https://github.com/leungbk][Brian Leung]].)
  • Option =magit-todos-branch-list-merge-base-ref=.
  • Command =magit-todos-branch-list-set-commit=, bound to =B= with point in a to-do section.

Changed

  • Branch todo list now uses =git merge-base= to determine the ancestor commit to compare to =HEAD=.
  • Enable list-wide key bindings on both headings and to-do items.

Removed

  • Option =magit-todos-branch-list-commit-ref=, replaced by option =magit-todos-branch-list-merge-base-ref=.

*** 1.4.3

Fixed

  • Don't use =--help= option when testing =git grep= command, because it can launch a Web browser on some configurations or platforms (see [[https://github.com/alphapapa/magit-todos/issues/43][#43]]).
  • Caching when branch diff list is displayed.
  • Commands =magit-section-forward= / =backward= sometimes skipped sections (see [[https://github.com/alphapapa/magit-todos/issues/66][#66]]).

*** 1.4.2

Fixed

  • Refreshing =magit-todos-list= buffer. ([[https://github.com/alphapapa/magit-todos/issues/92][#92]]. Thanks to [[https://github.com/filalex77][Oleksii Filonenko]] and [[https://github.com/hlissner][Henrik Lissner]] for reporting.)

*** 1.4.1

Fixed

  • Compiler warning.

*** 1.4

Added

  • Commands =helm-magit-todos= and =ivy-magit-todos=, which display items with Helm and Ivy. (Note that Helm and Ivy are not required, nor does this package depend on them; they are only used if present.)

Fixed

  • Warn about files containing lines too long for Emacs's regexp matcher to handle, rather than aborting the scan ([[https://github.com/alphapapa/magit-todos/issues/63][#63]]).

Updated

  • Use =magit-setup-buffer= instead of =magit-mode-setup=.

Internal

  • Add synchronous mode to scanner functions, which return results directly usable by other code.

*** 1.3

Added

  • Branch diff task list. See new options =magit-todos-branch-list= and =magit-todos-branch-list-commit-ref=, and command =magit-todos-branch-list-toggle=, bound to =b= with point on to-do list heading. ([[https://github.com/alphapapa/magit-todos/issues/30][#30]], [[https://github.com/alphapapa/magit-todos/issues/77][#77]], [[https://github.com/alphapapa/magit-todos/pull/82][#82]]. Thanks to [[https://github.com/itamarst][Itamar Turner-Trauring]] and [[https://github.com/arronmabrey][Arron Mabrey]] for the suggestion, and to [[https://github.com/smaret][Sébastien Maret]] for implementing the commit-ref option.)

Internal

  • Put newline in section headings. ([[https://github.com/alphapapa/magit-todos/pull/68][#68]]. Thanks to [[https://github.com/vermiculus][Sean Allred]].)

*** 1.2

Added

  • Allow magit-todos-list to work outside git repos.
  • Option magit-todos-keyword-suffix replaces magit-todos-require-colon, allowing for common and custom suffixes after item keywords (e.g. to match items like =TODO(user):=). (Fixes [[https://github.com/alphapapa/magit-todos/issues/56][#56]]. Thanks to [[https://github.com/thiderman][Lowe Thiderman]] for suggesting.)
  • Optionally group and sort by item suffixes (e.g. handy when suffixes contain usernames).
  • Bind @@html:@@[email protected]@html:@@ on top-level =TODOs= section heading to magit-todos-list command.

Fixed

  • Don't fontify section item counts. (Thanks to [[https://github.com/m-cat][Marcin Swieczkowski]].)

Worked Around

  • Issue in =async= regarding deleted buffers/processes. This is not an ideal solution, but it solves the problem for now.

Removed

  • Option magit-todos-require-colon, replaced by magit-todos-keyword-suffix.

*** 1.1.8

Fixed

  • Properly unbind key when mode is disabled. ([[https://github.com/alphapapa/magit-todos/pull/74][#74]]. Thanks to [[https://github.com/akirak][Akira Komamura]].)
  • Don't show message when key is already bound correctly. ([[https://github.com/alphapapa/magit-todos/pull/75][#75]]. Thanks to [[https://github.com/akirak][Akira Komamura]].)

*** 1.1.7

Fixed

  • Disable undo in hidden Org fontification buffer.
  • Expand top-level to-do list in magit-todos-list buffer.

*** 1.1.6

Fixed

  • Insert root section in magit-todos-list command. (Really fixes [[https://github.com/alphapapa/magit-todos/issues/55][#55]]. Thanks to [[https://github.com/tarsius][Jonas Bernoulli]].)

*** 1.1.5

Fixed

  • Hide process buffers. (Thanks to [[https://github.com/purcell][Steve Purcell]].)

*** 1.1.4

Fixes

  • magit-todos-depth number-to-string conversion.

*** 1.1.3

Fixes

  • Update magit-todos-list for Magit [[https://github.com/magit/magit/commit/40616d7ba57b7c491513e4130d82371460f9e94d][change]]. (Fixes [[https://github.com/alphapapa/magit-todos/issues/55][#55]]. Thanks to [[https://github.com/Oghma][Matteo Lisotto]].)

*** 1.1.2

Fixes

  • Convert magit-todos-depth setting appropriately for =rg= scanner.

*** 1.1.1

Fixes

  • Ensure mode is activated in magit-todos-update command. (Fixes #54. Thanks to [[https://github.com/smaret][Sebastien Maret]].)

*** 1.1

Additions

  • Dedicated to-do list buffer.
  • Option magit-todos-exclude-globs, a list of glob patterns to ignore when searching for to-do items.
  • Kill running scans when Magit status buffer is closed.

Changes

  • Remove dependency on a.
  • Remove dependency on =anaphora=.

Fixes

  • Add missing cl- prefix. Thanks to [[https://github.com/jellelicht][Jelle Licht]].

*** 1.0.4

Fixes

  • Fix =find|grep= scanner ([[https://github.com/alphapapa/magit-todos/issues/46][issue 46]]). Thanks to [[https://github.com/Ambrevar][Pierre Neidhardt]].

*** 1.0.3

Fixes

  • Define variables earlier to avoid compiler warnings.
  • Remove unused var magit-todos-ignore-file-suffixes.

*** 1.0.2

Fixes

  • regexp-quote item keywords when jumping to an item. (Fixes #36. Thanks to [[https://github.com/dfeich][Derek Feichtinger]].)
  • Ensure =grep= supports =--perl-regexp=.
  • Warn when unable to find a suitable scanner (i.e. =rg=, or a PCRE-compatible version of =git= or =grep=).

*** 1.0.1

Fixes

  • Test whether =git grep= supports =--perl-regexp= by checking its =--help= output, rather than doing a search and checking for an error.
  • message instead of error for weird behavior. (This message exists to help track down an inconsequential bug.)
  • Remove unused magit-todos-ignore-directories option. (To be replaced in a future release.)

*** 1.0.0

Initial release.

** Credits

  • This package was inspired by [[https://github.com/danielma/magit-org-todos.el][magit-org-todos]].
  • The =ag= support was made much simpler by the great [[https://github.com/joddie/pcre2el][pcre2el]] package by Jon Oddie.
  • Thanks to [[https://github.com/zhaojiangbin][Jiangbin Zhao]] for his extensive testing and feedback.

** License :PROPERTIES: :TOC: ignore :END:

GPLv3

Local Variables:

before-save-hook: org-make-toc

End:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].