While smooth(=pixel) scrolling up past images displayed by org-display-inline-images (org 9.6.1), point loops back below the image, preventing you to scroll past it. See below for a video.
| (defvar-local still-waiting nil | |
| "Whether we are still waiting for a chunk of process output to complete.") | |
| (defun my-worker-1 (process) | |
| "Do some work and yield to PROCESS output." | |
| (do-some-sensitive-calculation) | |
| (sit-for 1) ; A) output can interrupt me here | |
| (another-sensitive-buffer-manipulation) ; B) what about here? | |
| (my-worker-2 process)) |
| (use-package rect | |
| :init | |
| (defun my/rect-transient-map-info () | |
| (interactive) | |
| (with-help-window "Rectangle Mark Command Help" | |
| (dolist | |
| (l '("Rectangle Mark Mode Modal Commands\n" | |
| "==================================\n\n" | |
| "Insertion:\n\n" | |
| " [o] open fill rectangle with spaces, moving adjacent text right\n" |
| ;; Stress tests of the undo/vundo system | |
| (require 'vundo) | |
| (require 'lorem-ipsum) | |
| (eval-when-compile | |
| (require 'cl-lib)) | |
| (require 'memory-report) | |
| (add-hook 'vundo-mode-hook (lambda () (setq jit-lock-mode nil))) |
| (use-package highlight-indentation | |
| :ensure highlight-indentation | |
| :init | |
| ;; Add a timer delay to the current column highlight for efficiency, | |
| ;; and to avoid flashing when scrolling or moving by line | |
| (defvar my/highlight-indentation-current-column-timer nil) | |
| (defun my/highlight-indentation-current-column () | |
| (highlight-indentation-redraw-window (selected-window) | |
| 'highlight-indentation-current-column-overlay | |
| 'highlight-indentation-current-column-put-overlays-region)) |
WLED supports a variety of network control protocols, including “realtime UDP” and (for audio-reactive ports) “Sound Sync”. UDP data “frames” comprising one or more packets are typically sent to WLED devices at fixed intervals, e.g. 20ms for the default 50Hz SoundSync update. Unfortunately, consumer-grade WiFi suffers from jitter of 20-80ms. Packets can occasionally arrive in rapid “floods” (several packets in <10ms), followed by long “droughts” of 75ms or more.
The solution? Store up a fixed number of “frames” from the sporadically arriving packet data stream, then play them back at smooth intervals, essentially using the buffer to help “weather the droughts and floods”. This dramatically smooths playback. This approach effectively trades latency for smoothness of playback. This buffering approach is referred to as Realtime Smoothing (RTS).
| (let (cnt tm node res) | |
| (goto-char (point-min)) | |
| (while (< (point) (point-max)) | |
| (setq tm | |
| (benchmark-run 100 | |
| (setq node (treesit-node-at (point))) | |
| (while node | |
| (setq node (treesit-node-parent node)))) | |
| node (treesit-node-at (point))) | |
| (setq cnt 0) |
| (let ((buf (get-buffer-create "*stipple-box*"))) | |
| (switch-to-buffer-other-window buf) | |
| (cl-flet ((srot (s r) (concat (substring s (- r)) (substring s 0 (- r))))) | |
| (let* ((bar-width 0.3) | |
| (w (window-font-width)) | |
| (h (window-font-height)) | |
| (rot (indent-bars--stipple-rot w)) | |
| (bsz (round (* bar-width w))) | |
| (vrot (mod (cadr (window-edges nil t nil t)) h)) | |
| (pad (make-string (- h bsz) ?\s)) |
| (let ((orig (default-value 'repeat-echo-function)) | |
| rcol ccol in-repeat) | |
| (setq | |
| repeat-echo-function | |
| (lambda (map) | |
| (if orig (funcall orig map)) | |
| (unless rcol (setq rcol (face-foreground 'error))) | |
| (if map | |
| (unless in-repeat ; new repeat sequence | |
| (setq in-repeat t |