HTTPS SSH

Digit Groups

The digit-groups Emacs package adds the digit-groups-mode minor mode, which makes it easier to read large numbers by highlighting digits at selected place-value positions (e.g., thousands place, millions place, billions place, etc.).

The default configuration formats in bold every other group of three digits. So, for example, in 9876543210.123456789, the digits 3, 4, 5 and 9 are highlighted both before and after the decimal (.). This makes it easy to find the place-value positions for thousands, millions, billions, and so forth.

To use this package, enable the digit-groups-mode minor mode in the buffers in which you wish to use it, or to enable it for all buffers, customize digit-groups-global-mode to t.

The default configuration highlights digits by making them bold. This can be changed by customizing digit-groups-default-face, or you can highlight different positions with different faces by customizing digit-groups-groups.

The default configuration highlights every other group of three digits between the novemdecillionths (10^-60) position and the novemdecillions (10^60) position with the exception of the units (10^0) position. This can be changed by customizing digit-groups-groups.

Changes to the configuration take effect only when the digit-groups-mode minor mode is being turned on. Thus, you may need to toggle the mode off and on again in affected buffers before you see the effect of any configuration changes.

Source

The source code for this package is available at: http://bitbucket.com/adamsmd/digit-groups

License

This package is licensed under the MIT license. See the LICENSE file in the source code.

Installation

  • Install the package files

    • Option 1 (preferred): Install from MELPA

      • Enable installation of packages from MELPA (see http://melpa.org/#/getting-started).

      • Launch Emacs's package manager from the menu with Options -> Manage Emacs Packages or manually with M-x package-list-packages.

      • Select the digit-groups package for installation.

    • Option 2: Install manually

      • Download the source code with: hg clone ssh://hg@bitbucket.org/adamsmd/digit-groups

      • Copy digit-groups.el into a directory in your load-path.

      • Load the package by either running (require 'digit-groups) manually or adding the following to your .emacs. (If you don't use after-init-hook, you may get an error when digit-groups requires dash.)

        (add-hook 'after-init-hook (lambda () (require 'digit-groups)))
        
  • Enable the digit-groups-mode minor mode in the buffers in which you wish to use it, or to enable it for all buffers, customize digit-groups-global-mode to t.

Limitations

  • Since the regular expression for matching the selected place-value positions is computed only when turning on the minor mode, you need to toggle the mode off and on again in affected buffers before you see the effect of configuration changes to digit-groups-groups, digit-groups-decimal-separator, or digit-groups-digits.

  • Due to how font-lock works, this package can highlight only a fixed number of place-value positions. Thus, the default configuration goes only between 10^-60 and 10^60.

  • Due to how regular expressions work on Emacs, this package doesn't support Unicode digits. They are treated as non-digits.

  • Due to how font-lock and regular expressions work in Emacs, this package may prevent highlighting that font-lock would normally do to the first non-digit character after a sequence of digits.

Contributing

I am looking for someone to take over maintenance of this package.

I am not an expert on Emacs Lisp programming, so suggestions about better ways to write or package the code are welcome.

I wrote this software to solve a particular problem that I had, and it now solves that problem. Unfortunately, I am fairly busy and don't have much time for feature improvements or on-going maintenance. This has a few consequences.

  • Suggestions, improvements, and fixes are welcome, but I may not get to them for quite some time.

  • The less work I have to do to incorporate your improvement or fix, the more quickly and more likely I will include it. The best case is a pull request that has a good comment explaining what it does and why it should be done and that has a simple enough diff that it is obviously correct.

  • I would be happy to turn over maintenance of this package to someone qualified who is in a better position to do on-going maintenance than I.