Skip to content

Commit b4115ff

Browse files
committed
Add Vim theme setter
1 parent 9f4d043 commit b4115ff

File tree

6 files changed

+52
-34
lines changed

6 files changed

+52
-34
lines changed

src/notification_observer.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ class NotificationObserver < NSObject
99
when /light/i
1010
# 🌝 🌞 🌕 🌙 🌜
1111
puts("🌕 #{LIGHT_THEME}")
12-
ThemeController.set_theme(Mode::LIGHT)
12+
ThemeController.set_theme(Mode::Light)
1313
when /dark/i
1414
# 🌚 🌑
1515
puts("🌑 #{DARK_THEME}")
16-
ThemeController.set_theme(Mode::DARK)
16+
ThemeController.set_theme(Mode::Dark)
1717
else
1818
puts("💀 #{current_theme}")
1919
end

src/shell_theme_setter.cr

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
require "./theme_setter"
2+
3+
class ShellThemeSetter < ThemeSetter
4+
@zsh : Process
5+
6+
def initialize
7+
pipe_file = File.open(Path["~/color_pipe.txt"].expand, "wb")
8+
@zsh = Process.new("zsh", ["-s"],
9+
input: Process::Redirect::Pipe,
10+
output: pipe_file,
11+
error: Process::Redirect::Inherit,
12+
)
13+
@zsh.input << %(eval "$($DOTDIR/base16/base16-shell/profile_helper.sh)"\n)
14+
end
15+
16+
def set_theme(mode : Mode)
17+
@zsh.input << "eval base16_#{mode.theme}\n"
18+
end
19+
end

src/theme-watcher.cr

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require "./*"
22

33
ThemeController.register(ShellThemeSetter.new)
4+
ThemeController.register(VimThemeSetter.new)
45

56
handler = NotificationObserver.new
67
dnc = NSDistributedNotificationCenter.default_center

src/theme_controller.cr

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
require "./*"
22

3-
enum Mode
4-
DARK
5-
LIGHT
6-
end
7-
83
DARK_THEME = "gruvbox-dark-hard"
94
LIGHT_THEME = "one-light"
105

6+
enum Mode
7+
Dark
8+
Light
9+
10+
def theme
11+
case self
12+
when .dark? then DARK_THEME
13+
when .light? then LIGHT_THEME
14+
else raise "unknown mode #{self}"
15+
end
16+
end
17+
end
18+
1119
class ThemeController
1220
@@setters : Array(ThemeSetter) = [] of ThemeSetter
1321

@@ -16,11 +24,6 @@ class ThemeController
1624
end
1725

1826
def self.set_theme(mode : Mode)
19-
theme = case mode
20-
when .dark? then DARK_THEME
21-
when .light? then LIGHT_THEME
22-
else raise "unknown mode #{mode}"
23-
end
24-
@@setters.each &.set_theme(theme)
27+
@@setters.each &.set_theme(mode)
2528
end
2629
end

src/theme_setter.cr

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,3 @@
1-
require "./*"
2-
31
abstract class ThemeSetter
4-
abstract def set_theme(theme : String)
5-
end
6-
7-
class ShellThemeSetter < ThemeSetter
8-
@zsh : Process
9-
10-
def initialize
11-
pipe_file = File.open(Path["~/color_pipe.txt"].expand, "wb")
12-
@zsh = Process.new("zsh", ["-s"],
13-
input: Process::Redirect::Pipe,
14-
output: pipe_file,
15-
error: Process::Redirect::Inherit,
16-
)
17-
@zsh.input << %(eval "$($DOTDIR/base16/base16-shell/profile_helper.sh)"\n)
18-
end
19-
20-
def set_theme(theme : String)
21-
@zsh.input << "eval base16_#{theme}\n"
22-
end
2+
abstract def set_theme(mode : Mode)
233
end

src/vim_theme_setter.cr

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require "./theme_setter"
2+
3+
class VimThemeSetter < ThemeSetter
4+
@file : File
5+
6+
def initialize
7+
@file = File.open(Path["~/vim_pipe.txt"].expand, "w")
8+
end
9+
10+
def set_theme(mode : Mode)
11+
@file.puts(mode.to_s.downcase)
12+
@file.puts("base16-#{mode.theme}")
13+
@file.flush
14+
end
15+
end

0 commit comments

Comments
 (0)