89 lines
3.7 KiB
EmacsLisp
89 lines
3.7 KiB
EmacsLisp
;;; test.el --- Visual QA: Major Modes -*- lexical-binding: t; -*-
|
|
;;
|
|
;; GPU: emacs --no-init-file -l qa/14-major-modes/test.el
|
|
;; Vanilla: EMACS_GPU_DISABLE=1 emacs --no-init-file -l qa/14-major-modes/test.el
|
|
;;
|
|
;; Press d to open dired on $HOME, o to open the org buffer, e for Emacs Lisp.
|
|
|
|
(defun qa-modes-open-org ()
|
|
(interactive)
|
|
(let ((buf (get-buffer-create "*QA: org-mode*")))
|
|
(with-current-buffer buf
|
|
(erase-buffer)
|
|
(insert "* Heading Level 1\n\n")
|
|
(insert "Regular paragraph text with *bold*, /italic/, =code=,\n")
|
|
(insert "and ~verbatim~ spans. Also _underlined_ text.\n\n")
|
|
(insert "** Heading Level 2\n\n")
|
|
(insert "A table:\n\n")
|
|
(insert "| Name | Value | Status |\n")
|
|
(insert "|------------+-------+---------|\n")
|
|
(insert "| Alpha | 100 | active |\n")
|
|
(insert "| Beta | 200 | pending |\n")
|
|
(insert "| Gamma | 300 | done |\n\n")
|
|
(insert "*** Heading Level 3\n\n")
|
|
(insert "A source block:\n\n")
|
|
(insert "#+begin_src emacs-lisp\n")
|
|
(insert "(defun greet (name)\n")
|
|
(insert " (message \"Hello, %s!\" name))\n")
|
|
(insert "#+end_src\n\n")
|
|
(insert "**** Heading Level 4\n\n")
|
|
(insert "- List item one\n")
|
|
(insert "- List item two\n")
|
|
(insert " - Nested item\n")
|
|
(insert "- List item three\n\n")
|
|
(insert "***** Heading Level 5\n\n")
|
|
(insert "A longer paragraph to check line wrapping and text rendering\n")
|
|
(insert "at normal reading width. The GPU backend must render this\n")
|
|
(insert "identically to the NS or cairo baseline.\n")
|
|
(org-mode))
|
|
(switch-to-buffer buf)))
|
|
|
|
(defun qa-modes-open-elisp ()
|
|
(interactive)
|
|
(let ((buf (get-buffer-create "*QA: emacs-lisp-mode*")))
|
|
(with-current-buffer buf
|
|
(erase-buffer)
|
|
(insert ";; Emacs Lisp syntax highlight test\n\n")
|
|
(insert "(require 'cl-lib)\n\n")
|
|
(insert "(defvar qa-counter 0\n")
|
|
(insert " \"A simple counter variable.\")\n\n")
|
|
(insert "(defun qa-increment (&optional amount)\n")
|
|
(insert " \"Increment QA-COUNTER by AMOUNT (default 1).\"\n")
|
|
(insert " (interactive)\n")
|
|
(insert " (cl-incf qa-counter (or amount 1))\n")
|
|
(insert " (message \"Counter: %d\" qa-counter))\n\n")
|
|
(insert "(defmacro qa-with-timer (name &rest body)\n")
|
|
(insert " \"Run BODY and report elapsed time under NAME.\"\n")
|
|
(insert " `(let ((start (float-time)))\n")
|
|
(insert " ,@body\n")
|
|
(insert " (message \"%s took %.3fs\" ',name (- (float-time) start))))\n\n")
|
|
(insert ";; String literals and constants\n")
|
|
(insert "(defconst qa-version \"1.0.0\" \"QA harness version.\")\n")
|
|
(insert "(defconst qa-max-lines 1000)\n\n")
|
|
(insert ";; Keyword arguments\n")
|
|
(insert "(cl-defun qa-make-item (&key name value (enabled t))\n")
|
|
(insert " (list :name name :value value :enabled enabled))\n")
|
|
(emacs-lisp-mode)
|
|
(font-lock-ensure))
|
|
(switch-to-buffer buf)))
|
|
|
|
(defun qa-modes-open-dired ()
|
|
(interactive)
|
|
(dired "~"))
|
|
|
|
(let ((buf (get-buffer-create "*QA: Major Modes*")))
|
|
(with-current-buffer buf
|
|
(erase-buffer)
|
|
(insert (propertize "=== Major Modes QA ===\n\n" 'face '(:weight bold :height 1.3)))
|
|
(insert (propertize "Keys:\n" 'face '(:weight bold)))
|
|
(insert " o — open org-mode buffer\n")
|
|
(insert " e — open emacs-lisp-mode buffer\n")
|
|
(insert " d — open dired on $HOME\n\n")
|
|
(insert "For each mode, compare with the vanilla baseline side by side.\n")
|
|
|
|
(use-local-map (make-sparse-keymap))
|
|
(local-set-key "o" #'qa-modes-open-org)
|
|
(local-set-key "e" #'qa-modes-open-elisp)
|
|
(local-set-key "d" #'qa-modes-open-dired))
|
|
(switch-to-buffer buf))
|