Irssi: 文本从ARM Mac的右侧开始

创建于 2020-12-08  ·  19评论  ·  资料来源: irssi/irssi

  1. 我已经使用Homebrew在Arm Mac上安装了Irssi
  2. 当我启动Irssi并开始输入文字时,文字从最右边开始,然后在新行继续
  3. 由于这个错误,我看不到我输入的内容
  4. 滚动其他各种问题

Screenshot 2020-12-08 at 22 18 43

help wanted

最有用的评论

这个补丁有什么作用吗

diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c
index d2273d71..be59b0a7 100644
--- a/src/fe-text/terminfo-core.c
+++ b/src/fe-text/terminfo-core.c
@@ -14,6 +14,8 @@ inline static int term_putchar(int c)

 /* Don't bother including curses.h because of these -
    they might not even be defined there */
+#include <ncursesw/term.h>
+#if 0
 char *tparm();
 int tputs();

@@ -21,6 +23,7 @@ int setupterm();
 char *tigetstr();
 int tigetnum();
 int tigetflag();
+#endif
 #define term_getstr(x, buffer) tigetstr(x.ti_name)
 #define term_getnum(x) tigetnum(x.ti_name);
 #define term_getflag(x) tigetflag(x.ti_name);

所有19条评论

检查您的$ TERM

我只是使用默认的Apple终端

那什么也没说。 请确保$ TERM对于您正在使用的终端正确无误

我不太确定你的意思

我得到:xterm-256color

好吧,这不是显而易见的事情,所以我真的没有主意。 问家酿的人,我猜呢? 他们弄乱了terminfo或其他信息。

查看您是否在其他终端(例如iTerm2)上获得相同的行为,该终端是大多数irssi用户的“首选”终端。 至少那是每个人所说的,但是对此没有任何意见:)

跨多个终端(Terminal.app如OP所述,Rosetta'd Alacritty)也存在相同问题。

Homebrew只是在ARM上以irssi运行./configure; make; make install (因为不存在ARM Homebrew对二进制瓶的支持)-我将尝试在单独的安装中进行确认,但似乎有可能甚至可能与自制软件无关。

但似乎有可能甚至可能与自制软件无关。

我将自制软件视为构建系统和发行版。 他们负责确保其内部版本与所依赖的库良好交互。 此外,他们比我们更了解自己的平台。 并不是说这是他们的错,但他们比我们更有可能在这个问题上提供帮助。

我可以确认此处手工从源代码发行版进行编译的步骤会在苹果芯片上构建irssi ,该代码在iTerm2和Terminal.app中正常运行

这一定是洪伯鲁正在做的事情。

大家好,我是手动编译irssi的,但仍然会导致irssi右对齐。 想知道你们如何解决这个问题?

尝试通过Homebrew社区调试此问题(请参阅https://github.com/Homebrew/homebrew-core/issues/68856),但他们认为这是上游问题。

@ 676339784我可以想到的唯一其他功能是iTerm2(它具有ARM构建吗?)

我可以确认我确实有同样的问题。 我忘了报告此事,但是当我确认它对我自己有用时,我无意中将SSH SSH到了我的TMUX窗格中的服务器中,而不是我的macbook中。 内置的Terminal.app和iTerm2(确实具有ARM版本)在其中测试了各种$ TERM设置的情况下均会发生此问题。

@ WA9ACE是的,我和您一样遇到同样的问题

我不太擅长C语言,但今晚我将尝试逐步解决它,以查看是否可以确定PR的问题。

尝试研究一下,只写下一些可能对某人在挖掘中也有用的东西。
我不是用自制酿造的。 取而代之的是从源头开始构建,以排除任何酿造怪癖和其他问题; 此外,这几乎不是酿造过错,所以我暂时不在讨论之列。

Bug完全在iterm2和Terminal.app上复制; 这不是终端故障,因为x86_64和aarch64 Linux上的irssi都可以通过ssh很好地渲染它们。

从将ncurses添加到PKG_CONFIG_PATH的源构建irssi显然不能解决问题,它仍然链接到系统libncurses。 可能这就是为什么https://github.com/Homebrew/homebrew-core/issues/68856#issuecomment -759016854这个试用版没有任何改变的原因。

尽管覆盖CFLAGS和LDFLAGS会产生一些有趣的结果-irssi现在显然是通过自制程序安装的libncurses-6.2构建的,并且对此进行了链接,并且在启动时完全破坏了iterm2。 整个终端仿真器及其所有应用程序都会无限期泄漏并冻结。

“股票” Terminal.app设法承受新的二进制文件,但产生黑屏。

我将尝试对其进行调试/检查ncurses,但也许所提供的信息将对某些知识渊博的人有所帮助。

otool -L irssi

src/fe-text/irssi:
    /System/Library/Perl/5.28/darwin-thread-multi-2level/CORE/libperl.dylib (compatibility version 5.28.0, current version 5.28.2)
    /opt/homebrew/opt/glib/lib/libgmodule-2.0.0.dylib (compatibility version 6601.0.0, current version 6601.4.0)
    /opt/homebrew/opt/glib/lib/libglib-2.0.0.dylib (compatibility version 6601.0.0, current version 6601.4.0)
    /opt/homebrew/opt/gettext/lib/libintl.8.dylib (compatibility version 11.0.0, current version 11.0.0)
    /opt/homebrew/opt/[email protected]/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
    /opt/homebrew/opt/[email protected]/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
    /opt/homebrew/opt/ncurses/lib/libncursesw.6.dylib (compatibility version 6.0.0, current version 6.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)

我尝试在其中运行的带有irssi -!/help命令的终端应用程序的屏幕截图。
image

这个补丁有什么作用吗

diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c
index d2273d71..be59b0a7 100644
--- a/src/fe-text/terminfo-core.c
+++ b/src/fe-text/terminfo-core.c
@@ -14,6 +14,8 @@ inline static int term_putchar(int c)

 /* Don't bother including curses.h because of these -
    they might not even be defined there */
+#include <ncursesw/term.h>
+#if 0
 char *tparm();
 int tputs();

@@ -21,6 +23,7 @@ int setupterm();
 char *tigetstr();
 int tigetnum();
 int tigetflag();
+#endif
 #define term_getstr(x, buffer) tigetstr(x.ti_name)
 #define term_getnum(x) tigetnum(x.ti_name);
 #define term_getflag(x) tigetflag(x.ti_name);

是的,此补丁程序以及使用自制软件的ncurses进行构建似乎都可以修复它。

使用了明智的@ ailin-nemui洞察力,并且进行了以下更改,该修复程序也可以与“股票” macos ncurses一起使用(自制的ncurses也可以使用):

diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c
index d2273d71..0cff18de 100644
--- a/src/fe-text/terminfo-core.c
+++ b/src/fe-text/terminfo-core.c
@@ -14,13 +14,13 @@ inline static int term_putchar(int c)

 /* Don't bother including curses.h because of these -
    they might not even be defined there */
-char *tparm();
-int tputs();
+char *tparm(const char *str, ...);
+int tputs(const char *str, int affcnt, int (*putc)(int));
+int setupterm(char *term, int fildes, int *errret);
+char *tigetstr(const char *capname);
+int tigetnum(const char *capname);
+int tigetflag(const char *capname);

-int setupterm();
-char *tigetstr();
-int tigetnum();
-int tigetflag();
 #define term_getstr(x, buffer) tigetstr(x.ti_name)
 #define term_getnum(x) tigetnum(x.ti_name);
 #define term_getflag(x) tigetflag(x.ti_name);
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ahihi picture ahihi  ·  9评论

ailin-nemui picture ailin-nemui  ·  17评论

pyksy picture pyksy  ·  6评论

redconnection picture redconnection  ·  19评论

ido picture ido  ·  13评论