# Emacs - center/top point when - moving to text/tag search hit - going to man page section - opening eww on an anchor - visiting a function from its Help buffer - make font-lock stop background at fill-column or max(len(line) for line in paragraph) rather than window-width when text spans >1 lines - shell-mode - add faces instead of reusing font-lock-{comment,string} - understand `autocd` and `cd !$` - use Bash completions (e.g. `ls TAB` in a folder with one file) - [.dir-locals changed priorities][bug#30008] between subfolder and major mode from 25 to 26 - eshell: `ls --group-directories-first` does not color folders - eww, gnus-article: adapt filling to window width changes - scroll-lock-mode - cursor stuck on lines wrapped by visual-line-mode - cursor stuck on lines with 😛 - scroll when going down newline with forward-… - matching-paren analysis fails: `;; (here is\n;; a comment)` - some modes redefine C-M-h, which makes this binding hard to override; could mark-defun consult functions/values exposed by major modes instead? - Man-mode: make isearch skip end-of-line hyphens - when opening `.gpg` files in a TTY, some characters (e.g. TAB) are swallowed by Emacs instead of being forwarded to the gpg prompt; these characters are then inserted in the decrypted file's buffer (see `epa-file-insert-file-contents`) - let TRAMP fetch Google Drive credentials from .authinfo.gpg - icomplete's C-j does not choose the first completion as advertised on empty input; it chooses ".", which AFAICT comes from the fact that icomplete-exhibit calls completion-pcm--filename-try-filter while icomplete-force-complete-and-exit simply calls minibuffer-force-complete-and-exit - likewise, if a folder contains foo.c and foo.o, "C-x C-f foo" hides foo.o, yet C-j completes to foo.o - calendar uses default X resources when run in its own frame; see `calendar-frame-parameters`, `x-handle-named-frame-geometry`, `(make-frame '((name . "")))` vs `(make-frame '((title . "")))` - use compilation-mode-line-… faces for compilation-num-… indicators - "é" is not erased with a single DEL stroke, despite [Unicode conventions] - sort tar archive members by name; serving suggestion: ``` elisp (defun my/tar-sort (info) (sort info (lambda (a b) (string< (tar-header-name a) (tar-header-name b))))) ;; Apply to tar-parse-info in tar-summarize-buffer. ``` - add a command or minor mode to highlight marks; serving suggestion: ``` elisp (save-excursion (dolist (m mark-ring) (goto-char (marker-position m)) (pulse-momentary-highlight-region (point) (point-at-eol)) (sit-for 0.1))) ``` - StackOverflow-like suggestions when reporting bugs - match data vs. `:eval` during redisplay: cf. [bug#31586] - make vc honour `.gitignore` so that `project-find-file` completion is not cluttered with ignored files - in a folder with a .git folder and a .gitignore file, - `C-x C-f .gi TAB` completes to .gitignore - `C-x C-f .git TAB` says "not unique" - add some Custom machinery to save additions/removals to list variables; as things stand, once I add/remove items and save the variable, I miss out on changes to the variable's default value: e.g. `git-commit-setup-hook` recently added `bug-reference-mode`, but I never realized it because I customized the hook to add some personal functions - e-pair-mode inserts a closing `$` after point in tex-mode, but inserts a new pair instead of overwriting when pressing `$` again - completions in python.el's comint buffer get confused when readline's completion-prefix-display-length is set: candidates become elided, maybe python-shell-completion-native-get-completions is not ready for that? - some bindings advertised by `describe-mode` in texinfo-mode are invalid: - `C-c C-s` runs `Texinfo-insert-node` instead of `texinfo-show-structure` - `C-c C-e` runs `Texinfo-environment` instead of being a prefix command for `texinfo-format-{buffer,region}` - [bug#31666]: visual-line-mode adds newlines before words that end up being split anyway - `gnus-group-make-group` uses `message-y-or-n-p`, which relies on `message-talkative-question`; the message might be too wide for the temporary buffer where it is displayed, and `y-or-n-p` prevents the user from moving to the buffer and looking at the rest of the message. [bug#30008]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30008 [bug#31586]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=31586 [bug#31666]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=31666 [Unicode conventions]: https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00961.html ## Dired - allow "columns" to be toggled; more specifically, make it possible to hide ownership, permissions, number of hard links… - make the filename stand out - `% r` does not support some `\` constructs (`\#`, `\,`) - add a face for broken symbolic links ## ERC - move timestamp to a better position (see `stamp` module) - play well with whitespace-mode ## Org - dissociate sub- and super-script fontification from everything else in org-toggle-pretty-entities - org-clocktable trips on DST: ``` org #+BEGIN: clocktable :scope file :maxlevel 2 :step day :stepskip0 t :tstart "[2018-10-15]" :tend "[2018-11-15]" #+END: * foo :LOGBOOK: CLOCK: [2018-10-26 Fri 08:00]--[2018-10-26 Fri 17:00] => 9:00 :END: * bar :LOGBOOK: CLOCK: [2018-10-29 Mon 08:00]--[2018-10-29 Mon 17:00] => 9:00 :END: ``` - make org-ctrl-c-ctrl-c call `(org-clock-update-mode-line t)` when point is on the clocked-in heading - new command `org-clock-in-late` to clock out x minutes ago from previous task, and clock in x ago on task at point ## Language support - fix builtin/keyword distinction for Bash & Python3 - highlight variables inside strings, eg - `"a ${variable} inside a double-quoted string"` (Bash) - `'a format string's {variable}` (Python) - do not highlight a single-quoted command substitution - recognize [POSIX "immediate-expansion"][austin#330] operator `::=` [austin#330]: http://austingroupbugs.net/view.php?id=330 ## read-passwd - prevent kills from ending up in the clipboard - add command to temporarily reveal password ## whitespace-mode - skip line/wrap-prefix variables and properties - highlights the adaptive-wrap prefix, although weirdly enough the whitespace *faces* are not applied - in org-indent-mode, adds a spurious (unfaced) space marker before paragraphs; somehow transient-mark-mode knows not to highlight this space, maybe the answer lies there ## Ellipses customization Make ellipses for "invisible" text easily customizable (src/xdisp.c). Make them default to ?… when this character can be displayed. Use-cases: - ibuffer truncation - hideshow - outline (org) - rgrep - magit-process ## External libraries ### adaptive-wrap - a commented-out line with no space between the comment delimiter and its text will get padded with the comment delimiter: ;(some very long line) ;; ⇒ wrapped with adaptive-wrap-extra-indent set to 4: ;(some very ;;;;;long line) ### debbugs - asynchronous bug fetching ### magit - customize current-tag function so that one can add `--first-parent` - prevent section highlight overlay from hiding tag face background - when quitting ediff conflict resolution, the "save buffer" prompt is out of focus, one must ALT-TAB out of the ediff control panel first (noticed in Emacs 27; 25.1 works fine); possible culprits: - magit - ediff - smerge - yes-or-no-p - read-answer - make status buffer understand and display `typechange` e.g. when replacing a replacing a regular file with a symlink - when ignoring a file in a subdirectory, magit attempts to `git add .gitignore` (i.e. toplevel `.gitignore`), which fails - if the `-n` log option is set in the status buffer, the "unpulled from origin/…" section shows an invalid commit count if the `-n` limit is lower than the actual number of commits ### markdown-mode - support [shortcut reference links] - move point past header after C-c C-t !/@ - update sub-superscript regex to allow L~i+1~ - make justification work with indented blockquotes - add "ini ↦ conf-mode" to markdown-code-lang-modes [shortcut reference links]: http://spec.commonmark.org/0.27/#shortcut-reference-link ### rg-mode - make -project DTRT in dired ### page-break-lines - borked in magit-diff ### diff-hl - colored fringe line is discontinued on lines featuring faces with heights greater than 1 ``` shell $ git init $ echo "* foo" > README.org $ git add README.org ; git commit -m README.org README.org $ echo "* bar" >> README.org $ echo "* baz" >> README.org ``` ``` elisp (load-file "…/diff-hl.el") (global-diff-hl-mode) (set-face-attribute 'org-level-1 nil :height 1.2) (find-file "README.org") ``` - in Org buffers with org-indent-mode, lines before point will "dance" around while editing, i.e. while I type, they stick to the left margin, then when I stop typing, they become indented again.