Skip to content

Commit

Permalink
vim-airline: fix dummy faces in generated theme files
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed May 15, 2024
1 parent a226fbe commit 59787ee
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 13 deletions.
2 changes: 1 addition & 1 deletion contrib
Submodule contrib updated 229 files
2 changes: 2 additions & 0 deletions docs/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@
- contrib/fzf-git: fix unsupported command modes (reported by dgudim) `#D2083` ba2b8865
- contrib/bash-preexec: support the latest version of `bash-preexec` (reported by mcarans) `#D2128` 50af4d9c
- contrib/config/execmark: output error status through `ble/canvas/trace` `#D2136` 64cdcd01
- contrib/airline: remove dummy faces (reported by alexalekseyenko) `#D2201` xxxxxxxx
- contrib/airline: update themes `#D2201` xxxxxxxx

## Documentation

Expand Down
24 changes: 24 additions & 0 deletions make/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,27 @@ src/canvas.GraphemeClusterBreak.sh
lib/test-canvas.GraphemeClusterTest.sh

```

## Update airline themes in the contrib repository

First install `vim-airline` and `vim-airline-themes` using `vim-plug`. Then
create a directory at `out/data/airline`:

```bash
mkdir -p out/data/airline
```


Open Vim and run the following commands:

```vim
:source make/vim-airline.DumpAirlineThemes.vim
:call DumpAirlineThemeAll()
```

This can take time. Finally, you can run the following command in a ble.sh
session.

```bash
(source make/vim-airline.ConvertAirlineThemes.sh)
```
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,57 @@ if [[ ! ${BLE_VERSION-} ]]; then
return 1 || exit 1
fi

year=$(date +%Y)
#_ble_vim_airline_dumpdir=tmp/airline
_ble_vim_airline_vimruntime=$(builtin printf '%s\n' /usr/share/vim/vim[0-9]* | tail -n 1)
_ble_vim_airline_dumpdir=out/data/airline
_ble_vim_airline_themes_repo=~/.vim/plugged/vim-airline-themes
_ble_vim_airline_themes_year=2021

declare -A name2color=([none]=-1 [lightmagenta]='#ffe0ff')

## @fn ble/lib/vim-airline/convert-theme/load-vim-rgb
## This attempts to read $VIMRUNTIME/rgb.txt.
##
## @remarks $VIMRUNTIME/rgb.txt seems to have been deprecated. ":help
## rgb.txt" shows the following descriptions:
##
## > Additionally, colors defined by a default color list can be used. For
## > more info see :colorscheme. These colors used to be defined in
## > $VIMRUNTIME/rgb.txt, now they are in v:colornames which is initialized
## > from $VIMRUNTIME/colors/lists/default.vim.
function ble/lib/vim-airline/convert-theme/load-vim-rgb {
local R G B name ret
local path_rgb_txt=$_ble_vim_airline_vimruntime/rgb.txt
[[ -s $path_rgb_txt ]] || return 1
local R G B name ret IFS=$' \t\n'
while builtin read -r R G B name || [[ $name ]]; do
name=${name,,}
name=${name//["$_ble_term_IFS"]}
[[ $name ]] || continue
printf -v ret '#%02x%02x%02x' "$R" "$G" "$B"
name2color[$name]=$ret
done < /usr/share/vim/vim82/rgb.txt
done < "$path_rgb_txt"
}
ble/lib/vim-airline/convert-theme/load-vim-rgb

## @fn ble/lib/vim-airline/convert-theme/load-vim-default-colors
## This attempts to read $VIMRUNTIME/colors/lists/default.vim.
function ble/lib/vim-airline/convert-theme/load-vim-default-colors {
local path_default_vim=$_ble_vim_airline_vimruntime/colors/lists/default.vim
[[ -s $path_default_vim ]] || return 1
local R G B name color IFS=$' \t\n'
while builtin read -r color name || [[ $name ]]; do
name=${name,,}
name=${name//["$_ble_term_IFS"]}
[[ $name ]] || continue
name2color[$name]=$color
done < <(
ble/bin/sed -n '
s/^.*'\''\([^'\''"]\{1,\}\)'\'': '\''\(#[0-9a-fA-F]\{6\}\)'\''.*$/\2 \1/p
' "$path_default_vim"
)
}

ble/lib/vim-airline/convert-theme/load-vim-rgb ||
ble/lib/vim-airline/convert-theme/load-vim-default-colors

function ble/lib/vim-airline/convert-theme/decode-color {
local cspec=${1,,} ret
Expand Down Expand Up @@ -85,13 +122,14 @@ function ble/lib/vim-airline/convert-theme/convert {

local -A fg256=() bg256=() fg24=() bg24=()

# default faces
# These are the dummy faces used to compare the colors with the default
# values of the respective faces (without "_default").
local f
f=vim_airline_error_default fg256[$f]=16 bg256[$f]=88 fg24[$f]='#000000' bg24[$f]='#990000'
f=vim_airline_term_default fg256[$f]=158 bg256[$f]=234 fg24[$f]='#9cffd3' bg24[$f]='#202020'
f=vim_airline_warning_default fg256[$f]=16 bg256[$f]=166 fg24[$f]='#000000' bg24[$f]='#df5f00'

source "tmp/airline/$theme.bash"
source "$_ble_vim_airline_dumpdir/$theme.bash"

[[ -d contrib/airline ]] || mkdir -p contrib/airline
exec 5> "contrib/airline/$theme.bash"
Expand All @@ -109,9 +147,9 @@ function ble/lib/vim-airline/convert-theme/convert {
else
ble/util/print "# From github:vim-airline/vim-airline-themes/autoload/airline/themes/$theme.vim"
ble/util/print "# The MIT License (MIT)"
ble/util/print "# Copyright (C) 2013-$year Bailey Ling & Contributors."
ble/util/print "# Copyright (C) 2013-$_ble_vim_airline_themes_year Bailey Ling & Contributors."
ble/util/print "#"
ble/bin/sed '/^"/!Q;s//#/' ~/.vim/plugged/vim-airline-themes/autoload/airline/themes/"$theme".vim
ble/bin/sed '/^"/!Q;s//#/' "$_ble_vim_airline_themes_repo"/autoload/airline/themes/"$theme".vim
fi
ble/util/print
ble/util/print 'ble-import lib/vim-airline'
Expand All @@ -132,6 +170,7 @@ function ble/lib/vim-airline/convert-theme/convert {
(*_normal)
face2=${face%_normal}
ble/lib/vim-airline/convert-theme/eq "$face" "${face%_*}_default" && continue ;;
(*_default) continue ;; # skip dummy faces
(*_*) ble/lib/vim-airline/convert-theme/eq "$face" "${face%_*}_normal" && continue ;;
(*) continue ;;
esac
Expand All @@ -145,12 +184,11 @@ function ble/lib/vim-airline/convert-theme/convert {

function ble/lib/vim-airline/convert-theme/convert-all {
local file theme
for file in tmp/airline/*.bash; do
for file in "$_ble_vim_airline_dumpdir"/*.bash; do
theme=${file##*/}
theme=${theme%.bash}
#ble/util/print "Converting $theme..."
ble/lib/vim-airline/convert-theme/convert "$theme"
done
}
#ble/lib/vim-airline/convert-theme/convert-all
ble/lib/vim-airline/convert-theme/convert dark
ble/lib/vim-airline/convert-theme/convert-all
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ function DumpAirlineTheme(name)
call add(lines, 'face ' . mode . " " . face . " '" . fg . "' '" . bg . "' '" . cfg . "' '" . cbg . "'")
endfor
endfor
call writefile(lines, "tmp/airline/" . a:name . ".bash")
call writefile(lines, "out/data/airline/" . a:name . ".bash")
endfunction

function DumpAirlineThemeAll()
Expand Down
58 changes: 58 additions & 0 deletions note.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7386,6 +7386,64 @@ bash_tips
Done (実装ログ)
-------------------------------------------------------------------------------

2024-05-15

* airline: 複数の theme で初期化時に存在しない face を設定しようとしてエラーが出る (reported by alexalekseyenko) [#D2201]
https://github.com/akinomyoga/blesh-contrib/issues/19

ref #D1589

今まで気づいていなかったのが不思議だ。持っている複数の theme で試したけれど
も、全部は試していなかったという事。

* _default という face を参照している様だが、これは vim-airline.sh では定義
されていない。contrib/theme/*.bash の生成スクリプトを見ると *_default と
いう face を辞書に入れている様だが、どうもこれは _default のついていない
名前の face の既定値を入れているだけの様だ。これを face を比較する為に同
じ辞書に入れているだけだった。

この比較用のダミーの face は除外するべき。本来は (*) continue ;; で除外す
るつもりだったのかもしれないが、その前の (*_*) に結局引っかかるので意味が
ないという事だろう。

* 改めて走らせようと思ったらエラーが出る。rgb.txt が存在しない。これは色名
を #rrggbb 値に変換する為のテーブルとして使っている様だ。:help rgb.txt を
見ると、色名は $VIMRUNTIME/colors/lists/default.vim に移行した様だ。その
ファイルを読み取る様に変更することにした。

色の詳細な値がまた変わったようだ。16 が 235 などになっている。然し、16 も
結局 6x6x6 cube の色であって、terminal 16 colors の一部ではないのでこの変
化は問題にはならないだろう。

* 他に色々ハードコードされていたパスや年などについて、ファイルの先頭で定義
できる様にした。

* done: 生成用スクリプトは移動するべき。使い方も記述する。

というか使い方について確認する必要がある。特に .vim の法の使い方が分から
ない。

改めてデータを生成した所、biogoo theme で色が特定できなくなっている。vim
のバージョンの相性もあるかもしれないので、昔に生成した dump データをやは
り使う事にした。

* done: 最新版に更新する。前後の commit を記録する。

* vim-airline-themes 97cf3e6 -> a9aa25c
以下の themes が更新されている: base16 blood_red (new) cyberpunk (new)
jellybeans light onedark selenized supernova

* vim-airline be5bda1 -> ff0f9a4
唯一の theme "dark" も更新されている。

* landscape dcdd360 変更なし

ライセンスも更新する。と思ったがライセンスファイルは全く更新されていない
様だ。なので更新しない事にする。

再生成してみたがやはり biogoo は色々と設定が消滅している様だ。新しく追加
された項目はそのままにして、既存の項目はそのままにする事にした。

2024-04-28

* keymap/vi (relative-line.impl): fix uninitialized nmove [#D2203]
Expand Down

0 comments on commit 59787ee

Please sign in to comment.