有没有办法将多个主题应用于Atom编辑器会话,例如每个窗格,每个文件等?

时间:2016-04-29 04:53:36

标签: atom-editor

我想将多个主题应用于原子会话。

以下是使用 theme-humane-syntax 的左侧面板的屏幕打印,以及使用 theme-seti-syntax 的右侧面板:

enter image description here

(请参阅下面的注2 ,了解我是如何做到这一点的)

我希望看到的一些用例:我可能希望一个窗口具有 humane 语法主题,而另一个窗口具有 seti 。或者我可能希望将左侧分割为浅色主题,右侧分割为黑暗主题。更好的是为每个文件分配一个主题,例如 file -a 一个主题, file-b 另一个主题,并让它们在弹出的任何地方保留此主题(例如在另一个窗口中,在分割的另一侧等)

当你有大量打开的文件时,这对区分文件非常有用。

通过包has had this capability很长一段时间Emacs color-theme-buffer-local。在Atom中有类似的东西吗?

从技术角度来看,有没有办法通过开发人员工具手动将.css文件应用到选项卡?毕竟,Atom基本上是一个经过修改的Chromium Web浏览器,Chromium下的每个标签都可以有不同的css,所以这也应该可以在Atom中完成(?)

注1:大约一年前的某人asked a similar question - 如何按文件类型进行主题,答案就是你不能。我担心我的更一般性问题的答案仍然是 NO ,我将不得不调查自己编写的程序包(对不起,我只是在之后找到了这个链接我打开了我的问题)。

注2:我在Atom中看到过这种错误。 Atom中似乎存在一个错误,当您从一个主题切换到另一个主题时,偶尔会有一些选项卡无法正确切换,并且您有混合主题。在缓冲区之间切换时,似乎没有任何性能损失。这是我希望能够以受控方式做到的。

非常感谢。

Atom 1.7.2
Linux Mint 17.3

2 个答案:

答案 0 :(得分:1)

我担心简短答案仍然没有,但理论上可能syntax theme通过使用更具体的CSS选择器为具有不同语法的文件提供非常不同的调色板

因为CSS选择器是基于最具体的选择器而不是特定的选择器而应用的,所以不同语法中的两个符号可以分别设置样式:

.constant.numeric { color: red; }

适用于任何语法中的所有数字常量,但是:

.constant.numeric.coffee { color: blue; }

仅适用于coffescript中的数字常量,即coffee语法,更进一步:

.constant.numeric.coffee.my-extension { color: hotpink; }

仅适用于(可能)扩展CoffeeScript的自定义语法。

据我所知,没有语法主题支持您在屏幕截图中显示的样式的全部内容。当然,屏幕截图的某些区域是UI主题的一部分,而不是语法主题。

答案 1 :(得分:1)

我真的很想念这个功能,所以我(原版海报)反向设计当我有(偶然的)混合主题时发生的事情,我写了一个包,以受控的方式复制它。它被称为multi-theme-applicator,它允许您在文本编辑器级别自定义主题。展望未来,我希望能够扩展这一基本功能,同时允许更高级别的粒度,例如按文件,按文件类型和按窗口。

我现在已经使用它大约一个星期了,它似乎运作良好。它基本上删除附加到有问题的文本编辑器的全局样式节点,加载新主题的.less文件,编译它以生成css,并将带有上述css的新样式节点附加到活动文本编辑器。它并不适用于所有主题,但我说它适用于大约95%的主题。

我确实通过更新原子源代码本身来尝试解决问题。不幸的是,我对代码库不够熟悉,无法从这个角度解决它。也许这个包可以作为一个中间形式,直到有人能够添加能力"官方"。但根据我的经验,大多数人都对单片主题感到满意 - 允许多个主题的emacs包, color-theme-buffer-local ,似乎很少使用。因此可能没有足够的需求使其成为官方功能。

无论如何,如果有人对此套餐感兴趣,请尝试一下,如果您发现任何问题或问题,请通过git repo告诉我。