BREAKING CHANGE: This deprecates the IS-(MAC|WINDOWS|LINUX|BSD) family of global constants in favor of a native `featurep` check: IS-MAC -> (featurep :system 'macos) IS-WINDOWS -> (featurep :system 'windows) IS-LINUX -> (featurep :system 'linux) IS-BSD -> (featurep :system 'bsd) The constants will stick around until the v3 release so folks can still use it -- and there are still some modules that use it, but I'll phase those uses out gradually. Fix: #7479
54 lines
2 KiB
EmacsLisp
54 lines
2 KiB
EmacsLisp
;;; lang/org/autoload/org-export.el -*- lexical-binding: t; -*-
|
|
|
|
(defun +org--yank-html-buffer (buffer)
|
|
(with-current-buffer buffer
|
|
(require 'ox-clip)
|
|
(cond ((or (featurep :system 'windows)
|
|
(featurep :system 'macos))
|
|
(shell-command-on-region
|
|
(point-min)
|
|
(point-max)
|
|
(cond ((featurep :system 'windows) ox-clip-w32-cmd)
|
|
((featurep :system 'macos) ox-clip-osx-cmd))))
|
|
((featurep :system 'linux)
|
|
(let ((html (buffer-string)))
|
|
(with-temp-file (make-temp-file "ox-clip-md" nil ".html")
|
|
(insert html))
|
|
(apply #'start-process "ox-clip" "*ox-clip*"
|
|
(split-string ox-clip-linux-cmd " ")))))))
|
|
|
|
|
|
;;
|
|
;;; Commands
|
|
|
|
;;;###autoload
|
|
(defun +org/export-to-clipboard (backend)
|
|
"Exports the current buffer/selection to the clipboard.
|
|
|
|
Prompts for what BACKEND to use. See `org-export-backends' for options."
|
|
(interactive
|
|
(list (intern (completing-read "Export to: " (progn (require 'ox) org-export-backends)))))
|
|
(require 'ox)
|
|
(let* ((org-export-show-temporary-export-buffer nil)
|
|
(buffer (org-export-to-buffer backend "*Formatted Copy*" nil nil t t)))
|
|
(unwind-protect
|
|
(with-current-buffer buffer
|
|
(kill-new (buffer-string)))
|
|
(kill-buffer buffer))))
|
|
|
|
;;;###autoload
|
|
(defun +org/export-to-clipboard-as-rich-text (beg end)
|
|
"Export the current buffer to HTML then copies it to clipboard as rich text.
|
|
|
|
Supports org-mode, markdown-mode, and gfm-mode buffers. In any other mode,
|
|
htmlize is used (takes what you see in Emacs and converts it to html, text
|
|
properties and font-locking et all)."
|
|
(interactive "r")
|
|
(pcase major-mode
|
|
((or `markdown-mode `gfm-mode)
|
|
(+org--yank-html-buffer (markdown)))
|
|
(_
|
|
;; Omit after/before-string overlay properties in htmlized regions, so we
|
|
;; don't get fringe characters for things like flycheck or git-gutter.
|
|
(letf! (defun htmlize-add-before-after-strings (_beg _end text) text)
|
|
(ox-clip-formatted-copy beg end)))))
|