]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/adaptive-wrap/adaptive-wrap.el
Merge commit '3abcd90ddc2f446ddf0fb874dd79ba870c26ad2d' from js2-mode
[gnu-emacs-elpa] / packages / adaptive-wrap / adaptive-wrap.el
index 9d2007adda8498d77fa05cb61ec0f358f78e0748..9455789d69f0e28acb815ec3c26ae5e2431d58fe 100644 (file)
@@ -4,7 +4,7 @@
 
 ;; Author: Stephen Berman <stephen.berman@gmx.net>
 ;;         Stefan Monnier <monnier@iro.umontreal.ca>
-;; Version: 0.3
+;; 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'.
 
@@ -94,32 +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))))))
 
-;;;###autoload
-(easy-menu-add-item menu-bar-options-menu
-                    '("Line Wrapping in This Buffer")
-                    ["Adaptive Wrap"
-                     (lambda ()
-                       (interactive)
-                      (if adaptive-wrap-prefix-mode
-                          (adaptive-wrap-prefix-mode -1)
-                        (adaptive-wrap-prefix-mode 1)))
-                     :visible (menu-bar-menu-frame-live-and-visible-p)
-                     :help "Show wrapped long lines with an adjustable prefix"
-                     :style toggle
-                     :selected adaptive-wrap-prefix-mode])
-
-(defun adaptive-wrap-unload-function ()
-  "Cleanup adaptive-wrap package."
-  (easy-menu-remove-item menu-bar-options-menu
-                         '("Line Wrapping in This Buffer")
-                         "Adaptive Wrap"))
+(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