X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=sixel.git;a=blobdiff_plain;f=sixel.el;h=87d387d728f317615747c1a904652ce36f2cc346;hp=775bb58c7aa4e3e4162b8b28c04b6b1809bd9fae;hb=HEAD;hpb=bf267f54c848e444efacb63e5fe0152822242467 diff --git a/sixel.el b/sixel.el index 775bb58..87d387d 100644 --- a/sixel.el +++ b/sixel.el @@ -2,15 +2,30 @@ ;; Copyright (C) 2019 Tim Vaughan -;; Author: Tim Vaughan +;; Author: Tim Vaughan ;; Created: 19 May 2019 ;; Version: 1.0.0 ;; Keywords: -;; Homepage: https://github.com/tgvaughan/sixel -;; Package-Requires: ((emacs "25")) +;; Homepage: gopher://thelambdalab.xyz/1/projects/sixel +;; Package-Requires: ((emacs "26")) ;;; Commentary: +;; This file is not part of GNU Emacs. + +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this file. If not, see . + ;;; Code: (defvar test-string @@ -194,4 +209,30 @@ Returns a sixel image object." (sixel-image-to-xpm-pixels sixel-image) "};") (error "Incorrecly formatted sixel string")))) +(defun sixel-render-images-in-buffer () + "Find and render any sixel images in the current buffer." + (interactive) + (save-excursion + (goto-char (point-min)) + (while (re-search-forward "P[[:ascii:]]*\\\\" nil t) + (let ((sixel-string (match-string 0)) + (inhibit-read-only t)) + (delete-region (match-beginning 0) + (match-end 0)) + (insert-image + (create-image (sixel-to-xpm sixel-string) 'xpm t)) + (insert "\n"))))) + +(defgroup sixel nil + "Render sixel images." + :group 'multimedia) + +(define-minor-mode sixel-mode + "A minor mode which renders sixel graphics." nil "sixel" nil + (add-hook 'after-change-functions + (lambda (start end size) + (sixel-render-images-in-buffer) + (message "Render complete.")) + nil t)) + ;;; sixel.el ends here