I customized horizontal auto-scrolling like this: hscroll-margin set to 1, hscroll-step set to 1 (tested with 2, same effect). display-line-numbers-width set to 3 display-line-numbers set to t When hscrolling starts, it goes ok for 4, 5 chars then buffer jumps to the beginning of the line (i.e. hscroll resets) and cursor disappears. Can still hscroll with keyboard though (cursor remains somewhere on the right, not visible). In GNU Emacs 26.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2017-07-15 built on home Repository revision: 8b64a80a56c0e15d3313a45022ae60b33dbb4bff Windowing system distributor 'The X.Org Foundation', version 11.0.11903000 System Description: Ubuntu 17.04 Configured using: 'configure --without-pop --with-mailutils' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 LIBSYSTEMD Important settings: value of $LC_MONETARY: en_US.UTF-8 value of $LC_NUMERIC: en_US.UTF-8 value of $LC_TIME: en_US.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: paredit-mode: t flyspell-mode: t rainbow-mode: t diff-hl-flydiff-mode: t diff-hl-mode: t diff-auto-refine-mode: t highlight-numbers-mode: t hl-todo-mode: t global-auto-revert-mode: t delete-selection-mode: t yas-global-mode: t yas-minor-mode: t global-flycheck-mode: t flycheck-mode: t global-paren-face-mode: t paren-face-mode: t show-paren-mode: t global-auto-complete-mode: t auto-complete-mode: t projectile-mode: t auto-insert-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message dired dired-loaddefs format-spec rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader sendmail mail-utils help-fns radix-tree crm cus-edit wid-edit tabify misearch multi-isearch colir fill-column-indicator tempo company-oddmuse company-keywords company-etags company-gtags company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-template company-css company-nxml company-bbdb alchemist alchemist-macroexpand alchemist-company alchemist-help alchemist-complete company-dabbrev-code company-dabbrev alchemist-refcard alchemist-phoenix alchemist-compile alchemist-iex alchemist-message alchemist-hooks alchemist-hex alchemist-mix alchemist-info alchemist-goto alchemist-scope alchemist-eval alchemist-interact alchemist-server alchemist-execute alchemist-report alchemist-test-mode alchemist-project alchemist-file alchemist-key alchemist-utils company elixir-mode pkg-info url-http tls gnutls url url-proxy url-privacy url-expand url-methods url-history mailcap url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-cookie url-domsuf url-util url-gw nsm puny lisp-mnt epl elixir-smie smie pcase vc-git powerline powerline-separators powerline-themes server paredit flyspell ispell rainbow-mode color diff-hl-flydiff diff diff-hl vc-dir ewoc vc vc-dispatcher diff-mode highlight-numbers parent-mode hl-todo yatemplate settings settings-editing settings-reloading autorevert filenotify settings-langs lang-elixir lang-php lang-cl lang-css lang-erlang ivy-erlang-complete async counsel jka-compr esh-util swiper erlang ivy delsel ivy-overlay ffap lang-js js2-refactor js2r-paredit js2r-conveniences js2r-conditionals js2r-wrapping js2r-functions elixir-yasnippets yasnippet flymake js2r-vars js2r-iife js2r-formatting js2r-helpers s js2-mode js sgml-mode dom cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs imenu lang-go settings-keys settings-indent settings-backups settings-modes mode-iedit iedit iedit-lib multiple-cursors-core rect mode-diff-hl mode-rainbow mode-flycheck flycheck-credo flycheck cl-extra json map find-func help-mode subr-x dash mode-flyspell mode-slime ac-slime slime-indentation slime-cl-indent cl-indent slime-fancy slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references slime-compiler-notes-tree slime-scratch slime-presentations bridge slime-macrostep macrostep slime-mdot-fu slime-enclosing-context slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc slime-repl slime-parse slime etags xref project arc-mode archive-mode noutline outline easy-mmode pp hyperspec browse-url mode-ido ido mode-paren-face paren-face mode-paredit mode-paren time-date paren mode-elixir mode-erlang mode-js2 mode-web-mode web-mode disp-table mode-ac auto-complete-config auto-complete popup settings-ui smooth-scroll deeper-blue-theme settings-packages paths edmacro kmacro projectile advice grep compile comint ansi-color ring ibuf-ext ibuffer ibuffer-loaddefs thingatpt autoinsert cus-start cus-load finder-inf tex-site rx slime-autoloads info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 541399 74393) (symbols 48 51468 2) (miscs 40 1878 781) (strings 32 156267 3755) (string-bytes 1 7798246) (vectors 16 57958) (vector-slots 8 1076531 17982) (floats 8 3361 1089) (intervals 56 7323 3598) (buffers 976 31))