• Stars
    star
    191
  • Rank 202,877 (Top 4 %)
  • Language
    Emacs Lisp
  • License
    MIT License
  • Created almost 4 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Attempt at good pixel-based smooth scrolling in Emacs

MELPA Check

good-scroll.el

Attempt at good pixel-based smooth scrolling in Emacs

About

This package implements smooth scrolling by pixel lines. It attempts to improve upon pixel-scroll-mode by adding variable speed.

Demo

Setup

Install and load the package. Then, enable good-scroll-mode. For example, you can add the following snippet to your config.

(good-scroll-mode 1)

Key bindings

If you want to bind the Page Up and Page Down keys, you can also add the following:

(global-set-key [next] #'good-scroll-up-full-screen)
(global-set-key [prior] #'good-scroll-down-full-screen)

FAQ

How does this work?

Instead of scroll events directly scrolling the screen, they update a destination variable. A timer that runs every good-scroll-render-rate seconds calculates the expected position and actually scrolls the window to it. To make the window scrolled partially through a line, good-scroll updates the window's vscroll (vertical scroll) position.

Why is performance sometimes bad?

Scrolling sometimes pauses or stutters. It's unclear exactly why, but one factor is that Emacs lacks animation support. Emacs has timers for updating the screen contents, which is enough for playing simple animated GIF files, but not enough for video playback or frame-perfect smooth scrolling.

How does this compare to other scrolling packages?

Other modifications, like smooth-scrolling, smooth-scroll, sublimity-scroll, and inertial-scroll also aim to improve scrolling in Emacs, but none of them involve scrolling by pixel lines, only by text lines. The built-in pixel-scroll does implement pixel line scrolling, but, unlike good-scroll, does not support dynamic scrolling velocity.

Why is this file written in Markdown and not Org?

Apparently, GitHub does not yet support rendering Org links with formatting inside of them.

novoid/github-orgmode-tests#3

More Repositories

1

pwninit

pwninit - automate starting binary exploit challenges
Rust
762
star
2

org-fragtog

Automatically toggle Org mode LaTeX fragment previews as the cursor enters and exits them
Emacs Lisp
369
star
3

BootMine

Bootable minesweeper game in a 512-byte boot sector
Assembly
162
star
4

godot-portal-demo

Experimenting with portals in Godot Engine
GDScript
79
star
5

WineBox86.apk

x86 Wine on ARM Android with Box86 (very much WIP)
Java
66
star
6

unf

UNixize Filename -- replace annoying anti-unix characters in filenames
Rust
57
star
7

xkcd-unreachable-rs

A Rust macro xkcd_unreachable!() inspired by https://xkcd.com/2200/
Rust
41
star
8

yew-octicons

Easy support for Octicons in yew
Rust
18
star
9

nix-snapd

Snap package for Nix and NixOS
Nix
14
star
10

userland-execve-rust

An implementation of execve() in user space
Rust
10
star
11

Sandvox

The 3D voxel falling-sand game
Rust
9
star
12

hpmor-man-pages

Harry Potter and the Methods of Rationality, Unix Man Page Edition
Python
5
star
13

nix-flatpak

Declarative Flatpak management for the Nix package manager
Python
5
star
14

llvm-rustc-bug-repro

Rust
3
star
15

turboproof

A dependently-typed lisp and proof assistant [IN DEVELOPMENT]
Rust
3
star
16

quoftc

The Quoft Programming Language Compiler
C
3
star
17

MarioLANG

A minimal MarioLANG interpreter
C
3
star
18

deriv-calc

A derivative calculator and equation simplifier in Python.
Python
3
star
19

lambda-cove

https://lambdacove.netlify.com/
HTML
2
star
20

OS

A simple OS in C
C
2
star
21

discord-bedtime

A Discord bot reminding you to sleep
Rust
2
star
22

lambda

Lambda calculus REPL written in C
C
2
star
23

nonsense-discord-bot

Rust
2
star
24

rust-spinners-rand

Get a random `Spinners` from the `spinners` crate
Rust
2
star
25

rust-musl-builder-lzma

rust-musl-builder with liblzma support
Dockerfile
2
star
26

web-dump

/tmp but for static html
HTML
2
star
27

Chip8

A chip8 emulator in C and ncurses
C
2
star
28

coq-proofs

My proofs for the Coq proof assistant
Coq
1
star
29

qemu-libretro

QEMU libretro core port
C
1
star
30

angr-bad-edition

A mediocre angr clone (WIP)
Rust
1
star
31

sandy

A fork of sandy with mods to make it more like vim
C
1
star
32

ffmpeg-fetch-small-samples

Script to fetch small files from https://samples.ffmpeg.org/
Python
1
star
33

raycaster

C
1
star
34

brainfsym

Rust library for symbolically executing brainf*** code
Rust
1
star
35

gcc-mips-spim

Buggy WIP toolchain to compile C to SPIM-compatible MIPS assembly
C
1
star
36

nixos-framework-led

NixOS module for changing the LED color on Framework laptops
Nix
1
star
37

nvim-plumb

Neovim plugin for integration with the Plan 9 plumber
Python
1
star
38

toy-git-rs

Toy git implementation in Rust
Rust
1
star