diff options
Diffstat (limited to 'personal/itches/emacs/bulk.md')
| -rw-r--r-- | personal/itches/emacs/bulk.md | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/personal/itches/emacs/bulk.md b/personal/itches/emacs/bulk.md new file mode 100644 index 0000000..9e33c20 --- /dev/null +++ b/personal/itches/emacs/bulk.md @@ -0,0 +1,264 @@ +# 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 +- emoji support +- 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? +- make ellipses for "invisible" text easily customizable (src/xdisp.c) +- 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 + +[bug#30008]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30008 +[bug#31586]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=31586 +[Unicode conventions]: https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00961.html + +## Better out-of-the-box display for FORM FEED + +By default, FORM FEED is displayed as a dumb `^L` glyph. This is +surprising considering it shows up in so many places: Emacs source +files, help buffers (e.g. `describe-mode`)… You can even see it in +source files of other GNU projects, like GCC. + +"Pages" are important enough to have their own navigation and +narrowing commands, yet their default delimiter is displayed as an +unassuming control character. + +I like the way form feeds are displayed with [`page-break-lines`]; +magit's `show-lines` blaming style achieves a similar look. + +Having this kind of display by default would make it more obvious that +this character serves an actual purpose; as it stands, it looks no +different from some stray CARRIAGE RETURN. + +This could be re-used by e.g.: + +- `describe-symbol`, which uses the following method to visually break + up multiple symbol definitions: + + ``` lisp + (insert "\n\n" + (eval-when-compile + (propertize "\n" 'face '(:height 0.1 :inverse-video t))) + "\n") + ``` + +- Custom buffers, where sections are delimited visually with a + 999-character wide underlined space. + +Full disclosure +: This reflection started because moving over this underlined space + with `truncate-lines` on causes the screen to jump horizontally. + This specific problem should be fixable without dragging FORM FEED + display into the discussion, but I feel like the latter is the + more interesting issue ([who on Earth] enables `truncate-lines` by + default anyway). + +[`page-break-lines`]: https://github.com/purcell/page-break-lines +[who on Earth]: https://gitlab.com/peniblec/dotfiles/blob/master/.emacs-custom.el + +## 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 + +## 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 + +## 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) + +### 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 +- if deleting a remote branch fails (e.g. due to wrong credentials), + `update-ref -d` is still run +- 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 + +### 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") + ``` |
