Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zk-phi/sublimity
Smooth-scrolling and minimap like sublime editor
https://github.com/zk-phi/sublimity
emacs
Last synced: about 21 hours ago
JSON representation
Smooth-scrolling and minimap like sublime editor
- Host: GitHub
- URL: https://github.com/zk-phi/sublimity
- Owner: zk-phi
- Created: 2013-04-11T07:39:27.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2020-12-12T01:21:05.000Z (almost 4 years ago)
- Last Synced: 2024-08-02T01:26:24.679Z (3 months ago)
- Topics: emacs
- Language: Emacs Lisp
- Homepage:
- Size: 141 KB
- Stars: 493
- Watchers: 21
- Forks: 27
- Open Issues: 24
-
Metadata Files:
- Readme: Readme.org
Awesome Lists containing this project
- awesome-starred - sublimity - [Emacs] Smooth-scrolling and minimap like sublime editor (Emacs Lisp)
README
* sublimity.el
sublime 風のスムーススクロール、ミニマップ、集中モード
smooth-scrolling, minimap and distraction-free mode (inspired by the
sublime editor)** Screencast
[[screencast.png]]
** Installation
Require this script and some of =sublimity-scroll=, =sublimity-map=
and =sublimity-attractive=.: (require 'sublimity)
: ;; (require 'sublimity-scroll)
: ;; (require 'sublimity-map) ;; experimental
: ;; (require 'sublimity-attractive)then call command =M-x sublimity-mode= (or put the following
expression in your init file).: (sublimity-mode 1)
** Notes
When you turn =sublimity-mode= on, =auto-hscroll-mode= is
automatically disabled, and =sublimity-auto-hscroll-mode= will work
instead. Thus, to disable horizontal scrolling, set
=sublimity-auto-hscroll-mode= but not =auto-hscroll-mode= while
=sublimity-mode= is turned on.=sublimity-scroll= currently requires an unset/zero =scroll-margin=.
** Customization
*** sublimity-scroll (smooth scrolling)You may configure the speed of smooth-scroll by setting two variables.
: (setq sublimity-scroll-weight 10
: sublimity-scroll-drift-length 5)Scroll is basically divided into (weight + drift-length) steps. for
example, with the configuration above, 100 lines of scrolling is
divided into 15 (= 10 + 5) steps: (17 15 14 12 11 8 7 5 4 2 1 1 1 1 1)
and it looks smoother than 1 step scroll. Note that last 5 steps are
all 1 line scrolls, because drift-length is set 5. So you may make
scroll more smooth by setting drift-length greater. try :: (setq sublimity-scroll-weight 5
: sublimity-scroll-drift-length 10)With the configuration above, scroll is divided into 15 steps again,
: (30 24 18 12 6 1 1 1 1 1 1 1 1 1 1)
but the last *10* steps are all 1 line scrolls. this looks smoother
but perhaps more annoying for some users.For fast computers where the smooth scrolling effect happens too
quickly, you can configure a small delay (in seconds) that occurs
between scroll steps:: (setq sublimity-scroll-vertical-frame-delay 0.01)
*** sublimity-map (minimap, experimental)
**** sublimity-map-size, fraction, text-scale: (setq sublimity-map-size 20)
: (setq sublimity-map-fraction 0.3)
: (setq sublimity-map-text-scale -7)=sublimity-map-fraction= defines the maximum fraction of width that
minimap can get. =sublimity-map-text-scale= is passed to
=text-scale-set= on minimap setup.**** sublimity-map-setup-hook
: (add-hook 'sublimity-map-setup-hook
: (lambda ()
: (setq buffer-face-mode-face '(:family "Monospace"))
: (buffer-face-mode)))=sublimity-map-setup-hook= will run when minimap is created.
**** sublimity-map-set-delay
: (sublimity-map-set-delay 5)
With the setting above, minimap is displayed after 5 seconds of idle
time. When =sublimity-map-set-delay= is called with =nil=, then
minimap is shown with no delay. This defers from setting delay to 0,
especially when used with sublimity-scroll, in the sense that minimap
looks not deleted at all but gets worse performance.*** sublimity-attractive (distraction-free mode)
**** sublimity-attractive-centering-width: (setq sublimity-attractive-centering-width 110)
When a positive integer is set, buffer width is truncated to this
value and drawn centered. To cancel this feature, set this value nil.**** sublimity-attractive-hide-xxxx
Following functions are available to hide some UI parts.
: (sublimity-attractive-hide-bars)
: (sublimity-attractive-hide-vertical-border)
: (sublimity-attractive-hide-fringes)
: (sublimity-attractive-hide-modelines)