From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Re: pandoc-mode /Asciidoc Date: Thu, 23 Feb 2023 20:48:16 +0300 Message-ID: References: <7e1cf128-6006-2995-6f71-06fa307ba655@posteo.de> <8ae47be3-a333-4b7b-bf0d-82e7a53f77cf@posteo.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22808"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.2.9+54 (af2080d) (2022-11-21) Cc: help-gnu-emacs@gnu.org To: Gottfried Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Feb 23 21:23:17 2023 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pVI7Y-0005io-R1 for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 23 Feb 2023 21:23:16 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pVI71-0005AE-2q; Thu, 23 Feb 2023 15:22:43 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pVI6y-0005A1-Hd for help-gnu-emacs@gnu.org; Thu, 23 Feb 2023 15:22:40 -0500 Original-Received: from stw1.rcdrun.com ([217.170.207.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pVI6w-00010T-Px for help-gnu-emacs@gnu.org; Thu, 23 Feb 2023 15:22:40 -0500 Original-Received: from localhost ([::ffff:197.239.5.154]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 0000000000103956.0000000063F7CAF0.000044B1; Thu, 23 Feb 2023 13:22:08 -0700 Mail-Followup-To: Gottfried , help-gnu-emacs@gnu.org Content-Disposition: inline In-Reply-To: <8ae47be3-a333-4b7b-bf0d-82e7a53f77cf@posteo.de> Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_SBL=0.141, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:142824 Archived-At: This is what you should put: (defun string-to-file-force (string file) "Prints string into file, matters not if file exists. Return FILE as file name." (with-temp-file file (insert string)) file) (defun rcd-command-output-from-input (program input &rest args) "Return output string from PROGRAM with given INPUT string and optional ARGS." (let* ((output (with-temp-buffer (insert input) (apply #'call-process-region nil nil program t '(t nil) nil args) (buffer-string)))) output)) (defun rcd-asciidoctor (string &rest args) "Return HTML by using Asciidoctor markup STRING." (let ((asciidoctor (executable-find "asciidoctor"))) (apply 'rcd-command-output-from-input "asciidoctor" string "-" args))) (defun rcd-asciidoctor-preview () "Preview asciidoctor" (interactive) (let ((asciidoctor (executable-find "asciidoctor"))) (when asciidoctor (let* ((output (buffer-string)) (output (rcd-asciidoctor output)) (file (string-to-file-force output "asciidoctor-preview.html"))) (browse-url file))))) (require 'adoc-mode) (define-key adoc-mode-map (kbd "C-c a") #'rcd-asciidoctor-preview) ;;Asciidoctor refresh output quickly (defun rcd-asciidoctor-preview-buffer-as-html () "Convert asciidoctor to file `/tmp/my.html'" (let* ((asciidoc (buffer-string)) (tmp-file "/tmp/my.html") (html (rcd-asciidoctor asciidoc))) (with-temp-file tmp-file (insert html)))) ;; Though I would not recommend putting this in init.el as that is ;; too many times preview. It is better turning on and off the timer ;; function only when you need it. (run-with-timer 1 3 #'rcd-asciidoctor-preview-buffer-as-html) (defun rcd-markdown (text &rest args) "Markdown processing" (let ((markdown (executable-find "markdown"))) (cond (markdown (cond (text (apply 'rcd-command-output-from-input markdown (append (list text) args))) (t "")) (t (user-error "Command `markdown' not available")))))) (defun rcd-markdown-preview () "Preview Markdown." (interactive) (let* ((output (rcd-markdown (buffer-string))) (file (concat (buffer-file-name) "-MD.html"))) (with-temp-file file (insert output)) (browse-url file))) ;;(define-key KEYMAP KEY DEF &optional REMOVE) (require 'markdown-mode) (define-key markdown-mode-map (kbd "C-c a") #'rcd-markdown-preview) -- Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns In support of Richard M. Stallman https://stallmansupport.org/