Since the reactor is not working for you .. give this one a try. I don't use the startup suite to load lisp routines so you'll have to test that it loads each time a drawing is opened or if it's per session.
(defun c:dpson () (rm:displayplotstyles t nil))
(defun c:dpsonall () (rm:displayplotstyles t t))
(defun c:dpsoff () (rm:displayplotstyles nil nil))
(defun c:dpsoffall () (rm:displayplotstyles nil t))
(defun rm:displayplotstyles (bshow ball / acdoc bvshow disp layout layouts)
(princ "\n...Display plotstyles ")
(vl-load-com)
(setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
(setq layouts (vla-get-layouts acdoc))
(setq disp (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
(setq bvshow (if bshow
:vlax-true
:vlax-false
)
)
(princ (if bshow
(progn
;;; (or *editor-reactor-close*
;;; (setq *editor-reactor-close*
;;; (vlr-editor-reactor nil '((:vlr-beginclose . resetplotstyles)))
;;; )
;;; )
;;; (defun resetplotstyles (a b) (alert "foo") (rm:displayplotstyles nil t) (princ))
(vla-put-graphicswinlayoutbackgrndcolor disp 16777215)
"ON"
)
(progn (vla-put-graphicswinlayoutbackgrndcolor disp 0) "OFF")
)
)
(if ball
(progn (vlax-for layout layouts
(if (/= (vla-get-name layout) "Model")
(vla-put-showplotstyles layout bvshow)
)
)
(princ " in all layouts.\n")
)
(progn (vla-put-showplotstyles (vla-get-activelayout acdoc) bvshow)
(princ " in current layout.\n")
)
)
(vla-regen acdoc acallviewports)
(prin1)
)
;; This should run the reset when the lisp loads at startup
(rm:displayplotstyles nil t)
(princ (strcat "\n...DisplayPlotStyles is loaded || DPSON, DPSONALL, DPSOFF, DPSOFFALL...\n"))
(prin1)