rolandwalker / back-button Goto Github PK
View Code? Open in Web Editor NEWVisual navigation through mark rings in Emacs
Visual navigation through mark rings in Emacs
Back-button navigation is very slow, the local back-button action takes about 4.5 seconds. I'm on Emacs 26.3 and Windows 10, running on a new gaming laptop with an i7-9750H (2.60GHz) processor and 16 GB RAM.
If I enable back-button-mode on my Ubuntu 16.04 with Emacs 24.5, it consumes at least more 20+MB memory. Is it possible to decrease memory usage?
This packages is great, but from some reason the smartrep does not keep the C-x
prefix with arrows. When I do C-x <left>
it activates, but then when I do <left>
it immediately quits and move my cursor. The same for C-<left>
and right arrow. What works is C-x SPC
.
Any idea what is wrong, or how to debug it?
When back-button mode is enabled, (pulse-momentary-highlight-one-line (point))
call does not work as expected. The line gets highlighted but highlighted color does not disappear until a key is pressed.
This function is used in helm-gtags
package
I kindly request you to look into this.
I takes a few seconds to execute .e.g. "back-button-local-forward" the first time after starting emacs.
how to preload the relevant parts so that it's fast initially?
Calling any of the back-button
commands, such as back-button-local-backward
, returns
Debugger entered--Lisp error: (wrong-type-argument obarrayp [nil nil nil nil nil nil nil nil nil nil nil nil nil])
Here’s the backtrace:
Debugger entered--Lisp error: (wrong-type-argument obarrayp [nil nil nil nil nil nil nil nil nil nil nil nil nil])
intern("back-button-local-forward" [nil nil nil nil nil nil nil nil nil nil nil nil nil])
#f(compiled-function (x) #<bytecode 0x830bd57b>)(("<right>" . back-button-local-forward))
mapc(#f(compiled-function (x) #<bytecode 0x830bd57b>) (("<right>" . back-button-local-forward) ("<left>" . back-button-local-backward) ("<SPC>" . back-button-local) ("<C-right>" . back-button-global-forward) ("<C-left>" . back-button-global-backward) ("<C-SPC>" . back-button-global)))
smartrep-define-key((keymap) "C-x" (("<right>" . back-button-local-forward) ("<left>" . back-button-local-backward) ("<SPC>" . back-button-local) ("<C-right>" . back-button-global-forward) ("<C-left>" . back-button-global-backward) ("<C-SPC>" . back-button-global)))
byte-code("\306\30\11\32\n\203\206\0\n@\33\307\310\13!\311P!J\34\f\203~\0\f@\35\312\15\306\313\3\3\3\314$\266\203\2047\0\13\315N\2047\0\316\13\315\317\15!#\210\320\321!\203n\0\0165;\203n\0\0165G\322V\203n\0\323\0165\324Q\15\306\313\3\3\3\314$\266\203\203n\0\325\323\0165\326Q\327\15#\13B\10B\20\202w\0\330\0166\317\15!\13#\210\fA\24)\202\24\0)\nA\22)\202\4\0)\10\203\223\0\331\0166\0165\10#\210)\0167\203\332\0\332\168\333\334\335!\203\250\0\16\35\202\251\0\336#\210\337\340\341\342\343\344\345\346&\7\210\337\347\350\351\343\352\345\353&\7\210\337\354\355\356\343\357\345\360&\7\210\330\169\361\362#\210\330\169\363\364#\210\306\207" [smart-keys back-button-commands tail cmd tail k nil intern symbol-name "-keystrokes" "mouse\\|wheel\\|button" string-match t :advertised-binding put read-kbd-macro featurep smartrep 0 "\\`" "\\>" replace-regexp-in-string "\\>[ \11]*" "" define-key smartrep-define-key define-key-after [separator-backb] boundp menu-bar-separator "--" tool-bar-add-item "left-arrow" back-button-global-backward back-button :label "Back By Mark" :visible (and back-button-mode back-button-show-toolbar-buttons) "mpc/add" back-button-push-mark-local-and-global back-button-push "push Mark" (and back-button-mode back-button-show-toolbar-buttons) "right-arrow" back-button-global-forward forward-button "Forward By Mark" (and back-button-mode back-button-show-toolbar-buttons) [tool-bar S-back-button] back-button-local-backward [tool-bar S-forward-button] back-button-local-forward back-button-smartrep-prefix back-button-mode-map back-button-show-toolbar-buttons tool-bar-map global-map] 8)
command-execute(back-button-local-backward record)
execute-extended-command(nil "back-button-local-backward" nil)
funcall-interactively(execute-extended-command nil "back-button-local-backward" nil)
command-execute(execute-extended-command)
GNU Emacs 30.0.50 (build 1, aarch64-apple-darwin23.2.0, NS appkit-2487.30 Version 14.2.1 (Build 23C71)) of 2024-03-13
macOS 14.2.1 (23C71)
I'd like to change the prefix from C-x to C-c
I changed back-button-smartrep-prefix but it doesn't affect back-button-global-forward-keywtrokes and other similiar keys with C-x bindings.
I get following error message when visible-maker
package is enabled with back-button
package from melpa
back-button-visible-mark-show: Symbol's function definition is void: visible-mark-initialize-faces
From the git log of visible-marker
(https://gitlab.com/iankelling/visible-mark) visible-mark-initialize-faces
function is removed.
I request you to fix this issue.
Thanks!
Can visible mark mode be permanently disabled in the package?
Whenever I use it, it turns off visible mark mode in my buffers which I normally use. I prefer it not to use visible mark mode.
Hello,
This bug is kinda weird, so I'm not sure if it really belongs here or in powerline. I also don't suffer from it because right now back-button is loaded before powerline so everything works fine, which makes me lazy enough to simply report instead of finding the cause :P
If you want to see it tho, here is how to reproduce:
This yields the following backtrace:
Debugger entered--Lisp error: (wrong-type-argument consp nil)
byte-code("\303�>\206 \304�>\305�� �\235\204�\n \nAB\241\210*\303\207" [mode-line-format newcdr cell mode-line-position mode-line-buffer-identification smartrep-mode-line-string] 3)
require(smartrep nil t)
byte-code("\300\301!\210\300\302\303\304#\210\300\305\303\304#\210\300\306\303\304#\210\300\307\303\304#\210\310\311\303\312\313\314\315\316\315\317\315\320\321\322\323\324\323\325&�\210\326\327\330\331\332\333\323\311&�\210\334\327\335\304#\210\326\336\303\337\332\340\323\311&�\210\326\341\304\342\332\340\323\311&�\210\326\343\304\344\332\340\323\311&�\210\326\345\303\346\332\340\323\311&�\210\326\347\303\350\332\340\323\311&�\210\310\351\303\352\323\311%\210\326\353\354\355\332\356\323\351&�\210\326\357\360\361\332\362\323\351&�\210\326\363\364\365\332\333\323\351&�\210\326\366\367\370\332\333\323\351&�\210\310\371\303\372\323\311%\210\326\373\374\375\332\333\323\371&�\210\326\376\377\201@\332\201A\323\371&�\210\326\201B\201C\201D\332\201E\323\371&�\210\326\201F\201G\201H\332\201I\323\371&�\210\326\201J\201K\201L\332\201M\323\371&�\210\326\201N\201O\201P\332\201Q\323\371&�\210\326\201R\201S\201T\332\201U\323\371&�\207" [require cl smartrep nil t nav-flash visible-mark ucs-utils custom-declare-group back-button "Visual navigation through mark rings." :version "0.6.6" :link (emacs-commentary-link :tag "Commentary" "back-button") (url-link :tag "GitHub" "http://github.com/rolandwalker/back-button") (url-link :tag "EmacsWiki" "http://emacswiki.org/emacs/BackButton") :prefix "back-button-" :group convenience navigation custom-declare-variable back-button-mode-lighter " back" "This string appears in the mode-line when `back-button-mode' is active.\n\nSet to nil or the empty string to disable the mode-line\nlighter for `back-button-mode'." :type string put risky-local-variable back-button-less-feedback "Give less echo area feedback." boolean back-button-show-toolbar-buttons "Add buttons to the toolbar." back-button-show-visible-marks "Temporarily show marks using `visible-mark' when available." back-button-no-wrap "Do not wrap around the ring when navigating marks." back-button-never-push-mark "Never add a mark while navigating marks.\n\nThis option makes the back-button command work more like the\nstandard `pop-global-mark command', but breaks the functionality\nof remembering the start location." back-button-index "How to display the mark-ring index after interactive commands." back-button-show-index (quote echo) "How to display the mark-ring index.\n\nThis indicator shows progress through the ring after each\ncommand." (choice (const :tag "Echo Area" echo) (const :tag "Popup" popup) (const :tag "None" nil)) back-button-index-timeout 2 "How long to display the mark-ring index after each command.\n\nSet to nil or 0 for no timeout." ...] 18)
autoload-do-load((autoload "back-button" "Turn on back-button-mode.\n\nWhen called interactively with no prefix argument this command\ntoggles the mode. With a prefix argument, it enables the mode\nif the argument is positive and otherwise disables the mode.\n\nWhen called from Lisp, this command enables the mode if the\nargument is omitted or nil, and toggles the mode if the argument\nis 'toggle.\n\n(fn &optional ARG)" t nil) back-button-mode)
command-execute(back-button-mode record)
execute-extended-command(nil "back-button-mode" "back-button-mo")
funcall-interactively(execute-extended-command nil "back-button-mode" "back-button-mo")
call-interactively(execute-extended-command nil nil)
command-execute(execute-extended-command)
It seems that ucs-utils causes C-x C-c to take around three, four seconds on Windows 7. I have yet to figure out exactly what causes it within ucs-utils, but in the mean time, seeing as how Unicode characters aren't really essential to back-button-mode, it may be a good idea to make ucs-utils an optional dependency or to disable it when the operating system is Windows. The following change (around line 417) would fix it:
-(when (featurep 'ucs-utils)
+(when (and (featurep 'ucs-utils)
+ (not (equal system-type 'windows-nt)))
- (setq back-button-spacer-char (ucs-utils-char back-button-index-spacer-ucs-name back-button-spacer-char 'cdp))
- (setq back-button-thumb-char (ucs-utils-char back-button-index-thumb-ucs-name back-button-thumb-char 'cdp)))
As it stands, installing and enabling back-button-mode causes slow shutdowns on my Windows 7 system at least, even with -Q and even if back-button-mode is disabled again. Ideally, I'd like to find the cause in ucs-utils, but I haven't been able to do so yet.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.