From dbcbac5983410bc3a61ba4806fcabe8414080cf5 Mon Sep 17 00:00:00 2001 From: Gracjan Polak Date: Sat, 22 Aug 2015 13:48:35 +0200 Subject: [PATCH 1/3] Add gifcast machinery --- doc/gifcasts/get-window-id.m | 15 +++ doc/gifcasts/gifcast.el | 182 +++++++++++++++++++++++++++++++++++ doc/gifcasts/gifcasts.el | 79 +++++++++++++++ 3 files changed, 276 insertions(+) create mode 100644 doc/gifcasts/get-window-id.m create mode 100644 doc/gifcasts/gifcast.el create mode 100644 doc/gifcasts/gifcasts.el diff --git a/doc/gifcasts/get-window-id.m b/doc/gifcasts/get-window-id.m new file mode 100644 index 000000000..dbabd78bc --- /dev/null +++ b/doc/gifcasts/get-window-id.m @@ -0,0 +1,15 @@ + +#include +#include + +int main(int argc, char **argv) +{ + NSArray *windows = (NSArray *)CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements,kCGNullWindowID); + for(NSDictionary *window in windows) { + if ([[window objectForKey:(NSString *)kCGWindowOwnerPID] isEqual:[NSNumber numberWithLongLong:atoi(argv[1])]]) { + if ([[window objectForKey:(NSString *)kCGWindowName] isEqual:[NSString stringWithUTF8String:argv[2]]]) { + printf("%d\n", [[window objectForKey:(NSString *)kCGWindowNumber] intValue]); + } + } + } +} diff --git a/doc/gifcasts/gifcast.el b/doc/gifcasts/gifcast.el new file mode 100644 index 000000000..4dc76f257 --- /dev/null +++ b/doc/gifcasts/gifcast.el @@ -0,0 +1,182 @@ +;;; haskell-mode.el --- A Haskell editing mode -*- coding: utf-8 -*- + +;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc +;; Copyright (C) 1992, 1997-1998 Simon Marlow, Graeme E Moss, and Tommy Thorn + +;; Author: 2015 Gracjan Polak +;; Keywords: screencast +;; Version: 0.1 + +;; This file 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, or (at your option) +;; any later version. + +;; This file 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 program. If not, see . + +;;; Commentary: + +;; Library for Emacs screencasts. Code you execution in lisp, sprinkle +;; with capture functions, generate upload ready gif animations. + +;;; Code: + +(defvar gifcast--ns-current-frame-window-id nil + "Mac OSX native window id of the current frame.") + +(defvar gifcast--animation-frame-index nil + "Current animation frame index.") + +(defvar gifcast--action-list nil + "Actions to run on timer. + +List of lambdas or functions. + +On next timer tick (car gifcast--action-list) will be run and +removed from this list. + +Note that it is useful both to prepend actions (to be run next) +and append actions (to be run later, after everything already in the list has run.") + +(defun gifcast--run-next-action () + "Run next action in gifcast--action-list. + +Will start timer if needed to run follow up actions." + (when (consp gifcast--action-list) + (let ((c (car gifcast--action-list))) + (setq gifcast--action-list (cdr gifcast--action-list)) + (funcall c) + (run-at-time 0.1 nil #'gifcast--run-next-action)))) + +(defun gifcast-append-action (action) + "Schedule ACTION to be run after all already scheduled actions." + (when (null gifcast--action-list) + (run-at-time 0.1 nil #'gifcast--run-next-action)) + (setq gifcast--action-list (append gifcast--action-list (list action)))) + +(defun gifcast-prepend-action (action) + "Schedule ACTION to be run before other already scheduled actions." + (when (null gifcast--action-list) + (run-at-time 0.1 nil #'gifcast--run-next-action)) + (setq gifcast--action-list (cons action gifcast--action-list))) + +(defun gifcast--ns-get-current-frame-window-id () + "Get native Mac OS X window id of the current frame." + + (with-temp-file "get-window-id.m" + (insert " +#include +#include + +int main(int argc, char **argv) +{ + NSArray *windows = (NSArray *)CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements,kCGNullWindowID); + for(NSDictionary *window in windows) { + if ([[window objectForKey:(NSString *)kCGWindowOwnerPID] isEqual:[NSNumber numberWithLongLong:atoi(argv[1])]]) { + if ([[window objectForKey:(NSString *)kCGWindowName] isEqual:[NSString stringWithUTF8String:argv[2]]]) { + printf(\"%d\\n\", [[window objectForKey:(NSString *)kCGWindowNumber] intValue]); + } + } + } +} +")) + (with-current-buffer "*Messages*" + (call-process "clang" nil t nil + "get-window-id.m" "-o" "get-window-id" "-framework" "CoreGraphics" "-framework" "Cocoa")) + (chmod "get-window-id" #o755) + (catch 'return + (with-temp-buffer + (dolist (x '(1)) + + (call-process (concat default-directory "get-window-id") nil t nil (number-to-string (emacs-pid)) + (cdr (assoc 'name (frame-parameters (window-frame (get-buffer-window)))))) + + (goto-char (point-min)) + (if (looking-at "[0-9]+") + (throw 'return (match-string 0)) + (sit-for 1)))))) + +(defun gifcast--ns-capture (filename) + "Capture sceenshot of current frame and save it to FILENAME. + +Image format will be png." + (with-current-buffer "*Messages*" + (let ((args (list (concat "-l" gifcast--ns-current-frame-window-id) "-o" filename)) + (buffer-read-only nil)) + + (apply #'call-process "screencapture" nil t nil args)))) + +(defmacro gifcast-animate (&rest body) + "Entry point for animation definitions. + +Use at top level like this: + +(gifcast-animate + (set-frame-size (window-frame (get-buffer-window)) 40 10) + (when (get-buffer \"main.c\") (kill-buffer \"main.c\")) + (switch-to-buffer (get-buffer-create \"main.c\")) + (delete-other-windows) + (tabbar-mode -1) + (tool-bar-mode -1) + (blink-cursor-mode -1) + (my-mode) + + ...generate animation frames.. + ) +" + `(gifcast-append-action + (lambda () + (unless gifcast--ns-current-frame-window-id + (setq gifcast--ns-current-frame-window-id (gifcast--ns-get-current-frame-window-id))) + + (setq gifcast--animation-frame-index 1) + + ,@body))) + +(defmacro gifcast-keys-async (keys &rest body) + "Simulate keystrokes KEYS and continue with BODY. + +Append KEYS to `unread-command-events' and let the main loop take +over. This requires function exit and continuing after a +timer. BODY is executed after 0.1s has elapsed. + +Note that this is async programming so requires proper bookeeping +with repsect to current buffer, state and local variables. +" + `(progn + (setq unread-command-events (append unread-command-events (listify-key-sequence ,keys))) + (gifcast-prepend-action (lambda () ,@body)))) + +(defun gifcast-capture () + "Capture current frame. + +Capture file will be named based on internal index variable." + (sit-for 0.1) + (gifcast--ns-capture (concat "frame-" (number-to-string gifcast--animation-frame-index) ".png")) + (setq gifcast--animation-frame-index (1+ gifcast--animation-frame-index))) + +(defun gifcast-generate (filename) + "Generate animation to FILENAME. + +Takes frames collected since last `gifcast-animate' and generate +a GIF animation. FILENAME will be used as a file name for the +animation." + (with-current-buffer "*Messages*" + (let ((idx 1) + args + (buffer-read-only nil)) + (while (< idx gifcast--animation-frame-index) + (setq args (append args (list (concat "frame-" (number-to-string idx) ".png")))) + (setq idx (1+ idx))) + + (apply #'call-process "convert" nil t nil + (append (list "-delay" "100") args (list "-layers" "OptimizePlus" "-alpha" "remove" filename)))))) + +(provide 'gifcast) +;;; gifcast ends here diff --git a/doc/gifcasts/gifcasts.el b/doc/gifcasts/gifcasts.el new file mode 100644 index 000000000..8db014584 --- /dev/null +++ b/doc/gifcasts/gifcasts.el @@ -0,0 +1,79 @@ + +(let ((load-path '("."))) + (require 'gifcast)) + +(global-flycheck-mode -1) + +(gifcast-animate + (set-frame-size (window-frame (get-buffer-window)) 40 10) + (when (get-buffer "Main.hs") + (kill-buffer "Main.hs")) + (switch-to-buffer (get-buffer-create "Main.hs")) + (delete-other-windows) + (tabbar-mode -1) + (tool-bar-mode -1) + (linum-mode -1) + (message nil) + + (haskell-mode) + + (insert (concat + "-- | Program entry point\n" + "main :: IO ()\n" + "main = do\n" + " if flag\n" + " then putStrLn \"Flag is True\"\n" + " else putStrLn \"Flag is False\"\n" + )) + (global-font-lock-mode -1) + (gifcast-capture) + (global-font-lock-mode t) + (gifcast-capture) + (gifcast-generate "../anim/font-lock.gif") + (kill-buffer "Main.hs") + nil) + +(gifcast-animate + (set-frame-size (window-frame (get-buffer-window)) 40 10) + (when (get-buffer "Main.hs") + (kill-buffer "Main.hs")) + (switch-to-buffer (get-buffer-create "Main.hs")) + (delete-other-windows) + (tabbar-mode -1) + (tool-bar-mode -1) + (linum-mode -1) + (blink-cursor-mode -1) + (message nil) + + (haskell-mode) + (company-mode) + (setq company-idle-delay 0.01) + (linum-mode -1) + + (insert (concat + "{-# LANGUAGE #-}\n" + "main :: IO ()\n" + "main = return ()\n")) + (goto-char (+ 13 (point-min))) + (gifcast-keys-async + "" + (gifcast-capture) + (gifcast-keys-async + "F" + (gifcast-capture) + (gifcast-keys-async + "l" + (gifcast-capture) + (gifcast-keys-async + "e" + (gifcast-capture) + (gifcast-keys-async + (kbd "") + (gifcast-capture) + (gifcast-keys-async + "\C-m" + (gifcast-capture) + (gifcast-generate "../anim/company-mode-language-pragma.gif") + + (kill-buffer "Main.hs"))))))) + nil) From d924f72c2d0ec1ce8a9371d6416c05c54069bc6c Mon Sep 17 00:00:00 2001 From: Gracjan Polak Date: Sat, 22 Aug 2015 13:48:55 +0200 Subject: [PATCH 2/3] Add anim directory to documentation --- Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1d879fe52..b681f65b8 100644 --- a/Makefile +++ b/Makefile @@ -151,7 +151,16 @@ doc/html/haskell-mode.svg : images/haskell-mode.svg doc/html/index.html doc/html/haskell-mode-32x32.png : images/haskell-mode-32x32.png doc/html/index.html cp $< $@ -doc/html : doc/html/index.html doc/html/haskell-mode.css doc/html/haskell-mode.svg doc/html/haskell-mode-32x32.png +doc/html/anim : doc/anim doc/html/index.html + if [ -e $@ ]; then rm -r $@; fi + cp -r $< $@ + +doc/html : doc/html/index.html \ + doc/html/haskell-mode.css \ + doc/html/haskell-mode.svg \ + doc/html/haskell-mode-32x32.png \ + doc/html/anim + deploy-manual : doc/html cd doc && ./deploy-manual.sh From 09831e94f7fde6dd269da5396459c8cc47f3de8a Mon Sep 17 00:00:00 2001 From: Gracjan Polak Date: Sat, 22 Aug 2015 13:56:24 +0200 Subject: [PATCH 3/3] Add inline anims for font-lock and completions --- doc/anim/company-mode-language-pragma.gif | Bin 0 -> 71451 bytes doc/anim/font-lock.gif | Bin 0 -> 33108 bytes doc/haskell-mode.texi | 13 +++++++++++++ 3 files changed, 13 insertions(+) create mode 100644 doc/anim/company-mode-language-pragma.gif create mode 100644 doc/anim/font-lock.gif diff --git a/doc/anim/company-mode-language-pragma.gif b/doc/anim/company-mode-language-pragma.gif new file mode 100644 index 0000000000000000000000000000000000000000..e842f740fda04e23833ee2fbb0bc4795c2d76d0c GIT binary patch literal 71451 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 literal 0 HcmV?d00001 diff --git a/doc/anim/font-lock.gif b/doc/anim/font-lock.gif new file mode 100644 index 0000000000000000000000000000000000000000..23e603c3406777a4fbaf2686e1fd32cdb5adf3d4 GIT binary patch literal 33108 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 B%MSnm literal 0 HcmV?d00001 diff --git a/doc/haskell-mode.texi b/doc/haskell-mode.texi index ab7e330b2..2d8336e9c 100644 --- a/doc/haskell-mode.texi +++ b/doc/haskell-mode.texi @@ -205,6 +205,19 @@ Lock minor mode which should be enabled by default in current Emacsen. @xref{Font Lock,,,emacs}, for more information on how to control @code{font-lock-mode}. +@ifhtml +@image{anim/font-lock} +@end ifhtml + +@section Completion support + +@code{haskell-mode} can complete symbols, pragma directives and language +extensions. This is part of @code{haskell-interactive-mode}. + +@ifhtml +@image{anim/company-mode-language-pragma} +@end ifhtml + @node Unicode support @chapter Unicode support