summary refs log tree commit diff stats
path: root/examples/plugin_new_macro.py
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2012-12-04 21:20:09 +0100
committerhut <hut@lavabit.com>2012-12-04 21:20:09 +0100
commit972da7babcecbe47bd56a3d2d19157b4aba61e99 (patch)
tree4d3b5a9ecb992a80dd54e511bf00dd3bc3670a3d /examples/plugin_new_macro.py
parent6f7e47d6a91627fab3e08f42df5114db3c22841a (diff)
downloadranger-972da7babcecbe47bd56a3d2d19157b4aba61e99.tar.gz
removed options.py, improved plugins. *UPDATE YOUR COMMANDS.PY*
Previously, you could change settings in both rc.conf and options.py.
With this commit, options.py is deprecated and you are encouraged to use
rc.conf to change settings.  I chose to do this because it is more
elegant to use a simple list of ranger commands for configuration
rather than a python file with lots of magic around it and potential
syntax errors for inexperienced users.

The existing "set" command doesn't evaluate python objects anymore,
instead it always takes strings and converts to the proper type
automatically.  This means that the old set command will not work
anymore and you have to update your commands.py if it still uses the old
definition of the "set" command.

This is how to convert your options.py:

old way, in options.py     | new way, in rc.conf
---------------------------+------------------------
show_hidden = False        | set show_hidden false
sort = 'basename'          | set sort basename
column_ratios = (1, 5, 3)  | set column_ratios 1,5,3

For backward compatibility, you still can use options.py, but you get a
warning when you start ranger.  You can pipe stderr to /dev/null to
silence the warning, or just move your stuff from options.py to rc.conf
and plugins and delete the options.py.

Finally, to extend ranger, which you previously could do through
monkey-patching in options.py, you should now use the plugin system.
This was an experimental, undocumented feature of ranger for some time,
but this and the following commits will imrpove and document it.
You can simply move all the monkey-patching code from options.py to a
*.py file in ~/.config/ranger/plugins/.
Diffstat (limited to 'examples/plugin_new_macro.py')
-rw-r--r--examples/plugin_new_macro.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/examples/plugin_new_macro.py b/examples/plugin_new_macro.py
new file mode 100644
index 00000000..ec0c487c
--- /dev/null
+++ b/examples/plugin_new_macro.py
@@ -0,0 +1,17 @@
+# This plugin adds the new macro %date which is substituted with the current
+# date in commands that allow macros.  You can test it with the command
+# ":shell echo %date; read"
+
+# Save the original macro function
+import ranger.core.actions
+old_get_macros = ranger.core.actions.Actions._get_macros
+
+# Define a new macro function
+import time
+def get_macros_with_date(self):
+       macros = old_get_macros(self)
+       macros['date'] = time.strftime('%m/%d/%Y')
+       return macros
+
+# Overwrite the old one
+ranger.core.actions.Actions._get_macros = get_macros_with_date
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189