summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-03-05 23:42:08 -0700
committerJosh Rahm <joshuarahm@gmail.com>2024-03-05 23:42:08 -0700
commitf54c38f585536cbe88cdfddf9a699bf8ca909c6c (patch)
tree4f899701f3939796faa33502fa86380a5d0d9b56
downloadnvim-color-picker-f54c38f585536cbe88cdfddf9a699bf8ca909c6c.tar.gz
nvim-color-picker-f54c38f585536cbe88cdfddf9a699bf8ca909c6c.tar.bz2
nvim-color-picker-f54c38f585536cbe88cdfddf9a699bf8ca909c6c.zip
Initial commit for nvim color picker.
This is a very simplem plugin that lets the user set the color of a highlight group using a GUI colorpicker. This can be helpful for creating colorschemes.
-rw-r--r--plugin/colorpicker.vim18
-rwxr-xr-xplugin/pickcolors.py37
2 files changed, 55 insertions, 0 deletions
diff --git a/plugin/colorpicker.vim b/plugin/colorpicker.vim
new file mode 100644
index 0000000..088813f
--- /dev/null
+++ b/plugin/colorpicker.vim
@@ -0,0 +1,18 @@
+let s:script_dir = expand("<sfile>:p:h")
+
+let g:colorpicker_cmd = printf("%s/%s", s:script_dir, "pickcolors.py")
+
+function! PickColorFor(hlgroup, fgbg)
+ let opts = {}
+
+ let opts.stdout_buffered = v:false
+ let opts.hlgroup = a:hlgroup
+ let opts.fgbg = a:fgbg
+ function opts.on_stdout(id, data, ev) dict
+ if len(a:data) > 0
+ exec printf("hi %s %s=%s", self.hlgroup, self.fgbg, a:data[0])
+ endif
+ endfunction
+
+ let job = jobstart(g:colorpicker_cmd, opts)
+endfunction
diff --git a/plugin/pickcolors.py b/plugin/pickcolors.py
new file mode 100755
index 0000000..50a2169
--- /dev/null
+++ b/plugin/pickcolors.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python3
+
+import sys
+from PyQt5.QtCore import Qt
+from PyQt5.QtGui import QColor
+
+from PyQt5.QtWidgets import QApplication, QColorDialog
+
+
+class ColorPicker(object):
+
+ def __init__(self):
+ self.app = QApplication(sys.argv)
+
+ def get_color(self):
+ color_dialog = QColorDialog(parent=None)
+ color_dialog.currentColorChanged.connect(self.on_color_changed)
+ color_dialog.finished.connect(self.close_on_finish)
+ color_dialog.exec_()
+
+ def on_color_changed(self, color):
+ # Convert color to RGB format
+ # red, green, blue, _ = color.getRgb()
+ hex_color = color.name(QColor.HexRgb)
+ print(hex_color, flush=True)
+ # print(f"Selected Color: RGB({red}, {green}, {blue})")
+
+ def run(self):
+ self.get_color()
+ sys.exit(self.app.exec_())
+
+ def close_on_finish(self, event):
+ sys.exit(0)
+
+if __name__ == "__main__":
+ picker = ColorPicker()
+ picker.run()