Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Help moving Colortemplate v3 into production #76

Open
lifepillar opened this issue Jun 1, 2023 · 5 comments
Open

Help moving Colortemplate v3 into production #76

lifepillar opened this issue Jun 1, 2023 · 5 comments

Comments

@lifepillar
Copy link
Owner

lifepillar commented Jun 1, 2023

This is a call for feedback. Colortemplate v3, the new iteration of Colortemplate, is fully functional, but the code should still be considered alpha-level. If you want to try it out, do the following:

  • make sure that you are using Vim 9.0.1558 or later. Using the current Vim master is heartily recommended.
  • Install vim-devel (only the libraries are needed, submodules are not required).
  • Checkout the v3 branch of the Colortemplate repository.
  • Start by building the templates in the templates folder.

The documentation is not up to date yet. For a complete example, take a look at vim-wwdc17-theme. Or load your favorite colorscheme, execute :ColortemplateImport, and start hacking!

Colortemplate's grammar is described in autoload/v3/parser.vim. Colortemplate's data model is described in the wiki.

To provide feedback, please open a new issue in this repo tagging the issue with [v3].

Thanks in advance to all the contributors!

@lifepillar
Copy link
Owner Author

lifepillar commented Jun 1, 2023

@habamax @romainl @neutaaaaan Feeling brave enough to give it a try? 🙂

Among the rest, v3 addresses some of recent Bram's concerns about the generated code (modeline and t_Co in particular).

One thing to note is that the generated highlight group definitions are always complete, with both gui and (c)term attributes. This is by design, and a change compared to v2, but the decision may be reverted. Open for discussion.

@romainl
Copy link

romainl commented Jun 2, 2023

I would like to help but I'm still on 1276. I will make sure to come back as soon as there is a new MacVim release.

@lifepillar
Copy link
Owner Author

Thanks! The current code is “living on the edge” because it relies on very recent fixes for Vim 9 script. That is a bit inconvenient for now. It is perhaps worth adding how I build Vim:

git checkout https://github.com/vim/vim.git
cd vim
env CFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib ./configure --prefix=/opt/local
make -j9 VIMRUNTIMEDIR=`pwd`/runtime

I use MacPorts, and /opt/local is where MacPorts installs stuff. If you are using Homebrew, you may replace /opt/local with /opt/homebrew (I guess). If you are using something else, adjust accordingly.

I usually don't bother running sudo make install, and run Vim directly from the repo: ./src/vim. That's why I specify VIMRUNTIMEDIR.

@lifepillar
Copy link
Owner Author

More examples of colorschemes defined with v3 syntax:

@lifepillar
Copy link
Owner Author

Consider this definition using v3 syntax:

; Default definition
Comment grey white bold,italic

; Definition that applies only in gVim
Comment/gui pink white italic

; Definition that applies to terminals with t_Co >= 256
Comment/256 grey white bold

It seems intuituive enough, right? But:

Question: What would you expect Comment to be when termguicolors is set?

For the record, currently, the above will generate code like this (with white=#ffffff, black=#000000, grey=#444444, and pink=#f27487):

hi Comment guifg=#444444 guibg=#ffffff guisp=NONE gui=bold,italic

if has('gui_running')
  hi Comment guifg=#f27487 guibg=#ffffff guisp=NONE gui=italic
endif

if str2nr(&t_Co) >= 256
  hi Comment ctermfg=238 ctermbg=231 cterm=bold
  finish
endif

So, when termguicolors is set, Comment uses the default colors (gray on white), but with terminal attributes (bold). Does it make sense?

Currently, there is no explicit /termgui variant. Should there be?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants