about summary refs log tree commit diff stats
path: root/ranger
diff options
context:
space:
mode:
authorJoseph Tannhuber <sepp.tannhuber@yahoo.de>2014-05-11 20:45:32 +0200
committerJoseph Tannhuber <sepp.tannhuber@yahoo.de>2014-05-11 20:45:32 +0200
commitd09072b48da7061b01e5cead01de2cdd22821486 (patch)
tree8bd868f0b01d8221e9685a8952c6c214f17595d3 /ranger
parenta5bf7552f85826535ad25b8b18346a5fd998e8f4 (diff)
downloadranger-d09072b48da7061b01e5cead01de2cdd22821486.tar.gz
Solarized colorscheme added.
Diffstat (limited to 'ranger')
-rw-r--r--ranger/colorschemes/solarized.py132
1 files changed, 132 insertions, 0 deletions
diff --git a/ranger/colorschemes/solarized.py b/ranger/colorschemes/solarized.py
new file mode 100644
index 00000000..7d209ef9
--- /dev/null
+++ b/ranger/colorschemes/solarized.py
@@ -0,0 +1,132 @@
+# Joseph Tannhuber <sepp.tannhuber@yahoo.de>, 2013
+# Solarized like colorscheme, similar to solarized-dircolors
+# from https://github.com/seebi/dircolors-solarized.
+# This is a modification of Roman Zimbelmann's default colorscheme.
+# This software is distributed under the terms of the GNU GPL version 3.
+
+from ranger.gui.colorscheme import ColorScheme
+from ranger.gui.color import *
+
+class Solarized(ColorScheme):
+    progress_bar_color = 33
+
+    def use(self, context):
+        fg, bg, attr = default_colors
+
+        if context.reset:
+            return default_colors
+
+        elif context.in_browser:
+            fg = 244
+            if context.selected:
+                attr = reverse
+            else:
+                attr = normal
+            if context.empty or context.error:
+                fg = 235
+                bg = 160
+            if context.border:
+                fg = default
+            if context.media:
+                if context.image:
+                    fg = 136
+                else:
+                    fg = 166
+            if context.container:
+                fg = 61
+            if context.directory:
+                fg = 33
+            elif context.executable and not \
+                    any((context.media, context.container,
+                        context.fifo, context.socket)):
+                fg = 64
+                attr |= bold
+            if context.socket:
+                fg = 136
+                bg = 230
+                attr |= bold
+            if context.fifo:
+                fg = 136
+                bg = 230
+                attr |= bold
+            if context.device:
+                fg = 244
+                bg = 230
+                attr |= bold
+            if context.link:
+                fg = context.good and 37 or 160
+                attr |= bold
+                if context.bad:
+                    bg = 235
+            if context.tag_marker and not context.selected:
+                attr |= bold
+                if fg in (red, magenta):
+                    fg = white
+                else:
+                    fg = red
+            if not context.selected and (context.cut or context.copied):
+                fg = 234
+                attr |= bold
+            if context.main_column:
+                if context.selected:
+                    attr |= bold
+                if context.marked:
+                    attr |= bold
+                    bg = 237
+            if context.badinfo:
+                if attr & reverse:
+                    bg = magenta
+                else:
+                    fg = magenta
+
+        elif context.in_titlebar:
+            attr |= bold
+            if context.hostname:
+                fg = context.bad and 16 or 255
+                if context.bad:
+                    bg = 166
+            elif context.directory:
+                fg = 33
+            elif context.tab:
+                fg = context.good and 47 or 33
+                bg = 239
+            elif context.link:
+                fg = cyan
+
+        elif context.in_statusbar:
+            if context.permissions:
+                if context.good:
+                    fg = 93
+                elif context.bad:
+                    fg = 160
+                    bg = 235
+            if context.marked:
+                attr |= bold | reverse
+                fg = 237
+                bg = 47
+            if context.message:
+                if context.bad:
+                    attr |= bold
+                    fg = 160
+                    bg = 235
+            if context.loaded:
+                bg = self.progress_bar_color
+
+        if context.text:
+            if context.highlight:
+                attr |= reverse
+
+        if context.in_taskview:
+            if context.title:
+                fg = 93
+
+            if context.selected:
+                attr |= reverse
+
+            if context.loaded:
+                if context.selected:
+                    fg = self.progress_bar_color
+                else:
+                    bg = self.progress_bar_color
+
+        return fg, bg, attr
class="w"> delimited continuations. # Slightly less klunky than exception1.mu. # Since Mu is statically typed, we can't build an all-purpose higher-order # function called 'try'; it wouldn't know how many arguments the function # passed to it needs to take, what their types are, etc. Instead, until Mu # gets macros we'll directly use the continuation primitives. exclusive-container error-or:_elem [ error:text value:_elem ] def main [ local-scope foo false/no-exception foo true/raise-exception ] # example showing exception handling def foo raise-exception?:bool [ local-scope load-inputs # To run an instruction of the form: # try f ... # write this: # call-with-continuation-mark 999/exception-tag, f, ... # By convention we reserve tag 999 for exceptions. # # The other inputs and outputs to 'call-with-continuation-mark' depend on # the function it is called with. _, result:error-or:num <- call-with-continuation-mark 999/exception-tag, f, raise-exception? { val:num, normal-exit?:bool <- maybe-convert result, value:variant break-unless normal-exit? $print [normal exit; result ] val 10/newline } { err:text, error-exit?:bool <- maybe-convert result, error:variant break-unless error-exit? $print [error caught: ] err 10/newline } ] # Callee function that we catch exceptions in must always return using a # continuation. def f raise-exception?:bool -> result:error-or:num [ local-scope load-inputs { break-unless raise-exception? # throw/raise result <- merge 0/error, [error will robinson!] return-continuation-until-mark 999/exception-tag, result } # 'normal' return; still uses the continuation mark result <- merge 1/value, 34 return-continuation-until-mark 999/exception-tag, result # dead code just to avoid errors result <- merge 1/value, 0 return result ]