matlab.el, matlab-compat.el, matlab-complete.el, matlab-shell.el:

Fix matlab-shell-locate-fcn and fix spelling errors.

matlab-shell.el:
(matlab-shell-mode-map): Change C-c. keybinding to do matlab-shell-locate-fcn.
(matlab-shell-locate-fcn): New.

(matlab-find-file-under-path, matlab-find-file-on-path):
Deleted.

matlab.el:
(matlab-mode-map): Change binding of C-c. to do matlab-shell-locate-fcn
(matlab-frame-init): Change menu binding as with keybinding above.
This commit is contained in:
Eric Ludlam 2019-11-28 11:06:04 -05:00
parent f9f7e62367
commit 2bcf58eb31
4 changed files with 112 additions and 155 deletions

View file

@ -128,8 +128,8 @@
(nconc keymap comint-mode-map)))
;; Finding executibles
(defun matlab-find-executible-directory (program)
;; Finding executables
(defun matlab-find-executable-directory (program)
"find the executable PROGRAM on the exec path, following any links.
Return the base directory it is in."
(let ((dir nil))
@ -161,3 +161,7 @@ Return the base directory it is in."
(provide 'matlab-compat)
;;; matlab-compat.el ends here
;; LocalWords: el Ludlam eludlam osboxes Ee progn defalias fboundp itimer
;; LocalWords: defun boundp defvaralias bol eol defmacro Keymaps keymap comint
;; LocalWords: KEYMAP's nconc dolist nm lnk setq

View file

@ -26,7 +26,7 @@
;; * scan buffer for functions and symbols.
;; * look for local files that might be functions.
;;
;; Moved to seperate library, as some modern tools do a better job
;; Moved to separate library, as some modern tools do a better job
;; and this can be loaded optionally.
;;; Code:
@ -166,7 +166,7 @@ This list still needs lots of help.")
(while tl
(setq lst (append lst (cdr (car tl)))
tl (cdr tl)))
(matlab-uniquafy-list lst)))
(matlab-uniquify-list lst)))
(defvar matlab-all-known-properties (matlab-all-known-properties)
"List of all the known properties.")
@ -246,7 +246,7 @@ If the list is empty, then searches continue backwards through the code."
(while syms
(if (car syms) (setq fl (cons (car syms) fl)))
(setq syms (cdr syms)))
(matlab-uniquafy-list (nreverse fl)))))
(matlab-uniquify-list (nreverse fl)))))
(defvar matlab-most-recent-variable-list nil
"Maintained by `matlab-find-recent-variable'.")
@ -298,7 +298,7 @@ In NEXT is non-nil, than continue through the list of elements."
(while syms
(if (car syms) (setq fl (cons (car syms) fl)))
(setq syms (cdr syms)))
(matlab-uniquafy-list (nreverse fl)))))
(matlab-uniquify-list (nreverse fl)))))
(defvar matlab-user-function-list nil
"Maintained by `matlab-find-user-functions'.")
@ -499,9 +499,15 @@ to change it temporarily."
;; ui work for us.
(with-output-to-temp-buffer "*Completions*"
(display-completion-list
(matlab-uniquafy-list allsyms)))))))))))))
(matlab-uniquify-list allsyms)))))))))))))
(provide 'matlab-complete)
;;; matlab-complete.el ends here
;; LocalWords: el Ludlam zappo ballista ish defcustom CLim XColor XDir XLabel
;; LocalWords: XAxis XScale YColor YDir YAxis YScale YTick ZColor ZDir ZGrid
;; LocalWords: ZLabel ZScale ZTick Dithermap defun lst tl setq cdr defmacro
;; LocalWords: nreverse eol progn foundlst expandto listp stringp sem lattr
;; LocalWords: donext funcall allsyms mapcar

View file

@ -215,7 +215,7 @@ mode.")
(let ((path (file-name-directory matlab-shell-command)))
;; if we don't have a path, find the MATLAB executable on our path.
(when (not path)
(setq path (matlab-find-executible-directory matlab-shell-command)))
(setq path (matlab-find-executable-directory matlab-shell-command)))
(when path
;; When we find the path, we need to massage it to identify where
;; the M files are that we need for our completion lists.
@ -254,7 +254,7 @@ mode.")
(define-key km [(backspace)] 'matlab-shell-delete-backwards-no-prompt)
;; Files
(define-key km "\C-c." 'matlab-find-file-on-path)
(define-key km "\C-c." 'matlab-shell-locate-fcn)
km)
@ -269,6 +269,8 @@ mode.")
["Stop On Errors" matlab-shell-dbstop-error t]
["Don't Stop On Errors" matlab-shell-dbclear-error t]
"----"
["Locate MATLAB function" matlab-shell-locate-fcn
:help "Run 'which FCN' in matlab-shell, then open the file in Emacs"]
["Run Command" matlab-shell-run-command t]
["Describe Variable" matlab-shell-describe-variable t]
["Describe Command" matlab-shell-describe-command t]
@ -400,7 +402,7 @@ in a popup buffer.
)
(defun matlab-comint-get-old-input ()
"Compute text from the current line to evluate with MATLAB.
"Compute text from the current line to evaluate with MATLAB.
This function checks to make sure the line is on a prompt. If not,
it returns empty string"
(let ((inhibit-field-text-motion t))
@ -671,7 +673,7 @@ after this anchor.")
)
"List of Expressions to search for after an error anchor is found.
These expressions are listed as matching from newer MATLAB versions
to older MATLABs.
to older MATLAB's.
Each expression should have the following match strings:
1 - The matlab function
2 - The line number
@ -815,7 +817,7 @@ This strips out that text, and colorizes the region red."
;;; FILTER
;;
;; MATLAB's process filter handles output from the MATLAB process and
;; inteprets it for formatting text, and for running the debugger.
;; interprets it for formatting text, and for running the debugger.
(defvar gud-matlab-marker-regexp-plain-prompt "^K?>>"
"Regular expression for finding a prompt.")
@ -903,7 +905,7 @@ Sends commands to the MATLAB shell to initialize the MATLAB process."
))
(defun matlab-shell-user-startup-fcn ()
"Hook run on second prompt to run user specified startup funtions."
"Hook run on second prompt to run user specified startup functions."
;; Remove ourselves
(remove-hook 'matlab-shell-prompt-appears-hook #'matlab-shell-user-startup-fcn)
@ -935,7 +937,7 @@ Sends commands to the MATLAB shell to initialize the MATLAB process."
(let ((output "") (frame nil))
;; ERROR DELIMITERS
;; Newer MATLABS wrap error text in {^H }^H characters.
;; Newer MATLAB's wrap error text in {^H }^H characters.
;; Convert into something COMINT won't delete so we can scan them.
(while (string-match "{" gud-marker-acc)
(setq gud-marker-acc (replace-match matlab-shell-errortext-start-text t t gud-marker-acc 0)))
@ -959,7 +961,7 @@ Sends commands to the MATLAB shell to initialize the MATLAB process."
(setq frame (cons ef (string-to-number el)))))
;; Newer MATLABs don't print useful info. We'll have to
;; Newer MATLAB's don't print useful info. We'll have to
;; search backward for the previous line to see if a frame was
;; displayed.
(when (and (not frame) (not gud-matlab-dbhotlink))
@ -1098,7 +1100,7 @@ Optional argument ARG describes the number of chars to delete."
;;; COMPLETION
;;
;; Requet list of completions from MATLAB.
;; Request list of completions from MATLAB.
;; Support classic emacs in-place completion, or company mode if available.
(defun matlab-shell-completion-list (str)
@ -1459,6 +1461,20 @@ non-nil if FCN is a builtin."
(string-match "$" output)
(cons (substring output 0 (match-beginning 0)) nil))))))
(defun matlab-shell-locate-fcn (fcn)
"Run \"which FCN\" in the `matlab-shell', then open the file."
(interactive
(list
(let ((default (matlab-read-word-at-point)))
(if (and default (not (equal default "")))
(let ((s (read-string (concat "MATLAB locate fcn (default " default "): "))))
(if (string= s "") default s))
(read-string "MATLAB locate fcn: ")))))
(let ((file (matlab-shell-which-fcn fcn)))
(if file
(find-file (car file))
(error "which('%s') returned empty" fcn))))
(defvar matlab-shell-matlabroot-run nil
"Cache of MATLABROOT in this shell.")
(make-variable-buffer-local 'matlab-shell-matlabroot-run)
@ -1783,7 +1799,7 @@ show up in reverse order."
(ans nil))
(if (member L '("mlx" "m"))
nil
;; Not a . from a .m file, probbly a class ??
;; Not a . from a .m file, probably a class ??
(while S
(when (and (= (length S) 1) (not fcn-p))
;; Is there is a method? strip it off.
@ -2042,7 +2058,7 @@ Similar to `comint-send-input'."
(matlab-shell-send-string (concat cmd "\n"))
))
;; If not chaning dir, maybe we need to use 'run' command instead?
;; If not changing dir, maybe we need to use 'run' command instead?
(let ((cmd (concat "run('" dir fn-name "')")))
(matlab-shell-send-command cmd)))
))
@ -2153,7 +2169,7 @@ Picks between different options for running the commands."
(defun matlab-shell-region->commandline (beg end &optional noshow)
"Convert the region between BEG and END into a MATLAB command.
Squeeze out newlines.
When NOSHOW is non-nil, supress output by adding ; to commands."
When NOSHOW is non-nil, suppress output by adding ; to commands."
;; Assume beg & end are in the right order.
(let ((str (concat (buffer-substring beg end) "\n")))
;; Remove comments
@ -2219,8 +2235,8 @@ and local functions active."
(defun matlab-shell-extract-region-to-tmp-file (beg end &optional noshow)
"Extract region between BEG & END into a temporary M file.
The tmp file name is based on the name of the current buffer.
The extracted region is unmodifed from src buffer unless NOSHOW is non-nil,
in which case ; are added to quiece the buffer.
The extracted region is unmodified from src buffer unless NOSHOW is non-nil,
in which case ; are added to quiesce the buffer.
Scan the extracted region for any functions that are in the original
buffer,and include them.
Return the name of the temporary file."
@ -2235,7 +2251,7 @@ Return the name of the temporary file."
(number-to-string len)))
(bss (buffer-substring-no-properties beg end))
(buff (find-file-noselect (concat newf ".m")))
(intro "%% Automatically craeted temporary file created to run-region")
(intro "%% Automatically created temporary file created to run-region")
;; These variables are for script / fcn tracking
(functions (matlab-semantic-get-local-functions-for-script (current-buffer)))
)
@ -2294,71 +2310,6 @@ Return the name of the temporary file."
;; The below needs to be a perfect match to the setter.
`(lambda () (matlab-shell-cleanup-extracted-region ,fname)))
)
;;; M File path stuff =========================================================
(defcustom matlab-mode-install-path
(list
(expand-file-name "toolbox" (matlab-mode-determine-matlabroot)))
"Base path pointing to the locations of all the m files used by matlab.
All directories under each element of `matlab-mode-install-path' are
checked, so only top level toolbox directories need be added.
Paths should be added in the order in which they should be searched."
:group 'matlab-shell
:type '(repeat (string :tag "Path: ")))
(defun matlab-find-file-under-path (path filename)
"Return the pathname or nil of PATH under FILENAME."
(if (file-exists-p (concat path filename))
(concat path filename)
(let ((dirs (if (file-directory-p path)
;; Not checking as a directory first fails on XEmacs
;; Stelios Kyriacou <kyriacou@cbmv.jhu.edu>
(directory-files path t nil t)))
(found nil))
(while (and dirs (not found))
(if (and (car (file-attributes (car dirs)))
;; require directory readable
(file-readable-p (car dirs))
;; don't redo our path names
(not (string-match "/\\.\\.?$" (car dirs)))
;; don't find files in object directories.
(not (string-match "@" (car dirs))))
(setq found
(matlab-find-file-under-path (concat (car dirs) "/")
filename)))
(setq dirs (cdr dirs)))
found)))
(defun matlab-find-file-on-path (filename)
"Find FILENAME on the current MATLAB path.
The MATLAB path is determined by `matlab-mode-install-path' and the
current directory. You must add user-installed paths into
`matlab-mode-install-path' if you would like to have them included."
(interactive
(list
(let ((default (matlab-read-word-at-point)))
(if default
(let ((s (read-string (concat "File (default " default "): "))))
(if (string= s "") default s))
(read-string "File: ")))))
(if (string= filename "")
(error "You must specify an M file"))
(if (not (string-match "\\.m$" filename))
(setq filename (concat filename ".m")))
(let ((fname nil)
(dirs matlab-mode-install-path))
(if (file-exists-p (concat default-directory filename))
(setq fname (concat default-directory filename)))
(while (and (not fname) dirs)
(if (stringp (car dirs))
(progn
(message "Searching for %s in %s" filename (car dirs))
(setq fname (matlab-find-file-under-path (car dirs) filename))))
(setq dirs (cdr dirs)))
(if fname (find-file fname)
(error "File %s not found on any known paths. \
Check `matlab-mode-install-path'" filename))))
(defun matlab-find-file-click (e)
"Find the file clicked on with event E on the current path."
@ -2366,8 +2317,37 @@ Check `matlab-mode-install-path'" filename))))
(mouse-set-point e)
(let ((f (matlab-read-word-at-point)))
(if (not f) (error "To find an M file, click on a word"))
(matlab-find-file-on-path f)))
(matlab-shell-locate-fcn f)))
(provide 'matlab-shell)
;;; matlab-shell.el ends here
;; LocalWords: el Ludlam zappo ballista compat comint gud Slience defcustom el
;; LocalWords: nodesktop defface autostart netshell emacsclient errorscanning
;; LocalWords: cco defun setq Keymaps keymap kbd featurep fboundp subprocess
;; LocalWords: online EDU postoutput progn subjob eol mlfile emacsinit msbn pc
;; LocalWords: Thx Chappaz windowid dirtrackp dbhot erroexamples Ludlam zappo
;; LocalWords: ballista compat comint gud Slience defcustom nodesktop defface
;; LocalWords: autostart netshell emacsclient errorscanning cco defun setq el
;; LocalWords: Keymaps keymap kbd featurep fboundp subprocess online EDU
;; LocalWords: postoutput progn subjob eol mlfile emacsinit msbn pc Thx Ludlam
;; LocalWords: Chappaz windowid dirtrackp dbhot erroexamples cdr ENDPT dolist
;; LocalWords: overlaystack mref deref errortext ERRORTXT Missmatched zappo
;; LocalWords: shellerror dbhotlink realfname aset buf noselect tcp auth ef
;; LocalWords: dbhotlinks ballista compat comint gud Slience defcustom
;; LocalWords: nodesktop defface autostart netshell emacsclient errorscanning
;; LocalWords: cco defun setq Keymaps keymap kbd featurep fboundp subprocess
;; LocalWords: online EDU postoutput progn subjob eol mlfile emacsinit msbn pc
;; LocalWords: Thx Chappaz windowid dirtrackp dbhot erroexamples cdr ENDPT
;; LocalWords: dolist overlaystack mref deref errortext ERRORTXT Missmatched
;; LocalWords: shellerror dbhotlink realfname aset buf noselect tcp auth ef
;; LocalWords: dbhotlinks dbhlcmd endprompt mello pmark memq promptend
;; LocalWords: numchars integerp emacsdocomplete mycmd ba nreverse
;; LocalWords: emacsdocompletion subfield fil byteswap stringp cbuff mapcar bw
;; LocalWords: FCN's alist BUILTINFLAG dired bol bobp numberp lattr princ
;; LocalWords: minibuffer fn matlabregex stackexchange doesnt lastcmd
;; LocalWords: notimeout stacktop eltest testme localfcn LF mlx meth fileref
;; LocalWords: funcall ec basec sk ignoredups boundp nondirectory edir sexp
;; LocalWords: Fixup mapc ltype noshow emacsrunregion cnt commandline elipsis
;; LocalWords: newf bss fname

101
matlab.el
View file

@ -564,7 +564,7 @@ If font lock is not loaded, lay in wait."
(define-key km [(meta control return)] 'matlab-shell-run-cell)
(define-key km [(control return)] 'matlab-shell-run-region-or-line)
(define-key km [(control c) (control t)] 'matlab-show-line-info)
(define-key km [(control c) ?. ] 'matlab-find-file-on-path)
(define-key km [(control c) ?. ] 'matlab-shell-locate-fcn)
(define-key km [(control h) (control m)] matlab-help-map)
(define-key km [(control j)] 'matlab-linefeed)
(define-key km "\M-\r" 'newline)
@ -616,7 +616,9 @@ If font lock is not loaded, lay in wait."
:active (matlab-any-shell-active-p) ]
["Version" matlab-show-version t]
"----"
["Find M file" matlab-find-file-on-path t]
["Locate MATLAB function" matlab-shell-locate-fcn
:active (matlab-shell-active-p)
:help "Run 'which FCN' in matlab-shell, then open the file in Emacs"]
["Show M-Lint Warnings" matlab-toggle-show-mlint-warnings
:active (and (locate-library "mlint") (fboundp 'mlint-minor-mode))
:style toggle :selected matlab-show-mlint-warnings
@ -857,7 +859,7 @@ Argument LIMIT is the maximum distance to search."
(progn
(goto-char e1) ;; skip over this one.
nil)
;; Else, find the end. We will certianly be in
;; Else, find the end. We will certainly be in
;; a comment, so no need to check on the end.
(setq b2 (re-search-forward "%}" limit t))
(when b2
@ -1020,7 +1022,7 @@ Customizing this variable is only useful if `regexp-opt' is available."
(defcustom matlab-constants-keyword-list
'("eps" "pi" "inf" "Inf" "nan" "NaN" "ans" "i" "j" "NaT" "true" "false")
"List of constants and speial variables in MATLAB."
"List of constants and special variables in MATLAB."
:group 'matlab
:type '(repeat (string :tag "Debug Keyword: ")))
@ -1130,7 +1132,7 @@ Uses `regex-opt' if available. Otherwise creates a 'dumb' expression."
;; Items after a switch statements are cool
'("\\<\\(case\\|switch\\)\\s-+\\({[^}\n]+}\\|[^,%\n]+\\)"
(1 font-lock-keyword-face) (2 font-lock-reference-face))
;; setparam and waitfor have input variables that can be highlighted.
;; set_param and waitfor have input variables that can be highlighted.
(list (concat "\\<" matlab-indent-past-arg1-functions "\\s-*")
'("(\\s-*\\(\\w+\\)\\s-*\\(,\\|)\\)" nil nil
(1 font-lock-variable-name-face)))
@ -1457,7 +1459,7 @@ All Key Bindings:
(let ((old-point (point)))
(if (matlab-find-prev-line) t (goto-char old-point) nil)))
(defun matlab-uniquafy-list (lst)
(defun matlab-uniquify-list (lst)
"Return a list that is a subset of LST where all elements are unique."
(let ((nlst nil))
(while lst
@ -1756,7 +1758,7 @@ Only covers list sexp. If not adjacent to a list, do nothing."
))
(defun matlab-move-simple-sexp-backward-internal (count)
"Move backward some number of MTLAB sexps"
"Move backward some number of MATLAB sexps"
(interactive "P")
(unless count (setq count 1))
(matlab-move-simple-sexp-internal (- count)))
@ -2371,7 +2373,7 @@ Return 'string if in a string.
Return 'charvector if in a character vector
Return 'elipsis if after an ... elipsis
Return nil if none of the above.
Scans from the beginning of line to determine the contenxt.
Scans from the beginning of line to determine the context.
If optional BOUNDS-SYM is specified, set that symbol value to the
bounds of the string or comment the cursor is in"
(save-match-data
@ -2424,7 +2426,7 @@ bounds of the string or comment the cursor is in"
;; then we need to find the end of whatever it is.
(when (and bounds-sym laststart)
(if (or (eq returnme 'comment) (eq returnme 'elipsis))
;; Comments and elipsis alwas end at end of line.
;; Comments and elipsis always end at end of line.
(set bounds-sym (list laststart (point-at-eol)))
;; Strings/charvec we need to keep searching forward.
@ -2732,7 +2734,7 @@ Argument CURRENT-INDENTATION is what the previous line recommends for indentatio
(skip-chars-forward " \t")
;; If we are at the end of a line and
;; this open paren is there, then we
;; DONT want to indent to it. Use the
;; DON'T want to indent to it. Use the
;; standard indent.
(if (or (not matlab-align-to-paren)
(looking-at "\\.\\.\\.\\|$"))
@ -3008,7 +3010,7 @@ Optional argument SOFT indicates that the newline is soft, and not hard."
"Comments every line in the region.
Puts `matlab-comment-region-s' at the beginning of every line in the region.
BEG-REGION and END-REGION are arguments which specify the region boundaries.
With non-nil ARG, uncomments the region."
With non-nil ARG, uncomment the region."
(interactive "*r\nP")
(let ((end-region-mark (make-marker)) (save-point (point-marker)))
(set-marker end-region-mark end-region)
@ -3449,8 +3451,8 @@ Returns a list: \(HERE-BEG HERE-END THERE-BEG THERE-END MISMATCH)"
;; Notes about fcns used here:
;; (syntax-after ) returns ( 4 c ) or ( 5 c )
;; where 4 == open paren and 5 == close paren
;; and c is the char tht closes the open or close paren
;; These checks are much faster than regexpx
;; and c is the char that closes the open or close paren
;; These checks are much faster than regexp
;; Step one - check for parens
(cond ((and here-syntax (= (car here-syntax) 4)) ; open paren
@ -3565,7 +3567,7 @@ Returns a list: \(HERE-BEG HERE-END THERE-BEG THERE-END MISMATCH)"
;; No block matches, just return nothing.
(t (setq noreturn t))
)
;; An error orccured. Assume 'here-*' is set, and setup missmatch.
;; An error occurred. Assume 'here-*' is set, and setup mismatch.
(error (setq mismatch t)))
@ -4021,56 +4023,21 @@ desired. Optional argument FAST is not used."
;;; matlab.el ends here
;; LocalWords: el Wette mwette caltech edu Ludlam eludlam defconst online el
;; LocalWords: easymenu Ee progn defalias fboundp itimer defun boundp Wette el
;; LocalWords: defvaralias bol eol defmacro defcustom CASEINDENT COMMANDINDENT
;; LocalWords: sexp mmode xemacs fontified setq regex sg Fns Alist elipsis vf
;; LocalWords: functionname vers minibuffer eei featurep facep zmacs defface
;; LocalWords: cellbreak cellbreaks overline keymap stringify ispell torkel el
;; LocalWords: prog bolp if'd cdr uicontext setcolor pragmas tch lse mwette
;; LocalWords: ndfunction MUs caltech edu Ludlam eludlam defconst online Wette
;; LocalWords: easymenu Ee progn defalias fboundp itimer defun boundp mwette
;; LocalWords: defvaralias bol eol defmacro defcustom CASEINDENT COMMANDINDENT
;; LocalWords: sexp mmode xemacs fontified setq regex sg Fns Alist elipsis vf
;; LocalWords: functionname vers minibuffer eei featurep facep zmacs defface
;; LocalWords: cellbreak cellbreaks overline keymap stringify ispell torkel
;; LocalWords: prog bolp if'd cdr uicontext setcolor pragmas tch lse caltech
;; LocalWords: ndfunction MUs ght urface rol sw edu Ludlam eludlam defconst
;; LocalWords: online easymenu Ee progn defalias fboundp itimer defun boundp
;; LocalWords: defvaralias bol eol defmacro defcustom CASEINDENT COMMANDINDENT
;; LocalWords: sexp mmode xemacs fontified setq regex sg Fns Alist elipsis vf
;; LocalWords: functionname vers minibuffer eei featurep facep zmacs defface
;; LocalWords: cellbreak cellbreaks overline keymap stringify ispell torkel
;; LocalWords: prog bolp if'd cdr uicontext setcolor pragmas tch lse Wette RET
;; LocalWords: ndfunction MUs ght urface rol sw mwette caltech edu Ludlam lear
;; LocalWords: eludlam defconst online easymenu Ee progn defalias fboundp ont
;; LocalWords: itimer defun boundp defvaralias bol eol defmacro defcustom tus
;; LocalWords: CASEINDENT COMMANDINDENT sexp mmode xemacs fontified setq regex
;; LocalWords: sg Fns Alist elipsis vf functionname vers minibuffer eei ep mld
;; LocalWords: featurep facep zmacs defface cellbreak cellbreaks overline
;; LocalWords: keymap stringify ispell torkel prog bolp if'd cdr uicontext
;; LocalWords: setcolor pragmas tch lse ndfunction MUs ght urface rol sw dem
;; LocalWords: Imenu imenu alist reindent unindent fn prev ltype uniquafy lst
;; LocalWords: nlst nreverse Aki Vehtari backquote oldsyntax edebug parens
;; LocalWords: cline CLim XColor XDir XLabel XAxis XScale YColor YDir YAxis
;; LocalWords: YScale YTick ZColor ZDir ZGrid ZLabel ZScale ZTick Dithermap tl
;; LocalWords: autoend noerror returnme Unstarted includeelse lattr bobp zerop
;; LocalWords: cellstart blockcomm eobp commtype startmove nomove sregex Ooops
;; LocalWords: instring calc ci sem DEPTHNUMBER blockstart blockmid
;; LocalWords: blockendless blockend tmp unstarted listp fc boc parendepth
;; LocalWords: DONT cci startpnt bc ec hc rc funcall nosemi emacsen uncomments
;; LocalWords: afterd befored okpos startlst endlst ellipsify foundlst
;; LocalWords: expandto stringp donext allsyms mapcar fname nondirectory
;; LocalWords: upcase Uwe Brauer oub eucmos ucm documentclass usepackage
;; LocalWords: lstloadlanguages lstset keywordstyle bfseries labelstep
;; LocalWords: escapechar lstlisting hideshow func PUSHNEW pushnew hs bn un
;; LocalWords: msgpos aref nodesktop mlfile emacsinit emacsclient comint gud
;; LocalWords: msbn subprocess pc nconc kbd Thx Chappaz windowid dirtrackp xpm
;; LocalWords: commint postoutput ndbhotlink formatter overlaystack dolist ef
;; LocalWords: mello realfname aset buf noselect pmark memq promptend numchars
;; LocalWords: integerp emacsdocomplete mycmd ba FCN's BUILTINFLAG substr
;; LocalWords: emacsdocompletion subfield usr fil byteswap bw ignoredups mapc
;; LocalWords: noshow lastcmd dired numberp princ matlabregex stackexchange
;; LocalWords: doesnt stacktop basec sk downcase mfile dirs Stelios Kyriacou
;; LocalWords: kyriacou cbmv jhu nexti Keybindings ui mcos XGrid YGrid YLabel
;; LocalWords: ie ret proc acc misconfigured vdp subexpression
;; LocalWords: el Wette mwette caltech edu Ludlam eludlam defconst online
;; LocalWords: compat easymenu defcustom CASEINDENT COMMANDINDENT sexp defun
;; LocalWords: mmode setq progn sg Fns Alist elipsis vf functionname vers
;; LocalWords: minibuffer featurep fboundp facep zmacs defface cellbreak
;; LocalWords: cellbreaks overline keymap torkel ispell gud allstring strchar
;; LocalWords: bs eu bc ec searchlim eol charvec Matchers ltype cdr if'd
;; LocalWords: uicontext setcolor mld keywordlist mapconcat pragmas Classdefs
;; LocalWords: dem Za Imenu imenu alist prog reindent unindent boundp fn
;; LocalWords: Parens symbolp prev lst nlst nreverse Aki Vehtari backquote
;; LocalWords: defmacro oldsyntax edebug parens cline ctxt eobp bobp sc fc
;; LocalWords: udir funcall sexps skipnav eolp autoend noerror returnme
;; LocalWords: Unstarted includeelse autostart lattr zerop cellstart blockcomm
;; LocalWords: linebounds bol commtype startmove nomove charvector sregex
;; LocalWords: insregex laststart bolp calc ci sem DEPTHNUMBER blockstart
;; LocalWords: blockmid blockendless blockend unstarted listp boc parendepth
;; LocalWords: cci startpnt hc rc nosemi emacsen afterd befored okpos startlst
;; LocalWords: endlst ellipsify noreturn hs tc matchers hideshow func PUSHNEW
;; LocalWords: pushnew bn nondirectory un msgpos nexti