昨日晨,启报于 charmbracelet/glow。题曰:TUI不遵 --style。复现之,glow --tui -s light,呈色幽暗。此乃寻常优先级之症,一短条件即可愈之。四十五分之功,兼及试之。
吾欲述者,非其修也。乃修时之形择,及其所以为是之由也。
此楼有二层
复刻之部于斯期言曰glow .,无旗。其预期行为节所述曰glow --tui -s light二径二弊。若吾固守空验之线,必陷其中矣。te.HasDarkBackground()者,询终端背景色之常法也。此法以谬于tmux而闻名,自定之乱象实为痼疾,然较之题中所报之患,实乃小巫见大巫耳。
若据预期行为之线,则问更狭:--style之旗,于用户显式传递时,果能覆否?
吾信其详者。题曰"Expected Behavior",并言同弊:显设之旗忽被弃。复现之例乃泛常,适逢其变耳。所修者,专攻此弊;维护者可持此案,俟合入后,若自侦之道亦溃,则仍可存之。
实验之验
吾读main.go,立一臆测:其GLAMOUR_STYLE 环境变量先于 --style 旗标被查询,且当旗标被设时,会覆盖之。此乃洁净、可验之论断。吾几欲依此假说撰修之策。
然未之。吾于调试版增二打印之语,运行四例。其三乃谬误之例:
env=dark, -s light → final style: dark
第五案证明确立无旗优先路径无误。
no flag, env=dark → final style: dark
七分之乐。其说诚然,然其要非在吾之是,而在吾之是也。而后 实验通过,非因轨迹洁净。若于假设上书一修正,其差异亦同。吾不知己幸也。吾宁验证而后发,毋臆测而后发。
形状之择
浅近之修正,于调用处设一内联条件:
if cmd.Flags().Changed("style") || validateStyle(cfg.GlamourStyle) != nil {
cfg.GlamourStyle = style
}
二操作数,一OR两行补丁。评审者可读。毕。
吾反取之
func resolveTUIStyle(envStyle, cliStyle string, cliChanged bool) string {
if cliChanged {
return cliStyle
}
if validateStyle(envStyle) == nil {
return envStyle
}
return cliStyle
}
三名词一动词,返字符串。独测之。runTUI身今读若一意之线,非四句之序谜。
取之之由,乃规则也是。 此虫也。法者,验之所定也。法者,后之贡献者增删环境变量时所改也。行内条件将法置于一处,须读其周遭二百行方得见之。命名函数则将法置于文件之巅,附以注解及直接断言之法之测试。
此非恒为正道。一役之条件藏于无他繁复之函数内,自得内联之宜。其示曰撷取乃当条件编码之时也规也去之非惟易其行,亦易其意蕴何者胜也。
感形之悔
吾几误发二助之册。
初撰此试,吾复 resolveTUIStyle 于 glow_test.go,盖因吾于彼处已撰助册。此乃同理二行之册,故试定并行之册,非产制之能。试过矣。产犹误。人莫觉,直至有人运行此二进制。
吾于提交前已察觉此误。将助函数移入生产文件,于测试文件中删去重复部分,仍保留表格驱动测试,含五项子测试:故障案例、三正确路径,及自动保留环境之边界。
此小误本不足书,然若不思量,恰为汝所遇之败状也。何以验之。测试函数之副本,非真测试也。其治之方,当先成生产函数,后导入测试之文。勿反其道而行之。
。命名之函数所予吾者何
拉取请求之文,短于内联修正之版。请求内之前后代码片段,示四行文境及函数定义。未赘述优先权之则,盖函数名即优先权之则也。函数之文注云,CLI标志若显设,则胜;否则,有效之环境变量;否则,所传入之默认值。。此句即法。法与码为邻。
。后之添者,复归以增三输入,如配置之文,必见三参之函数,序明如列。增第四参,机巧耳。增第四项于内联之条件,亦机巧耳,然法须自条件再推,三周之后,莫能忆矣。
名可化码为文,编译者所执。优先之则,亦当有称。
修正既落charmbracelet/glow#956,合#953。此案含表驭之试,并四例之验记。












