comparison yatexprc.el @ 403:d8d66ed51034 dev

Now on-the-fly preview is sticky to the environment where once called.
author HIROSE Yuuji <yuuji@gentei.org>
date Sun, 18 Jan 2015 22:10:07 +0900
parents 33bde8c52fcc
children 6b0d090840c1
comparison
equal deleted inserted replaced
402:27d24ac018c1 403:d8d66ed51034
1 ;;; yatexprc.el --- YaTeX process handler -*- coding: sjis -*- 1 ;;; yatexprc.el --- YaTeX process handler -*- coding: sjis -*-
2 ;;; 2 ;;;
3 ;;; (c)1993-2015 by HIROSE Yuuji.[yuuji@yatex.org] 3 ;;; (c)1993-2015 by HIROSE Yuuji.[yuuji@yatex.org]
4 ;;; Last modified Fri Jan 16 15:22:23 2015 on firestorm 4 ;;; Last modified Sun Jan 18 21:50:18 2015 on firestorm
5 ;;; $Id$ 5 ;;; $Id$
6 6
7 ;;; Code: 7 ;;; Code:
8 ;(require 'yatex) 8 ;(require 'yatex)
9 (require 'yatexlib) 9 (require 'yatexlib)
534 ;(put-image (create-image (expand-file-name target)) (point)) 534 ;(put-image (create-image (expand-file-name target)) (point))
535 (insert-image-file target) 535 (insert-image-file target)
536 (setq img (plist-get (text-properties-at (point)) 'intangible)) 536 (setq img (plist-get (text-properties-at (point)) 'intangible))
537 (YaTeX-preview-image-mode) 537 (YaTeX-preview-image-mode)
538 (if img 538 (if img
539 (let ((height (cdr (image-size img)))) 539 (let ((height (1+ (cdr (image-size img)))))
540 (enlarge-window 540 (enlarge-window
541 (- (ceiling (min height (/ (frame-height) 2))) 541 (- (ceiling (min height (/ (frame-height) 2)))
542 (window-height))))) 542 (window-height)))))
543 ;; Remember elapsed time, which will be threshold in onthefly-preview 543 ;; Remember elapsed time, which will be threshold in onthefly-preview
544 (put 'YaTeX-typeset-conv2image-chain 'elapse 544 (put 'YaTeX-typeset-conv2image-chain 'elapse
571 (cond 571 (cond
572 ;; In minibuffer, do nothing 572 ;; In minibuffer, do nothing
573 ((minibuffer-window-active-p (selected-window)) nil) 573 ((minibuffer-window-active-p (selected-window)) nil)
574 ;; If point went out from last environment, cancel timer 574 ;; If point went out from last environment, cancel timer
575 ;;;((and (message "s=%d, e=%d, p=%d" s e (point)) nil)) 575 ;;;((and (message "s=%d, e=%d, p=%d" s e (point)) nil))
576 ((null (buffer-file-name)) nil) ;;At momentary-string-display, it's nil.
576 ((or (not (eq b (window-buffer (selected-window)))) 577 ((or (not (eq b (window-buffer (selected-window))))
577 (< (point) s) 578 (< (point) s)
578 (not (overlayp overlay)) 579 (not (overlayp overlay))
579 (not (eq (overlay-buffer overlay) (current-buffer))) 580 (not (eq (overlay-buffer overlay) (current-buffer)))
580 (> (point) (overlay-end overlay))) 581 (> (point) (overlay-end overlay)))
607 'YaTeX-typeset-environment-by-builtin for using yatex-builtin.") 608 'YaTeX-typeset-environment-by-builtin for using yatex-builtin.")
608 609
609 (defun YaTeX-typeset-environment-1 () 610 (defun YaTeX-typeset-environment-1 ()
610 (let*((math (YaTeX-in-math-mode-p)) 611 (let*((math (YaTeX-in-math-mode-p))
611 (dpi (or (YaTeX-get-builtin "PREVIEWDPI") (if math "300" "200"))) 612 (dpi (or (YaTeX-get-builtin "PREVIEWDPI") (if math "300" "200")))
612 (opoint (point)) usetimer) 613 (opoint (point))
614 usetimer)
613 (cond 615 (cond
614 ((and YaTeX-on-the-fly-overlay (overlayp YaTeX-on-the-fly-overlay) 616 ((and YaTeX-on-the-fly-overlay (overlayp YaTeX-on-the-fly-overlay)
615 (member YaTeX-on-the-fly-overlay (overlays-at (point)))) 617 (member YaTeX-on-the-fly-overlay (overlays-at (point))))
616 ;; If current position is in on-the-fly overlay, 618 ;; If current position is in on-the-fly overlay,
617 ;; use that region again 619 ;; use that region again
637 (char-after (- (point) 2)) 639 (char-after (- (point) 2))
638 (YaTeX-buffer-substring b e) 640 (YaTeX-buffer-substring b e)
639 (current-time))) 641 (current-time)))
640 (if math (funcall YaTeX-on-the-fly-math-preview-engine) 642 (if math (funcall YaTeX-on-the-fly-math-preview-engine)
641 (YaTeX-typeset-region 'YaTeX-typeset-conv2image-chain)) 643 (YaTeX-typeset-region 'YaTeX-typeset-conv2image-chain))
642 (if usetimer 644 (if usetimer (YaTeX-typeset-environment-auto b e)))
643 (progn
644 (if YaTeX-on-the-fly-overlay
645 (move-overlay YaTeX-on-the-fly-overlay b e)
646 (overlay-put
647 (setq YaTeX-on-the-fly-overlay (make-overlay b e))
648 'face 'YaTeX-on-the-fly-activated-face))
649 (YaTeX-typeset-environment-auto)
650 )))
651 (YaTeX-typeset-region)))) 645 (YaTeX-typeset-region))))
652 646
653 (defun YaTeX-typeset-environment () 647 (defun YaTeX-typeset-environment ()
654 "Typeset current environment or paragraph. 648 "Typeset current environment or paragraph.
655 If region activated, use it." 649 If region activated, use it."
664 (defvar YaTeX-on-the-fly-preview-interval (string-to-number "0.9") 658 (defvar YaTeX-on-the-fly-preview-interval (string-to-number "0.9")
665 "*Control the on-the-fly update of preview environment by an image. 659 "*Control the on-the-fly update of preview environment by an image.
666 Nil disables on-the-fly update. Otherwise on-the-fly update is enabled 660 Nil disables on-the-fly update. Otherwise on-the-fly update is enabled
667 with update interval specified by this value.") 661 with update interval specified by this value.")
668 662
669 (defun YaTeX-typeset-environment-auto () 663 (defun YaTeX-typeset-environment-auto (beg end)
670 "Turn on on-the-fly preview-image" 664 "Turn on on-the-fly preview-image"
671 (if YaTeX-typeset-environment-timer 665 (if YaTeX-typeset-environment-timer
672 nil 666 (cancel-timer YaTeX-typeset-environment-timer))
673 (setq YaTeX-typeset-environment-timer 667 (if YaTeX-on-the-fly-overlay
674 (run-with-idle-timer 668 (move-overlay YaTeX-on-the-fly-overlay beg end)
675 (max (string-to-number "0.1") 669 (overlay-put
676 (cond 670 (setq YaTeX-on-the-fly-overlay (make-overlay beg end))
677 ((numberp YaTeX-on-the-fly-preview-interval) 671 'face 'YaTeX-on-the-fly-activated-face))
678 YaTeX-on-the-fly-preview-interval) 672 (setq YaTeX-typeset-environment-timer
679 ((stringp YaTeX-on-the-fly-preview-interval) 673 (run-with-idle-timer
680 (string-to-number YaTeX-on-the-fly-preview-interval)) 674 (max (string-to-number "0.1")
681 (t 1))) 675 (cond
682 t 'YaTeX-typeset-environment-timer)))) 676 ((numberp YaTeX-on-the-fly-preview-interval)
677 YaTeX-on-the-fly-preview-interval)
678 ((stringp YaTeX-on-the-fly-preview-interval)
679 (string-to-number YaTeX-on-the-fly-preview-interval))
680 (t 1)))
681 t 'YaTeX-typeset-environment-timer)))
682
683 (defun YaTeX-typeset-environment-activate-onthefly ()
684 (if (get-text-property (point) 'onthefly)
685 (save-excursion
686 (if YaTeX-typeset-environment-timer
687 (progn
688 (cancel-timer YaTeX-typeset-environment-timer)
689 (setq YaTeX-typeset-environment-timer nil)))
690 (if (YaTeX-on-begin-end-p)
691 (if (match-beginning 1) ;on beginning
692 (goto-char (match-end 0))
693 (goto-char (match-beginning 0))))
694 (YaTeX-typeset-environment))))
683 695
684 (defun YaTeX-typeset-environment-cancel-auto () 696 (defun YaTeX-typeset-environment-cancel-auto ()
685 "Cancel typeset-environment timer." 697 "Cancel typeset-environment timer."
686 (interactive) 698 (interactive)
687 (cancel-timer YaTeX-typeset-environment-timer) 699 (if YaTeX-typeset-environment-timer
688 (setq YaTeX-typeset-environment-timer nil) 700 (cancel-timer YaTeX-typeset-environment-timer))
701 (setq YaTeX-typeset-environment-timer
702 (run-with-idle-timer
703 (string-to-number "0.1")
704 t
705 'YaTeX-typeset-environment-activate-onthefly))
706 (put-text-property (overlay-start YaTeX-on-the-fly-overlay)
707 (1- (overlay-end YaTeX-on-the-fly-overlay))
708 'onthefly
709 t)
689 (delete-overlay YaTeX-on-the-fly-overlay) 710 (delete-overlay YaTeX-on-the-fly-overlay)
690 (message "On-the-fly preview canceled")) 711 (message "On-the-fly preview canceled"))
691 712
692 (defun YaTeX-typeset-buffer (&optional pp) 713 (defun YaTeX-typeset-buffer (&optional pp)
693 "Typeset whole buffer. 714 "Typeset whole buffer.

yatex.org