X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/d711ac599cf1be6d5aea88709a1caf7195587010..6517ec8921438deae6547ab5eb38e004935d5618:/packages/adaptive-wrap/adaptive-wrap.el diff --git a/packages/adaptive-wrap/adaptive-wrap.el b/packages/adaptive-wrap/adaptive-wrap.el index 28db6792e..9455789d6 100644 --- a/packages/adaptive-wrap/adaptive-wrap.el +++ b/packages/adaptive-wrap/adaptive-wrap.el @@ -1,10 +1,10 @@ ;;; adaptive-wrap.el --- Smart line-wrapping with wrap-prefix -;; Copyright (C) 2011 Stefan Monnier +;; Copyright (C) 2011-2013 Free Software Foundation, Inc. ;; Author: Stephen Berman ;; Stefan Monnier -;; Version: 0.1 +;; Version: 0.5 ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -28,6 +28,8 @@ ;;; Code: +(require 'easymenu) + (defcustom adaptive-wrap-extra-indent 0 "Number of extra spaces to indent in `adaptive-wrap-prefix-mode'. @@ -54,11 +56,13 @@ extra indent = 2 nisi ut aliquip ex ea commodo consequat." :type 'integer :group 'visual-line) -(make-local-variable 'adaptive-wrap-extra-indent) +(make-variable-buffer-local 'adaptive-wrap-extra-indent) (defun adaptive-wrap-fill-context-prefix (beg en) "Like `fill-context-prefix', but with length adjusted by `adaptive-wrap-extra-indent'." - (let* ((fcp (fill-context-prefix beg en)) + ;; Note: fill-context-prefix may return nil; See: + ;; http://article.gmane.org/gmane.emacs.devel/156285 + (let* ((fcp (or (fill-context-prefix beg en) "")) (fcp-len (string-width fcp)) (fill-char (if (< 0 fcp-len) (string-to-char (substring fcp -1)) @@ -92,12 +96,26 @@ extra indent = 2 :lighter "" :group 'visual-line (if adaptive-wrap-prefix-mode - (jit-lock-register #'adaptive-wrap-prefix-function) + (progn + ;; HACK ATTACK! We need to run after font-lock, but jit-lock-register + ;; doesn't accept an `append' argument, so we add ourselves beforehand, + ;; to make sure we're at the end of the hook (bug#15155). + (add-hook 'jit-lock-functions + #'adaptive-wrap-prefix-function 'append t) + (jit-lock-register #'adaptive-wrap-prefix-function)) (jit-lock-unregister #'adaptive-wrap-prefix-function) (with-silent-modifications (save-restriction (widen) (remove-text-properties (point-min) (point-max) '(wrap-prefix nil)))))) +(define-key-after (lookup-key menu-bar-options-menu [line-wrapping]) + [adaptive-wrap] + '(menu-item "Adaptive Wrap" adaptive-wrap-prefix-mode + :visible (menu-bar-menu-frame-live-and-visible-p) + :help "Show wrapped long lines with an adjustable prefix" + :button (:toggle . (bound-and-true-p adaptive-wrap-prefix-mode))) + word-wrap) + (provide 'adaptive-wrap) ;;; adaptive-wrap.el ends here