Subject: bug#75824: [Patch] 31.0.50; typescrip-ts-mode: Does not correctly fontify known operators and keywords

From: Jostein Kjønigsen <[email-masked]>
Date: Fri, 31 Jan 2025 09:28:38 +0100

Can someone please review and possibly install this patch? 

I don't have access to merge patches myself.

—
Kind Regards
Jostein Kjønigsen

> On 25 Jan 2025, at 11:39, Jostein Kjønigsen <[email-masked]> wrote:
> 
> Hey everyone.
> 
> Typescript supports the null-coalescing operator ?? just like many other languages. Currently it is fontified using the default face.
> Typescript also has the "undefined" keyword which is also fontified using the default face.
> 
> Attached is a patch which fixes these issues.
> 
> <0001-lisp-progmodes-typescript-ts-mode.el-Improve-fontifi.patch>
> 
> 
> In GNU Emacs 31.0.50 (build 5, aarch64-apple-darwin24.0.0, NS
>  appkit-2566.00 Version 15.0.1 (Build 24A348)) of 2024-12-11 built on
>  SOK67R3KWV97
> Repository revision: a9bc12318121acb513a5735f641602001510a932
> Repository branch: master
> Windowing system distributor 'Apple', version 10.3.2566
> System Description:  macOS 15.0.1
> 
> Configured using:
>  'configure --with-tree-sitter --with-native-compilation --with-json
>  --with-imagemagick
>  PKG_CONFIG_PATH=:/usr/local/lib/pkgconfig:/opt/local/lib/pkgconfig'
> 
> Configured features:
> ACL GLIB GNUTLS IMAGEMAGICK LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY
> KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TOOLKIT_SCROLL_BARS
> TREE_SITTER WEBP XIM ZLIB
> 
> Important settings:
>   value of $LC_ALL: en_US.UTF-8
>   value of $LC_CTYPE: UTF-8
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
> 
> Major mode: ELisp/l
> 
> Minor modes in effect:
>   global-git-commit-mode: t
>   magit-auto-revert-mode: t
>   bug-reference-prog-mode: t
>   elisp-slime-nav-mode: t
>   highlight-symbol-mode: t
>   flycheck-mode: t
>   editorconfig-mode: t
>   company-mode: t
>   indent-bars-mode: t
>   which-function-mode: t
>   helm-mode: t
>   helm-minibuffer-history-mode: t
>   async-bytecomp-package-mode: t
>   delete-selection-mode: t
>   global-auto-revert-mode: t
>   paredit-mode: t
>   yas-global-mode: t
>   yas-minor-mode: t
>   global-nlinum-mode: t
>   nlinum-mode: t
>   ido-yes-or-no-mode: t
>   override-global-mode: t
>   server-mode: t
>   global-hl-line-mode: t
>   pixel-scroll-precision-mode: t
>   doom-modeline-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   show-paren-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
>   blink-cursor-mode: t
>   minibuffer-regexp-mode: t
>   column-number-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   hs-minor-mode: t
> 
> Load-path shadows:
> /Users/josteink/.emacs.d/elpa/transient-20240421.1327/transient hides /Users/josteink/build/emacs/lisp/transient
> /Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig hides /Users/josteink/build/emacs/lisp/editorconfig
> /Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-conf-mode hides /Users/josteink/build/emacs/lisp/editorconfig-conf-mode
> /Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-core hides /Users/josteink/build/emacs/lisp/editorconfig-core
> /Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-core-handle hides /Users/josteink/build/emacs/lisp/editorconfig-core-handle
> /Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-fnmatch hides /Users/josteink/build/emacs/lisp/editorconfig-fnmatch
> 
> Features:
> (shadow sort mail-extr emacsbug goto-addr git-rebase magit-extras
> tramp-cache time-stamp tramp-sh shortdoc help-fns radix-tree
> helm-command helm-elisp helm-eval edebug helm-info markdown-mode
> elec-pair magit-submodule magit-blame magit-stash magit-reflog
> magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
> magit-commit magit-sequence magit-notes magit-worktree magit-tag
> magit-merge magit-branch magit-reset magit-files magit-refs magit-status
> magit magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode
> git-commit log-edit pcvs-util magit-core magit-autorevert magit-margin
> magit-transient magit-process with-editor magit-mode transient magit-git
> magit-base magit-section cursor-sensor crm csharp-mode c-ts-common
> cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
> cc-engine cc-vars cc-defs misearch multi-isearch bug-reference vc-git
> vc-dispatcher winner tramp-archive tramp-gvfs add-log pulse
> ido-completing-read+ memoize minibuf-eldef org-duration diary-lib
> diary-loaddefs cal-iso oc-basic ol-eww ol-rmail ol-mhe ol-irc ol-info
> ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime dig
> gnus-sum gnus-group gnus-undo gnus-start gnus-dbus dbus gnus-cloud
> nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range
> message sendmail yank-media rfc822 mml mml-sec epa derived epg rfc6068
> mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus-win
> ol-docview doc-view jka-compr ol-bibtex bibtex ol-bbdb ol-w3m ol-doi
> org-link-doi org-agenda org-element org-persist org-id org-element-ast
> inline avl-tree org-refile elisp-slime-nav highlight-symbol flycheck
> editorconfig editorconfig-core editorconfig-core-handle
> editorconfig-fnmatch company-oddmuse company-keywords company-etags
> etags fileloop company-gtags company-dabbrev-code company-dabbrev
> company-files company-clang company-capf company-cmake company-semantic
> company-template company-bbdb company indent-bars-ts indent-bars
> face-remap color eglot external-completion jsonrpc flymake diff ert ewoc
> debug backtrace which-func hideshow disp-table cus-edit pp cus-start
> cus-load eww vtable url-queue shr pixel-fill kinsoku url-file svg xml
> dom mm-url gnus nnheader gnus-util mail-utils range wid-edit helm-imenu
> helm-mode helm-misc helm-files image-dired image-dired-tags
> image-dired-external image-dired-util image-mode dired dired-loaddefs
> exif tramp trampver tramp-integration files-x tramp-message tramp-compat
> xdg shell parse-time iso8601 tramp-loaddefs helm-buffers helm-occur
> helm-tags helm-locate helm-grep helm-regexp helm-utils helm-help
> helm-types helm helm-global-bindings helm-easymenu helm-core
> async-bytecomp helm-source helm-multi-match helm-lib async imenu
> ob-plantuml delsel autorevert filenotify org ob ob-tangle ob-ref ob-lob
> ob-table ob-exp org-macro org-src sh-script smie executable ob-comint
> org-pcomplete pcomplete org-list org-footnote org-faces org-entities
> time-date noutline outline ob-emacs-lisp ob-core ob-eval org-cycle
> org-table ol org-fold org-fold-core org-keys oc org-loaddefs thingatpt
> find-func cal-menu calendar cal-loaddefs org-version org-compat org-macs
> yasnippet paredit gnutls network-stream url-cache url-http url-auth
> mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw
> nsm puny epg-config nlinum linum ido-yes-or-no advice ido
> use-package-bind-key bind-key xref server hl-line pixel-scroll cua-base
> compile-eslint compile text-property-search all-the-icons
> all-the-icons-faces data-material data-weathericons data-octicons
> data-fileicons data-faicons data-alltheicons doom-modeline
> doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
> f s dash nerd-icons nerd-icons-faces nerd-icons-data
> nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon
> nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon
> nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon
> nerd-icons-data-pomicon nerd-icons-data-ipsicon dracula-theme
> use-package-ensure use-package-core all-the-icons-autoloads
> bitwarden-autoloads bmx-mode-autoloads cargo-autoloads
> cmake-mode-autoloads format-spec edmacro kmacro combobulate-display
> combobulate-ztree combobulate-envelope combobulate-manipulation python
> project compat comint ansi-osc ring ansi-color combobulate-procedure
> combobulate-navigation combobulate-misc combobulate-setup tempo
> combobulate-interface combobulate-settings diff-mode track-changes
> easy-mmode treesit generator combobulate-rules company-autoloads
> copilot-mode-autoloads crontab-mode-autoloads csv-mode-autoloads
> bui-autoloads dockerfile-mode-autoloads doom-modeline-autoloads
> dracula-theme-autoloads editorconfig-autoloads elisp-slime-nav-autoloads
> expand-region-autoloads flycheck-autoloads helm-autoloads
> helm-core-autoloads async-autoloads highlight-symbol-autoloads
> ido-yes-or-no-autoloads ido-completing-read+-autoloads comp comp-cstr
> cl-extra help-mode warnings comp-run comp-common rx
> indent-bars-autoloads finder-inf lsp-treemacs-autoloads
> lsp-mode-autoloads magit-autoloads pcase git-commit-autoloads
> magit-section-autoloads markdown-mode-autoloads memoize-autoloads
> multiple-cursors-autoloads nerd-icons-autoloads nlinum-autoloads
> paredit-autoloads pkg-info-autoloads epl-autoloads popup-autoloads
> powershell-autoloads quelpa-use-package-autoloads quelpa-autoloads
> shrink-path-autoloads f-autoloads spinner-autoloads swift-mode-autoloads
> transient-autoloads treemacs-autoloads cfrs-autoloads posframe-autoloads
> ht-autoloads hydra-autoloads lv-autoloads pfuture-autoloads
> ace-window-autoloads avy-autoloads s-autoloads dash-autoloads
> undo-tree-autoloads queue-autoloads wfnames-autoloads info
> with-editor-autoloads wsd-mode-autoloads yasnippet-autoloads package
> browse-url url url-proxy url-privacy url-expand url-methods url-history
> url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers
> url-parse auth-source cl-seq eieio eieio-core cl-macs icons
> password-cache json subr-x map byte-opt gv bytecomp byte-compile
> url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
> electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
> term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
> fontset image regexp-opt fringe tabulated-list replace newcomment
> text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
> isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
> font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
> indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook
> jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
> theme-loaddefs faces cus-face macroexp files window text-properties
> overlay sha1 md5 base64 format env code-pages mule custom widget keymap
> hashtable-print-readable backquote threads kqueue cocoa ns lcms2
> multi-tty make-network-process native-compile emacs)
> 
> Memory information:
> ((conses 16 1070864 275416) (symbols 48 56434 4)
>  (strings 32 305701 14281) (string-bytes 1 8652641)
>  (vectors 16 105342) (vector-slots 8 2031248 187347)
>  (floats 8 1339 1738) (intervals 56 11304 5793) (buffers 992 54))
> 
> 
> —
> Kind Regards
> Jostein Kjønigsen
>