Changeset 6772
- Timestamp:
- Jun 20, 2007, 11:32:47 AM (17 years ago)
- File:
-
- 1 edited
-
branches/ide-1.0/ccl/hemlock/src/lispmode.lisp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ide-1.0/ccl/hemlock/src/lispmode.lisp
r6704 r6772 858 858 (defindent "ccase" 1) 859 859 (defindent "compiler-let" 1) 860 (defindent "cond" 0) 860 861 (defindent "ctypecase" 1) 861 862 (defindent "defconstant" 1) … … 965 966 ;;; 966 967 (defindent "with-slots" 1) 967 (defindent "with-slots*" 2) ; obsolete968 968 (defindent "with-accessors" 2) 969 (defindent "with-accessors*" 2) ; obsolete970 969 (defindent "defclass" 2) 971 970 (defindent "print-unreadable-object" 1) 971 (defindent "defmethod" 2) 972 972 973 973 ;;; System forms. … … 984 984 985 985 ;;; LISP-INDENTATION -- Internal Interface. 986 987 (defun strip-package-prefix (string) 988 (let* ((p (position #\: string :from-end t))) 989 (if p 990 (subseq string (1+ p)) 991 string))) 986 992 ;;; 987 993 (defun lisp-indentation (mark) … … 1006 1012 (with-mark ((fstart m)) 1007 1013 (scan-char m :lisp-syntax (not :constituent)) 1008 (let* ((fname (nstring-upcase (region-to-string (region fstart m)))) 1014 (let* ((fname (nstring-upcase 1015 (strip-package-prefix (region-to-string (region fstart m))))) 1009 1016 (special-args (or (gethash fname *special-forms*) 1010 1017 (and (> (length fname) 2) … … 1716 1723 (defmode "Lisp" :major-p t :setup-function 'setup-lisp-mode) 1717 1724 1725 1726 (defun buffer-first-in-package-form (buffer) 1727 "Returns the package name referenced in the first apparent IN-PACKAGE 1728 form in buffer, or NIL if it can't find an IN-PACKAGE." 1729 (let* ((pattern (new-search-pattern :string-insensitive :forward "in-package" nil)) 1730 (mark (copy-mark (buffer-start-mark buffer)))) 1731 (with-mark ((start mark) 1732 (end mark)) 1733 (loop 1734 (unless (find-pattern mark pattern) 1735 (return)) 1736 (pre-command-parse-check mark) 1737 (when (valid-spot mark t) 1738 (move-mark end mark) 1739 (when (form-offset end 1) 1740 (move-mark start end) 1741 (when (backward-up-list start) 1742 (when (scan-char start :lisp-syntax :constituent) 1743 (let* ((s (nstring-upcase (region-to-string (region start end)))) 1744 (*package* (find-package "CL-USER"))) 1745 (unless (eq (ignore-errors (values (read-from-string s))) 1746 'in-package) 1747 (return))) 1748 (unless (form-offset end 1) (return)) 1749 (move-mark start end) 1750 (form-offset start -1) 1751 (let* ((pkgname (ignore-errors (values (read-from-string (region-to-string (region start end))))))) 1752 (return 1753 (if pkgname 1754 (values (ignore-errors (string pkgname)))))))))))))) 1755 1756 (defun ensure-buffer-package (buffer) 1757 (or (variable-value 'current-package :buffer buffer) 1758 (setf (variable-value 'current-package :buffer buffer) 1759 (buffer-first-in-package-form buffer)))) 1760 1761 1762 1763 1718 1764 (defun setup-lisp-mode (buffer) 1719 1765 (unless (hemlock-bound-p 'current-package :buffer buffer) … … 1721 1767 "The package used for evaluation of Lisp in this buffer." 1722 1768 :buffer buffer 1723 :value "CL-USER"1769 :value nil 1724 1770 :hooks (list 'package-name-change-hook)))) 1725 1771 … … 1801 1847 (return nil))))))))) 1802 1848 1849 (defcommand "Set Package Name" (p) 1850 (variable-value 'current-package :buffer buffer) 1803 1851
Note:
See TracChangeset
for help on using the changeset viewer.
