X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/dfa34e8b160fcd5c2b3178f6b54470fd31b5c640..1f6919366360527d9c1a8a37ea31e8ec9300b7d7:/packages/adaptive-wrap/adaptive-wrap.el diff --git a/packages/adaptive-wrap/adaptive-wrap.el b/packages/adaptive-wrap/adaptive-wrap.el index a89644724..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, 2012 Free Software Foundation, Inc. +;; Copyright (C) 2011-2013 Free Software Foundation, Inc. ;; Author: Stephen Berman ;; Stefan Monnier -;; Version: 0.2 +;; 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'. @@ -58,7 +60,9 @@ extra indent = 2 (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