Neovim 0.11.0 displays strangely glitched artwork and odd error messages compared to 0.10.4 Reproducible: Always Steps to Reproduce: 1. Update to 0.11.0 2. Install LazyVim 3. Launch Neovim Actual Results: Start screen artwork is garbled and Snacks.nvim error messages are shown like vim/_options.lua:0: E1512: Wrong character width for field "diff" Expected Results: Started normally like 0.10.4 Portage 3.0.67 (python 3.12.9-final-0, default/linux/amd64/23.0/desktop/gnome/systemd, gcc-14, glibc-2.41-r1, 6.13.9-gentoo-dist-hardened x86_64) ================================================================= System uname: Linux-6.13.9-gentoo-dist-hardened-x86_64-AMD_Ryzen_5_5600G_with_Radeon_Graphics-with-glibc2.41 KiB Mem: 45100752 total, 8673720 free KiB Swap: 25165820 total, 25148668 free Timestamp of repository gentoo: Sun, 30 Mar 2025 23:07:36 +0000 Head commit of repository gentoo: fc4d81dd3ec4c087b5655be1015040c3d02120bd Timestamp of repository guru: Sat, 29 Mar 2025 16:05:20 +0000 Head commit of repository guru: 683c29cbc9752c3ad628318f21458c9e84157b59 Timestamp of repository loatchi: Wed, 02 Oct 2024 09:19:11 +0000 Head commit of repository loatchi: 46b9784f9a04e5334a083bb6a853c68e214c1118 Head commit of repository xandris: 8644f53794670d2349955863e4b0aa2870652bdd Head commit of repository steam-overlay: d93137ae2575727f9df5d43ce6e0368d44b6c0e7 sh bash 5.2_p37 ld GNU ld (Gentoo 2.44 p1) 2.44.0 distcc 3.4 x86_64-pc-linux-gnu [enabled] ccache version 4.11.2 [enabled] app-misc/pax-utils: 1.3.8::gentoo app-shells/bash: 5.2_p37::gentoo dev-build/autoconf: 2.13-r8::gentoo, 2.72-r1::gentoo dev-build/automake: 1.17-r2::gentoo dev-build/cmake: 3.31.6-r1::gentoo dev-build/libtool: 2.5.4::gentoo dev-build/make: 4.4.1-r100::gentoo dev-build/meson: 1.7.0::gentoo dev-java/java-config: 2.3.4::gentoo dev-lang/perl: 5.40.1::gentoo dev-lang/python: 3.12.9::gentoo, 3.13.2::gentoo, 3.13.2-r100::gentoo dev-lang/rust-bin: 1.81.0-r103::gentoo, 1.85.1::gentoo dev-util/ccache: 4.11.2::gentoo llvm-core/clang: 19.1.7::gentoo, 20.1.1::gentoo llvm-core/lld: 20.1.1::gentoo llvm-core/llvm: 18.1.8-r6::gentoo, 19.1.7::gentoo, 20.1.1::gentoo sys-apps/baselayout: 2.17::gentoo sys-apps/sandbox: 2.46::gentoo sys-apps/systemd: 257.3::gentoo sys-devel/binutils: 2.44::gentoo sys-devel/binutils-config: 5.5.2::gentoo sys-devel/gcc: 14.2.1_p20250301::gentoo sys-devel/gcc-config: 2.12.1::gentoo sys-kernel/linux-headers: 6.13::gentoo (virtual/os-headers) sys-libs/glibc: 2.41-r1::gentoo Repositories: gentoo location: /var/db/repos/gentoo sync-type: git sync-uri: https://github.com/gentoo-mirror/gentoo.git sync-user: portage:portage priority: -1000 volatile: False sync-git-verify-commit-signature: true guru location: /var/db/repos/guru sync-type: git sync-uri: https://github.com/gentoo-mirror/guru.git masters: gentoo volatile: False loatchi location: /var/db/repos/loatchi sync-type: git sync-uri: https://github.com/gentoo-mirror/loatchi.git masters: gentoo volatile: False x-portage location: /usr/local/portage masters: gentoo priority: 0 volatile: True xandris location: /var/db/repos/xandris sync-type: git sync-uri: https://github.com/xandris/overlay.git sync-user: portage:portage masters: gentoo volatile: False steam-overlay location: /var/db/repos/steam sync-type: git sync-uri: https://github.com/anyc/steam-overlay.git masters: gentoo priority: 50 volatile: False Binary Repositories: binhost priority: 9999 sync-uri: https://gentoo.osuosl.org/releases/amd64/binpackages/23.0/x86-64-v3 ACCEPT_KEYWORDS="amd64 ~amd64" ACCEPT_LICENSE="*" AR="x86_64-pc-linux-gnu-gcc-ar" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe -march=znver3 -mtune=znver3 -mshstk -O3 -fgcse-sm -fgcse-las -fvariable-expansion-in-unroller -Wformat -Wformat-security " CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /var/bind" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d" CXXFLAGS="-O2 -pipe -march=znver3 -mtune=znver3 -mshstk -O3 -fgcse-sm -fgcse-las -fvariable-expansion-in-unroller -Wformat -Wformat-security " DISTDIR="/var/portage/distfiles" EMERGE_DEFAULT_OPTS=" --usepkg-exclude 'acct-user/*' --jobs=3 --load-average=8.1 --keep-going --quiet-fail y --quiet-repo-display " ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME" FCFLAGS="-O2 -pipe" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance binpkg-request-signature buildpkg-live ccache clean-logs compressdebug config-protect-if-modified distcc distlocks ebuild-locks fixlafiles getbinpkg ipc-sandbox merge-sync merge-wait multilib-strict news parallel-fetch parallel-install pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="https://gentoo.osuosl.org/ https://mirror.leaseweb.com/gentoo/ https://mirrors.mit.edu/gentoo-distfiles/" LANG="en_US.UTF-8" LDFLAGS="-O2 -pipe -march=znver3 -mtune=znver3 -mshstk -O3 -fgcse-sm -fgcse-las -fvariable-expansion-in-unroller -Wformat -Wformat-security -Wl,-z,relro -Wl,-O1,--sort-common,--hash-style=gnu,--as-needed" LEX="flex" LINGUAS="en ja" MAKEOPTS="-j20 -l10" NM="x86_64-pc-linux-gnu-gcc-nm" PKGDIR="/var/cache/binpkgs" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/var/tmp" RANLIB="x86_64-pc-linux-gnu-gcc-ranlib" SHELL="/bin/zsh" USE="X a52 aac acl acpi alsa amd64 ao aom archive avif bluetooth branding bzip2 cairo cdda cddb cdr cet cjk colord crypt cups curl dav1d dbus dc1394 dri dts dvd dvdr eds encode evo exif faad flac flatpak fuse gdbm gdk-pixbuf gif gnome gnome-keyring gnome-online-accounts gnome-shell gphoto2 gpm gstreamer gtk gui heif iconv icu ieee1394 introspection ipv6 jpeg jpeg2k jpegxl keyring kf6compat lcms libnotify libsamplerate libtirpc libv4l lto lzma mad matroska mikmod mmap mng modplug mp3 mp4 mpeg multilib musepack nautilus ncurses nls ogg opengl openmp opus pam pango pcre pdf pgo pipewire png policykit postproc ppds pulseaudio qml qt5 qt6 rav1e raw readline ruby_single_target_ruby31 samba sdl seccomp slang smartcard sndfile sound speex spell ssl startup-notification svg systemd test-rust theora threads tiff tpm tracker truetype udev udisks uefi unicode upnp upower usb v4l vaapi vdpau vorbis vpx vulkan wayland webp winbind x264 xattr xcb xcomposite xft xinerama xml xmp xv xvid xvmc zlib" ABI_X86="64" ADA_TARGET="gcc_14" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sha sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3" CURL_SSL="openssl" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GRUB_PLATFORMS="pc efi-64" GUILE_SINGLE_TARGET="3-0" GUILE_TARGETS="3-0" INPUT_DEVICES="evdev" KERNEL="linux" L10N="en ja" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LLVM_TARGETS="BPF NVPTX WebAssembly ARM" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1 lua5_3" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres16" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" RUBY_TARGETS="ruby32 ruby31" VIDEO_CARDS="nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account" Unset: ADDR2LINE, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, MAKE, MAKEFLAGS, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
Created attachment 923307 [details] glitchy start screen
after some troubleshooting it turns out to be caused by USE=cjk with dev-libs/libutf8proc but i don't know why
I'm also facing this issue which was indeed fixed by emerging `dev-libs/libutf8proc` with USE="-cjk". It's related to a fix in libutf8proc here: https://github.com/JuliaStrings/utf8proc/pull/270 We might need to raise this issue in the official NeoVim GitHub, or on utf8proc's GitHub.
Akinori, I saw this in the libutf8proc ebuild > if use cjk; then > einfo "Modifying East Asian Ambiguous (A) as wide ..." > cp "${WORKDIR}"/${EAW} ${PN#lib}_data.c || die > > sed -i \ > -e "/return .*_CATEGORY_CO/s/ ||.*/;/" \ > -e "/if (ambiguous/,/}/d" \ > -e "/0xe000/d" \ > test/charwidth.c > fi I don't have much idea about the utf8proc code base. But I saw https://github.com/JuliaStrings/utf8proc/commit/3de4596fbe28956855df2ecb3c11c0bbc3535838 was modifying utf8proc_data.c. Could it be the case that we might not need that patch anymore or the patches need a modification (since I saw that the cjk patches are coming from https://dev.gentoo.org/~hattya/distfiles).
(In reply to Brahmajit Das from comment #4) I think we might not need the cjk modifications do utf8proc_data.c and charwidth.c anymore. The difference between modified utf8proc_data.c and current upstream is > diff --git a/libutf8proc-EastAsianWidth-16.0.0 b/utf8proc_data.c > index a036b7f..39b7b77 100644 > --- a/libutf8proc-EastAsianWidth-16.0.0 > +++ b/utf8proc_data.c > @@ -8059,36 +8059,36 @@ static const utf8proc_property_t utf8proc_properties[] = { > {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, UINT16_MAX, UINT16_MAX, 51, UINT16_MAX, 51, 371, 6, false, false, false, false, false, 1, false, 0, UTF8PROC_BOUNDCLASS_OTHER, UTF8PROC_INDIC_CONJUNCT_BREAK_NONE}, > {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 1023, 0, false, false, false, false, false, 1, false, 0, UTF8PROC_BOUNDCLASS_OTHER, UTF8PROC_INDIC_CONJUNCT_BREAK_NONE}, > {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_NOBREAK, 52, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 1023, 0, false, false, false, false, false, 1, false, 0, UTF8PROC_BOUNDCLASS_OTHER, UTF8PROC_INDIC_CONJUNCT_BREAK_NONE}, > - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, 0, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 1023, 0, false, false, false, false, false, 2, true, 0, UTF8PROC_BOUNDCLASS_OTHER, UTF8PROC_INDIC_CONJUNCT_BREAK_NONE}, > - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, 0, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 1023, 0, false, false, false, false, false, 2, true, 0, UTF8PROC_BOUNDCLASS_OTHER, UTF8PROC_INDIC_CONJUNCT_BREAK_NONE}, > + {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, 0, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 1023, 0, false, false, false, false, false, 1, true, 0, UTF8PROC_BOUNDCLASS_OTHER, UTF8PROC_INDIC_CONJUNCT_BREAK_NONE}, > + {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, 0, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 1023, 0, false, false, false, false, false, 1, true, 0, UTF8PROC_BOUNDCLASS_OTHER, UTF8PROC_INDIC_CONJUNCT_BREAK_NONE}, > ... Akinori, let us know what would you like this to be handled. If you want I can open a PR and/or a new bug for dev-libs/libutf8proc
The patch does not work as expected for software that support newly added ambiguous_width property or utf8proc_charwidth_ambiguous function. It seems that Neovim 0.11.0 supports this feature: - https://github.com/neovim/neovim/blob/v0.11.0/src/nvim/mbyte.c#L474-L487 - https://github.com/neovim/neovim/blob/v0.11.0/src/nvim/mbyte.c#L1355-L1358 so that you can add `dev-libs/libutf8proc[-cjk]` in *DEPEND.
(In reply to Akinori Hattori from comment #6) > so that you can add `dev-libs/libutf8proc[-cjk]` in *DEPEND. Thanks a lot
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=782858d054b00b6bfa1d42e46790afc1fb497326 commit 782858d054b00b6bfa1d42e46790afc1fb497326 Author: Brahmajit Das <listout@listout.xyz> AuthorDate: 2025-04-13 15:42:24 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2025-04-13 20:59:07 +0000 app-editors/neovim: Fix garbled display, error messages from plugins Make neovim >= 0.11.0 dependen on dev-libs/libutf8proc[-cjk] Neovim uses the newly added ambiguous_width property[0] and utf8proc_charwidth_ambiguous[1] function from dev-libs/libutf8proc. This conflicts with the current modifications for cjk we have in ::gentoo for dev-libs/libutf8proc resulting in the garbled display and error messages from plugins. [0]: https://github.com/neovim/neovim/blob/v0.11.0/src/nvim/mbyte.c#L474-L487 [1]: https://github.com/neovim/neovim/blob/v0.11.0/src/nvim/mbyte.c#L1355-L1358 Also update live ebuild to match most recent ebuild i.e. 0.11.0 Closes: https://bugs.gentoo.org/952944 Signed-off-by: Brahmajit Das <listout@listout.xyz> Closes: https://github.com/gentoo/gentoo/pull/41576 Signed-off-by: Sam James <sam@gentoo.org> app-editors/neovim/neovim-0.11.0-r1.ebuild | 127 +++++++++++++++++++++++++++++ app-editors/neovim/neovim-9999.ebuild | 20 ++--- 2 files changed, 137 insertions(+), 10 deletions(-)