Changeset - 43a487b5b163
[Not reviewed]
0 2 0
Sergey Pashinin - 11 years ago 2014-07-26 15:23:41
sergey@pashinin.com
Removed rest echo commands
2 files changed with 0 insertions and 25 deletions:
0 comments (0 inline, 0 general)
src/workgroups-commands.el
Show inline comments
 
@@ -619,224 +619,206 @@ See `wg-workgroup-cycle-bufobj-association-type' for details."
 

	
 
(defun wg-toggle-window-dedicated-p ()
 
  "Toggle `window-dedicated-p' in `selected-window'."
 
  (interactive)
 
  (set-window-dedicated-p nil (not (window-dedicated-p)))
 
  (force-mode-line-update t)
 
  (wg-fontified-message
 
    (:cmd "Window:")
 
    (:cur (concat (unless (window-dedicated-p) " not") " dedicated"))))
 

	
 

	
 

	
 
;;; misc commands
 

	
 
(defun wg-rename-workgroup (workgroup newname)
 
  "Rename WORKGROUP to NEWNAME."
 
  (interactive (list nil (wg-read-new-workgroup-name "New name: ")))
 
  (let* ((workgroup (wg-get-workgroup workgroup))
 
         (oldname (wg-workgroup-name workgroup)))
 
    (setf (wg-workgroup-name workgroup) newname)
 
    (wg-flag-workgroup-modified workgroup)
 
    (wg-fontified-message
 
      (:cmd "Renamed: ")
 
      (:cur oldname)
 
      (:msg " to ")
 
      (:cur (wg-workgroup-name workgroup)))))
 

	
 
(defun wg-reset (&optional force)
 
  "Reset Workgroups.
 
Resets all frame parameters, buffer-local vars, the current
 
Workgroups session object, etc."
 
  (interactive "P")
 
  (unless (or force wg-no-confirm-on-destructive-operation
 
              (y-or-n-p "Really reset Workgroups? "))
 
    (error "Canceled"))
 
  (wg-reset-internal)
 
  (wg-fontified-message
 
    (:cmd "Reset: ")
 
    (:msg "Workgroups")))
 

	
 

	
 

	
 
;;; file commands
 

	
 
(defun wg-read-session-save-file-name ()
 
  "Read and return a new session filename."
 
  (read-file-name "Save session as: "))
 

	
 
(defun wg-write-session-file (filename &optional confirm)
 
  "Write the current session into file FILENAME.
 
This makes the session visit that file, and marks it as not modified.
 

	
 
If optional second arg CONFIRM is non-nil, this function asks for
 
confirmation before overwriting an existing file.  Interactively,
 
confirmation is required unless you supply a prefix argument.
 

	
 
Think of it as `write-file' for Workgroups sessions."
 
  (interactive (list (wg-read-session-save-file-name)
 
                     (not current-prefix-arg)))
 
  (when (and confirm (file-exists-p filename))
 
    (unless (y-or-n-p (format "File `%s' exists; overwrite? " filename))
 
      (error "Cancelled")))
 
  (unless (file-writable-p filename)
 
    (error "File %s can't be written to" filename))
 
  (wg-perform-session-maintenance)
 
  (setf (wg-session-file-name (wg-current-session)) filename)
 
  (setf (wg-session-version (wg-current-session)) wg-version)
 
  (if wg-control-frames
 
      (wg-save-frames))
 
  (wg-write-sexp-to-file
 
   (wg-pickel-all-session-parameters (wg-current-session))
 
   filename)
 
  (wg-mark-everything-unmodified)
 
  (wg-fontified-message (:cmd "Wrote: ") (:file filename)))
 

	
 
(defun wg-determine-session-save-file-name ()
 
  "Return the filename in which to save the session."
 
  (or (wg-session-file-name (wg-current-session))
 
      (and wg-use-default-session-file wg-default-session-file)))
 

	
 
(defun wg-save-session (&optional force)
 
  "Save the current Workgroups session if it's been modified.
 
Think of it as `save-buffer' for Workgroups sessions.  Optional
 
argument FORCE non-nil, or interactively with a prefix arg, save
 
the session regardless of whether it's been modified."
 
  (interactive "P")
 
  (if (and (not (wg-modified-p)) (not force))
 
      (wg-message "(The session is unmodified)")
 
    (wg-write-session-file
 
     (or (wg-determine-session-save-file-name)
 
         (wg-read-session-save-file-name)))))
 

	
 
(defun wg-query-and-save-if-modified ()
 
  "Query for save when `wg-modified-p'."
 
  (or (not (wg-modified-p))
 
      (when (y-or-n-p "Save modified workgroups? ")
 
        (wg-save-session))))
 

	
 
(defun wg-save-session-on-exit (behavior)
 
  "Perform session-saving operations based on BEHAVIOR."
 
  (cl-case behavior
 
    (ask (wg-query-and-save-if-modified))
 
    (save
 
     (if (wg-determine-session-save-file-name)
 
         (wg-save-session)
 
       (wg-query-and-save-if-modified)))))
 

	
 
(defun wg-save-frames ()
 
  "Save opened frames as a session parameter.
 
Exclude `selected-frame' and daemon one (if any).
 
http://stackoverflow.com/questions/21151992/why-emacs-as-daemon-gives-1-more-frame-than-is-opened"
 
  (interactive)
 
  (let ((fl (frame-list)))
 
    (mapc (lambda (frame)
 
            (if (string-equal "initial_terminal" (terminal-name frame))
 
                (delete frame fl))) fl)
 
    (setq fl (delete (selected-frame) fl))
 
    (if (wg-current-session t)
 
          (wg-set-session-parameter (wg-current-session t)
 
                                    'frame-list
 
                                    (mapcar 'wg-frame-to-wconfig fl)))))
 

	
 
(defun wg-find-session-file (filename)
 
  "Load a session visiting FILENAME, creating one if none already exists."
 
  (interactive "FFind session file: ")
 
  (cond ((file-exists-p filename)
 
         (let ((session (wg-read-sexp-from-file filename)))
 
           (unless (wg-session-p session)
 
             (error "%S is not a Workgroups session file." filename))
 
           (setf (wg-session-file-name session) filename)
 
           (wg-reset-internal (wg-unpickel-session-parameters session)))
 
         (wg-awhen (and wg-switch-to-first-workgroup-on-find-session-file
 
                        (wg-workgroup-list))
 
           (if (and wg-open-this-wg
 
                    (member wg-open-this-wg (wg-workgroup-names)))
 
               (wg-switch-to-workgroup wg-open-this-wg)
 
             (if (and wg-load-last-workgroup
 
                      (member (wg-session-parameter (wg-current-session t) 'last-workgroup)
 
                              (wg-workgroup-names)))
 
                 (wg-switch-to-workgroup
 
                  (wg-session-parameter (wg-current-session t) 'last-workgroup))
 
               (wg-switch-to-workgroup (car it)))
 
             ))
 
         (if wg-control-frames
 
             (wg-restore-frames))
 
         (wg-fontified-message (:cmd "Loaded: ") (:file filename)))
 
        (t
 
         (wg-query-and-save-if-modified)
 
         (wg-reset-internal (wg-make-session :file-name filename))
 
         (wg-fontified-message
 
           (:cmd "(New Workgroups session file)")))))
 

	
 
(defun wg-find-file-in-new-workgroup (filename)
 
  "Create a new blank workgroup and find file FILENAME in it."
 
  (interactive "FFind file in new workgroup: ")
 
  (wg-create-workgroup (file-name-nondirectory filename) t)
 
  (find-file filename))
 

	
 
(defun wg-find-file-read-only-in-new-workgroup (filename)
 
  "Create a new workgroup and find file FILENAME read-only in it."
 
  (interactive "FFind file read only in new workgroup: ")
 
  (wg-create-workgroup (file-name-nondirectory filename) t)
 
  (find-file-read-only filename))
 

	
 
(defun wg-dired-in-new-workgroup (dirname &optional switches)
 
  "Create a workgroup and open DIRNAME in dired with SWITCHES."
 
  (interactive (list (read-directory-name "Dired (directory): ")
 
                     current-prefix-arg))
 
  (wg-create-workgroup dirname)
 
  (dired dirname switches))
 

	
 

	
 

	
 
;;; toggle commands
 

	
 
(defun wg-toggle-and-message (symbol)
 
  "Toggle SYMBOL's truthiness and message the new value."
 
  (wg-fontified-message
 
    (:cmd (format "%s: " symbol))
 
    (:msg (format "%s" (wg-toggle symbol)))))
 

	
 
(defun wg-toggle-buffer-list-filtration ()
 
  "Toggle `wg-buffer-list-filtration-on'."
 
  (interactive)
 
  (wg-toggle-and-message 'wg-buffer-list-filtration-on))
 

	
 
(defun wg-toggle-mode-line-display ()
 
  "Toggle `wg-mode-line-display-on'."
 
  (interactive)
 
  (wg-toggle-and-message 'wg-mode-line-display-on))
 

	
 

	
 

	
 
;;; echo commands
 

	
 
(defun wg-echo-current-workgroup ()
 
  "Display the name of the current workgroup in the echo area."
 
  (interactive)
 
  (wg-fontified-message
 
    (:cmd "Current: ")
 
    (:cur (wg-workgroup-name (wg-current-workgroup)))))
 

	
 
(defun wg-echo-all-workgroups ()
 
  "Display the names of all workgroups in the echo area."
 
  (interactive)
 
  (wg-fontified-message
 
    (:cmd "Workgroups: ")
 
    (wg-workgroup-list-display)))
 

	
 

	
 
;;; help commands
 

	
 
(defun wg-help ()
 
  "Just call `apropos-command' on \"^wg-\".
 
There used to be a bunch of help-buffer construction stuff here,
 
including a `wg-help' variable that basically duplicated every
 
command's docstring;  But why, when there's `apropos-command'?"
 
  (interactive)
 
  (apropos-command "^wg-"))
 

	
 

	
 
(require 'workgroups-commands-minibuffer)
 

	
 
(provide 'workgroups-commands)
src/workgroups-keys.el
Show inline comments
 
;;; workgroups.keys.el --- Set default workgroups keys
 
;;; Commentary:
 
;;; Code:
 

	
 
(require 'workgroups-variables)
 

	
 
(defvar wg-prefixed-map
 
  (wg-fill-keymap
 
   (make-sparse-keymap)
 

	
 

	
 
   ;; workgroup creation
 

	
 
   (kbd "C-c")        'wg-create-workgroup
 
   (kbd "c")          'wg-create-workgroup
 
   (kbd "C")          'wg-clone-workgroup
 

	
 

	
 
   ;; killing and yanking
 

	
 
   (kbd "C-k")        'wg-kill-workgroup
 
   (kbd "k")          'wg-kill-workgroup
 
   (kbd "M-W")        'wg-kill-ring-save-base-wconfig
 
   (kbd "M-w")        'wg-kill-ring-save-working-wconfig
 
   (kbd "C-y")        'wg-yank-wconfig
 
   (kbd "y")          'wg-yank-wconfig
 
   (kbd "M-k")        'wg-kill-workgroup-and-buffers
 
   (kbd "K")          'wg-delete-other-workgroups
 

	
 

	
 
   ;; updating and reverting
 

	
 
   (kbd "C-r")        'wg-revert-workgroup
 
   (kbd "r")          'wg-revert-workgroup
 
   (kbd "C-S-r")      'wg-revert-all-workgroups
 
   (kbd "R")          'wg-revert-all-workgroups
 

	
 

	
 
   ;; workgroup switching
 

	
 
   (kbd "C-'")        'wg-switch-to-workgroup
 
   (kbd "'")          'wg-switch-to-workgroup
 
   (kbd "C-v")        'wg-switch-to-workgroup
 
   (kbd "v")          'wg-switch-to-workgroup
 
   (kbd "M-v")        'wg-switch-to-workgroup-other-frame
 
   (kbd "C-j")        'wg-switch-to-workgroup-at-index
 
   (kbd "j")          'wg-switch-to-workgroup-at-index
 
   (kbd "0")          'wg-switch-to-workgroup-at-index-0
 
   (kbd "1")          'wg-switch-to-workgroup-at-index-1
 
   (kbd "2")          'wg-switch-to-workgroup-at-index-2
 
   (kbd "3")          'wg-switch-to-workgroup-at-index-3
 
   (kbd "4")          'wg-switch-to-workgroup-at-index-4
 
   (kbd "5")          'wg-switch-to-workgroup-at-index-5
 
   (kbd "6")          'wg-switch-to-workgroup-at-index-6
 
   (kbd "7")          'wg-switch-to-workgroup-at-index-7
 
   (kbd "8")          'wg-switch-to-workgroup-at-index-8
 
   (kbd "9")          'wg-switch-to-workgroup-at-index-9
 
   (kbd "C-p")        'wg-switch-to-workgroup-left
 
   (kbd "p")          'wg-switch-to-workgroup-left
 
   (kbd "C-n")        'wg-switch-to-workgroup-right
 
   (kbd "n")          'wg-switch-to-workgroup-right
 
   (kbd "M-p")        'wg-switch-to-workgroup-left-other-frame
 
   (kbd "M-n")        'wg-switch-to-workgroup-right-other-frame
 
   (kbd "C-a")        'wg-switch-to-previous-workgroup
 
   (kbd "a")          'wg-switch-to-previous-workgroup
 

	
 

	
 
   ;; wconfig undo/redo
 

	
 
   (kbd "<left>")     'wg-undo-wconfig-change
 
   (kbd "<right>")    'wg-redo-wconfig-change
 
   (kbd "[")          'wg-undo-wconfig-change
 
   (kbd "]")          'wg-redo-wconfig-change
 
   (kbd "{")          'wg-undo-once-all-workgroups
 
   (kbd "}")          'wg-redo-once-all-workgroups
 

	
 

	
 
   ;; wconfig save/restore
 

	
 
   ;; FIXME: come up with better keys for these:
 
   (kbd "C-d C-s")    'wg-save-wconfig
 
   (kbd "C-d C-'")    'wg-restore-saved-wconfig
 
   (kbd "C-d C-k")    'wg-kill-saved-wconfig
 

	
 

	
 
   ;; buffer-list
 

	
 
   (kbd "+")          'wg-associate-buffer-with-workgroup
 
   (kbd "~")          'wg-associate-visible-buffers-with-workgroup
 
   (kbd "-")          'wg-dissociate-buffer-from-workgroup
 
   (kbd "=")          'wg-cycle-buffer-association-type
 
   (kbd "*")          'wg-restore-workgroup-associated-buffers
 
   (kbd "_")          'wg-dissociate-weakly-associated-buffers
 
   (kbd "(")          'wg-next-buffer
 
   (kbd ")")          'wg-previous-buffer
 

	
 

	
 
   ;; workgroup movement
 

	
 
   (kbd "C-x")        'wg-swap-workgroups
 
   (kbd "C-,")        'wg-offset-workgroup-left
 
   (kbd "C-.")        'wg-offset-workgroup-right
 

	
 

	
 
   ;; file and buffer
 

	
 
   (kbd "C-s")        'wg-save-session
 
   (kbd "C-w")        'wg-write-session-file
 
   (kbd "C-f")        'wg-find-session-file
 
   (kbd "F")          'wg-find-file-in-new-workgroup
 
   (kbd "M-F")        'wg-find-file-read-only-in-new-workgroup
 
   (kbd "d")          'wg-dired-in-new-workgroup
 
   (kbd "C-b")        'wg-switch-to-buffer
 
   (kbd "b")          'wg-switch-to-buffer
 

	
 

	
 
   ;; window moving and frame reversal
 

	
 
   (kbd "<")          'wg-backward-transpose-window
 
   (kbd ">")          'wg-transpose-window
 
   (kbd "|")          'wg-reverse-frame-horizontally
 
   (kbd "\\")         'wg-reverse-frame-vertically
 
   (kbd "/")          'wg-reverse-frame-horizontally-and-vertically
 

	
 

	
 
   ;; toggling
 

	
 
   (kbd "C-t C-m")    'wg-toggle-mode-line-display
 
   (kbd "C-t C-b")    'wg-toggle-buffer-list-filtration
 
   (kbd "C-t C-d")    'wg-toggle-window-dedicated-p
 

	
 

	
 
   ;; echoing
 

	
 
   (kbd "S-C-e")      'wg-echo-current-workgroup
 
   (kbd "E")          'wg-echo-current-workgroup
 
   (kbd "C-e")        'wg-echo-all-workgroups
 
   (kbd "e")          'wg-echo-all-workgroups
 

	
 
   ;; misc
 

	
 
   (kbd "A")          'wg-rename-workgroup
 
   (kbd "!")          'wg-reset
 
   (kbd "?")          'wg-help
 

	
 
   )
 
  "The keymap that sits on `wg-prefix-key'.")
 

	
 
(defun wg-make-workgroups-mode-map ()
 
  "Return Workgroups' minor-mode-map.
 
This map includes `wg-prefixed-map' on `wg-prefix-key', as well
 
as Workgroups' command remappings."
 
  (let ((map (make-sparse-keymap)))
 
    (define-key map wg-prefix-key
 
      wg-prefixed-map)
 
    (when wg-remap-switch-to-buffer
 
      (define-key map [remap switch-to-buffer]
 
        'wg-switch-to-buffer))
 
    (when wg-remap-switch-to-buffer-other-window
 
      (define-key map [remap switch-to-buffer-other-window]
 
        'wg-switch-to-buffer-other-window))
 
    (when wg-remap-switch-to-buffer-other-frame
 
      (define-key map [remap switch-to-buffer-other-frame]
 
        'wg-switch-to-buffer-other-frame))
 
    (when wg-remap-next-buffer
 
      (define-key map [remap next-buffer]
 
        'wg-next-buffer))
 
    (when wg-remap-previous-buffer
 
      (define-key map [remap previous-buffer]
 
        'wg-previous-buffer))
 
    (when wg-remap-kill-buffer
 
      (define-key map [remap kill-buffer]
 
        'wg-kill-buffer))
 
    (when wg-remap-display-buffer
 
      (define-key map [remap display-buffer]
 
        'wg-display-buffer))
 
    (when wg-remap-insert-buffer
 
      (define-key map [remap insert-buffer]
 
        'wg-insert-buffer))
 
    (cond ((eq wg-remap-bury-buffer 'banish)
 
           (define-key map [remap bury-buffer]
 
             'wg-banish-buffer))
 
          (wg-remap-bury-buffer
 
           (define-key map [remap bury-buffer]
 
             'wg-bury-buffer)))
 
    (setq workgroups-mode-map map)))
 

	
 
(defvar wg-minibuffer-mode-map
 
  (wg-fill-keymap
 
   (make-sparse-keymap)
 
   (kbd "C-b")       'wg-backward-char-or-next-buffer-list-filter
 
   (kbd "C-c n")     'wg-next-buffer-list-filter
 
   (kbd "C-c C-n")   'wg-next-buffer-list-filter
 
   (kbd "C-S-b")     'wg-backward-char-or-previous-buffer-list-filter
 
   (kbd "C-c p")     'wg-previous-buffer-list-filter
 
   (kbd "C-c C-p")   'wg-previous-buffer-list-filter
 
   (kbd "C-c a")     'wg-associate-first-match
 
   (kbd "C-c C-a")   'wg-associate-first-match
 
   (kbd "C-c d")     'wg-dissociate-first-match
 
   (kbd "C-c C-d")   'wg-dissociate-first-match
 
   (kbd "C-c _")     'wg-minibuffer-mode-dissociate-weakly-associated-buffers
 
   )
 
  "`wg-minibuffer-mode's keymap.")
 

	
 

	
 
(provide 'workgroups-keys)
 
;;; workgroups-keys.el ends here
0 comments (0 inline, 0 general)