diff options
| -rw-r--r-- | guides/rust/error-handling.org | 4 | ||||
| -rw-r--r-- | itches/emacs/development.org | 71 | ||||
| -rw-r--r-- | itches/emacs/language-support.org | 3 | ||||
| -rw-r--r-- | itches/emacs/tracker.org | 83 | ||||
| -rw-r--r-- | repo/www/TODO | 7 | ||||
| -rw-r--r-- | reviews/blog-roll.md | 40 |
6 files changed, 131 insertions, 77 deletions
diff --git a/guides/rust/error-handling.org b/guides/rust/error-handling.org index af499f0..14e4eae 100644 --- a/guides/rust/error-handling.org +++ b/guides/rust/error-handling.org @@ -8,3 +8,7 @@ ergonomics even further: - snafu - thiserror - anyhow +- eyre +* Ongoing development +Error handling now has a [[https://github.com/rust-lang/project-error-handling][dedicated project group]] under the [[https://www.rust-lang.org/governance/teams/library][library +team]]. diff --git a/itches/emacs/development.org b/itches/emacs/development.org index fccc82e..a1fe3f2 100644 --- a/itches/emacs/development.org +++ b/itches/emacs/development.org @@ -1,76 +1,5 @@ Stuff that could make work on Emacs itself more smooth. -* Changelog -** Action stamps -I don't know any function to - -1. generate them from a Git commit, a *vc-change-log* buffer… -2. convert them back to a Git commit, a *vc-diff* buffer… - -They can almost be generated with: - -#+BEGIN_SRC sh -git show --no-patch \ - --date=format:"%FT%T%z" \ - --format=format:"%ad!%ae" -#+END_SRC - -Except that [[https://tools.ietf.org/html/rfc3339][RFC3339]] says: - -#+BEGIN_QUOTE - time-numoffset = ("+" / "-") time-hour ":" time-minute -#+END_QUOTE - -While ~%z~ yields "+hhmm" or "-hhmm". Also [[http://esr.ibiblio.org/?p=3872][ESR wants Zulu time]]. - -See also -- bug#20609 -- https://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00252.html - -This monstrosity does the job: -#+begin_src elisp -(defun my/revision-at-point () - (cond - ;; TODO: add vc support. - ((derived-mode-p 'magit-mode) - (magit-branch-or-commit-at-point)))) - -(eval-when-compile - ;; Load rx's pcase pattern. - (require 'rx)) - -(defun my/action-stamp-at-point (rev) - (interactive - (list - (let* ((rev (my/revision-at-point)) - (prompt (if rev (format "Revision? (%s) " rev) "Revision? "))) - (read-string prompt nil nil rev)))) - (let* ((cmd "git show --no-patch --date=unix --format='%ad!%ae'") - (git-info (shell-command-to-string (format "%s %s" cmd rev)))) - (pcase git-info - ((rx (let timestamp-str (+ digit)) - "!" - (let mail (+ anychar)) - "\n") - (let* ((timestamp (string-to-number timestamp-str)) - (date (format-time-string "%FT%TZ" timestamp t)) - (action-stamp (format "%s!%s" date mail))) - (kill-new action-stamp) - (message action-stamp)))))) -#+end_src - -ESR's =git stamp= alias in [[https://gitlab.com/esr/reposurgeon/-/blob/4.5/reposurgeon-git-aliases][reposurgeon]]: -#+begin_src conf - # git stamp <commit-ish> - print a reposurgeon-style action stamp - # This always goes to the committer. It would be better to look at thwe author - # timestamp first and fall back to commmitter, because the author stamp because - # doesn't change when patches are replayed onto a repository, while the commit - # stamp will. - stamp = show -s --format='%cI!%ce' -#+end_src -This alias seems to confirm my feeling that Zulu time is not worth -bothering with: ISO 8601 is just as machine-parseable, and the -timezone bit actually conveys meaning to a human reader. * Bug tracker ** Asynchronous client It would be wonderful if ~debbugs-gnu~ and ~debbugs-gnu-search~ used diff --git a/itches/emacs/language-support.org b/itches/emacs/language-support.org index 145786e..d784f2b 100644 --- a/itches/emacs/language-support.org +++ b/itches/emacs/language-support.org @@ -1,12 +1,13 @@ * Python ** Fix builtin/keyword fontification for Python 3 E.g. =print= became a builtin. +Cf. [[https://debbugs.gnu.org/43298][bug#43298]]. *** TODO add fontification tests *** TODO have dedicated font-lock styles for Python 2, 3 and "mixed" Default to "mixed" (rely on tests to ensure user-visible change). **** TODO create font-lock styles **** TODO create variable to choose style -Users could customize it or set it wiht directory-local variables. +Users could customize it or set it with directory-local variables. *** TODO add heuristic to pick the "right" style ** Fontify f-strings E.g. =f'an {expression} that should be highlighted'=. diff --git a/itches/emacs/tracker.org b/itches/emacs/tracker.org index 70336f1..64317a0 100644 --- a/itches/emacs/tracker.org +++ b/itches/emacs/tracker.org @@ -42,6 +42,47 @@ Fixed by Eli. :Role: author :END: First reported as [[https://github.com/dgutov/diff-hl/issues/142][dgutov/diff-hl#142]]. Fixed by Eli. +*** TODO Translate unshifted keys to shifted if no bindings are found +To make =C-x [0-9]= more accessible on AZERTY. Firefox does this, cf +[[https://hg.mozilla.org/mozilla-unified/file/FIREFOX_80_0_1_RELEASE/widget/gtk/nsGtkKeyUtils.cpp#l1207][here]]: + +#+begin_src c++ + // Retry with shifted keycode. + guint shiftState = (baseState | keymapWrapper->GetModifierMask(SHIFT)); + uint32_t shiftedChar = keymapWrapper->GetCharCodeFor(aGdkKeyEvent, shiftState, + aGdkKeyEvent->group); + if (IsBasicLatinLetterOrNumeral(shiftedChar)) { + // A shifted character can be an ASCII alphabet on Hebrew keyboard + // layout. And also shifted character can be an ASCII numeric on + // AZERTY keyboad layout. Then, it's a good hint for deciding our + // keyCode. + return WidgetUtils::ComputeKeyCodeFromChar(shiftedChar); + } +#+end_src + +and [[https://hg.mozilla.org/mozilla-unified/file/FIREFOX_80_0_1_RELEASE/widget/gtk/nsGtkKeyUtils.cpp#l1896][there]]: + +#+begin_src c++ +uint32_t KeymapWrapper::GetCharCodeFor(const GdkEventKey* aGdkKeyEvent, + guint aModifierState, gint aGroup) { + guint keyval; + if (!gdk_keymap_translate_keyboard_state( + mGdkKeymap, aGdkKeyEvent->hardware_keycode, + GdkModifierType(aModifierState), aGroup, &keyval, nullptr, nullptr, + nullptr)) { + return 0; + } + GdkEventKey tmpEvent = *aGdkKeyEvent; + tmpEvent.state = aModifierState; + tmpEvent.keyval = keyval; + tmpEvent.group = aGroup; + return GetCharCodeFor(&tmpEvent); +} +#+end_src + +Maybe look at ~lookup-key~ in ~src/keymap.c~? Although +~src/gtkutil.c~ seems to be the place making the most calls to ~gdk_~ +functions. ** Elisp *** DONE [[bug:30008]] Subdirectory vs major mode in .dir-locals.el :PROPERTIES: @@ -106,14 +147,13 @@ patch's title (and a whole new message by the maintainer). :Role: author :END: Fixed by Dmitry. -**** TODO [[bug:28969]] Confirmation prompt for wildcard not surrounded by whitespace +**** DONE [[bug:28969]] Confirmation prompt for wildcard not surrounded by whitespace :PROPERTIES: :Role: author +:PatchApplied: t +:TestAdded: t :END: -- v6 posted in December 2019. -- Eli skeptical of final UI. -- Waiting until 27.1 is released before pestering the maintainers with - another bikeshed. +My commit message ran afoul of debbugs.el's =M-m= again. *** Gnus **** DONE [[bug:40520]] Prevent duplicate thread titles :PROPERTIES: @@ -170,14 +210,27 @@ More unrelated tests that needed fixing before I could start working. :PROPERTIES: :Role: author :END: +ACKed by Bastien; bump once 9.4 is released. **** TODO [[bug:42184]] org-fontify-whole-heading-line does not work in emacs 27 :PROPERTIES: :Role: watcher +:PatchApplied: t :END: +All that remains is merging Org 9.3.8 into emacs-27 (cf. [[bug:43268]]). **** TODO [[orgmode:87mu3ze52c.fsf@gmail.com]] Default description for abbreviated links :PROPERTIES: :Role: author :END: +Counter-proposal by Bastien. Next step: ACK and get back to the +workbench. +**** TODO Skip checkbox width when filling list item +Currently items are filled like this: +#+begin_example +- [ ] lorem + ipsum +#+end_example +Adding =\\[.\\]= to the regexp used in org-list-item-body-column +allows "ipsum" to be aligned below "lorem". ** Minor modes *** electric-pair **** DONE [[bug:39680]] electric-pair-mode broken by undo @@ -230,6 +283,10 @@ Fixed by Andrea (see update 9 on his [[https://akrl.sdf.org/gccemacs.html][progr :Role: author :PatchApplied: t :END: +*** TODO autoload debbugs-gnu-emacs-release-blocking-reports +I prefer this over the Org variant, which is autoloaded. +*** TODO Make ~debbugs-gnu-apply-patch~ smarter +To avoid accidents like [[bug:28969]], [[bug:39504]], and [[bug:41810]]. ** diff-hl *** DONE [[https://github.com/dgutov/diff-hl/issues/142][#142]] Weird interaction between diff-hl-flydiff-mode and org-indent-mode Eventually reported back to Emacs core in [[bug:41584]] and fixed by Eli. @@ -256,6 +313,22 @@ Eventually reported back to Emacs core in [[bug:41584]] and fixed by Eli. :Role: author :PatchApplied: t :END: +*** TODO Autoload magit-file-mode-map correctly +The current state of affairs: + +- ~global-magit-file-mode~ says ~:init-value t~, but that has no + effect. +- We need to move ~magit-file-mode~ (and ~magit-blob-mode~ while we're + at it) to a new, dedicated library, and either + - let users customize ~global-magit-file-mode~ to t, which will + DTRT, + - autoload the form that enables the mode if the variable is set. + +It's already possible to do either, but it slows down startup +considerably. Hopefully moving the mode to a file that does not +~(require 'magit)~ will mitigate this? + +[[https://lists.gnu.org/archive/html/help-gnu-emacs/2020-09/msg00130.html][For context.]] ** markdown-mode *** DONE [[https://github.com/jrblevin/markdown-mode/pull/124][jrblevin/markdown-mode#124]] Prevent spurious bold fontification :PROPERTIES: diff --git a/repo/www/TODO b/repo/www/TODO index cd97605..7eac4fe 100644 --- a/repo/www/TODO +++ b/repo/www/TODO @@ -1,3 +1,10 @@ +- preprocess Org files + Org's HTML backend adds a lot of stuff I don't like (intermediate + divs, unstable section IDs); I'll use the markdown backend, then + feed that to pandoc + - change description of custom +LINKs + - convert properties + - convert tags - compute "leak count" on toplevel index - get stylin' - pandoc template diff --git a/reviews/blog-roll.md b/reviews/blog-roll.md index 08ffaf9..3b7f08c 100644 --- a/reviews/blog-roll.md +++ b/reviews/blog-roll.md @@ -288,3 +288,43 @@ back the stack? [Joe Duffy's Blog]: http://joeduffyblog.com/ [The Error Model]: http://joeduffyblog.com/2016/02/07/the-error-model/ + +# [Without boats] + +## [Not Explicit] + +:::: tags +- Rust +- Language design +:::: + +Picking up where Aaron Turon's ["reasoning footprint"] post left off, +and breaking down "explicit" into more precise epithets: + +"Noisy" +: `try!()` is noisier than `?`, which works in the latter's + favor. + + > Often - especially when forwarding errors, as `?` does - the early + > return is the least important part of the source code to me. + +"Burdensome" +: aka "syntactic salt"; can be deliberate in order to + discourage. + +"Manual" or "opt-in" +: e.g. if Rust required an explicit `.drop()` on variables, instead + of systematically freeing them when they go out of scope. As + things stand, a variable's eventual de-allocation is "explicit", + as in, it follows non-ambiguously from reading the source code; + yet it is also **automatic**. + +"Local" +: "explicit within some scope". Method resolution is explicit (as + in, deterministic and unambiguous) but one('s IDE) must jump + around to figure it out. `?` is local to the very line where the + early return happens. + +[Without boats]: https://without.boats/ +[Not Explicit]: https://without.boats/blog/things-explicit-is-not/ +["reasoning footprint"]: https://blog.rust-lang.org/2017/03/02/lang-ergonomics.html |
