Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 380 lines (347 sloc) 15.408 kb
4e7c192 @philjackson Moved the menu/key definitions into another file.
philjackson authored
1 (defvar magit-mode-map
2 (let ((map (make-keymap)))
3 (suppress-keymap map t)
4 (define-key map (kbd "n") 'magit-goto-next-section)
5 (define-key map (kbd "p") 'magit-goto-previous-section)
6 (define-key map (kbd "TAB") 'magit-toggle-section)
7 (define-key map (kbd "<backtab>") 'magit-expand-collapse-section)
8 (define-key map (kbd "1") 'magit-show-level-1)
9 (define-key map (kbd "2") 'magit-show-level-2)
10 (define-key map (kbd "3") 'magit-show-level-3)
11 (define-key map (kbd "4") 'magit-show-level-4)
12 (define-key map (kbd "M-1") 'magit-show-level-1-all)
13 (define-key map (kbd "M-2") 'magit-show-level-2-all)
14 (define-key map (kbd "M-3") 'magit-show-level-3-all)
15 (define-key map (kbd "M-4") 'magit-show-level-4-all)
16 (define-key map (kbd "M-h") 'magit-show-only-files)
17 (define-key map (kbd "M-H") 'magit-show-only-files-all)
18 (define-key map (kbd "M-s") 'magit-show-level-4)
19 (define-key map (kbd "M-S") 'magit-show-level-4-all)
20 (define-key map (kbd "<M-left>") 'magit-goto-parent-section)
21 (define-key map (kbd "g") 'magit-refresh)
22 (define-key map (kbd "G") 'magit-refresh-all)
23 (define-key map (kbd "?") 'magit-describe-item)
24 (define-key map (kbd "!") 'magit-shell-command)
25 (define-key map (kbd ":") 'magit-git-command)
26 (define-key map (kbd "RET") 'magit-visit-item)
27 (define-key map (kbd "SPC") 'magit-show-item-or-scroll-up)
28 (define-key map (kbd "DEL") 'magit-show-item-or-scroll-down)
29 (define-key map (kbd "C-w") 'magit-copy-item-as-kill)
30 (define-key map (kbd "R") 'magit-rebase-step)
e91decf @philjackson Added a tagging menu.
philjackson authored
31 (define-key map (kbd "t") (lambda () (interactive) (magit-key-mode 'tagging)))
e882f3c @philjackson Put rebasing commands in menu.
philjackson authored
32 (define-key map (kbd "r") (lambda () (interactive) (magit-key-mode 'rewriting)))
4e7c192 @philjackson Moved the menu/key definitions into another file.
philjackson authored
33 (define-key map (kbd "P") 'magit-push)
34 (define-key map (kbd "f") 'magit-remote-update)
35 (define-key map (kbd "F") 'magit-pull)
36 (define-key map (kbd "c") 'magit-log-edit)
3c8bab4 @philjackson Run log hook from magit itself.
philjackson authored
37 (define-key map (kbd "l") (lambda () (interactive) (magit-key-mode 'logging)))
4e7c192 @philjackson Moved the menu/key definitions into another file.
philjackson authored
38 (define-key map (kbd "$") 'magit-display-process)
39 (define-key map (kbd "E") 'magit-interactive-rebase)
40 (define-key map (kbd "q") 'quit-window)
41 map))
42
43 (defvar magit-commit-mode-map
44 (let ((map (make-sparse-keymap)))
45 (define-key map (kbd "a") 'magit-apply-item)
46 (define-key map (kbd "A") 'magit-cherry-pick-item)
47 (define-key map (kbd "v") 'magit-revert-item)
48 map))
49
50 (defvar magit-status-mode-map
51 (let ((map (make-sparse-keymap)))
52 (define-key map (kbd "-") 'magit-diff-smaller-hunks)
53 (define-key map (kbd "+") 'magit-diff-larger-hunks)
54 (define-key map (kbd "0") 'magit-diff-default-hunks)
55 (define-key map (kbd "s") 'magit-stage-item)
56 (define-key map (kbd "S") 'magit-stage-all)
57 (define-key map (kbd "u") 'magit-unstage-item)
58 (define-key map (kbd "U") 'magit-unstage-all)
59 (define-key map (kbd "i") 'magit-ignore-item)
60 (define-key map (kbd "I") 'magit-ignore-item-locally)
61 (define-key map (kbd ".") 'magit-mark-item)
62 (define-key map (kbd "=") 'magit-diff-with-mark)
63 (define-key map (kbd "d") 'magit-diff-working-tree)
64 (define-key map (kbd "D") 'magit-diff)
65 (define-key map (kbd "a") 'magit-apply-item)
66 (define-key map (kbd "A") 'magit-cherry-pick-item)
67 (define-key map (kbd "v") 'magit-revert-item)
68 (define-key map (kbd "b") 'magit-branch-menu)
69 (define-key map (kbd "m") 'magit-manual-merge)
70 (define-key map (kbd "M") 'magit-automatic-merge)
71 (define-key map (kbd "k") 'magit-discard-item)
72 (define-key map (kbd "e") 'magit-interactive-resolve-item)
73 (define-key map (kbd "C") 'magit-add-log)
74 (define-key map (kbd "x") 'magit-reset-head)
75 (define-key map (kbd "X") 'magit-reset-working-tree)
76 (define-key map (kbd "z") 'magit-stash)
77 (define-key map (kbd "Z") 'magit-stash-snapshot)
78 map))
79
80 (defvar magit-stash-mode-map
81 (let ((map (make-sparse-keymap)))
82 (define-key map (kbd "-") 'magit-diff-smaller-hunks)
83 (define-key map (kbd "+") 'magit-diff-larger-hunks)
84 (define-key map (kbd "0") 'magit-diff-default-hunks)
85 (define-key map (kbd "a") 'magit-apply-item)
86 (define-key map (kbd "A") 'magit-cherry-pick-item)
87 (define-key map (kbd "v") 'magit-revert-item)
88 map))
89
90 (defvar magit-log-mode-map
91 (let ((map (make-sparse-keymap)))
92 (define-key map (kbd ".") 'magit-mark-item)
93 (define-key map (kbd "=") 'magit-diff-with-mark)
94 (define-key map (kbd "d") 'magit-diff-working-tree)
95 (define-key map (kbd "D") 'magit-diff)
96 (define-key map (kbd "a") 'magit-apply-item)
97 (define-key map (kbd "s") 'magit-log-grep)
98 (define-key map (kbd "A") 'magit-cherry-pick-item)
99 (define-key map (kbd "v") 'magit-revert-item)
100 (define-key map (kbd "b") 'magit-branch-menu)
101 (define-key map (kbd "m") 'magit-manual-merge)
102 (define-key map (kbd "M") 'magit-automatic-merge)
103 (define-key map (kbd "x") 'magit-reset-head)
104 (define-key map (kbd "e") 'magit-log-show-more-entries)
3c8bab4 @philjackson Run log hook from magit itself.
philjackson authored
105 (define-key map (kbd "l") (lambda () (interactive) (magit-key-mode 'logging)))
4e7c192 @philjackson Moved the menu/key definitions into another file.
philjackson authored
106 map))
107
108 (defvar magit-reflog-mode-map
109 (let ((map (make-sparse-keymap)))
110 (define-key map (kbd ".") 'magit-mark-item)
111 (define-key map (kbd "=") 'magit-diff-with-mark)
112 (define-key map (kbd "d") 'magit-diff-working-tree)
113 (define-key map (kbd "D") 'magit-diff)
114 (define-key map (kbd "a") 'magit-apply-item)
115 (define-key map (kbd "A") 'magit-cherry-pick-item)
116 (define-key map (kbd "v") 'magit-revert-item)
117 (define-key map (kbd "x") 'magit-reset-head)
118 map))
119
120 (defvar magit-diff-mode-map
121 (let ((map (make-sparse-keymap)))
122 (define-key map (kbd "-") 'magit-diff-smaller-hunks)
123 (define-key map (kbd "+") 'magit-diff-larger-hunks)
124 (define-key map (kbd "0") 'magit-diff-default-hunks)
125 (define-key map (kbd "a") 'magit-apply-item)
126 (define-key map (kbd "A") 'magit-cherry-pick-item)
127 (define-key map (kbd "v") 'magit-revert-item)
128 map))
129
130 (defvar magit-wazzup-mode-map
131 (let ((map (make-sparse-keymap)))
132 (define-key map (kbd ".") 'magit-mark-item)
133 (define-key map (kbd "=") 'magit-diff-with-mark)
134 (define-key map (kbd "d") 'magit-diff-working-tree)
135 (define-key map (kbd "D") 'magit-diff)
136 (define-key map (kbd "a") 'magit-apply-item)
137 (define-key map (kbd "A") 'magit-cherry-pick-item)
138 (define-key map (kbd "v") 'magit-revert-item)
139 (define-key map (kbd "b") 'magit-branch-menu)
140 (define-key map (kbd "m") 'magit-manual-merge)
141 (define-key map (kbd "M") 'magit-automatic-merge)
142 (define-key map (kbd "x") 'magit-reset-head)
143 (define-key map (kbd "i") 'magit-ignore-item)
144 map))
145
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
146 (defvar magit-key-mode-key-maps '()
147 "This will be filled lazily with proper `define-key' built
148 keymaps as they're reqeusted.")
4e7c192 @philjackson Moved the menu/key definitions into another file.
philjackson authored
149
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
150 (defvar magit-key-mode-buf-name "*magit-key*"
151 "Name of the buffer.")
152
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
153 (defvar magit-key-mode-groups
154 '((logging
155 (actions
156 ("l" "One line log" magit-log)
157 ("L" "Long log" magit-log-long)
158 ("h" "Reflog" magit-reflog)
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
159 ("H" "Reflog on head" magit-reflog-head))
160 (switches
bad6cc9 @philjackson Added merge commit switch.
philjackson authored
161 ("-m" "Only merge commits" "--merges")
cba1be0 @philjackson Put '-' in front of switch keys.
philjackson authored
162 ("-f" "First parent" "--first-parent")
ee332fd @philjackson Allow for case insensitivity in patterns.
philjackson authored
163 ("-i" "Case insesnitive patterns" "-i")
0604574 @philjackson Basic argument display in place.
philjackson authored
164 ("-a" "All" "--all"))
165 (arguments
644cdf8 @philjackson Added branches arg.
philjackson authored
166 ("=b" "Branches" "--branches" read-from-minibuffer)
f68a3d1 @philjackson Changed the prefix for args to '='.
philjackson authored
167 ("=a" "Author" "--author" read-from-minibuffer)
e882f3c @philjackson Put rebasing commands in menu.
philjackson authored
168 ("=g" "Grep" "--grep" read-from-minibuffer)))
169
e91decf @philjackson Added a tagging menu.
philjackson authored
170 (tagging
171 (actions
172 ("t" "Lightweight" magit-tag)
173 ("T" "Annotated" magit-annotated-tag))
174 (switches
175 ("-f" "Force" "-f")))
176
e882f3c @philjackson Put rebasing commands in menu.
philjackson authored
177 (rewriting
178 (actions
179 ("b" "Begin" magit-rewrite-start)
180 ("s" "Stop" magit-rewrite-stop)
181 ("a" "Abort" magit-rewrite-abort)
182 ("f" "Finish" magit-rewrite-finish)
183 ("*" "Set unused" magit-rewrite-set-unused)
184 ("." "Set used" magit-rewrite-set-used))))
955adde @philjackson Actions just about ready, keymap-wise.
philjackson authored
185 "Holds the key, help, function mapping for the log-mode. If you
186 modify this make sure you reset `magit-key-mode-key-maps' to
187 nil.")
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
188
f6e921d @philjackson Simple pass at drawing actions.
philjackson authored
189 (defun magit-key-mode-options-for-group (for-group)
190 (or (cdr (assoc for-group magit-key-mode-groups))
191 (error "Unknown group '%s'" for-group)))
192
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
193 (defun magit-key-mode-build-keymap (for-group)
194 "Construct a normal looking keymap for the key mode to use and
195 put it in magit-key-mode-key-maps for fast lookup."
f6e921d @philjackson Simple pass at drawing actions.
philjackson authored
196 (let* ((options (magit-key-mode-options-for-group for-group))
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
197 (actions (cdr (assoc 'actions options)))
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
198 (switches (cdr (assoc 'switches options)))
0604574 @philjackson Basic argument display in place.
philjackson authored
199 (arguments (cdr (assoc 'arguments options))))
b5ad1b1 @philjackson Keymap installs for mode.
philjackson authored
200 (let ((map (make-sparse-keymap)))
f6e921d @philjackson Simple pass at drawing actions.
philjackson authored
201 ;; all maps should 'quit' with C-g
e04f27d @philjackson Window config stored and reapplied on quit.
philjackson authored
202 (define-key map (kbd "C-g") (lambda ()
203 (interactive)
c0324a5 @philjackson Fixed quit.
philjackson authored
204 (magit-key-mode-command nil)))
b5ad1b1 @philjackson Keymap installs for mode.
philjackson authored
205 (when actions
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
206 (dolist (k actions)
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
207 (define-key map (car k) `(lambda ()
208 (interactive)
fc2fe2b @philjackson Arguments now being passed through.
philjackson authored
209 (magit-key-mode-command ',(nth 2 k))))))
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
210 (when switches
211 (dolist (k switches)
212 (define-key map (car k) `(lambda ()
cba1be0 @philjackson Put '-' in front of switch keys.
philjackson authored
213 (interactive)
214 (magit-key-mode-add-option
215 ',for-group
216 ,(nth 2 k))))))
0604574 @philjackson Basic argument display in place.
philjackson authored
217 (when arguments
218 (dolist (k arguments)
219 (define-key map (car k) `(lambda ()
220 (interactive)
221 (magit-key-mode-add-argument
222 ',for-group
217febc @philjackson Args being remembered.
philjackson authored
223 ,(nth 2 k)
224 ',(nth 3 k))))))
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
225 (aput 'magit-key-mode-key-maps for-group map)
b5ad1b1 @philjackson Keymap installs for mode.
philjackson authored
226 map)))
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
227
fc2fe2b @philjackson Arguments now being passed through.
philjackson authored
228 (defun magit-key-mode-command (func)
229 (let ((args '()))
230 ;; why can't maphash return a list?!
231 (maphash (lambda (k v)
232 (push (concat k "=" (shell-quote-argument v)) args))
233 magit-key-mode-current-args)
234 (let ((magit-custom-options (append args magit-key-mode-current-options)))
235 (set-window-configuration magit-log-mode-window-conf)
c0324a5 @philjackson Fixed quit.
philjackson authored
236 (when func
e882f3c @philjackson Put rebasing commands in menu.
philjackson authored
237 (call-interactively func))
fc2fe2b @philjackson Arguments now being passed through.
philjackson authored
238 (magit-key-mode-kill-buffer))))
5be31a3 @philjackson Some font-locking.
philjackson authored
239
217febc @philjackson Args being remembered.
philjackson authored
240 (defvar magit-key-mode-current-args nil
241 "A hash-table of current argument set (which will eventually
242 make it to the git command-line).")
243
244 (defun debug-args ()
245 (interactive)
246 (maphash (lambda (k v) (print (format "%s: %s" k v))) magit-key-mode-current-args))
247
248 (defun magit-key-mode-add-argument (for-group arg-name input-func)
249 (let ((input (funcall input-func (concat arg-name ": "))))
250 (puthash arg-name input magit-key-mode-current-args)
fc2fe2b @philjackson Arguments now being passed through.
philjackson authored
251 (magit-key-mode-redraw for-group)))
217febc @philjackson Args being remembered.
philjackson authored
252
253 (defvar magit-key-mode-current-options '()
254 "Current option set (which will eventually make it to the git
255 command-line).")
0604574 @philjackson Basic argument display in place.
philjackson authored
256
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
257 (defun magit-key-mode-add-option (for-group option-name)
258 "Toggles the appearance of OPTION-NAME in
259 `magit-key-mode-current-options'."
260 (if (not (member option-name magit-key-mode-current-options))
261 (add-to-list 'magit-key-mode-current-options option-name)
262 (setq magit-key-mode-current-options
263 (delete option-name magit-key-mode-current-options)))
264 (magit-key-mode-redraw for-group))
5be31a3 @philjackson Some font-locking.
philjackson authored
265
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
266 (defun magit-key-mode-kill-buffer ()
c351215 @philjackson C-g kills buffer.
philjackson authored
267 (interactive)
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
268 (kill-buffer magit-key-mode-buf-name))
269
e04f27d @philjackson Window config stored and reapplied on quit.
philjackson authored
270 (defvar magit-log-mode-window-conf nil
271 "Pre-popup window configuration.")
272
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
273 (defun magit-key-mode (for-group &optional original-opts)
b335871 @philjackson Options var now buffer local.
philjackson authored
274 "Mode for magit key selection."
0a2965c @philjackson Experiment with a new style for the mappings.
philjackson authored
275 (interactive)
09ab17d @philjackson Doc.
philjackson authored
276 ;; save the window config to restore it as was (no need to make this
277 ;; buffer local)
e04f27d @philjackson Window config stored and reapplied on quit.
philjackson authored
278 (setq magit-log-mode-window-conf
279 (current-window-configuration))
280 ;; setup the mode, draw the buffer
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
281 (let ((buf (get-buffer-create magit-key-mode-buf-name)))
c3971bb @philjackson Revert (again) to the split-window method of display.
philjackson authored
282 (delete-other-windows)
283 (split-window-vertically)
b03829c @philjackson Make sure the menu turns up at the bottom of the window.
philjackson authored
284 (other-window 1)
c3971bb @philjackson Revert (again) to the split-window method of display.
philjackson authored
285 (switch-to-buffer buf)
e04f27d @philjackson Window config stored and reapplied on quit.
philjackson authored
286 (kill-all-local-variables)
287 (set (make-variable-buffer-local
288 'magit-key-mode-current-options)
289 original-opts)
217febc @philjackson Args being remembered.
philjackson authored
290 (set (make-variable-buffer-local
291 'magit-key-mode-current-args)
292 (make-hash-table))
e04f27d @philjackson Window config stored and reapplied on quit.
philjackson authored
293 (magit-key-mode-redraw for-group)))
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
294
295 (defun magit-key-mode-redraw (for-group)
b335871 @philjackson Options var now buffer local.
philjackson authored
296 "(re)draw the magit key buffer."
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
297 (let ((buffer-read-only nil))
298 (erase-buffer)
299 (make-local-variable 'font-lock-defaults)
300 (use-local-map
301 (or (cdr (assoc for-group magit-key-mode-key-maps))
302 (magit-key-mode-build-keymap for-group)))
303 (magit-key-mode-draw for-group)
ec4cf70 @philjackson Fix buffer not being read-only.
philjackson authored
304 (setq mode-name "magit-key-mode" major-mode 'magit-key-mode))
e04f27d @philjackson Window config stored and reapplied on quit.
philjackson authored
305 (setq buffer-read-only t)
306 (fit-window-to-buffer))
4e7c192 @philjackson Moved the menu/key definitions into another file.
philjackson authored
307
4ab9bab @philjackson Start of on-the-fly font-locking.
philjackson authored
308 (defun magit-key-mode-draw-header (header)
309 (insert (propertize header 'face 'font-lock-keyword-face)))
310
ab566aa @philjackson draw-args function.
philjackson authored
311 (defun magit-key-mode-draw-args (args)
312 (when args
313 (magit-key-mode-draw-header "Args\n")
314 (dolist (argument args)
315 (insert
316 (format " %s: (%s) %s %s\n"
1440328 @philjackson All args fontified.
philjackson authored
317 (propertize
ab566aa @philjackson draw-args function.
philjackson authored
318 (car argument)
1440328 @philjackson All args fontified.
philjackson authored
319 'face 'font-lock-builtin-face)
ab566aa @philjackson draw-args function.
philjackson authored
320 (nth 1 argument)
321 (nth 2 argument)
322 (propertize
323 (gethash (nth 2 argument) magit-key-mode-current-args "")
1440328 @philjackson All args fontified.
philjackson authored
324 'face 'widget-field))))))
ab566aa @philjackson draw-args function.
philjackson authored
325
b67b255 @philjackson draw-switches function.
philjackson authored
326 (defun magit-key-mode-draw-switches (switches)
327 (when switches
e19f302 @philjackson Columify switches too.
philjackson authored
328 (let ((switch-strs (mapcar
329 (lambda (s)
330 (let ((option (nth 2 s)))
331 (format " %s: %s (%s)"
332 (propertize (car s)
333 'face 'font-lock-builtin-face)
334 (nth 1 s)
335 (if (member option magit-key-mode-current-options)
336 (propertize
337 option
338 'face 'font-lock-warning-face)
339 option))))
340 switches)))
341 (magit-key-mode-draw-header "Switches\n")
342 (magit-key-mode-draw-in-cols switch-strs))))
343
344 (defun magit-key-mode-draw-in-cols (strings)
345 (let ((longest-act (apply 'max (mapcar 'length strings)))
346 (max-size 70))
347 (dolist (str strings)
348 (let ((padding (make-string (- (+ longest-act 5) (length str)) ? )))
349 (insert str)
350 (if (> (+ (current-column) longest-act) max-size)
351 (insert "\n")
352 (insert padding))))
353 (insert "\n")))
b67b255 @philjackson draw-switches function.
philjackson authored
354
02600a8 @philjackson Pretty layout of actions.
philjackson authored
355 (defun magit-key-mode-draw-actions (actions)
356 (when actions
e19f302 @philjackson Columify switches too.
philjackson authored
357 (let ((action-strs (mapcar
358 (lambda (a)
359 (format
360 " %s: %s"
361 (propertize (car a)
362 'face 'font-lock-builtin-face)
363 (nth 1 a)))
364 actions)))
4ab9bab @philjackson Start of on-the-fly font-locking.
philjackson authored
365 (magit-key-mode-draw-header "Actions\n")
e19f302 @philjackson Columify switches too.
philjackson authored
366 (magit-key-mode-draw-in-cols action-strs))))
367
02600a8 @philjackson Pretty layout of actions.
philjackson authored
368
f6e921d @philjackson Simple pass at drawing actions.
philjackson authored
369 (defun magit-key-mode-draw (for-group)
5be31a3 @philjackson Some font-locking.
philjackson authored
370 "Function used to draw actions, switches and parameters."
f6e921d @philjackson Simple pass at drawing actions.
philjackson authored
371 (let* ((options (magit-key-mode-options-for-group for-group))
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
372 (switches (cdr (assoc 'switches options)))
0604574 @philjackson Basic argument display in place.
philjackson authored
373 (arguments (cdr (assoc 'arguments options)))
f6e921d @philjackson Simple pass at drawing actions.
philjackson authored
374 (actions (cdr (assoc 'actions options))))
02600a8 @philjackson Pretty layout of actions.
philjackson authored
375 (magit-key-mode-draw-actions actions)
b67b255 @philjackson draw-switches function.
philjackson authored
376 (magit-key-mode-draw-switches switches)
ab566aa @philjackson draw-args function.
philjackson authored
377 (magit-key-mode-draw-args arguments)))
f6e921d @philjackson Simple pass at drawing actions.
philjackson authored
378
5570e6a @philjackson Renamed key file, added kill-buffer.
philjackson authored
379 (provide 'magit-key-mode)
Something went wrong with that request. Please try again.