* patch for completion in octave
@ 2011-02-08 12:49 Alexander Klimov
2011-02-08 20:39 ` Stefan Monnier
0 siblings, 1 reply; 4+ messages in thread
From: Alexander Klimov @ 2011-02-08 12:49 UTC (permalink / raw)
To: emacs-devel
Hi.
The current version of inferior-octave-complete includes in the string
for completion symbols like `=', e.g., after
M-x run-octave
x=lins<Tab>
user gets an error
No completions of x=linsp
Since in octave
The name of a variable must be a sequence of letters, digits and
underscores,
the following patch corrects the problem:
=== modified file 'lisp/progmodes/octave-inf.el'
--- lisp/progmodes/octave-inf.el 2011-01-26 08:36:39 +0000
+++ lisp/progmodes/octave-inf.el 2011-02-08 12:45:02 +0000
@@ -267,7 +267,7 @@
(let* ((end (point))
(command
(save-excursion
- (skip-syntax-backward "w_" (comint-line-beginning-position))
+ (skip-chars-backward "a-zA-Z0-9_" (comint-line-beginning-position))
(buffer-substring-no-properties (point) end)))
(proc (get-buffer-process inferior-octave-buffer)))
(cond (inferior-octave-complete-impossible
--
Regards,
ASK
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: patch for completion in octave
2011-02-08 12:49 patch for completion in octave Alexander Klimov
@ 2011-02-08 20:39 ` Stefan Monnier
2011-02-09 14:00 ` Alexander Klimov
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2011-02-08 20:39 UTC (permalink / raw)
To: Alexander Klimov; +Cc: emacs-devel
> The current version of inferior-octave-complete includes in the string
> for completion symbols like `=', e.g., after
> M-x run-octave
> x=lins<Tab>
> user gets an error
> No completions of x=linsp
> Since in octave
> The name of a variable must be a sequence of letters, digits and
> underscores,
> the following patch corrects the problem:
> === modified file 'lisp/progmodes/octave-inf.el'
> --- lisp/progmodes/octave-inf.el 2011-01-26 08:36:39 +0000
> +++ lisp/progmodes/octave-inf.el 2011-02-08 12:45:02 +0000
> @@ -267,7 +267,7 @@
> (let* ((end (point))
> (command
> (save-excursion
> - (skip-syntax-backward "w_" (comint-line-beginning-position))
> + (skip-chars-backward "a-zA-Z0-9_" (comint-line-beginning-position))
> (buffer-substring-no-properties (point) end)))
> (proc (get-buffer-process inferior-octave-buffer)))
> (cond (inferior-octave-complete-impossible
Thanks for your report. Before going ahead and installing your patch,
I'd like to make sure I understand the problem: as far as I can tell,
the character = has syntax "." in octave-mode, but for some reason
octave-inf.el does not use octave-mode's syntax-table.
So, could you try the patch below instead for a little while and see if
it fixes your problem (it should) and if it doesn't introduce
other issues?
Stefan
=== modified file 'lisp/progmodes/octave-inf.el'
--- lisp/progmodes/octave-inf.el 2011-01-26 08:36:39 +0000
+++ lisp/progmodes/octave-inf.el 2011-02-08 20:38:06 +0000
@@ -73,10 +73,7 @@
"Keymap used in Inferior Octave mode.")
(defvar inferior-octave-mode-syntax-table
- (let ((table (make-syntax-table)))
- (modify-syntax-entry ?\` "w" table)
- (modify-syntax-entry ?\# "<" table)
- (modify-syntax-entry ?\n ">" table)
+ (let ((table (make-syntax-table octave-mode-syntax-table)))
table)
"Syntax table in use in inferior-octave-mode buffers.")
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: patch for completion in octave
2011-02-08 20:39 ` Stefan Monnier
@ 2011-02-09 14:00 ` Alexander Klimov
2011-04-25 16:32 ` Stefan Monnier
0 siblings, 1 reply; 4+ messages in thread
From: Alexander Klimov @ 2011-02-09 14:00 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Hi.
On Tue, 8 Feb 2011, Stefan Monnier wrote:
> So, could you try the patch below instead for a little while and see if
> it fixes your problem (it should) and if it doesn't introduce
> other issues?
Your patch is also a good idea since it removes a code duplication,
but besides fixing the original problem, it evinces that we have
(modify-syntax-entry ?. "w" table)
(modify-syntax-entry ?_ "w" table)
in octave-mod.el, that makes M-f or M-b on something like
var.field.subfield_1
too greedy.
I must admit that I am too new to octave-mode, so I suspect I am not
qualified to test the changes.
Besides the original problem with completion, during testing I noticed
that octave-help is not a command (btw, would not it be a good idea
for define-key to warn that its argument is not a command, instead of
reporting an error when the key is pressed?).
In the menu "Lookup Octave Index" does not work since info-lookup-mode
is not set (maybe we should set lookup mode "globally" instead and
remove octave-help?).
There is also a problem with completion-addsuffix, since `v<Tab>'
gives `var ' and now the user has to press DEL to continue with
`.field' (btw, since the structure completion is possible, I added `.'
into the skip pattern below).
Together with your patch the following is supposed to fix all the
problems (but, again, I doubt the quality of my testing):
=== modified file 'lisp/progmodes/octave-inf.el'
--- lisp/progmodes/octave-inf.el 2011-01-26 08:36:39 +0000
+++ lisp/progmodes/octave-inf.el 2011-02-09 13:20:42 +0000
@@ -267,7 +264,7 @@
(let* ((end (point))
(command
(save-excursion
- (skip-syntax-backward "w_" (comint-line-beginning-position))
+ (skip-chars-backward "a-zA-Z_." (comint-line-beginning-position))
(buffer-substring-no-properties (point) end)))
(proc (get-buffer-process inferior-octave-buffer)))
(cond (inferior-octave-complete-impossible
@@ -290,9 +287,10 @@
(setcdr x (setq y (cdr y)))
(setq x y
y (cdr y)))))
- ;; And let comint handle the rest
- (comint-dynamic-simple-complete
- command inferior-octave-output-list)))))
+ ;; And let comint handle the rest (without adding a suffix)
+ (let (comint-completion-addsuffix)
+ (comint-dynamic-simple-complete
+ command inferior-octave-output-list))))))
(defun inferior-octave-dynamic-list-input-ring ()
"List the buffer's input history in a help buffer."
=== modified file 'lisp/progmodes/octave-mod.el'
--- lisp/progmodes/octave-mod.el 2011-01-25 04:08:28 +0000
+++ lisp/progmodes/octave-mod.el 2011-02-09 13:03:07 +0000
@@ -279,7 +279,7 @@
["Submit Bug Report" octave-submit-bug-report t]
"-"
["Describe Octave Mode" describe-mode t]
- ["Lookup Octave Index" info-lookup-symbol t]))
+ ["Lookup Octave Index" octave-help t]))
(defvar octave-mode-syntax-table
(let ((table (make-syntax-table)))
@@ -299,8 +299,8 @@
;; Was "w" for abbrevs, but now that it's not necessary any more,
(modify-syntax-entry ?\` "." table)
(modify-syntax-entry ?\" "\"" table)
- (modify-syntax-entry ?. "w" table)
- (modify-syntax-entry ?_ "w" table)
+ (modify-syntax-entry ?. "." table)
+ (modify-syntax-entry ?_ "." table)
;; The "b" flag only applies to the second letter of the comstart
;; and the first letter of the comend, i.e. the "4b" below is ineffective.
;; If we try to put `b' on the single-line comments, we get a similar
@@ -661,6 +661,7 @@
(defun octave-help ()
"Get help on Octave symbols from the Octave info files.
Look up symbol in the function, operator and variable indices of the info files."
+ (interactive)
(let ((info-lookup-mode 'octave-mode))
(call-interactively 'info-lookup-symbol)))
--
Regards,
ASK
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: patch for completion in octave
2011-02-09 14:00 ` Alexander Klimov
@ 2011-04-25 16:32 ` Stefan Monnier
0 siblings, 0 replies; 4+ messages in thread
From: Stefan Monnier @ 2011-04-25 16:32 UTC (permalink / raw)
To: Alexander Klimov; +Cc: emacs-devel
>> So, could you try the patch below instead for a little while and see if
>> it fixes your problem (it should) and if it doesn't introduce
>> other issues?
> Your patch is also a good idea since it removes a code duplication,
> but besides fixing the original problem, it evinces that we have
> (modify-syntax-entry ?. "w" table)
> (modify-syntax-entry ?_ "w" table)
> in octave-mod.el, that makes M-f or M-b on something like
I've installed a patch which should fix this, along with the poriginal
completion problem in octave-inf.
> In the menu "Lookup Octave Index" does not work since info-lookup-mode
> is not set (maybe we should set lookup mode "globally" instead and
> remove octave-help?).
I've set info-lookup-mode in inferior-actave-mode indeed, so that the
standard binding for info-lookup-symbol (C-h S) works.
> There is also a problem with completion-addsuffix, since `v<Tab>'
> gives `var ' and now the user has to press DEL to continue with
> `.field' (btw, since the structure completion is possible, I added `.'
> into the skip pattern below).
The new code does not use comint's comint-dynamic-simple-complete but
also gets rid of the addsuffix. This may not always be the right thing
to do (it's sometimes convenient to have the SPC suffix), but until we
can determine when it's good and when it's not, I'd rather not add any.
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-04-25 16:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-08 12:49 patch for completion in octave Alexander Klimov
2011-02-08 20:39 ` Stefan Monnier
2011-02-09 14:00 ` Alexander Klimov
2011-04-25 16:32 ` Stefan Monnier
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).