Commit 81f65db4 authored by Raymond Toy's avatar Raymond Toy
Browse files

Merge branch 'master' into file-attribute

parents 7ed74511 8a9d1d8d
......@@ -4944,7 +4944,7 @@ The result is a symbol or nil if the routine cannot be found."
(error (intl:gettext "Cannot set breakpoints for editor when ~
there is no start positions map.")))
local-tlf-offset)))
(with-open-file (f name)
(with-open-file (f name :external-format (c::debug-source-info d-source))
(cond
((= (debug-source-created d-source) (file-write-date name))
(file-position f char-offset))
......
......@@ -1486,7 +1486,7 @@ See the CMU Common Lisp User's Manual for more information.
(when *cached-source-stream* (close *cached-source-stream*))
(setq *cached-source-stream*
(open name :if-does-not-exist nil
:external-format (or (c::debug-source-info d-source) :default)))
:external-format (c::debug-source-info d-source)))
(unless *cached-source-stream*
(error (intl:gettext "Source file no longer exists:~% ~A.") (namestring name)))
(format t (intl:gettext "~%; File: ~A~%") (namestring name)))
......
......@@ -1985,6 +1985,12 @@
;;;; Creation routines (MAKE-FD-STREAM and OPEN)
;; The unicode version of this is in fd-stream-extfmt.lisp
#-(and unicode (not unicode-boootstrap))
(defun %set-fd-stream-external-format (stream extfmt &optional (updatep t))
(declare (ignore stream extfmt updatep))
(values))
;;; MAKE-FD-STREAM -- Public.
;;;
;;; Returns a FD-STREAM on the given file.
......
......@@ -1153,7 +1153,7 @@
(:block-compile (member t nil :specified))
(:entry-points list)
(:byte-compile (member t nil :maybe))
(:external-format symbol)
(:external-format (or symbol list))
(:decoding-error (or null symbol function))
(:xref t))
(values (or pathname null) boolean boolean))
......
......@@ -2570,7 +2570,7 @@
(when (vm:primitive-object-header obj)
(format t " lispobj header;~%"))
(dolist (slot (vm:primitive-object-slots obj))
(format t " ~A ~A~@[[1]~];~%"
(format t " ~A ~A~@[[]~];~%"
(getf (vm:slot-options slot) :c-type "lispobj")
(nsubstitute #\_ #\-
(string-downcase (string (vm:slot-name slot))))
......
......@@ -1210,11 +1210,10 @@
(if (atom form)
(convert-and-maybe-compile form path)
(case (car form)
((make-package shadow shadowing-import export
unexport use-package unuse-package import
old-in-package %in-package %defpackage)
((%in-package %defpackage)
(process-cold-load-form form path t))
((error cerror break signal)
((error cerror break signal make-package use-package unuse-package shadow
shadowing-import export unexport import)
(process-cold-load-form form path nil))
(kernel:%compiler-defstruct
(convert-and-maybe-compile form path)
......
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
;;; This is ASDF 2.21: Another System Definition Facility.
;;; This is ASDF 2.22: Another System Definition Facility.
;;;
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel@common-lisp.net>.
......@@ -116,7 +116,7 @@
;; "2.345.6" would be a development version in the official upstream
;; "2.345.0.7" would be your seventh local modification of official release 2.345
;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
(asdf-version "2.21")
(asdf-version "2.22")
(existing-asdf (find-class 'component nil))
(existing-version *asdf-version*)
(already-there (equal asdf-version existing-version)))
......@@ -1343,7 +1343,7 @@ processed in order by OPERATE."))
:initarg :if-component-dep-fails
:accessor module-if-component-dep-fails)
(default-component-class
:initform *default-component-class*
:initform nil
:initarg :default-component-class
:accessor module-default-component-class)))
......@@ -2788,6 +2788,11 @@ details."
directory-pathname
(default-directory))))
(defun* find-class* (x &optional (errorp t) environment)
(etypecase x
((or standard-class built-in-class) x)
(symbol (find-class x errorp environment))))
(defun* class-for-type (parent type)
(or (loop :for symbol :in (list
type
......@@ -2799,8 +2804,10 @@ details."
class (find-class 'component)))
:return class)
(and (eq type :file)
(or (and parent (module-default-component-class parent))
(find-class *default-component-class*)))
(find-class*
(or (loop :for module = parent :then (component-parent module) :while module
:thereis (module-default-component-class module))
*default-component-class*) nil))
(sysdef-error "don't recognize component type ~A" type)))
(defun* maybe-add-tree (tree op1 op2 c)
......@@ -2886,7 +2893,7 @@ Returns the new tree (which probably shares structure with the old one)"
(type name &rest rest &key
;; the following list of keywords is reproduced below in the
;; remove-keys form. important to keep them in sync
components pathname default-component-class
components pathname
perform explain output-files operation-done-p
weakly-depends-on depends-on serial in-order-to
do-first
......@@ -2913,7 +2920,7 @@ Returns the new tree (which probably shares structure with the old one)"
:pathname pathname
:parent parent
(remove-keys
'(components pathname default-component-class
'(components pathname
perform explain output-files operation-done-p
weakly-depends-on depends-on serial in-order-to)
rest)))
......@@ -2927,10 +2934,6 @@ Returns the new tree (which probably shares structure with the old one)"
(setf ret (apply 'make-instance (class-for-type parent type) args)))
(component-pathname ret) ; eagerly compute the absolute pathname
(when (typep ret 'module)
(setf (module-default-component-class ret)
(or default-component-class
(and (typep parent 'module)
(module-default-component-class parent))))
(let ((*serial-depends-on* nil))
(setf (module-components ret)
(loop
......@@ -3687,7 +3690,7 @@ Please remove it from your ASDF configuration"))
#+sbcl ,(let ((h (getenv "SBCL_HOME")))
(when (plusp (length h)) `((,(truenamize h) ,*wild-inferiors*) ())))
;; The below two are not needed: no precompiled ASDF system there
;; #+ecl (,(translate-logical-pathname "SYS:**;*.*") ())
#+ecl (,(translate-logical-pathname "SYS:**;*.*") ())
;; #+clozure ,(ignore-errors (list (wilden (let ((*default-pathname-defaults* #p"")) (truename #p"ccl:"))) ()))
;; All-import, here is where we want user stuff to be:
:inherit-configuration
......@@ -4011,21 +4014,24 @@ with a different configuration, so the configuration would be re-read then."
entries))
(defun* directory-files (directory &optional (pattern *wild-file*))
(setf directory (pathname directory))
(when (wild-pathname-p directory)
(error "Invalid wild in ~S" directory))
(unless (member (pathname-directory pattern) '(() (:relative)) :test 'equal)
(error "Invalid file pattern ~S" pattern))
(when (typep directory 'logical-pathname)
(setf pattern (make-pathname-logical pattern (pathname-host directory))))
(let ((entries (ignore-errors (directory* (merge-pathnames* pattern directory)))))
(filter-logical-directory-results
directory entries
#'(lambda (f)
(make-pathname :defaults directory
:name (pathname-name f)
:type (make-pathname-component-logical (pathname-type f))
:version (make-pathname-component-logical (pathname-version f)))))))
(let ((dir (pathname directory)))
(when (typep dir 'logical-pathname)
;; Because of the filtering we do below,
;; logical pathnames have restrictions on wild patterns.
;; Not that the results are very portable when you use these patterns on physical pathnames.
(when (wild-pathname-p dir)
(error "Invalid wild pattern in logical directory ~S" directory))
(unless (member (pathname-directory pattern) '(() (:relative)) :test 'equal)
(error "Invalid file pattern ~S for logical directory ~S" pattern directory))
(setf pattern (make-pathname-logical pattern (pathname-host dir))))
(let ((entries (ignore-errors (directory* (merge-pathnames* pattern dir)))))
(filter-logical-directory-results
directory entries
#'(lambda (f)
(make-pathname :defaults dir
:name (make-pathname-component-logical (pathname-name f))
:type (make-pathname-component-logical (pathname-type f))
:version (make-pathname-component-logical (pathname-version f))))))))
(defun* directory-asd-files (directory)
(directory-files directory *wild-asd*))
......@@ -4399,7 +4405,7 @@ with a different configuration, so the configuration would be re-read then."
(let ((*verbose-out* (make-broadcast-stream))
(system (find-system (string-downcase name) nil)))
(when system
(operate *require-asdf-operator* system :verbose nil)
(operate *require-asdf-operator* system :verbose nil :force-not (loaded-systems))
t))))
#+(or abcl clisp clozure cmu ecl sbcl)
......
......@@ -1035,7 +1035,10 @@
;;; Here I add the proper defpackage for CMU
#+:CMU
(defpackage "MAKE" (:use "COMMON-LISP" "CONDITIONS")
(:nicknames "MK"))
(:nicknames "MK")
(:export "DEFSYSTEM" "COMPILE-SYSTEM" "LOAD-SYSTEM"
"DEFINE-LANGUAGE" "*MULTIPLE-LISP-SUPPORT*"
"FIND-SYSTEM"))
#+:sbcl
(defpackage "MAKE" (:use "COMMON-LISP")
......
......@@ -30,7 +30,7 @@ New in this release:
* Added external format for EUC-KR.
* Changes
* ASDF2 updated to version 2.21.
* ASDF2 updated to version 2.22.
* Behavior of STRING-TO-OCTETS has changed. This is an
incompatible change from the previous version but should be more
useful when a buffer is given which is not large enough to hold
......@@ -76,6 +76,16 @@ New in this release:
* Fix typo in ISO8859-2 external format that caused it not to work
correctly. This type potentially also caused failures for all other
external formats that were based on ISO8859-2.
* COMPILE-FILE should not signal an error when given a list for
:EXTERNAL-FORMAT. Lists are needed to specify a composing
external format like :DOS or :MAC.
* EXPORT and friends should not EVAL the form when compiling.
This was probably a leftover from the time when CMUCL did not
have DEFPACKAGE. (See ticket:60.)
* The debugger was not always opening the file in the correct
external format. It defaulted to using
*DEFAULT-EXTERNAL-FORMAT* instead of the format used when
compiling the file.
* Trac Tickets:
* #50: Print/read error with make-pathname.
......@@ -83,6 +93,7 @@ New in this release:
* #52: UNICODE-COMPLETE-NAME misses a completion.
* #55: blocked signals.
* #58: UTF-16 buffering problem.
* #60: compile-file and export problem
* Other changes:
* The layout of the cmucl directories has been changed.
......
......@@ -45,7 +45,24 @@ ifdef FEATURE_UNICODE
CPP_DEFINE_OPTIONS += -DUNICODE
endif
# Default to using gcc
CC = gcc
# But we can use clang.
#
# However, clang seems to want to use SSE instructions in various
# places, but we DON'T want that because we need a lisp that will run
# on chips without sse.
#
# But on Mac, every machine has SSE2 so we can use SSE2. However,
# there's some code path through GC or allocation where we aren't
# saving the FPU state so after GC or allocation, some XMM FP
# registers are corrupted.
#
# Got that?
#CC = clang -mno-sse
LD = ld
ifeq ($(filter 2% 3%, $(shell $(CC) -dumpversion)),)
......@@ -70,3 +87,4 @@ DEPEND_FLAGS =
# -ffloat-store and -fno-strict-aliasing anymore.
e_rem_pio2.o : e_rem_pio2.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $<
......@@ -451,6 +451,9 @@ gc_write_barrier(void *addr)
/*
* A structure to hold the state of a generation.
*/
#define MEM_AGE_SHIFT 16
#define MEM_AGE_SCALE (1 << MEM_AGE_SHIFT)
struct generation {
/* The first page that gc_alloc checks on its next call. */
......@@ -502,8 +505,11 @@ struct generation {
* A minimum average memory age before a GC will occur helps prevent
* a GC when a large number of new live objects have been added, in
* which case a GC could be a waste of time.
*
* The age is represented as an integer between 0 and 32767
* corresponding to an age of 0 to (just less than) 1.
*/
double min_av_mem_age;
int min_av_mem_age;
};
/*
......@@ -524,7 +530,7 @@ struct generation_stats {
int num_gc;
int trigger_age;
int cum_sum_bytes_allocated;
double min_av_mem_age;
int min_av_mem_age;
};
......@@ -647,14 +653,14 @@ generation_bytes_allocated(int generation)
/*
* Return the average age of the memory in a generation.
*/
static double
static int
gen_av_mem_age(int gen)
{
if (generations[gen].bytes_allocated == 0)
return 0.0;
return 0;
return (double) generations[gen].cum_sum_bytes_allocated /
(double) generations[gen].bytes_allocated;
return (((long) generations[gen].cum_sum_bytes_allocated) << MEM_AGE_SHIFT) /
generations[gen].bytes_allocated;
}
/*
......@@ -753,7 +759,7 @@ print_generation_stats(int verbose)
GC_PAGE_SIZE * count_generation_pages(i) -
generations[i].bytes_allocated, generations[i].gc_trigger,
count_write_protect_generation_pages(i), generations[i].num_gc,
gen_av_mem_age(i));
(double)gen_av_mem_age(i) / MEM_AGE_SCALE);
}
fprintf(stderr, " Total bytes alloc=%ld\n", bytes_allocated);
......@@ -804,7 +810,7 @@ void
set_min_mem_age(int gen, double min_mem_age)
{
if (gen <= NUM_GENERATIONS) {
generations[gen].min_av_mem_age = min_mem_age;
generations[gen].min_av_mem_age = min_mem_age * MEM_AGE_SCALE;
}
}
......@@ -4532,7 +4538,20 @@ scav_hash_vector(lispobj * where, lispobj object)
fprintf(stderr, "scav_hash_vector: scavenge table %p\n", hash_table);
}
#endif
#ifdef GC_ASSERTIONS
{
/*
* Check to see that hash-table-rehash-threshold is a single
* float in the range (0, 1]
*/
lispobj threshold_obj = (lispobj) hash_table->rehash_threshold;
float* raw_slots = PTR(threshold_obj);
float threshold = raw_slots[2];
gc_assert(threshold > 0 && threshold <= 1);
}
#endif
scavenge((lispobj *) hash_table, HASH_TABLE_SIZE);
if (hash_table->weak_p == NIL) {
......@@ -7325,7 +7344,7 @@ garbage_collect_generation(int generation, int raise)
#ifdef GC_ASSERTIONS
#if defined(i386) || defined(__x86_64)
invalid_stack_start = (void *) control_stack_start;
invalid_stack_start = (void *) CONTROL_STACK_START;
invalid_stack_end = (void *) &raise;
#else /* not i386 */
invalid_stack_start = (void *) &raise;
......@@ -7897,7 +7916,7 @@ gc_init(void)
/* The tune-able parameters */
generations[i].bytes_consed_between_gc = 2000000;
generations[i].trigger_age = 1;
generations[i].min_av_mem_age = 0.75;
generations[i].min_av_mem_age = 24508; /* 0.75 * MEM_AGE_SCALE */
}
/* Initialise gc_alloc */
......
......@@ -32,6 +32,94 @@
:nicknames '("HI")
:use '("LISP" "EXTENSIONS" "SYSTEM")))
(defpackage "HEMLOCK-INTERNALS"
(:nicknames "HI")
(:export
"*BUFFER-LIST*" "*BUFFER-NAMES*" "*CHARACTER-ATTRIBUTE-NAMES*"
"*COMMAND-NAMES*" "*CREATE-INITIAL-WINDOWS-HOOK*" "*CREATE-WINDOW-HOOK*"
"*DELETE-WINDOW-HOOK*" "*ECHO-AREA-BUFFER*" "*ECHO-AREA-STREAM*"
"*ECHO-AREA-WINDOW*" "*EDITOR-INPUT*" "*GLOBAL-VARIABLE-NAMES*"
"*INPUT-TRANSCRIPT*" "*INVOKE-HOOK*" "*KEY-EVENT-HISTORY*"
"*LAST-KEY-EVENT-TYPED*" "*LOGICAL-KEY-EVENT-NAMES*" "*MODE-NAMES*"
"*PARSE-DEFAULT*" "*PARSE-DEFAULT-STRING*" "*PARSE-HELP*"
"*PARSE-INPUT-REGION*" "*PARSE-PROMPT*" "*PARSE-STARTING-MARK*"
"*PARSE-STRING-TABLES*" "*PARSE-TYPE*" "*PARSE-VALUE-MUST-EXIST*"
"*PARSE-VERIFICATION-FUNCTION*" "*PRINT-REGION*"
"*RANDOM-TYPEOUT-BUFFERS*" "*RANDOM-TYPEOUT-HOOK*" "*REAL-EDITOR-INPUT*"
"*WINDOW-LIST*" "ABORT-RECURSIVE-EDIT" "ADD-HOOK"
"AFTER-EDITOR-INITIALIZATIONS" "BIND-KEY" "BLANK-AFTER-P"
"BLANK-BEFORE-P" "BLANK-LINE-P" "BUFFER" "BUFFER-DELETE-HOOK"
"BUFFER-END" "BUFFER-END-MARK" "BUFFER-MAJOR-MODE" "BUFFER-MINOR-MODE"
"BUFFER-MODELINE-FIELD-P" "BUFFER-MODELINE-FIELDS" "BUFFER-MODES"
"BUFFER-MODIFIED" "BUFFER-NAME" "BUFFER-PATHNAME" "BUFFER-POINT"
"BUFFER-REGION" "BUFFER-SIGNATURE" "BUFFER-START" "BUFFER-START-MARK"
"BUFFER-VARIABLES" "BUFFER-WINDOWS" "BUFFER-WRITABLE" "BUFFER-WRITE-DATE"
"BUFFERP" "CENTER-WINDOW" "CHARACTER-ATTRIBUTE"
"CHARACTER-ATTRIBUTE-DOCUMENTATION" "CHARACTER-ATTRIBUTE-HOOKS"
"CHARACTER-ATTRIBUTE-NAME" "CHARACTER-ATTRIBUTE-P" "CHARACTER-OFFSET"
"CLEAR-ECHO-AREA" "CLEAR-EDITOR-INPUT" "CLRSTRING" "COMMAND"
"COMMAND-BINDINGS" "COMMAND-CASE" "COMMAND-DOCUMENTATION"
"COMMAND-FUNCTION" "COMMAND-NAME" "COMMANDP" "COMPLETE-STRING"
"COPY-MARK" "COPY-REGION" "COUNT-CHARACTERS" "COUNT-LINES"
"CURRENT-BUFFER" "CURRENT-POINT" "CURRENT-VARIABLE-TABLES"
"CURRENT-WINDOW" "CURSORPOS-TO-MARK" "DEFATTRIBUTE" "DEFAULT-FONT"
"DEFCOMMAND" "DEFHVAR" "DEFINE-LOGICAL-KEY-EVENT" "DEFINE-TTY-FONT"
"DEFMODE" "DELETE-AND-SAVE-REGION" "DELETE-BUFFER" "DELETE-CHARACTERS"
"DELETE-FONT-MARK" "DELETE-KEY-BINDING" "DELETE-LINE-FONT-MARKS"
"DELETE-MARK" "DELETE-REGION" "DELETE-STRING" "DELETE-VARIABLE"
"DELETE-WINDOW" "DIRECTORYP" "DISPLAYED-P" "DO-ALPHA-CHARS" "DO-STRINGS"
"EDITOR-DESCRIBE-FUNCTION" "EDITOR-ERROR" "EDITOR-ERROR-FORMAT-ARGUMENTS"
"EDITOR-ERROR-FORMAT-STRING" "EDITOR-FINISH-OUTPUT" "EDITOR-SLEEP"
"EMPTY-LINE-P" "END-LINE-P" "ENTER-WINDOW-AUTORAISE" "EXIT-HEMLOCK"
"EXIT-RECURSIVE-EDIT" "FETCH-CUT-STRING" "FILTER-REGION" "FIND-AMBIGUOUS"
"FIND-ATTRIBUTE" "FIND-CONTAINING" "FIND-PATTERN" "FIRST-LINE-P"
"FONT-MARK" "FUN-DEFINED-FROM-PATHNAME" "GET-COMMAND" "GET-KEY-EVENT"
"GETSTRING" "HANDLE-LISP-ERRORS" "HEMLOCK-BOUND-P"
"HEMLOCK-OUTPUT-STREAM" "HEMLOCK-OUTPUT-STREAM-P" "HEMLOCK-REGION-STREAM"
"HEMLOCK-REGION-STREAM-P" "HLET" "IN-RECURSIVE-EDIT" "INPUT-WAITING"
"INSERT-CHARACTER" "INSERT-REGION" "INSERT-STRING" "INVOKE-HOOK"
"KEY-TRANSLATION" "LAST-COMMAND-TYPE" "LAST-KEY-EVENT-CURSORPOS"
"LAST-LINE-P" "LINE" "LINE-BUFFER" "LINE-CHARACTER" "LINE-END"
"LINE-LENGTH" "LINE-NEXT" "LINE-OFFSET" "LINE-PLIST" "LINE-PREVIOUS"
"LINE-SIGNATURE" "LINE-START" "LINE-STRING" "LINE-TO-REGION" "LINE<"
"LINE<=" "LINE>" "LINE>=" "LINEP" "LINES-RELATED" "LISTEN-EDITOR-INPUT"
"LOGICAL-KEY-EVENT-DOCUMENTATION" "LOGICAL-KEY-EVENT-KEY-EVENTS"
"LOGICAL-KEY-EVENT-NAME" "LOGICAL-KEY-EVENT-P" "LOUD-MESSAGE"
"MAKE-BUFFER" "MAKE-COMMAND" "MAKE-EMPTY-REGION"
"MAKE-HEMLOCK-OUTPUT-STREAM" "MAKE-HEMLOCK-REGION-STREAM"
"MAKE-KBDMAC-STREAM" "MAKE-MODELINE-FIELD" "MAKE-RING"
"MAKE-STRING-TABLE" "MAKE-WINDOW" "MAKE-XWINDOW-LIKE-HWINDOW"
"MAP-BINDINGS" "MARK" "MARK-AFTER" "MARK-BEFORE" "MARK-CHARPOS"
"MARK-COLUMN" "MARK-KIND" "MARK-LINE" "MARK-TO-CURSORPOS" "MARK/="
"MARK<" "MARK<=" "MARK=" "MARK>" "MARK>=" "MARKP"
"MERGE-RELATIVE-PATHNAMES" "MESSAGE" "MODE-DOCUMENTATION" "MODE-MAJOR-P"
"MODE-VARIABLES" "MODELINE-FIELD" "MODELINE-FIELD-FUNCTION"
"MODELINE-FIELD-NAME" "MODELINE-FIELD-P" "MODELINE-FIELD-WIDTH"
"MODIFY-KBDMAC-STREAM" "MOVE-FONT-MARK" "MOVE-MARK" "MOVE-TO-COLUMN"
"MOVE-TO-POSITION" "NEW-SEARCH-PATTERN" "NEXT-CHARACTER" "NEXT-WINDOW"
"NINSERT-REGION" "PAUSE-HEMLOCK" "PREFIX-ARGUMENT" "PREVIOUS-CHARACTER"
"PREVIOUS-WINDOW" "PROMPT-FOR-BUFFER" "PROMPT-FOR-EXPRESSION"
"PROMPT-FOR-FILE" "PROMPT-FOR-INTEGER" "PROMPT-FOR-KEY"
"PROMPT-FOR-KEY-EVENT" "PROMPT-FOR-KEYWORD" "PROMPT-FOR-STRING"
"PROMPT-FOR-VARIABLE" "PROMPT-FOR-Y-OR-N" "PROMPT-FOR-YES-OR-NO"
"READ-FILE" "RECURSIVE-EDIT" "REDISPLAY" "REDISPLAY-ALL" "REGION"
"REGION-BOUNDS" "REGION-END" "REGION-START" "REGION-TO-STRING" "REGIONP"
"REMOVE-HOOK" "REMOVE-SCHEDULED-EVENT" "REPLACE-PATTERN" "REPROMPT"
"REVERSE-FIND-ATTRIBUTE" "RING" "RING-LENGTH" "RING-POP" "RING-PUSH"
"RING-REF" "RINGP" "ROTATE-RING" "SAME-LINE-P" "SCHEDULE-EVENT"
"SCROLL-WINDOW" "SEARCH-CHAR-CODE-LIMIT" "SEARCH-PATTERN"
"SEARCH-PATTERN-P" "SET-REGION-BOUNDS" "SETV" "SHADOW-ATTRIBUTE"
"SHOW-MARK" "START-LINE-P" "STORE-CUT-STRING" "STRING-TABLE"
"STRING-TABLE-P" "STRING-TABLE-SEPARATOR" "STRING-TO-REGION"
"STRING-TO-VARIABLE" "SYNTAX-CHAR-CODE-LIMIT" "UNGET-KEY-EVENT"
"UNSHADOW-ATTRIBUTE" "UPDATE-MODELINE-FIELD" "UPDATE-MODELINE-FIELDS"
"USE-BUFFER" "VALUE" "VARIABLE-DOCUMENTATION" "VARIABLE-HOOKS"
"VARIABLE-NAME" "VARIABLE-VALUE" "WINDOW" "WINDOW-BUFFER"
"WINDOW-DISPLAY-END" "WINDOW-DISPLAY-RECENTERING" "WINDOW-DISPLAY-START"
"WINDOW-FONT" "WINDOW-HEIGHT" "WINDOW-POINT" "WINDOW-WIDTH" "WINDOWP"
"WITH-INPUT-FROM-REGION" "WITH-MARK" "WITH-OUTPUT-TO-MARK"
"WITH-POP-UP-DISPLAY" "WITH-WRITABLE-BUFFER" "WRITE-FILE"))
(unless (find-package "HEMLOCK")
(make-package "HEMLOCK"
:nicknames '("ED")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment