Emacs колеру ствараюцца па-рознаму, калі тэрмін «экран-256-каляровыя» і «Xterm-256-каляровыя»

Я выкарыстоўваю Emacs ў тэрмінале і знаходжу, што, калі TERM пераменная асяроддзя змяняецца паміж Экран-256-каляровыя і Xterm - </256-каляровыя код>, то колеру па змаўчанні ўнутры Emacs ўсталёўваюцца па-рознаму.

Проста каб быць ясна, я атрымліваю поўную 256 бітную падтрымку колеру ў абодвух выпадках (працуе з бёбу/tmux і працуе з Gnome Terminal, адпаведна), але Emacs прымяняе розныя колеру, такія, што, калі я гляджу на той жа файл Python, сінтаксіс асвятляюць выкарыстання адрозніваюцца колеру ў кожным. Калі я ўручную змяніць колер, выкарыстоўваючы каляровую тэму, абярыце на тую ж тэму, затым яны выкарыстоўваюць адны і тыя ж колеру. Праблема заключаецца ў тым, што я паняцця не маю, як колеру ўсталёўваюцца для пачатку, і што больш важна, што тыя маюць па-рознаму.

Такія паводзіны застаецца пастаянным, калі я прымушаю бёб выкарыстоўваць TERM = Xterm-256-каляровыя , так што не падобна, гэта праблема з любым з эмулятараў тэрмінала.

Як я магу гарантаваць, што Emacs выкарыстоўвае тыя ж колеру, у кожнай канкрэтнай сітуацыі?

3

2 адказы

<�Р> Праблема ў тым, што я паняцця не маю, як колеру ўсталёўваюцца для пачатку, і што больш важна, што тыя маюць па-рознаму.

Магчыма гэта абмеркаванне на StackOverflow актуальная - некаторыя падрабязныя адказы на тое, што адбываецца.


Мой выпадак быў шлях вызначае колер фону . Ён мае запасны варыянт для XTerm - * , але не экрана - * , і выкарыстоўваючы чорны фон, тады як на самой справе гэта белы (не судзіце).

Абыходны даецца ў звязаным адказ таксама - ўстаноўка правільнага колеру фону ўручную (у параўнанні з кажучы Emacs "ляжыць" шляхам змены TERM ), па ацэнцы (<�код > Alt + X Eval , або Alt +: ) наступнае:

(let ((frame-background-mode 'light)) (frame-set-background-mode nil))
3
дададзена

Я наўрад ці эксперт па гэтым пытанні, але я лічу, што гэта не абавязкова звязана з Emacs, а з магчымасцямі тэрмінала.

Напрыклад, вы можаце ўбачыць розныя магчымасці тэрмінала з infocmp -I -r -T Xterm-256-каляровыя і infocmp -I -r -T экрана </256-каляровыя кода>. Я зрабіў кароткае параўнанне паміж імі і адзначыў, што Xterm-256-каляровыя мае значную колькасць больш магчымасцяў.

Пасля некаторых здагадак, я лічу, што тое, што адбываецца ў тым, што Emacs знаходзіць initc capabilitiy і выкарыстоўвае яго, каб забяспечыць больш адценняў пэўнага колеру для тэмы па змаўчанні. Глядзі, напрыклад, гэтае пытанне:

https://stackoverflow.com/questions/ 2814478/як-можа-я-выхад-разные-адценні-о-зялёна-к-тэрмінал

Я не ўпэўнены, што вы можаце цалкам кантраляваць паводзіны з Emacs, але, як вы адзначылі, вы можаце выкарыстоўваць каляровую тэму, абярыце , каб змяніць паводзіны. Часовае выпраўленне можа быць проста выкарыстоўваць (нагрузкі тэму «тэму» т) у .emacs , каб прымусіць тэму вы мелі на ўвазе.

Іншым варыянтам можа быць, каб ўручную ўсталяваць зменныя асяроддзі Terminfo або Termcap, каб паказаць на файл з адпаведнымі магчымасцямі тэрмінала.

Напрыклад, вы можаце зрабіць:

expабоt TERMINFO="$HOME/.terminfo"
infocmp -I -r -T xterm-256colабо > $TERMINFO

або

expабоt TERMCAP="$HOME/.termcap"
infocmp -C -r -T xterm-256colабо > $TERMCAP

This fабоces Emacs to use the terminal capabilities you had in mind. It may also have other side-effects but I haven't seen any yet.

I don't know why tmux/byobu seems to ignабоe fабоcing TERM as you describe. In tmux however, I know that you can use set-option -g xterm-256colабо to fабоce the terminal to use. I don't know about byobu however.

1
дададзена
Баючыся я не магу даць поўны адказ. У мяне быў (очень) коратка разгледзім ў крыніцы Emacs (ЦСІ/term.c) і гэта, здаецца, рабіць розныя рэчы ў залежнасці ад гэтых здольнасцяў, так што, верагодна, што адбываецца.
дададзена аўтар Nick Retallack, крыніца
А вось гэта цікава пра Xterm - </256-каляровыя кодзе>, якія маюць больш магчымасцяў. Гэта дзіўна, што гэта на самай справе не адпавядае таму, што я бачу колер-накрыж. Калі я пагуляцца з усімі рознымі каляровую палітру ў маім эмулятары тэрміналу (Guake), Emacs працуе з Экран-256-каляровыя рэагуе значна больш дынамічна, чым Emacs працуе пад Xterm-256-каляровыя . Там проста <�я> шлях </я> менш змен у абліччы палітраў ў апошнім выпадку. Настолькі, што палова з іх выглядаюць аднолькава. Так знешні выгляд мудры, ён выглядае амаль як Экран-256-каляровыя дае больш магчымасцяў.
дададзена аўтар Craig B., крыніца
О, гэта было не так бёбу ігнараваў TERM. Я хацеў сказаць, што, калі я паставіў TERM ў Xterm-бёб 256-каляровых сапраўды шанаваць яго, а таксама адлюстроўвае тыя ж колеру, што я бачу для гэтага значэння TERM ў іншых ня экранных як тэрміналах. Што кажа нам, што гэта не бёбу рабіць нешта дзіўнае.
дададзена аўтар Craig B., крыніца
Яшчэ адно дапаўненне: колеру глядзяць сталай па два на часткі тэрмінала, якія не выкарыстоўваюць Emacs. Можа быць, як вы прапануеце, гэта звязана з тым, як Emacs ініцыялізуе колеру, калі тэрмін Xterm-256-каляровыя. Шчыра кажучы, калі ў мяне ёсць дзіўныя налады, падобна, што ён робіць гэта няправільна. Я загрузіў Emacs без майго файла ініцыялізацыі і ён усё яшчэ робіць гэта, хоць.
дададзена аўтар Craig B., крыніца