(provide "arrange-line")
(defun arrange-center-line (&optional (arg 0))
(interactive "*")
(save-excursion
(goto-bol)
(delete-region (point)
(progn
(skip-chars-forward " \t ")
(point)))
(goto-eol)
(delete-region (point)
(progn
(skip-chars-backward " \t ")
(point)))
(unless (eq arg 1)
(let ((n (- fill-column (current-column))))
(when (zerop arg)
(setq n (truncate n 2)))
(when (plusp n)
(goto-bol)
(or (eolp)
(indent-to n)))))
(untabify (progn (goto-eol) (point))
(progn (goto-bol) (point)))))
(defun arrange-left-line ()
(interactive "*")
(arrange-center-line 1))
(defun arrange-right-line ()
(interactive "*")
(arrange-center-line 2))
(defun arrange-center-selection (&optional (arg 0))
(interactive "*")
(save-restriction
(selection-start-end (start end)
(narrow-to-region start end)
(goto-char (point-min))
(while (not (eobp))
(case arg
(0 (arrange-center-line))
(1 (arrange-left-line))
(2 (arrange-right-line)))
(goto-bol)
(unless (forward-line 1)
(return))))))
(defun arrange-left-selection ()
(interactive "*")
(arrange-center-selection 1))
(defun arrange-right-selection ()
(interactive "*")
(arrange-center-selection 2))
(defun arrange-tool-bar-update ()
(when buffer-read-only :disable))
(defun arrange-tool-bar ()
(create-tool-bar 'arrange-tool-bar
(merge-pathnames "toolbar.bmp" (etc-path))
'(("左揃え" 33 arrange-left-line arrange-tool-bar-update)
("中央揃え" 35 arrange-center-line arrange-tool-bar-update)
("右揃え" 32 arrange-right-line arrange-tool-bar-update))))
(define-command-bar 'arrange-tool-bar "arranges(&A)")
(defun arrange-uninstall-tool-bar ()
(delete-command-bar 'arrange-tool-bar))