From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/81643 Path: news.gmane.org!not-for-mail From: Uwe Brauer Newsgroups: gmane.emacs.gnus.general Subject: Re: apply TeX-to-char-paragraph-or-region to an article Date: Thu, 22 Mar 2012 22:30:07 +0100 Message-ID: <87k42cnx28.fsf@mat.ucm.es> References: <87zkbdrdt9.fsf@mat.ucm.es> Reply-To: Uwe Brauer NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1332451858 25534 80.91.229.3 (22 Mar 2012 21:30:58 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 22 Mar 2012 21:30:58 +0000 (UTC) Cc: ding@gnus.org To: Lars Magne Ingebrigtsen Original-X-From: ding-owner+M29923@lists.math.uh.edu Thu Mar 22 22:30:57 2012 Return-path: Envelope-to: ding-account@gmane.org Original-Received: from util0.math.uh.edu ([129.7.128.18]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SApaw-0002s3-MF for ding-account@gmane.org; Thu, 22 Mar 2012 22:30:55 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by util0.math.uh.edu with smtp (Exim 4.63) (envelope-from ) id 1SApaX-000808-Ug; Thu, 22 Mar 2012 16:30:29 -0500 Original-Received: from mx1.math.uh.edu ([129.7.128.32]) by util0.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.63) (envelope-from ) id 1SApaW-000802-9e for ding@lists.math.uh.edu; Thu, 22 Mar 2012 16:30:28 -0500 Original-Received: from quimby.gnus.org ([80.91.231.51]) by mx1.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1SApaR-0001ot-Bt for ding@lists.math.uh.edu; Thu, 22 Mar 2012 16:30:27 -0500 Original-Received: from mail-we0-f172.google.com ([74.125.82.172]) by quimby.gnus.org with esmtp (Exim 4.72) (envelope-from ) id 1SApaP-0000Tw-Pl; Thu, 22 Mar 2012 22:30:21 +0100 Original-Received: by werb10 with SMTP id b10so3218953wer.17 for ; Thu, 22 Mar 2012 14:30:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:x-mailer:from:to:cc:subject:references:reply-to:x-hashcash :x-hashcash:date:in-reply-to:message-id:user-agent:mime-version :content-type; bh=r94LGHXWs9ryhjtH0Xfra6yylDLmc3fILRKXhA2HkBo=; b=FjbFVxNcgTk6wE5x3JUqDg4Zi+Lja9IRqpJU3POv4goYGQMuqcHovexGrpgBGd3DNw PVG5f+N9qtWN9pD4rIDLHIdtLB07N+QYgNUGcCMqSsfkf1SdajdWJxFRtfTf6K6QX6GU Oxifj1kJQ6OqQmxKoeC0nbta3KW4urB8WO9rft/Z9PvXNursiWwCrICjOK4PDiDDBk+C H7B6ja9O9NLO31NjxKy3/cOA4btk+GSAaRTxdDz/89iVpJdQXfk4VPaZWZxGXZgZB0F3 ClaTHbrOf4yv4atyzJGbtyiiPU7kBXPDmFj/KIMjRKUZB5WdNZv+2vJey8hjTaveJH3g bAOg== Original-Received: by 10.180.102.129 with SMTP id fo1mr945086wib.6.1332451816258; Thu, 22 Mar 2012 14:30:16 -0700 (PDT) Original-Received: from Burrurr (11.pool85-54-11.dynamic.orange.es. [85.54.11.11]) by mx.google.com with ESMTPS id 17sm8750116wis.0.2012.03.22.14.30.13 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 22 Mar 2012 14:30:15 -0700 (PDT) X-Mailer: 21.5 (beta31) "ginger" XEmacs Lucid (via feedmail 11-beta-1 I) X-Hashcash: 1:20:120322:larsi@gnus.org::2HQhhFzA9Jf5duP8:00015tf X-Hashcash: 1:20:120322:ding@gnus.org::Kekxl12B4qp+zLCe:00008eWE In-Reply-To: (Lars Magne Ingebrigtsen's message of "Thu, 22 Mar 2012 20:58:17 +0100") User-Agent: Gnus/5.110018 (No Gnus v0.18) XEmacs/21.5-b31 (linux) X-Spam-Score: -2.9 (--) List-ID: Precedence: bulk Xref: news.gmane.org gmane.emacs.gnus.general:81643 Archived-At: --=-=-= Content-Type: text/plain >> On Thu, 22 Mar 2012 20:58:17 +0100, Lars Magne Ingebrigtsen wrote: > Uwe Brauer writes: >> For example the function gnus-article-fill-cited-article runs on an >> article. How could I write a function based on >> TeX-to-char-paragraph-or-region which does what I want. > Start with a simpler function, like > (defun article-treat-ansi-sequences () > "Translate ANSI SGR control sequences into overlays or extents." > (interactive) > (save-excursion > (when (article-goto-body) > (let ((inhibit-read-only t)) > (ansi-color-apply-on-region (point) (point-max)))))) > And just replace the ansi stuff with the function you want to call. Cool! That works nicely for the TeX-to-char-paragraph-or-region function. However for the org-preview function it does not! Here is the code (defun article-treat-org-preview () "Translate ANSI SGR control sequences into overlays or extents." (interactive) (save-excursion (when (article-goto-body) (let ((inhibit-read-only t)) (org-preview-latex-fragment nil))))) And the documentation of org-preview-latex-fragment ,---- | `org-preview-latex-fragment' is an interactive Lisp function | -- loaded from "org" | (org-preview-latex-fragment &optional SUBTREE) | | Documentation: | Preview the LaTeX fragment at point, or all locally or globally. | If the cursor is in a LaTeX fragment, create the image and overlay | it over the source code. If there is no fragment at point, display | all fragments in the current text, from one headline to the next. With | prefix SUBTREE, display all fragments in the current subtree. With a | double prefix arg C-u C-u, or when the cursor is before the first headline, | display all fragments in the buffer. `---- I obtain an error whose bug trace I attach. I had the following trivial function (defun org-preview-article () "Saves the article to temporary buffer and apply `org-preview-latex-fragment'." (interactive) (let* ((tempfile "/tmp/texfile")) (shell-command (format "touch %s" tempfile)) (delete-file tempfile) (with-current-buffer gnus-article-buffer (write-region (point-min) (point-max) tempfile nil nil nil 'utf-8-unix) (find-file tempfile) (org-preview-latex-fragment nil)))) which sort of works but is not what I want. --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=bug-org-preview Content-Description: bugtrace # bind (standard-output stack-trace-on-signal debug-on-signal stack-trace-on-error debug-on-error) # (unwind-protect ...) file-name-nondirectory(nil) (file-name-sans-extension (file-name-nondirectory buffer-file-name)) (concat "ltxpng/" (file-name-sans-extension (file-name-nondirectory buffer-file-name))) (org-format-latex (concat "ltxpng/" (file-name-sans-extension (file-name-nondirectory buffer-file-name))) default-directory (quote overlays) msg at (quote forbuffer) (quote dvipng)) # bind (msg at end beg) (let (beg end at msg) (cond ((or (equal subtree (quote (16))) (not (save-excursion (re-search-backward org-outline-regexp-bol nil t)))) (setq beg (point-min) end (point-max) msg "Creating images for buffer...%s")) ((equal subtree (quote (4))) (org-back-to-heading) (setq beg (point) end (org-end-of-subtree t) msg "Creating images for subtree...%s")) (t (if (setq at (org-inside-LaTeX-fragment-p)) (goto-char (max (point-min) (- (cdr at) 2))) (org-back-to-heading)) (setq beg (point) end (progn (outline-next-heading) (point)) msg (if at "Creating image...%s" "Creating images for entry...%s")))) (message msg "") (narrow-to-region beg end) (goto-char beg) (org-format-latex (concat "ltxpng/" (file-name-sans-extension (file-name-nondirectory buffer-file-name))) default-directory (quote overlays) msg at (quote forbuffer) (quote dvipng)) (message msg "done. Use `C-c C-c' to remove images.")) # (unwind-protect ...) (save-restriction (let (beg end at msg) (cond ((or (equal subtree (quote (16))) (not (save-excursion (re-search-backward org-outline-regexp-bol nil t)))) (setq beg (point-min) end (point-max) msg "Creating images for buffer...%s")) ((equal subtree (quote (4))) (org-back-to-heading) (setq beg (point) end (org-end-of-subtree t) msg "Creating images for subtree...%s")) (t (if (setq at (org-inside-LaTeX-fragment-p)) (goto-char (max (point-min) (- (cdr at) 2))) (org-back-to-heading)) (setq beg (point) end (progn (outline-next-heading) (point)) msg (if at "Creating image...%s" "Creating images for entry...%s")))) (message msg "") (narrow-to-region beg end) (goto-char beg) (org-format-latex (concat "ltxpng/" (file-name-sans-extension (file-name-nondirectory buffer-file-name))) default-directory (quote overlays) msg at (quote forbuffer) (quote dvipng)) (message msg "done. Use `C-c C-c' to remove images."))) # (unwind-protect ...) (save-excursion (save-restriction (let (beg end at msg) (cond ((or (equal subtree (quote (16))) (not (save-excursion (re-search-backward org-outline-regexp-bol nil t)))) (setq beg (point-min) end (point-max) msg "Creating images for buffer...%s")) ((equal subtree (quote (4))) (org-back-to-heading) (setq beg (point) end (org-end-of-subtree t) msg "Creating images for subtree...%s")) (t (if (setq at (org-inside-LaTeX-fragment-p)) (goto-char (max (point-min) (- (cdr at) 2))) (org-back-to-heading)) (setq beg (point) end (progn (outline-next-heading) (point)) msg (if at "Creating image...%s" "Creating images for entry...%s")))) (message msg "") (narrow-to-region beg end) (goto-char beg) (org-format-latex (concat "ltxpng/" (file-name-sans-extension (file-name-nondirectory buffer-file-name))) d efault-directory (quote overlays) msg at (quote forbuffer) (quote dvipng)) (message msg "done. Use `C-c C-c' to remove images.")))) # bind (subtree) org-preview-latex-fragment(nil) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil)) # bind (inhibit-read-only) (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil))) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil)))) (if (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil))))) (when (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil))))) (edebug-after (edebug-before 1) 8 (when (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil)))))) # (unwind-protect ...) (save-excursion (edebug-after (edebug-before 1) 8 (when (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil))))))) (edebug-after (edebug-before 0) 9 (save-excursion (edebug-after (edebug-before 1) 8 (when (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil)))))))) (lambda nil (edebug-after (edebug-before 0) 9 (save-excursion (edebug-after (edebug-before 1) 8 (when (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil)))))))))() # bind (edebug-offset-indices edebug-stack edebug-buffer edebug-coverage edebug-freq-count edebug-def-mark edebug-data edebug-body edebug-args edebug-function) edebug-enter(article-treat-org-preview nil (lambda nil (edebug-after (edebug-before 0) 9 (save-excursion (edebug-after (edebug-before 1) 8 (when (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil)))))))))) # bind (executing-kbd-macro overriding-local-map overriding-terminal-local-map signal-hook-function pre-command-hook post-command-hook) # (unwind-protect ...) # bind (edebug-entered max-lisp-eval-depth max-specpdl-size debugger edebug-outside-debug-on-error edebug-outside-debug-on-quit debug-on-error debug-on-quit cl-lexical-debug edebug-outside-overriding-local-map edebug-outside-overriding-terminal-local-map edebug-outside-executing-macro edebug-outside-pre-command-hook edebug-outside-post-command-hook edebug-body edebug-args edebug-function) edebug-enter(article-treat-org-preview nil (lambda nil (edebug-after (edebug-before 0) 9 (save-excursion (edebug-after (edebug-before 1) 8 (when (edebug-after (edebug-before 2) 3 (article-goto-body)) (edebug-after (edebug-before 4) 7 (let ((inhibit-read-only t)) (edebug-after (edebug-before 5) 6 (org-preview-latex-fragment nil)))))))))) article-treat-org-preview() eval((article-treat-org-preview)) # bind (form history form prompt) edit-and-eval-command("Redo: " (switch-to-buffer "*Article nndraft:drafts*") (command-history . 1)) # bind (print-level arg) repeat-complex-command(1) # bind (command-debug-status) call-interactively(repeat-complex-command) # (condition-case ... . error) # (catch top-level ...) --=-=-=--