Skip to content

Instantly share code, notes, and snippets.

@hyagni
Created March 23, 2011 04:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hyagni/882595 to your computer and use it in GitHub Desktop.
Save hyagni/882595 to your computer and use it in GitHub Desktop.
Original c-source cannot select more than 10 screens, because of the way it gets a screen number. This new code can select any screen.
(defun elscreen-get-screen-num-from-candidate (candidate)
(string-match "\\[\\([0-9]+\\)\\]" candidate)
(string-to-number (match-string 1 candidate))
)
;; copied from anything-config.el
(setq anything-c-source-elscreen
'((name . "Elscreen")
(candidates . (lambda ()
(if (cdr (elscreen-get-screen-to-name-alist))
(sort
(loop for sname in (elscreen-get-screen-to-name-alist)
append (list (format "[%d] %s" (car sname) (cdr sname))) into lst
finally (return lst))
#'(lambda (a b) (compare-strings a nil nil b nil nil))))))
(action . (("Change Screen".
(lambda (candidate)
(elscreen-goto (elscreen-get-screen-num-from-candidate candidate))))
("Kill Screen(s)".
(lambda (candidate)
(dolist (i (anything-marked-candidates))
(elscreen-goto (elscreen-get-screen-num-from-candidate i))
(elscreen-kill))))
("Only Screen".
(lambda (candidate)
(elscreen-goto (elscreen-get-screen-num-from-candidate candidate))
(elscreen-kill-others)))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment