Discussion:
[AUCTeX] Adding macro support, TeX-arg-file hook
Tyler Smith
2016-09-14 15:31:45 UTC
Permalink
Hi,

I'm trying to define a style hook for a personal macro that takes a file
name, without the extension, as an argument. From the manual, I think
this should be possible via the `TeX-arg-file` argument hook:

'TeX-arg-file'
Prompt for a filename in the current directory, and use it without
the extension.

My style file looks like this:

(TeX-add-style-hook
"cba"
(lambda ()
(TeX-add-symbols
'("ColumnFigure" ["caption"] TeX-arg-file)
'("ColumnPhoto" ["caption"] TeX-arg-file-name)
'("FullPhoto" ["caption"] TeX-arg-file-name-sans-extension)
'("featureAuthor" 1))))

The result is that \ColumnFigure prompts me for the caption, and
completes a file name, but the inserted file includes the extension. You
see I also tried 'TeX-arg-file-name', and
'TeX-arg-file-name-sans-extension', but those don't provide filename
completion, just a prompt. `TeX-arg-input-file` provides completion, but
only for items in TeX's search path, not the current directory.

Looking at the code for TeX-arg-file, neither the code or the doc string
indicate that the extension will be trimmed.

1) Is this a bug in the documentation?
2) Is there a way to prompt the user for an extension-less filename via
style hooks?

Thanks,

Tyler
--
plantarum.ca
Arash Esbati
2016-09-15 07:17:17 UTC
Permalink
Post by Tyler Smith
I'm trying to define a style hook for a personal macro that takes a file
name, without the extension, as an argument. From the manual, I think
'TeX-arg-file'
Prompt for a filename in the current directory, and use it without
the extension.
(TeX-add-style-hook
"cba"
(lambda ()
(TeX-add-symbols
'("ColumnFigure" ["caption"] TeX-arg-file)
'("ColumnPhoto" ["caption"] TeX-arg-file-name)
'("FullPhoto" ["caption"] TeX-arg-file-name-sans-extension)
'("featureAuthor" 1))))
The result is that \ColumnFigure prompts me for the caption, and
completes a file name, but the inserted file includes the extension. You
see I also tried 'TeX-arg-file-name', and
'TeX-arg-file-name-sans-extension', but those don't provide filename
completion, just a prompt. `TeX-arg-input-file` provides completion, but
only for items in TeX's search path, not the current directory.
Looking at the code for TeX-arg-file, neither the code or the doc string
indicate that the extension will be trimmed.
1) Is this a bug in the documentation?
I think it is a bug in the documentation. Can you please file a bug
report for this?
Post by Tyler Smith
2) Is there a way to prompt the user for an extension-less filename via
style hooks?
You can roll your own function in the style. Adapt this one to your
needs.

--8<---------------cut here---------------start------------->8---
(defun TeX-arg-cba-file-sans-extension (optional)
"Prompt for a filename in the current directory.
If OPTIONAL is non-nil, insert the resulting value as an optional
argument, otherwise as a mandatory one. The filename is included
sans extension and relative to directory of master file."
(TeX-argument-insert
(file-name-sans-extension
(file-relative-name
(read-file-name
(TeX-argument-prompt optional nil "File"))
(TeX-master-directory)))
optional))

(TeX-add-style-hook
"cba"
(lambda ()
(TeX-add-symbols
'("ColumnFigure" ["caption"] TeX-arg-file)
'("ColumnPhoto" ["caption"] TeX-arg-file-name)
'("FullPhoto" ["caption"] TeX-arg-file-name-sans-extension)
'("AllPhoto" TeX-arg-cba-file-sans-extension)
'("featureAuthor" 1))))
--8<---------------cut here---------------end--------------->8---

Best, Arash
Tyler Smith
2016-09-15 15:42:15 UTC
Permalink
Post by Arash Esbati
Post by Tyler Smith
1) Is this a bug in the documentation?
I think it is a bug in the documentation. Can you please file a bug
report for this?
Done.
Post by Arash Esbati
Post by Tyler Smith
2) Is there a way to prompt the user for an extension-less filename via
style hooks?
You can roll your own function in the style. Adapt this one to your
needs.
Perfect, thanks!

Tyler

Loading...