Artifact 9287c0e41df83035c004c0b46d6c739edfb3f83a98626379954ae16e1010671c:
- File
psl-1983/3-1/nmode/buffer.sl
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 9750) [annotate] [blame] [check-ins using] [more...]
- File
psl-1983/nmode/buffer.sl
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 9750) [annotate] [blame] [check-ins using]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Buffer.SL - Auxiliary Functions for manipulating the current buffer. % % Author: Alan Snyder % Hewlett-Packard/CRC % Date: 20 August 1982 % Revised: 16 February 1983 % % 16-Feb-83 Alan Snyder % Declare -> Declare-Flavor. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% (CompileTime (load objects)) (fluid '(nmode-current-buffer)) (declare-flavor text-buffer nmode-current-buffer) (de buffer-get-position () % Return the "current position" in the current buffer as a BUFFER-POSITION % object. (=> nmode-current-buffer position)) (de buffer-set-position (bp) % Set the "current position" in the current buffer from the specified % BUFFER-POSITION object. Clips the line-position and char-position. (if bp (=> nmode-current-buffer set-position bp))) (de current-buffer-goto (line-number char-number) % Set the "current position" in the current buffer. % Clips the line-position and char-position. (=> nmode-current-buffer goto line-number char-number)) (de current-line-pos () % Return the "current line position" in the current buffer. (=> nmode-current-buffer line-pos)) (de set-line-pos (n) % Set the "current line position" in the current buffer. % Clips the line-position and char-position. (=> nmode-current-buffer set-line-pos n)) (de current-char-pos () % Return the "current character position" in the current buffer. (=> nmode-current-buffer char-pos)) (de set-char-pos (n) % Set the "current character position" in the current buffer. % Clips the specified position to lie in the range 0..line-length. (=> nmode-current-buffer set-char-pos n)) (de current-display-column () % Return the column index corresponding to the current character position % in the display of the current line. In other words, what screen column % should the cursor be in (ignoring horizontal scrolling)? (map-char-to-column (current-line) (current-char-pos))) (de set-display-column (n) % Adjust the character position within the current buffer so that % the current display column will be the smallest possible value % not less than N. (The display column may differ than N because % certain characters display in multiple columns.) (set-char-pos (map-column-to-char (current-line) n))) (de current-buffer-size () % Return the number of lines in the current buffer. % This count may include a fake empty line at the end of the buffer. (=> nmode-current-buffer size)) (de current-buffer-visible-size () % Return the apparent number of lines in the current buffer. % The fake empty line that may be present at the end of the % buffer is not counted. (=> nmode-current-buffer visible-size)) (de current-line () % Return the current line in the current buffer (as a string). (=> nmode-current-buffer fetch-line (current-line-pos))) (de current-line-replace (s) % Replace the current line of the current buffer with the specified string. (=> nmode-current-buffer store-line (current-line-pos) s)) (de current-buffer-fetch (n) % Return the line at line position N within the current buffer. (=> nmode-current-buffer fetch-line n)) (de current-buffer-store (n l) % Store the line L at line position N within the current buffer. (=> nmode-current-buffer store-line n l)) (de set-mark (bp) % PUSH the specified position onto the ring buffer of marks associated with % the current buffer. The specified position thus becomes the current "mark". (=> nmode-current-buffer set-mark bp)) (de set-mark-from-point () % PUSH the current position onto the ring buffer of marks associated with % the current buffer. The current position thus becomes the current "mark". (=> nmode-current-buffer set-mark-from-point)) (de current-mark () % Return the current mark associated with the current buffer. (=> nmode-current-buffer mark)) (de previous-mark () % POP the current mark off the ring buffer of marks associated with the % current buffer. Return the new current mark. (=> nmode-current-buffer previous-mark)) (de reset-buffer () % Reset the contents of the current buffer to empty and "not modified". (=> nmode-current-buffer reset)) (de extract-region (delete-it bp1 bp2) % Delete (if delete-it is non-NIL) or copy (otherwise) the text between % position BP1 and position BP2. Return the deleted (or copied) text as a % pair (CONS direction-of-deletion vector-of-strings). The returned % direction is +1 if BP1 <= BP2, and -1 otherwise. The current position is % set to the beginning of the region if deletion is performed. (=> nmode-current-buffer extract-region delete-it bp1 bp2)) (de extract-text (delete-it bp1 bp2) % Delete (if delete-it is non-NIL) or copy (otherwise) the text between % position BP1 and position BP2. Return the deleted (or copied) text as a % vector-of-strings. The current position is set to the beginning of the % region if deletion is performed. (cdr (=> nmode-current-buffer extract-region delete-it bp1 bp2))) (de current-line-length () % Return the number of characters in the current line. (=> nmode-current-buffer current-line-length)) (de current-line-empty? () % Return T if the current line contains no characters. (=> nmode-current-buffer current-line-empty?)) (de current-line-blank? () % Return T if the current line contains no non-blank characters. (=> nmode-current-buffer current-line-blank?)) (de at-line-start? () % Return T if we are positioned at the start of the current line. (=> nmode-current-buffer at-line-start?)) (de at-line-end? () % Return T if we are positioned at the end of the current line. (=> nmode-current-buffer at-line-end?)) (de at-buffer-start? () % Return T if we are positioned at the start of the buffer. (=> nmode-current-buffer at-buffer-start?)) (de at-buffer-end? () % Return T if we are positioned at the end of the buffer. (=> nmode-current-buffer at-buffer-end?)) (de current-line-is-first? () % Return T if the current line is the first line in the buffer. (=> nmode-current-buffer current-line-is-first?)) (de current-line-is-last? () % Return T if the current line is the last line in the buffer. (=> nmode-current-buffer current-line-is-last?)) (de current-line-fetch (n) % Return the character at character position N within the current line. % An error is signalled if N is out of range. (=> nmode-current-buffer current-line-fetch n)) (de current-line-store (n c) % Store the character C at char position N within the current line. % An error is signalled if N is out of range. (=> nmode-current-buffer current-line-store n c)) (de move-to-buffer-start () % Move to the beginning of the current buffer. (=> nmode-current-buffer move-to-buffer-start)) (de move-to-buffer-end () % Move to the end of the current buffer. (=> nmode-current-buffer move-to-buffer-end)) (de move-to-start-of-line () % Move to the beginning of the current line. (=> nmode-current-buffer move-to-start-of-line)) (de move-to-end-of-line () % Move to the end of the current line. (=> nmode-current-buffer move-to-end-of-line)) (de move-to-next-line () % Move to the beginning of the next line. % If already at the last line, move to the end of the line. (=> nmode-current-buffer move-to-next-line)) (de move-to-previous-line () % Move to the beginning of the previous line. % If already at the first line, move to the beginning of the line. (=> nmode-current-buffer move-to-previous-line)) (de move-forward () % Move to the next character in the current buffer. % Do nothing if already at the end of the buffer. (=> nmode-current-buffer move-forward)) (de move-backward () % Move to the previous character in the current buffer. % Do nothing if already at the start of the buffer. (=> nmode-current-buffer move-backward)) (de next-character () % Return the character to the right of the current position. % Return NIL if at the end of the buffer. (=> nmode-current-buffer next-character)) (de previous-character () % Return the character to the left of the current position. % Return NIL if at the beginning of the buffer. (=> nmode-current-buffer previous-character)) (de insert-character (c) % Insert character C at the current position in the buffer and advance past % that character. (=> nmode-current-buffer insert-character c)) (de insert-eol () % Insert a line-break at the current position in the buffer and advance to % the beginning of the newly-formed line. (=> nmode-current-buffer insert-eol)) (de insert-line (l) % Insert the specified string as a new line in front of the % current line. Advance past the newly inserted line. (=> nmode-current-buffer insert-line l)) (de insert-string (s) % Insert the string S at the current position. Advance past the % newly-inserted string. Note: S must not contain EOL characters! (=> nmode-current-buffer insert-string s)) (de insert-text (v) % V is a vector of strings similar to LINES (e.g., the last string in V is % considered to be an unterminated line). Thus, V must have at least one % element. Insert this stuff at the current position and advance past it. (=> nmode-current-buffer insert-text v)) (de delete-next-character () % Delete the next character. % Do nothing if at the end of the buffer. (=> nmode-current-buffer delete-next-character)) (de delete-previous-character () % Delete the previous character. % Do nothing if at the beginning of the buffer. (=> nmode-current-buffer delete-previous-character)) (undeclare-flavor nmode-current-buffer)