[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/idlwave e471942dae 053/360: Added advice to make comint
From: |
ELPA Syncer |
Subject: |
[elpa] externals/idlwave e471942dae 053/360: Added advice to make comint prompt read-only. |
Date: |
Sun, 28 Apr 2024 00:59:07 -0400 (EDT) |
branch: externals/idlwave
commit e471942dae2f824a5d80eba7a08ba8c477ac1b28
Author: jdsmith <jdsmith>
Commit: jdsmith <jdsmith>
Added advice to make comint prompt read-only.
---
idlw-shell.el | 405 ++++++++++++++++++++++++++++++++--------------------------
1 file changed, 226 insertions(+), 179 deletions(-)
diff --git a/idlw-shell.el b/idlw-shell.el
index d8fb15b3c1..85c90ad6fd 100644
--- a/idlw-shell.el
+++ b/idlw-shell.el
@@ -5,7 +5,7 @@
;; Chris Chase <chase@att.com>
;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
;; Version: VERSIONTAG
-;; Date: $Date: 2002/06/14 19:05:30 $
+;; Date: $Date: 2002/08/12 18:13:50 $
;; Keywords: processes
;; This file is part of GNU Emacs.
@@ -97,7 +97,7 @@
;;; Code:
(require 'comint)
-(require 'idlwave)
+ (require 'idlwave)
(eval-when-compile (require 'cl))
@@ -268,7 +268,7 @@ to set this option to nil."
:group 'idlwave-shell-general-setup
:type 'boolean)
-(defcustom idlwave-shell-file-name-chars "~/A-Za-z0-9+@:_.$#%={}\\-"
+(defcustom idlwave-shell-file-name-chars "~/A-Za-z0-9+:_.$#%={}\\-"
"The characters allowed in file names, as a string.
Used for file name completion. Must not contain `'', `,' and `\"'
because these are used as separators by IDL."
@@ -540,12 +540,10 @@ idlwave-shell-temp-rinfo-save-file is set (respectively)."
This is used to speed up the reloading of the routine info procedure
before use by the shell.")
-(defvar idlwave-shell-dirstack-query "printd"
+(defvar idlwave-shell-dirstack-query "cd,current=___cur & print,___cur"
"Command used by `idlwave-shell-resync-dirs' to query IDL for
the directory stack.")
-(defvar idlwave-shell-wd-is-synched nil)
-
(defvar idlwave-shell-path-query "__pa=expand_path(!path,/array)&for
i=0,n_elements(__pa)-1 do print,'PATH:<'+__pa[i]+'>'&print,'SYSDIR:<'+!dir+'>'"
"The command which gets !PATH and !DIR infor from the shell.")
@@ -1031,9 +1029,14 @@ If optional fourth argument PREEMPT is non-nil CMD is
put at front of
IDL is considered ready if the prompt is present
and if `idlwave-shell-ready' is non-nil."
- ;(setq hide nil) ; FIXME: turn this on for debugging only
-; (message "SENDING %s|||%s" cmd pcmd) ;??????????????????????
- (let (buf proc)
+; (setq hide nil) ; FIXME: turn this on for debugging only
+; (if (null cmd)
+; (progn
+; (message "SENDING Pending commands: %s"
+; (prin1-to-string idlwave-shell-pending-commands)))
+; (message "SENDING %s|||%s" cmd pcmd))
+ (let ((save-buffer (current-buffer))
+ buf proc)
;; Get or make the buffer and its process
(if (or (not (setq buf (get-buffer (idlwave-shell-buffer))))
(not (setq proc (get-buffer-process buf))))
@@ -1047,51 +1050,48 @@ and if `idlwave-shell-ready' is non-nil."
(not (setq proc (get-buffer-process buf))))
;; Still nothing
(error "Problem with autostarting IDL shell"))))
-
- (save-excursion
+ (when (or cmd idlwave-shell-pending-commands)
(set-buffer buf)
- (goto-char (process-mark proc))
- ;; To make this easy, always push CMD onto pending commands
- (if cmd
- (setq idlwave-shell-pending-commands
- (if preempt
- ;; Put at front.
- (append (list (list cmd pcmd hide))
- idlwave-shell-pending-commands)
- ;; Put at end.
- (append idlwave-shell-pending-commands
- (list (list cmd pcmd hide))))))
- ;; Check if IDL ready
- (if (and idlwave-shell-ready
- ;; Check for IDL prompt
- (save-excursion
- (forward-line 0)
- ;; (beginning-of-line) ; Changed for Emacs 21
- (looking-at idlwave-shell-prompt-pattern)))
- ;; IDL ready for command
- (if idlwave-shell-pending-commands
- ;; execute command
- (let* ((lcmd (car idlwave-shell-pending-commands))
- (cmd (car lcmd))
- (pcmd (nth 1 lcmd))
- (hide (nth 2 lcmd)))
- ;; If this is an executive command, reset the stack pointer
- (if (eq (string-to-char cmd) ?.)
- (setq idlwave-shell-calling-stack-index 0))
- ;; Set post-command
- (setq idlwave-shell-post-command-hook pcmd)
- ;; Output hiding
-;;; Debug code
-;;; (setq idlwave-shell-hide-output nil)
- (setq idlwave-shell-hide-output hide)
- ;; Pop command
- (setq idlwave-shell-pending-commands
- (cdr idlwave-shell-pending-commands))
- ;; Send command for execution
- (set-marker comint-last-input-start (point))
- (set-marker comint-last-input-end (point))
- (comint-simple-send proc cmd)
- (setq idlwave-shell-ready nil)))))))
+ (save-excursion
+ (goto-char (process-mark proc))
+ ;; To make this easy, always push CMD onto pending commands
+ (if cmd
+ (setq idlwave-shell-pending-commands
+ (if preempt
+ ;; Put at front.
+ (append (list (list cmd pcmd hide))
+ idlwave-shell-pending-commands)
+ ;; Put at end.
+ (append idlwave-shell-pending-commands
+ (list (list cmd pcmd hide))))))
+ ;; Check if IDL ready
+ (if (and idlwave-shell-ready
+ ;; Check for IDL prompt
+ (save-excursion
+ (forward-line 0)
+ ;; (beginning-of-line) ; Changed for Emacs 21
+ (looking-at idlwave-shell-prompt-pattern)))
+ ;; IDL ready for command, execute it
+ (let* ((lcmd (car idlwave-shell-pending-commands))
+ (cmd (car lcmd))
+ (pcmd (nth 1 lcmd))
+ (hide (nth 2 lcmd)))
+ ;; If this is an executive command, reset the stack pointer
+ (if (eq (string-to-char cmd) ?.)
+ (setq idlwave-shell-calling-stack-index 0))
+ ;; Set post-command
+ (setq idlwave-shell-post-command-hook pcmd)
+ ;; Output hiding
+ (setq idlwave-shell-hide-output hide)
+ ;; Pop command
+ (setq idlwave-shell-pending-commands
+ (cdr idlwave-shell-pending-commands))
+ ;; Send command for execution
+ (set-marker comint-last-input-start (point))
+ (set-marker comint-last-input-end (point))
+ (comint-simple-send proc cmd)
+ (setq idlwave-shell-ready nil))))
+ (set-buffer save-buffer))))
(defun idlwave-shell-send-char (c &optional no-error)
"Send one character to the shell, without a newline."
@@ -1172,33 +1172,33 @@ when the IDL prompt gets displayed again after the
current IDL command."
(and (eq idlwave-shell-char-mode-active 'exit)
(throw 'exit "Single char loop exited"))))))))
-(defun idlwave-shell-up-or-history (&optional arg)
+(defun idlwave-shell-move-or-history (up &optional arg)
"When in last line of process buffer, do `comint-previous-input'.
-Otherwise just do `previous-line'."
+Otherwise just move the line. Move down unless UP is non-nil."
+ (let* ((proc-pos (marker-position
+ (process-mark (get-buffer-process (current-buffer)))))
+ (arg (or arg 1))
+ (arg (if up arg (- arg))))
+ (if (eq t idlwave-shell-arrows-do-history) (goto-char proc-pos))
+ (if (and idlwave-shell-arrows-do-history
+ (>= (1+ (save-excursion (end-of-line) (point))) proc-pos))
+ (progn
+ (goto-char proc-pos)
+ (and (not (eolp)) (kill-line nil))
+ (comint-previous-input arg))
+ (previous-line arg))))
+
+(defun idlwave-shell-up-or-history (&optional arg)
+"When in last line of process buffer, move to previous input.
+ Otherwise just go up one line."
(interactive "p")
- (if (eq t idlwave-shell-arrows-do-history) (goto-char (point-max)))
- (if (and idlwave-shell-arrows-do-history
- (>= (1+ (save-excursion (end-of-line) (point)))
- (marker-position
- (process-mark (get-buffer-process (current-buffer))))))
- (progn
- (and (not (eolp)) (kill-line nil))
- (comint-previous-input arg))
- (previous-line arg)))
+ (idlwave-shell-move-or-history t arg))
(defun idlwave-shell-down-or-history (&optional arg)
- "When in last line of process buffer, do `comint-next-input'.
- Otherwise just do `next-line'."
+"When in last line of process buffer, move to next input.
+ Otherwise just go down one line."
(interactive "p")
- (if (eq t idlwave-shell-arrows-do-history) (goto-char (point-max)))
- (if (and idlwave-shell-arrows-do-history
- (>= (1+ (save-excursion (end-of-line) (point)))
- (marker-position
- (process-mark (get-buffer-process (current-buffer))))))
- (progn
- (and (not (eolp)) (kill-line nil))
- (comint-next-input arg))
- (next-line arg)))
+ (idlwave-shell-move-or-history nil arg))
;; There was a report that a newer version of comint.el changed the
;; name of comint-filter to comint-output-filter. Unfortunately, we
@@ -1223,7 +1223,6 @@ and then calls `idlwave-shell-send-command' for any
pending commands."
;; We no longer do the cleanup here - this is done by the process sentinel
(when (eq (process-status idlwave-shell-process-name) 'run)
;; OK, process is still running, so we can use it.
- (setq idlwave-shell-wd-is-synched nil) ;; something might have changed cwd
(let ((data (match-data)) p)
(unwind-protect
(progn
@@ -1367,75 +1366,63 @@ messages. We ignore error messages otherwise.
For breakpoint messages process any attached count or command
parameters.
Update the windows if a message is found."
- (let (update)
- (cond
- ;; Make sure we have output
- ((not idlwave-shell-command-output))
-
- ;; Various types of HALT messages.
- ((string-match idlwave-shell-halt-messages-re
- idlwave-shell-command-output)
- ;; Grab the file and line state info.
- (setq idlwave-shell-calling-stack-index 0)
- (setq idlwave-shell-halt-frame
- (idlwave-shell-parse-line
- (substring idlwave-shell-command-output (match-end 0)))
- update t))
-
- ;; Handle breakpoints separately
- ((string-match idlwave-shell-break-message
- idlwave-shell-command-output)
- (setq idlwave-shell-calling-stack-index 0)
- (setq idlwave-shell-halt-frame
- (idlwave-shell-parse-line
- (substring idlwave-shell-command-output (match-end 0)))
- update t)
- ;; We used to to counting hits on breakpoints
- ;; this is no longer supported since IDL breakpoints
- ;; have learned counting.
- ;; Do breakpoint command processing
- (let ((bp (assoc
- (list
- (nth 0 idlwave-shell-halt-frame)
- (nth 1 idlwave-shell-halt-frame))
- idlwave-shell-bp-alist)))
- (if bp
- (let ((cmd (idlwave-shell-bp-get bp 'cmd)))
- (if cmd
- ;; Execute command
- (if (listp cmd)
- (eval cmd)
- (funcall cmd))))
- ;; A breakpoint that we did not know about - perhaps it was
- ;; set by the user or IDL isn't reporting breakpoints like
- ;; we expect. Lets update our list.
- (idlwave-shell-bp-query)))))
-
- ;; Handle compilation errors in addition to the above
- (if (and idlwave-shell-command-output
- (or (string-match
- idlwave-shell-syntax-error idlwave-shell-command-output)
- (string-match
- idlwave-shell-other-error idlwave-shell-command-output)))
- (progn
- (save-excursion
- (set-buffer
- (get-buffer-create idlwave-shell-error-buffer))
- (erase-buffer)
- (insert idlwave-shell-command-output)
- (goto-char (point-min))
- (setq idlwave-shell-error-last (point)))
- (idlwave-shell-goto-next-error)))
-
- ;; Do update
- (when update
- (idlwave-shell-display-line (idlwave-shell-pc-frame)))))
-
+ (cond
+ ;; Make sure we have output
+ ((not idlwave-shell-command-output))
+
+ ;; First Priority: Syntax and other errors
+ ((or
+ (string-match idlwave-shell-syntax-error idlwave-shell-command-output)
+ (string-match idlwave-shell-other-error idlwave-shell-command-output))
+ (save-excursion
+ (set-buffer
+ (get-buffer-create idlwave-shell-error-buffer))
+ (erase-buffer)
+ (insert idlwave-shell-command-output)
+ (goto-char (point-min))
+ (setq idlwave-shell-error-last (point)))
+ (idlwave-shell-goto-next-error))
+
+ ;; Second Priority: Various types of HALT messages.
+ ((string-match idlwave-shell-halt-messages-re
+ idlwave-shell-command-output)
+ ;; Grab the file and line state info.
+ (setq idlwave-shell-calling-stack-index 0)
+ (setq idlwave-shell-halt-frame
+ (idlwave-shell-parse-line
+ (substring idlwave-shell-command-output (match-end 0))))
+ (idlwave-shell-display-line (idlwave-shell-pc-frame)))
+
+ ;; Last Priority: Breakpoints
+ ((string-match idlwave-shell-break-message
+ idlwave-shell-command-output)
+ (setq idlwave-shell-calling-stack-index 0)
+ (setq idlwave-shell-halt-frame
+ (idlwave-shell-parse-line
+ (substring idlwave-shell-command-output (match-end 0))))
+ ;; We used to count hits on breakpoints
+ ;; this is no longer supported since IDL breakpoints
+ ;; have learned counting.
+ ;; Do breakpoint command processing
+ (let ((bp (assoc
+ (list
+ (nth 0 idlwave-shell-halt-frame)
+ (nth 1 idlwave-shell-halt-frame))
+ idlwave-shell-bp-alist)))
+ (if bp
+ (let ((cmd (idlwave-shell-bp-get bp 'cmd)))
+ (if cmd
+ ;; Execute command
+ (if (listp cmd) (eval cmd) (funcall cmd))))
+ ;; A breakpoint that we did not know about - perhaps it was
+ ;; set by the user or IDL isn't reporting breakpoints like
+ ;; we expect. Lets update our list.
+ (idlwave-shell-bp-query)))
+ (idlwave-shell-display-line (idlwave-shell-pc-frame)))))
(defvar idlwave-shell-error-buffer " *idlwave-shell-errors*"
"Buffer containing syntax errors from IDL compilations.")
-
;; FIXME: the following two variables do not currently allow line breaks
;; in module and file names. I am not sure if it will be necessary to
;; change this. Currently it seems to work the way it is.
@@ -1498,7 +1485,8 @@ plus garbage match an existing regular file. This is
hopefully very
unlikely."
(let (number procedure file)
- (when (string-match idlwave-shell-file-line-message string)
+ (when (and (not (string-match ":\\s-*\\$MAIN" string))
+ (string-match idlwave-shell-file-line-message string))
(setq procedure (match-string 1 string)
number (match-string 3 string)
file (match-string 5 string))
@@ -1588,10 +1576,10 @@ The size is given by
`idlwave-shell-graphics-window-size'."
n idlwave-shell-graphics-window-size))))
(defun idlwave-shell-resync-dirs ()
- "Resync the buffer's idea of the current directory stack.
-This command queries IDL with the command bound to
-`idlwave-shell-dirstack-query' (default \"printd\"), reads the
-output for the new directory stack."
+ "Resync the buffer's idea of the current directory.
+This command queries IDL with the command bound to
+`idlwave-shell-dirstack-query', reads the output for the new
+directory."
(interactive)
(idlwave-shell-send-command idlwave-shell-dirstack-query
'idlwave-shell-filter-directory
@@ -1752,11 +1740,11 @@ HEAP_GC, /VERBOSE"
Change the default directory for the process buffer to concur."
(save-excursion
(set-buffer (idlwave-shell-buffer))
- (if (string-match "Current Directory: *\\(\\S-*\\) *$"
+ (if (string-match ",___cur[\n\r]\\(\\S-*\\) *[\n\r]"
idlwave-shell-command-output)
(let ((dir (substring idlwave-shell-command-output
(match-beginning 1) (match-end 1))))
- (message "Setting Emacs wd to %s" dir)
+; (message "Setting Emacs working dir to %s" dir)
(setq idlwave-shell-default-directory dir)
(setq default-directory (file-name-as-directory dir))))))
@@ -1769,20 +1757,24 @@ keywords."
(interactive "P")
(let (cmd)
(cond
- ((setq cmd (idlwave-shell-executive-command))
+ ((setq cmd ( idlwave-shell-executive-command))
;; We are in a command line with an executive command
(if (member (upcase cmd)
'(".R" ".RU" ".RUN" ".RN" ".RNE" ".RNEW"
".COM" ".COMP" ".COMPI" ".COMPIL" ".COMPILE"))
;; This command expects file names
(idlwave-shell-complete-filename)))
+
+ ((idlwave-shell-batch-command)
+ (idlwave-shell-complete-filename))
+
((and (idlwave-shell-filename-string)
(save-excursion
(beginning-of-line)
(let ((case-fold-search t))
- (not (looking-at ".*obj_new"))))
- ;; In a string, could be a file name to here
- (idlwave-shell-complete-filename)))
+ (not (looking-at ".*obj_new")))))
+ (idlwave-shell-complete-filename))
+
(t
;; Default completion of modules and keywords
(idlwave-complete arg)))))
@@ -1790,36 +1782,17 @@ keywords."
(defun idlwave-shell-complete-filename (&optional arg)
"Complete a file name at point if after a file name.
We assume that we are after a file name when completing one of the
-args of an executive .run, .rnew or .compile. Also, in a string
-constant we complete file names. Otherwise return nil, so that
-other completion functions can do their work."
- ;; Comint does something funny with the default directory,
- ;; so we set it here from out safe own variable
- (setq default-directory
- (file-name-as-directory idlwave-shell-default-directory))
- (if (not idlwave-shell-wd-is-synched)
- ;; Some IDL stuff has been executed since last update, so we need to
- ;; do it again.
- (idlwave-shell-send-command
- idlwave-shell-dirstack-query
- `(progn
- (idlwave-shell-filter-directory)
- (setq idlwave-shell-wd-is-synched t)
- (switch-to-buffer (idlwave-shell-buffer))
- (goto-char ,(point)) ;; This is necesary on Emacs, don't know why
- ;; after the update, we immediately redo the completion, so the
- ;; user will hardly notice we did the update.
- (idlwave-shell-complete-filename))
- 'hide)
- (let* ((comint-file-name-chars idlwave-shell-file-name-chars)
- (completion-ignore-case (default-value 'completion-ignore-case)))
- (comint-dynamic-complete-filename))))
+args of an executive .run, .rnew or .compile."
+ ;; CWD might have changed, resync, to set default directory
+ (idlwave-shell-resync-dirs)
+ (let ((comint-file-name-chars idlwave-shell-file-name-chars))
+ (comint-dynamic-complete-as-filename)))
(defun idlwave-shell-executive-command ()
"Return the name of the current executive command, if any."
(save-excursion
(idlwave-beginning-of-statement)
- (if (looking-at "[ \t]*\\([.][^ \t\n\r]*\\)")
+ (if (looking-at "[ \t]*\\([.][^ \t\n\r]+\\)")
(match-string 1))))
(defun idlwave-shell-filename-string ()
@@ -1831,6 +1804,15 @@ other completion functions can do their work."
;; Check of the next char is a string delimiter
(memq (preceding-char) '(?\' ?\")))))
+(defun idlwave-shell-batch-command ()
+ "Returns t if we're in a batch command statement like @foo"
+ (let ((limit (save-excursion (beginning-of-line) (point))))
+ (save-excursion
+ ;; Skip backwards over filename
+ (skip-chars-backward idlwave-shell-file-name-chars limit)
+ (skip-chars-backward " \t" limit)
+ (and (eq (preceding-char) ?@) (not (idlwave-in-quote))))))
+
;;;
;;; This section contains code for debugging IDL programs. --------------------
;;;
@@ -2715,8 +2697,27 @@ Does not work for a region with multiline blocks - use
(error nil))))
(defun idlwave-display-buffer (buf not-this-window-p &optional frame)
- (if (not (frame-live-p frame)) (setq frame nil))
- (display-buffer buf not-this-window-p frame))
+ (if (featurep 'xemacs)
+ ;; The XEmacs version enforces the frame
+ (display-buffer buf not-this-window-p frame)
+ ;; For Emacs, we need to force the frame ourselves.
+ (let ((this-frame (selected-frame)))
+ (if (frame-live-p frame)
+ (select-frame frame))
+ (if (eq this-frame (selected-frame))
+ ;; same frame: use display buffer, to make sure the current
+ ;; window stays.
+ (display-buffer buf)
+ ;; different frame
+ (if (one-window-p)
+ ;; only window: switch
+ (progn
+ (switch-to-buffer buf)
+ (selected-window)) ; must return the window.
+ ;; several windows - use display-buffer
+ (display-buffer buf not-this-window-p))))))
+; (if (not (frame-live-p frame)) (setq frame nil))
+; (display-buffer buf not-this-window-p frame))
(defvar idlwave-shell-bp-buffer " *idlwave-shell-bp*"
"Scratch buffer for parsing IDL breakpoint lists and other stuff.")
@@ -3510,6 +3511,52 @@ static char * file[] = {
(list 'image :type 'xpm :data image-string :ascent 'center))
(t nil))))
+(when (fboundp 'comint-snapshot-last-prompt)
+ (defvar idlwave-shell-save-comint-last-prompt-overlay nil)
+ (defun idlwave-shell-comint-signal-read-only (overlay after start end
+ &optional len)
+ (if (and (not after)
+ (or (< (overlay-start overlay) start)
+ (> (overlay-end overlay) end)))
+ (error "")))
+
+ (defadvice comint-output-filter (around swap-read-only activate)
+ "Add a read-only equivalency to the last prompt overlay."
+ ;; Caution: in Emacs <~21.2, a new overlay gets created for each
+ ;; prompt... in later versions, text-properties for old prompts
+ ;; are used instead, and the original overlay is recycled. In
+ ;; this case, we can advise snapshot-prompt to remove the
+ ;; read-only text properties (not the overlay properties), and
+ ;; here we test to ensure the prompt isn't in the same position as
+ ;; the process-mark before removing the read-only stuff.
+ (when (and idlwave-shell-save-comint-last-prompt-overlay
+ (not (equal
+ (marker-position (process-mark (get-buffer-process
+ (current-buffer))))
+ (overlay-end
+ idlwave-shell-save-comint-last-prompt-overlay))))
+ (overlay-put idlwave-shell-save-comint-last-prompt-overlay
+ 'modification-hooks nil)
+ (overlay-put idlwave-shell-save-comint-last-prompt-overlay
+ 'insert-in-front-hooks' nil))
+ ad-do-it
+ (when comint-last-prompt-overlay
+ (setq idlwave-shell-save-comint-last-prompt-overlay
+ comint-last-prompt-overlay)
+ (overlay-put comint-last-prompt-overlay 'intangible t)
+ (overlay-put comint-last-prompt-overlay 'modification-hooks
+ '(idlwave-shell-comint-signal-read-only))
+ (overlay-put comint-last-prompt-overlay 'insert-in-front-hooks
+ '(idlwave-shell-comint-signal-read-only))))
+
+ (defadvice comint-snapshot-last-prompt (after remove-text-read-only activate)
+ "Remove the read-only text properties potentially set by snapshot"
+ (when comint-last-prompt-overlay
+ (remove-text-properties
+ (overlay-start comint-last-prompt-overlay)
+ (overlay-end comint-last-prompt-overlay)
+ '(modification-hooks nil insert-in-front-hooks nil)))))
+
(provide 'idlw-shell)
(provide 'idlwave-shell)
- [elpa] externals/idlwave 7a9726a4f7 035/360: Hand install of info files., (continued)
- [elpa] externals/idlwave 7a9726a4f7 035/360: Hand install of info files., ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave e129ebc0ef 023/360: Cleaned up speedbar `require' to support XEmacs, which doesn't like a 3, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave b1fdd8b0e0 026/360: Integrated changes from GNU Emacs CVS, but had to undo, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 98bbd6d2b7 027/360: Fixed race in make-temp-name, by using make-temp-file., ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave f1096c874b 031/360: A few special matchers added for newly found mistakes on the manual., ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 10f0e958c5 032/360: Moved some popup function to idlwave.el for common use., ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave c559027c0b 037/360: New download dir., ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 6996f933d1 041/360: Minor doc changes., ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave fec3dde101 048/360: Fixed filename for emacs compliance, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave f261965c37 051/360: (idlwave-determine-class): Wrapped put-text-property in a, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave e471942dae 053/360: Added advice to make comint prompt read-only.,
ELPA Syncer <=
- [elpa] externals/idlwave aa94f6baec 057/360: (idlwave-statement-type): Relaxed the definition of, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave c710b76b34 059/360: (idlwave-do-context-help1): Shuffle the order and, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 8981b5bef2 062/360: *** empty log message ***, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 2ce3023fe9 074/360:, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 0e95f42009 079/360: - Mirror savannah typo fixes., ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave b6f38fd96f 090/360: - (idlwave-help-browser-generic-program,, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave f0aa70b04b 119/360: *** empty log message ***, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 488c383d12 121/360: - Bound the function search to avoid having much earlier still-open, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 3abf058316 092/360: - Removed useless variable from do-context-help1, ELPA Syncer, 2024/04/28
- [elpa] externals/idlwave 99a8c34560 109/360: *** empty log message ***, ELPA Syncer, 2024/04/28