Mercurial > hg > xemacs-beta
comparison lisp/viper/viper-ex.el @ 163:0132846995bd r20-3b8
Import from CVS: tag r20-3b8
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:43:35 +0200 |
parents | cf808b4c4290 |
children | 2d532a89d707 |
comparison
equal
deleted
inserted
replaced
162:4de2936b4e77 | 163:0132846995bd |
---|---|
32 (defvar vip-related-files-and-buffers-ring) | 32 (defvar vip-related-files-and-buffers-ring) |
33 (defvar vip-local-search-start-marker) | 33 (defvar vip-local-search-start-marker) |
34 (defvar vip-expert-level) | 34 (defvar vip-expert-level) |
35 (defvar vip-custom-file-name) | 35 (defvar vip-custom-file-name) |
36 (defvar vip-case-fold-search) | 36 (defvar vip-case-fold-search) |
37 | 37 (defvar explicit-shell-file-name) |
38 (eval-when-compile | 38 |
39 (let ((load-path (cons (expand-file-name ".") load-path))) | 39 ;; loading happens only in non-interactive compilation |
40 (or (featurep 'viper-util) | 40 ;; in order to spare non-viperized emacs from being viperized |
41 (load "viper-util.el" nil nil 'nosuffix)) | 41 (if noninteractive |
42 (or (featurep 'viper-keym) | 42 (eval-when-compile |
43 (load "viper-keym.el" nil nil 'nosuffix)) | 43 (let ((load-path (cons (expand-file-name ".") load-path))) |
44 (or (featurep 'viper) | 44 (or (featurep 'viper-util) |
45 (load "viper.el" nil nil 'nosuffix)) | 45 (load "viper-util.el" nil nil 'nosuffix)) |
46 )) | 46 (or (featurep 'viper-keym) |
47 (load "viper-keym.el" nil nil 'nosuffix)) | |
48 (or (featurep 'viper-cmd) | |
49 (load "viper-cmd.el" nil nil 'nosuffix)) | |
50 ))) | |
47 ;; end pacifier | 51 ;; end pacifier |
48 | 52 |
49 (require 'viper-util) | 53 (require 'viper-util) |
50 | 54 |
51 | 55 |
71 ("chdir") ("cd") ("Buffer") ("buffer") ("args")) ) | 75 ("chdir") ("cd") ("Buffer") ("buffer") ("args")) ) |
72 | 76 |
73 ;; A-list of Ex variables that can be set using the :set command. | 77 ;; A-list of Ex variables that can be set using the :set command. |
74 (defconst ex-variable-alist | 78 (defconst ex-variable-alist |
75 '(("wrapscan") ("ws") ("wrapmargin") ("wm") | 79 '(("wrapscan") ("ws") ("wrapmargin") ("wm") |
76 ("global-tabstop") ("gts") ("tabstop") ("ts") | 80 ("tabstop-global") ("ts-g") ("tabstop") ("ts") |
77 ("showmatch") ("sm") ("shiftwidth") ("sw") ("shell") ("sh") | 81 ("showmatch") ("sm") ("shiftwidth") ("sw") ("shell") ("sh") |
78 ("readonly") ("ro") | 82 ("readonly") ("ro") |
79 ("nowrapscan") ("nows") ("noshowmatch") ("nosm") | 83 ("nowrapscan") ("nows") ("noshowmatch") ("nosm") |
80 ("noreadonly") ("noro") ("nomagic") ("noma") | 84 ("noreadonly") ("noro") ("nomagic") ("noma") |
81 ("noignorecase") ("noic") | 85 ("noignorecase") ("noic") |
82 ("global-noautoindent") ("gnoai") ("noautoindent") ("noai") | 86 ("noautoindent-global") ("noai-g") ("noautoindent") ("noai") |
83 ("magic") ("ma") ("ignorecase") ("ic") | 87 ("magic") ("ma") ("ignorecase") ("ic") |
84 ("global-autoindent") ("gai") ("autoindent") ("ai") | 88 ("autoindent-global") ("ai-g") ("autoindent") ("ai") |
89 ("all") | |
85 )) | 90 )) |
86 | 91 |
87 | 92 |
88 | 93 |
89 ;; Token recognized during parsing of Ex commands (e.g., "read", "comma") | 94 ;; Token recognized during parsing of Ex commands (e.g., "read", "comma") |
1559 (or batch (sit-for 2)) | 1564 (or batch (sit-for 2)) |
1560 | 1565 |
1561 (while (string-match "^[ \\t\\n]*$" | 1566 (while (string-match "^[ \\t\\n]*$" |
1562 (setq str | 1567 (setq str |
1563 (completing-read ":set " ex-variable-alist))) | 1568 (completing-read ":set " ex-variable-alist))) |
1564 (message ":set <Variable> ") | 1569 (message ":set <Variable> [= <Value>]") |
1565 ;; if there are unread events, don't wait | 1570 ;; if there are unread events, don't wait |
1566 (or (vip-set-unread-command-events "") (sit-for 2)) | 1571 (or (vip-set-unread-command-events "") (sit-for 2)) |
1567 ) ; while | 1572 ) ; while |
1568 str)) | 1573 str)) |
1569 | 1574 |
1577 (delete-turn-on-auto-fill-pattern | 1582 (delete-turn-on-auto-fill-pattern |
1578 "([ \t]*add-hook[ \t]+'vip-insert-state-hooks[ \t]+'turn-on-auto-fill.*)") | 1583 "([ \t]*add-hook[ \t]+'vip-insert-state-hooks[ \t]+'turn-on-auto-fill.*)") |
1579 actual-lisp-cmd lisp-cmd-del-pattern | 1584 actual-lisp-cmd lisp-cmd-del-pattern |
1580 val2 orig-var) | 1585 val2 orig-var) |
1581 (setq orig-var var) | 1586 (setq orig-var var) |
1582 (cond ((member var '("ai" "autoindent")) | 1587 (cond ((string= var "all") |
1588 (setq ask-if-save nil | |
1589 set-cmd nil)) | |
1590 ((member var '("ai" "autoindent")) | |
1583 (setq var "vip-auto-indent" | 1591 (setq var "vip-auto-indent" |
1584 set-cmd "setq" | 1592 set-cmd "setq" |
1585 ask-if-save nil | 1593 ask-if-save nil |
1586 val "t")) | 1594 val "t")) |
1587 ((member var '("gai" "global-autoindent")) | 1595 ((member var '("ai-g" "autoindent-global")) |
1588 (kill-local-variable 'vip-auto-indent) | 1596 (kill-local-variable 'vip-auto-indent) |
1589 (setq var "vip-auto-indent" | 1597 (setq var "vip-auto-indent" |
1590 set-cmd "setq-default" | 1598 set-cmd "setq-default" |
1591 val "t")) | 1599 val "t")) |
1592 ((member var '("noai" "noautoindent")) | 1600 ((member var '("noai" "noautoindent")) |
1593 (setq var "vip-auto-indent" | 1601 (setq var "vip-auto-indent" |
1594 ask-if-save nil | 1602 ask-if-save nil |
1595 val "nil")) | 1603 val "nil")) |
1596 ((member var '("gnoai" "global-noautoindent")) | 1604 ((member var '("noai-g" "noautoindent-global")) |
1597 (kill-local-variable 'vip-auto-indent) | 1605 (kill-local-variable 'vip-auto-indent) |
1598 (setq var "vip-auto-indent" | 1606 (setq var "vip-auto-indent" |
1599 set-cmd "setq-default" | 1607 set-cmd "setq-default" |
1600 val "nil")) | 1608 val "nil")) |
1601 ((member var '("ic" "ignorecase")) | 1609 ((member var '("ic" "ignorecase")) |
1605 (setq var "vip-case-fold-search" | 1613 (setq var "vip-case-fold-search" |
1606 val "nil")) | 1614 val "nil")) |
1607 ((member var '("ma" "magic")) | 1615 ((member var '("ma" "magic")) |
1608 (setq var "vip-re-search" | 1616 (setq var "vip-re-search" |
1609 val "t")) | 1617 val "t")) |
1610 ((member var '("noma" "nomagic")) | 1618 ((member var '("noma" "nomagic")) |
1611 (setq var "vip-re-search" | 1619 (setq var "vip-re-search" |
1612 val "nil")) | 1620 val "nil")) |
1613 ((member var '("ro" "readonly")) | 1621 ((member var '("ro" "readonly")) |
1614 (setq var "buffer-read-only" | 1622 (setq var "buffer-read-only" |
1615 val "t")) | 1623 val "t")) |
1626 (setq var "vip-search-wrap-around-t" | 1634 (setq var "vip-search-wrap-around-t" |
1627 val "t")) | 1635 val "t")) |
1628 ((member var '("nows" "nowrapscan")) | 1636 ((member var '("nows" "nowrapscan")) |
1629 (setq var "vip-search-wrap-around-t" | 1637 (setq var "vip-search-wrap-around-t" |
1630 val "nil"))) | 1638 val "nil"))) |
1631 (if (eq val 0) ; value must be set by the user | 1639 (if (and set-cmd (eq val 0)) ; value must be set by the user |
1632 (let ((cursor-in-echo-area t)) | 1640 (let ((cursor-in-echo-area t)) |
1633 (message ":set %s = <Value>" var) | 1641 (message ":set %s = <Value>" var) |
1634 ;; if there are unread events, don't wait | 1642 ;; if there are unread events, don't wait |
1635 (or (vip-set-unread-command-events "") (sit-for 2)) | 1643 (or (vip-set-unread-command-events "") (sit-for 2)) |
1636 (setq val (read-string (format ":set %s = " var))) | 1644 (setq val (read-string (format ":set %s = " var))) |
1638 | 1646 |
1639 ;; check numerical values | 1647 ;; check numerical values |
1640 (if (member var | 1648 (if (member var |
1641 '("sw" "shiftwidth" | 1649 '("sw" "shiftwidth" |
1642 "ts" "tabstop" | 1650 "ts" "tabstop" |
1643 "gts" "global-tabstop" | 1651 "ts-g" "tabstop-global" |
1644 "wm" "wrapmargin")) | 1652 "wm" "wrapmargin")) |
1645 (condition-case nil | 1653 (condition-case nil |
1646 (or (numberp (setq val2 (car (read-from-string val)))) | 1654 (or (numberp (setq val2 (car (read-from-string val)))) |
1647 (error "%s: Invalid value, numberp, %S" var val)) | 1655 (error "%s: Invalid value, numberp, %S" var val)) |
1648 (error | 1656 (error |
1654 ((member var '("ts" "tabstop")) | 1662 ((member var '("ts" "tabstop")) |
1655 ;; make it take effect in curr buff and new bufs | 1663 ;; make it take effect in curr buff and new bufs |
1656 (setq var "tab-width" | 1664 (setq var "tab-width" |
1657 set-cmd "setq" | 1665 set-cmd "setq" |
1658 ask-if-save nil)) | 1666 ask-if-save nil)) |
1659 ((member var '("gts" "global-tabstop")) | 1667 ((member var '("ts-g" "tabstop-global")) |
1660 (kill-local-variable 'tab-width) | 1668 (kill-local-variable 'tab-width) |
1661 (setq var "tab-width" | 1669 (setq var "tab-width" |
1662 set-cmd "setq-default")) | 1670 set-cmd "setq-default")) |
1663 ((member var '("wm" "wrapmargin")) | 1671 ((member var '("wm" "wrapmargin")) |
1664 ;; make it take effect in curr buff and new bufs | 1672 ;; make it take effect in curr buff and new bufs |
1669 ((member var '("sh" "shell")) | 1677 ((member var '("sh" "shell")) |
1670 (setq var "explicit-shell-file-name" | 1678 (setq var "explicit-shell-file-name" |
1671 val (format "\"%s\"" val))))) | 1679 val (format "\"%s\"" val))))) |
1672 (ex-fixup-history "set" orig-var)) | 1680 (ex-fixup-history "set" orig-var)) |
1673 | 1681 |
1674 (setq actual-lisp-cmd (format "\n(%s %s %s) %s" | 1682 (if set-cmd |
1675 set-cmd var val auto-cmd-label)) | 1683 (setq actual-lisp-cmd |
1676 (setq lisp-cmd-del-pattern | 1684 (format "\n(%s %s %s) %s" set-cmd var val auto-cmd-label) |
1677 (format "^\n?[ \t]*([ \t]*%s[ \t]+%s[ \t].*)[ \t]*%s" | 1685 lisp-cmd-del-pattern |
1678 set-cmd var auto-cmd-label)) | 1686 (format "^\n?[ \t]*([ \t]*%s[ \t]+%s[ \t].*)[ \t]*%s" |
1687 set-cmd var auto-cmd-label))) | |
1679 | 1688 |
1680 (if (and ask-if-save | 1689 (if (and ask-if-save |
1681 (y-or-n-p (format "Do you want to save this setting in %s " | 1690 (y-or-n-p (format "Do you want to save this setting in %s " |
1682 vip-custom-file-name))) | 1691 vip-custom-file-name))) |
1683 (progn | 1692 (progn |
1700 ;; del pattern | 1709 ;; del pattern |
1701 lisp-cmd-del-pattern) | 1710 lisp-cmd-del-pattern) |
1702 )) | 1711 )) |
1703 )) | 1712 )) |
1704 | 1713 |
1705 (message "%s %s %s" set-cmd var (if (string-match "^[ \t]*$" val) | 1714 (if set-cmd |
1706 (format "%S" val) | 1715 (message "%s %s %s" |
1707 val)) | 1716 set-cmd var |
1708 (eval (car (read-from-string actual-lisp-cmd))) | 1717 (if (string-match "^[ \t]*$" val) |
1709 (if (string= var "fill-column") | 1718 (format "%S" val) |
1710 (if (> val2 0) | 1719 val))) |
1711 (auto-fill-mode 1) | 1720 (if actual-lisp-cmd |
1712 (auto-fill-mode -1))) | 1721 (eval (car (read-from-string actual-lisp-cmd)))) |
1713 | 1722 (if (string= var "fill-column") |
1723 (if (> val2 0) | |
1724 (auto-fill-mode 1) | |
1725 (auto-fill-mode -1))) | |
1726 (if (string= var "all") (ex-show-vars)) | |
1714 )) | 1727 )) |
1715 | 1728 |
1716 ;; In inline args, skip regex-forw and (optionally) chars-back. | 1729 ;; In inline args, skip regex-forw and (optionally) chars-back. |
1717 ;; Optional 3d arg is a string that should replace ' ' to prevent its | 1730 ;; Optional 3d arg is a string that should replace ' ' to prevent its |
1718 ;; special meaning | 1731 ;; special meaning |
2072 "\n\n\nPress any key to continue...\n\n"))) | 2085 "\n\n\nPress any key to continue...\n\n"))) |
2073 (vip-read-event) | 2086 (vip-read-event) |
2074 (kill-buffer " *vip-info*"))) | 2087 (kill-buffer " *vip-info*"))) |
2075 )) | 2088 )) |
2076 | 2089 |
2090 ;; display all variables set through :set | |
2091 (defun ex-show-vars () | |
2092 (with-output-to-temp-buffer " *vip-info*" | |
2093 (princ (if vip-auto-indent | |
2094 "autoindent (local)\n" "noautoindent (local)\n")) | |
2095 (princ (if (default-value 'vip-auto-indent) | |
2096 "autoindent (global) \n" "noautoindent (global) \n")) | |
2097 (princ (if vip-case-fold-search "ignorecase\n" "noignorecase\n")) | |
2098 (princ (if vip-re-search "magic\n" "nomagic\n")) | |
2099 (princ (if buffer-read-only "readonly\n" "noreadonly\n")) | |
2100 (princ (if blink-matching-paren "showmatch\n" "noshowmatch\n")) | |
2101 (princ (if vip-search-wrap-around-t "wrapscan\n" "nowrapscan\n")) | |
2102 (princ (format "shiftwidth \t\t= %S\n" vip-shift-width)) | |
2103 (princ (format "tabstop (local) \t= %S\n" tab-width)) | |
2104 (princ (format "tabstop (global) \t= %S\n" (default-value 'tab-width))) | |
2105 (princ (format "wrapmargin (local) \t= %S\n" | |
2106 (- (window-width) fill-column))) | |
2107 (princ (format "wrapmargin (global) \t= %S\n" | |
2108 (- (window-width) (default-value 'fill-column)))) | |
2109 (princ (format "shell \t\t\t= %S\n" (if (boundp 'explicit-shell-file-name) | |
2110 explicit-shell-file-name | |
2111 'none))) | |
2112 )) | |
2113 | |
2114 | |
2115 | |
2116 | |
2077 | 2117 |
2078 ;;; viper-ex.el ends here | 2118 ;;; viper-ex.el ends here |