From: Andreas Gerler Date: Mon, 21 Jan 2019 14:25:36 +0000 (+0100) Subject: Add hl-todos. X-Git-Url: http://git.bundesbrandschatzamt.de/?a=commitdiff_plain;h=71d1e9861b0305c33e535ab95a9284048c95c581;p=emacsconfig.git Add hl-todos. Signed-off-by: Andreas Gerler --- diff --git a/elpa/hl-todo-20190117.2101/hl-todo-autoloads.el b/elpa/hl-todo-20190117.2101/hl-todo-autoloads.el new file mode 100644 index 00000000..4bcbf66a --- /dev/null +++ b/elpa/hl-todo-20190117.2101/hl-todo-autoloads.el @@ -0,0 +1,80 @@ +;;; hl-todo-autoloads.el --- automatically extracted autoloads +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "hl-todo" "hl-todo.el" (0 0 0 0)) +;;; Generated autoloads from hl-todo.el + +(autoload 'hl-todo-mode "hl-todo" "\ +Highlight TODO and similar keywords in comments and strings. + +\(fn &optional ARG)" t nil) + +(defvar global-hl-todo-mode nil "\ +Non-nil if Global Hl-Todo mode is enabled. +See the `global-hl-todo-mode' command +for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `global-hl-todo-mode'.") + +(custom-autoload 'global-hl-todo-mode "hl-todo" nil) + +(autoload 'global-hl-todo-mode "hl-todo" "\ +Toggle Hl-Todo mode in all buffers. +With prefix ARG, enable Global Hl-Todo mode if ARG is positive; +otherwise, disable it. If called from Lisp, enable the mode if +ARG is omitted or nil. + +Hl-Todo mode is enabled in all buffers where +`hl-todo--turn-on-mode-if-desired' would do it. +See `hl-todo-mode' for more information on Hl-Todo mode. + +\(fn &optional ARG)" t nil) + +(autoload 'hl-todo-next "hl-todo" "\ +Jump to the next TODO or similar keyword. +The prefix argument ARG specifies how many keywords to move. +A negative argument means move backward that many keywords. + +\(fn ARG)" t nil) + +(autoload 'hl-todo-previous "hl-todo" "\ +Jump to the previous TODO or similar keyword. +The prefix argument ARG specifies how many keywords to move. +A negative argument means move forward that many keywords. + +\(fn ARG)" t nil) + +(autoload 'hl-todo-occur "hl-todo" "\ +Use `occur' to find all TODO or similar keywords. +This actually finds a superset of the highlighted keywords, +because it uses a regexp instead of a more sophisticated +matcher. + +\(fn)" t nil) + +(autoload 'hl-todo-insert-keyword "hl-todo" "\ +Insert TODO or similar keyword. +If point is not inside a string or comment, then insert a new +comment. If point is at the end of the line, then insert the +comment there, otherwise insert it as a new line before the +current line. + +\(fn KEYWORD)" t nil) + +(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hl-todo" '("hl-todo-"))) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; hl-todo-autoloads.el ends here diff --git a/elpa/hl-todo-20190117.2101/hl-todo-pkg.el b/elpa/hl-todo-20190117.2101/hl-todo-pkg.el new file mode 100644 index 00000000..7e22d327 --- /dev/null +++ b/elpa/hl-todo-20190117.2101/hl-todo-pkg.el @@ -0,0 +1,2 @@ +;;; -*- no-byte-compile: t -*- +(define-package "hl-todo" "20190117.2101" "highlight TODO and similar keywords" 'nil :commit "099d0f6d583009b0c5de8e51e38972d6e14e0587" :keywords '("convenience") :authors '(("Jonas Bernoulli" . "jonas@bernoul.li")) :maintainer '("Jonas Bernoulli" . "jonas@bernoul.li") :url "https://github.com/tarsius/hl-todo") diff --git a/elpa/hl-todo-20190117.2101/hl-todo.el b/elpa/hl-todo-20190117.2101/hl-todo.el new file mode 100644 index 00000000..6c44dd9f --- /dev/null +++ b/elpa/hl-todo-20190117.2101/hl-todo.el @@ -0,0 +1,278 @@ +;;; hl-todo.el --- highlight TODO and similar keywords -*- lexical-binding: t -*- + +;; Copyright (C) 2013-2019 Jonas Bernoulli + +;; Author: Jonas Bernoulli +;; Homepage: https://github.com/tarsius/hl-todo +;; Keywords: convenience +;; Package-Version: 20190117.2101 + +;; This file is not part of GNU Emacs. + +;; This file 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, or (at your option) +;; any later version. + +;; This file 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. + +;; For a full copy of the GNU General Public License +;; see . + +;;; Commentary: + +;; Highlight TODO and similar keywords in comments and strings. + +;; You can either turn on `hl-todo-mode' in individual buffers or use +;; the the global variant `global-hl-todo-mode'. Note that the option +;; `hl-todo-activate-in-modes' controls in what buffers the local mode +;; will be activated if you do the latter. By default it will only be +;; activated in buffers whose major-mode derives from `prog-mode'. + +;; This package also provides commands for moving to the next or +;; previous keyword and to invoke `occur' with a regexp that matches +;; all known keywords. If you want to use these commands, then you +;; should bind them in `hl-todo-mode-map', e.g.: +;; +;; (define-key hl-todo-mode-map (kbd "C-c p") 'hl-todo-previous) +;; (define-key hl-todo-mode-map (kbd "C-c n") 'hl-todo-next) +;; (define-key hl-todo-mode-map (kbd "C-c o") 'hl-todo-occur) + +;; See [[https://www.emacswiki.org/emacs/FixmeMode][this list]] on the Emacswiki for other packages that implement +;; the same basic features, but which might also provide additional +;; features that you might like, but which I don't deem necessary. + +;;; Code: + +(defgroup hl-todo nil + "Highlight TODO and similar keywords in comments and strings." + :group 'font-lock-extra-types) + +(defface hl-todo + '((t (:bold t :foreground "#cc9393"))) + "Base face used to highlight TODO and similar keywords. +The faces used to highlight certain keywords are, by default, +created by inheriting this face and using the appropriate +color specified using the option `hl-todo-keyword-faces' as +foreground color." + :group 'hl-todo) + +(defcustom hl-todo-activate-in-modes '(prog-mode text-mode) + "Major-modes in which `hl-todo-mode' should be activated. + +This is used by `global-hl-todo-mode', which activates +`hl-todo-mode' in all buffers whose major-mode derived from one +of the modes listed here. + +Even though `org-mode' indirectly derives from `text-mode' this +mode is never activated in `org-mode' buffers because that mode +provides its own TODO keyword handling." + :package-version '(hl-todo . "2.1.0") + :group 'hl-todo + :type '(repeat function)) + +(defcustom hl-todo-text-modes '(text-mode) + "Major-modes that are considered text-modes. + +In buffers whose major-mode derives from one of the modes listed +here TODO keywords are always highlighted even if they are not +located inside a string." + :package-version '(hl-todo . "2.1.0") + :group 'hl-todo + :type '(repeat function)) + +(defcustom hl-todo-keyword-faces + '(("HOLD" . "#d0bf8f") + ("TODO" . "#cc9393") + ("NEXT" . "#dca3a3") + ("THEM" . "#dc8cc3") + ("PROG" . "#7cb8bb") + ("OKAY" . "#7cb8bb") + ("DONT" . "#5f7f5f") + ("FAIL" . "#8c5353") + ("DONE" . "#afd8af") + ("NOTE" . "#d0bf8f") + ("KLUDGE" . "#d0bf8f") + ("HACK" . "#d0bf8f") + ("TEMP" . "#d0bf8f") + ("FIXME" . "#cc9393") + ("XXX" . "#cc9393") + ("XXXX" . "#cc9393") + ("???" . "#cc9393")) + "Faces used to highlight specific TODO keywords." + :package-version '(hl-todo . "2.0.0") + :group 'hl-todo + :type '(repeat (cons (string :tag "Keyword") + (choice :tag "Face " + (string :tag "Color") + (sexp :tag "Face"))))) + +(defcustom hl-todo-highlight-punctuation "" + "String of characters to highlight after keywords. + +Each of the characters appearing in this string is highlighted +using the same face as the preceeding keyword when it directly +follows the keyword. + +Characters whose syntax class is `w' (which means word), +including alphanumeric characters, cannot be used here." + :package-version '(hl-todo . "2.0.0") + :group 'hl-todo + :type 'string) + +(defvar-local hl-todo--regexp nil) +(defvar-local hl-todo--keywords nil) + +(defun hl-todo--setup () + (setq hl-todo--regexp + (concat "\\(\\<" + (regexp-opt (mapcar #'car hl-todo-keyword-faces) t) + "\\>" + (and (not (equal hl-todo-highlight-punctuation "")) + (concat "[" hl-todo-highlight-punctuation "]*")) + "\\)")) + (setq hl-todo--keywords + `(((lambda (bound) (hl-todo--search nil bound)) + (1 (hl-todo--get-face) t t)))) + (font-lock-add-keywords nil hl-todo--keywords t)) + +(defvar hl-todo--syntax-table (copy-syntax-table text-mode-syntax-table)) + +(defun hl-todo--search (&optional regexp bound backward) + (unless regexp + (setq regexp hl-todo--regexp)) + (and (let ((case-fold-search nil)) + (with-syntax-table hl-todo--syntax-table + (funcall (if backward #'re-search-backward #'re-search-forward) + regexp bound t))) + (or (apply #'derived-mode-p hl-todo-text-modes) + (hl-todo--inside-comment-or-string-p) + (and (or (not bound) + (funcall (if backward #'< #'>) bound (point))) + (hl-todo--search regexp bound backward))))) + +(defun hl-todo--inside-comment-or-string-p () + (nth 8 (syntax-ppss))) + +(defun hl-todo--get-face () + (let ((face (cdr (assoc (match-string 2) hl-todo-keyword-faces)))) + (if (stringp face) + (list :inherit 'hl-todo :foreground face) + face))) + +(defvar hl-todo-mode-map (make-sparse-keymap) + "Keymap for `hl-todo-mode'.") + +;;;###autoload +(define-minor-mode hl-todo-mode + "Highlight TODO and similar keywords in comments and strings." + :lighter "" + :keymap hl-todo-mode-map + :group 'hl-todo + (if hl-todo-mode + (hl-todo--setup) + (font-lock-remove-keywords nil hl-todo--keywords)) + (when font-lock-mode + (save-excursion + (goto-char (point-min)) + (while (hl-todo--search) + (save-excursion + (font-lock-fontify-region (match-beginning 0) (match-end 0) nil)))))) + +;;;###autoload +(define-globalized-minor-mode global-hl-todo-mode + hl-todo-mode hl-todo--turn-on-mode-if-desired) + +(defun hl-todo--turn-on-mode-if-desired () + (when (and (apply #'derived-mode-p hl-todo-activate-in-modes) + (not (derived-mode-p 'org-mode))) + (hl-todo-mode 1))) + +;;;###autoload +(defun hl-todo-next (arg) + "Jump to the next TODO or similar keyword. +The prefix argument ARG specifies how many keywords to move. +A negative argument means move backward that many keywords." + (interactive "p") + (if (< arg 0) + (hl-todo-previous (- arg)) + (while (and (> arg 0) + (not (eobp)) + (progn + (when (let ((case-fold-search nil)) + (looking-at hl-todo--regexp)) + (goto-char (match-end 0))) + (or (hl-todo--search) + (user-error "No more matches")))) + (cl-decf arg)))) + +;;;###autoload +(defun hl-todo-previous (arg) + "Jump to the previous TODO or similar keyword. +The prefix argument ARG specifies how many keywords to move. +A negative argument means move forward that many keywords." + (interactive "p") + (if (< arg 0) + (hl-todo-next (- arg)) + (while (and (> arg 0) + (not (bobp)) + (let ((start (point))) + (hl-todo--search (concat hl-todo--regexp "\\=") nil t) + (or (hl-todo--search nil nil t) + (progn (goto-char start) + (user-error "No more matches"))))) + (goto-char (match-end 0)) + (cl-decf arg)))) + +;;;###autoload +(defun hl-todo-occur () + "Use `occur' to find all TODO or similar keywords. +This actually finds a superset of the highlighted keywords, +because it uses a regexp instead of a more sophisticated +matcher." + (interactive) + (occur hl-todo--regexp)) + +;;;###autoload +(defun hl-todo-insert-keyword (keyword) + "Insert TODO or similar keyword. +If point is not inside a string or comment, then insert a new +comment. If point is at the end of the line, then insert the +comment there, otherwise insert it as a new line before the +current line." + (interactive + (list (completing-read + "Insert keyword: " + (mapcar (pcase-lambda (`(,keyword . ,face)) + (propertize keyword 'face + (if (stringp face) + (list :inherit 'hl-todo :foreground face) + face))) + hl-todo-keyword-faces)))) + (cond + ((hl-todo--inside-comment-or-string-p) + (insert (concat (and (not (memq (char-before) '(?\s ?\t))) " ") + keyword + (and (not (memq (char-after) '(?\s ?\t ?\n))) " ")))) + ((eolp) + (insert (concat (and (not (memq (char-before) '(?\s ?\t))) " ") + (format "%s %s " comment-start keyword)))) + (t + (goto-char (line-beginning-position)) + (insert (format "%s %s \n" + (if (derived-mode-p 'lisp-mode 'emacs-lisp-mode) + (format "%s%s" comment-start comment-start) + comment-start) + keyword)) + (backward-char) + (indent-region (line-beginning-position) (line-end-position))))) + +;;; _ +(provide 'hl-todo) +;; Local Variables: +;; indent-tabs-mode: nil +;; End: +;;; hl-todo.el ends here diff --git a/elpa/hl-todo-readme.txt b/elpa/hl-todo-readme.txt new file mode 100644 index 00000000..285ca5fb --- /dev/null +++ b/elpa/hl-todo-readme.txt @@ -0,0 +1,20 @@ +Highlight TODO and similar keywords in comments and strings. + +You can either turn on `hl-todo-mode' in individual buffers or use +the the global variant `global-hl-todo-mode'. Note that the option +`hl-todo-activate-in-modes' controls in what buffers the local mode +will be activated if you do the latter. By default it will only be +activated in buffers whose major-mode derives from `prog-mode'. + +This package also provides commands for moving to the next or +previous keyword and to invoke `occur' with a regexp that matches +all known keywords. If you want to use these commands, then you +should bind them in `hl-todo-mode-map', e.g.: + + (define-key hl-todo-mode-map (kbd "C-c p") 'hl-todo-previous) + (define-key hl-todo-mode-map (kbd "C-c n") 'hl-todo-next) + (define-key hl-todo-mode-map (kbd "C-c o") 'hl-todo-occur) + +See [[https://www.emacswiki.org/emacs/FixmeMode][this list]] on the Emacswiki for other packages that implement +the same basic features, but which might also provide additional +features that you might like, but which I don't deem necessary.