* lisp/net/soap-client.el (soap-encode-xs-basic-type): Encode
base64Binary value as utf-8.
(soap-decode-xs-basic-type): Decode base64Binary value as utf-8.
Problem reported by Artur Malabarba in:
http://lists.gnu.org/archive/html/emacs-devel/2015-11/msg01513.html
Most of these fixes are to documentation; many involve fixing
longstanding quoting glitches that are independent of the
recent substitute-command-keys changes. The changes to code are:
* lisp/cedet/mode-local.el (mode-local-augment-function-help)
(describe-mode-local-overload):
Substitute docstrings before displaying them.
* lisp/emacs-lisp/cl-macs.el (cl--transform-lambda):
Quote the generated docstring for later substitution.
* soap-client.el: Bump version to 3.0.2.
* soap-client.el (soap-warning): Use format, not format-message.
* soap-client.el: Add cl-lib to Package-Requires. Require cl-lib.
(soap-validate-xs-simple-type): Use cl-labels instead of cl-flet.
* soap-client.el: Support Emacs versions that do not have
define-error.
* soap-inspect.el: Remove version header.
* soap-client.el, soap-inspect.el, jira2.el: Fix first line header
format.
* soap-client.el, soap-inspect.el: Bump version to 3.0.1.
* soap-client.el, soap-inspect.el: Update home page.
* soap-client.el, soap-inspect.el: Bump version to 3.0.0.
* soap-inspect.el: Merge in changes from Emacs master branch.
* soap-client.el: Merge in changes from Emacs master branch.
* soap-inspect.el: Shorten first line description.
* soap-client.el: Make a small whitespace fix.
* soap-inspect.el: Update copyright years.
* soap-client.el (soap-encoded-namespaces): Move above first use
in soap-encode-xs-element.
* soap-client.el (soap-type-is-array?): new defun
(soap-encode-xs-element): handle array elements in this function
(soap-encode-xs-complex-type): flag error if asked to encode an
array type, this is handled in `soap-encode-xs-element'
* soap-inspect.el (soap-inspect-xs-attribute-group): Do not print
type for attribute group.
* soap-inspect.el (soap-sample-value-for-xs-attribute-group): New
function.
(soap-inspect-xs-attribute-group): Likewise.
* soap-inspect.el
(soap-resolve-references-for-xs-attribute-group): Resolve
references of attributes in an attribute group.
* soap-client.el (soap-decode-xs-attributes): Process attribute
type directly, not through soap-wsdl-get.
* soap-client.el (soap-xs-parse-attribute): Leave reference nil if
reference attribute is nil.
* soap-client.el (soap-resolve-references-for-xs-attribute):
Convert XML schema attributes to xsd:string.
* soap-inspect.el (soap-sample-value-for-xs-attribute): New
function.
(soap-sample-value-for-xs-simple-type): Prepend attributes to
result.
(soap-sample-value-for-xs-complex-type): Likewise.
(soap-inspect-xs-attribute): New function.
(soap-inspect-xs-simple-type): Print attributes.
(soap-inspect-xs-complex-type): Likewise.
* soap-inspect.el (soap-resolve-references-for-xs-simple-type):
Resolve references for attributes.
(soap-resolve-references-for-xs-complex-type): Likewise.
* soap-client.el (soap-xml-node-find-matching-child): Rename from
soap-xml-node-first-child.
(soap-xs-parse-attribute): Call soap-xml-node-find-matching-child.
(soap-xs-parse-simple-type): Likewise.
* soap-client.el (soap-invoke-async): Add error checking.
* soap-client.el (soap-invoke-internal): New function.
(soap-invoke-async): Call soap-invoke-internal.
(soap-invoke): Likewise.
* soap-client.el (soap-invoke-async): Ensure buffer passed to
url-retrieve callback is killed.
* soap-client.el (soap-parse-wsdl-phase-validate-node): Rename
function.
(soap-parse-wsdl-phase-fetch-imports): Likewise.
(soap-parse-wsdl-phase-parse-schema): Likewise.
(soap-parse-wsdl-phase-fetch-schema): Likewise.
(soap-parse-wsdl-phase-finish-parsing): Likewise.
(soap-parse-wsdl): Update calls.
* soap-client.el (soap-invoke-async): Fix callback invocation.
* soap-client.el (soap-invoke-async): New function.
(soap-invoke): Reimplement using soap-invoke-async.
* soap-client.el (soap-parse-server-response): Improve docstring.
(soap-invoke): Inline call to soap-parse-server-response.
* soap-client.el (soap-decode-xs-complex-type): Prevent incorrect
warning.
* soap-client.el (soap-parse-server-response): Rename
soap-process-url-response. Destroy the mime part.
(soap-invoke): Call soap-parse-server-response.
* soap-client.el: Update copyright date.
* soap-client.el: Fix checkdoc issues.
* soap-client.el: Fix indentation and long lines.
* soap-client.el (soap-time-format): Remove variable.
(soap-encode-xs-basic-type): Simplify date-time format detection.
(soap-decode-xs-basic-type): Remove soap-time-format support.
* soap-client.el (soap-process-url-response): New function.
(soap-fetch-xml-from-url): Call soap-process-url-response.
(soap-parse-wsdl-phase-1): New function.
(soap-parse-wsdl-phase-2): Likewise.
(soap-parse-wsdl-phase-3): Likewise.
(soap-parse-wsdl-phase-4): Likewise.
(soap-parse-wsdl-phase-5): Likewise.
(soap-parse-wsdl): Call phase functions.
* soap-client.el (soap-decode-xs-basic-type): Remove one-argument
and call.
* soap-client.el (soap-decode-date-time): Improve docstring.
* soap-client.el (soap-xmlschema-imports): Remove variable.
(soap-parse-schema): Add wsdl argument. Look up XML schema
imports from wsdl.
(soap-load-wsdl): Do not set soap-xmlschema-imports.
(soap-parse-wsdl): Get XML schema imports from wsdl.
* soap-client.el (soap-current-file): Remove variable.
(soap-wsdl): Add current-file slot.
(soap-fetch-xml-from-url): Add wsdl argument. Look up current
file from wsdl.
(soap-fetch-xml-from-file): Likewise.
(soap-fetch-xml): Likewise.
(soap-load-wsdl): Always create wsdl object first.
(soap-parse-wsdl): Pass wsdl to soap-fetch-xml.
* soap-client.el (soap-xs-element): Add is-group slot.
(soap-xs-parse-element): Set is-group slot.
(soap-resolve-references-for-xs-element): Skip is-group elements.
(soap-xs-complex-type): Add is-group slot.
(soap-xs-parse-complex-type): Set is-group slot.
(soap-xs-parse-sequence): Parse xsd:group elements.
(soap-resolve-references-for-xs-complex-type): Inline elements
from referenced xsd:group nodes.
(soap-parse-schema): Parse xsd:group nodes.
* soap-client.el (soap-invoke): Don't set url-http-version to 1.0.
* soap-client.el (soap-decode-xs-complex-type): Allow choice nodes
to accept multiple values.
* soap-client.el (soap-encode-body): Check parameters argument for
extra header values.
* soap-client.el (soap-well-known-xmlns): Add wsa and wsaw tags.
(soap-operation): Add input-action and output-action slots.
(soap-parse-operation): Parse wsaw:Action nodes.
(soap-encode-body): Encode service-url for WS-Addressing.
(soap-create-envelope): Likewise.
(soap-invoke): Update soap-create-envelope call to provide
service-url argument.
* soap-client.el (soap-decode-xs-complex-type): Support xsi:type
override attribute.
(soap-decode-array): Likewise.
* soap-client.el (soap-parse-schema): Handle location attribute.
* soap-client.el (soap-decode-type): Check that multiRef matched
validation regexp.
* soap-client.el (soap-encode-xs-simple-type): Encode xsd:list
nodes.
(soap-decode-xs-simple-type): Decode xsd:list nodes.
* soap-client.el (soap-get-candidate-elements): Fix reference
handling.
* soap-client.el (soap-xs-simple-type): Add is-list slot.
(soap-xs-parse-simple-type): Call soap-xs-add-list for xsd:list
nodes.
(soap-xs-add-list): New function.
* soap-client.el (soap-encode-xs-element): When a boolean is
expected, interpret nil as "false".
* soap-client.el (soap-make-xs-basic-types): Add gYearMonth,
gYear, gMonthDay, gDay and gMonth.
* soap-client.el (soap-time-format): New variable.
(soap-encode-xs-basic-type): Handle dateTime, time, date,
gYearMonth, gYear, gMonthDay, gDay and gMonth.
(soap-decode-date-time): New function.
(soap-decode-xs-basic-type): Use soap-decode-date-time.
* soap-client.el (soap-encode-xs-basic-type): Validate value after
encoding.
(soap-decode-xs-basic-type): Validate value before decoding.
* soap-client.el (soap-validate-xs-basic-type): New function.
(soap-validate-xs-simple-type): Call soap-validate-xs-basic-type.
* soap-client.el (soap-xs-add-union): Append result to base
instead of overwriting it.
(soap-validate-xs-simple-type): Add union support.
* soap-client.el (soap-xs-add-restriction): Translate pattern to
Emacs regexp using xsdre-translate.
(soap-validate-xs-simple-type): Validate value against pattern.
* soap-client.el (soap-xs-add-union): Preserve WSDL order of
inline simpleType nodes.
(soap-decode-type): Handle union types.
* soap-client.el (soap-decode-xs-attributes): Decode basic-type
attributes.
* soap-client.el (soap-get-xs-attributes-from-groups): renamed
from soap-xs-attribute-group-consolidate, all callers updated
(soap-get-xs-attributes): renamed from
soap-xs-attributes-consolidate, all callers updated
* soap-client.el (soap-xs-type): Add attribute-group slot.
(soap-xs-attribute-group): New type.
(soap-xs-parse-attribute-group): New function.
(soap-resolve-references-for-xs-attribute-group): Likewise.
(soap-xs-add-extension): Handle attribute groups.
(soap-resolve-references-for-xs-simple-type): Likewise.
(soap-xs-parse-complex-type): Likewise.
(soap-xs-parse-extension-or-restriction): Likewise.
(soap-resolve-references-for-xs-complex-type): Likewise.
(soap-xs-attribute-group-consolidate): New function.
(soap-xs-attributes-consolidate): Handle attribute groups.
(soap-parse-schema): Likewise.
* soap-client.el (soap-encode-xs-basic-type): Fix boolean
encoding.
* soap-client.el (soap-encode-xs-complex-type): Print ref element
names in warnings.
* soap-client.el (soap-decode-xs-complex-type): Fix splicing.
* soap-client.el (soap-decode-xs-complex-type): Eliminate invalid
warnings for choice types.
* soap-client.el (soap-encode-xs-complex-type-attributes): Also
encode base type attributes.
* soap-client.el (soap-encode-xs-complex-type): Fix compilation
warning. Print e-name in warnings, or element if e-name is nil.
* soap-client.el (soap-xs-element): Add alternatives slot.
(soap-xs-parse-element): Set substitution-group.
(soap-resolve-references-for-xs-element): Populate alternatives
slot.
(soap-get-candidate-elements): New function.
(soap-encode-xs-complex-type): Iterate through all candidate
elements. Handle types with nil type indicator. Fix warning
logic.
* soap-client.el (soap-current-wsdl): moved declaration earlier in
the file to prevent compiler warning.
* soap-client.el (soap-node-optional): New function.
(soap-node-multiple): Likewise.
(soap-xs-parse-element): Call soap-node-optional and
soap-node-multiple.
(soap-xs-complex-type): Add optional? and multiple? slots.
(soap-xml-get-children-fq): New function.
(soap-xs-element-get-fq-name): Likewise.
(soap-xs-complex-type-optional-p): Likewise.
(soap-xs-complex-type-multiple-p): Likewise.
(soap-xs-attributes-consolidate): Likewise.
(soap-decode-xs-attributes): Likewise.
(soap-decode-xs-complex-type): Decode types with nil type
indicator. Support children that use local namespaces. Decode
attributes. Add type considerations to optional? and multiple?
warnings.
* soap-client.el (soap-xs-parse-extension-or-restriction): Store
parsed attributes.
(soap-encode-xs-complex-type-attributes): Encode custom
attributes.
* soap-client.el (soap-encode-xs-complex-type-attributes): don't
add the xsi:type attribute (Exchange refuses requests which have
this attribute)
* soap-client.el, soap-inspect.el: converted to lexical binding,
corrected compiler warnings about unused function arguments and
local variables.
* soap-client.el (soap-decode-xs-complex-type): Handle nil type
indicator.
(soap-parse-envelope): Handle response headers.
(soap-parse-response): Likewise. Only return non-nil decoded
values.
* soap-client.el (soap-validate-xs-simple-type): Return validated
value.
* soap-client.el (soap-xs-parse-element)
(soap-xs-parse-simple-type)
(soap-xs-parse-complex-type)
(soap-parse-message)
(soap-parse-operation): add the current namespace to the element
being created
(soap-resolve-references-for-xs-element)
(soap-resolve-references-for-xs-simple-type)
(soap-resolve-references-for-xs-complex-type)
(soap-resolve-references-for-operation): resolve the namespace to
the namespace tag
(soap-make-wsdl): specify a namespace tag when creating the xsd
and soapenc namespaces
(soap-wsdl-resolve-references): don't update namespace tags in
elements here
(soap-parse-port-type): bind the urn: to soap-target-xmlns
(soap-encode-body): don't add nil namespace tags to
soap-encoded-namespaces
* soap-inspect.el: use `soap-make-wsdl` to construct the object
for registering the soap-inspect method.Make debbugs tests pass
* soap-client.el (soap-decode-any-type): use soap-l2fq on the type
name, also skip string only nodes when decoding a structure.
(soap-xs-parse-complex-type): (BUG) dispatch parsing for choice
types too
(soap-encode-body): grab the header value from the param table
* soap-client.el (soap-should-encode-value-for-xs-element): new
function
(soap-encode-xs-element): don't encode nil value unless needed
* soap-client.el (soap-bound-operation): new slot `soap-body`
(soap-parse-binding): parse the message parts required in the body
(soap-encode-body): encode only the parts that are declared to be
part of the body
* soap-client.el (soap-encode-xs-element): use the fq name when
writing out the tag.
(soap-encode-body): remove hack that inserts the xmlns in the
element attributes list.
* soap-client.el (soap-xs-attribute): add "default" slot
(soap-xs-parse-attribute): default slot is set from the XML
"fixed" attribute.
(soap-encode-xs-complex-type-attributes): encode any attributes
that have a default value. Also, don't put the xsi:nil attribute
when the complex type has no content anyway.
* soap-client.el (soap-well-known-xmlns): add the xml namespace
(soap-local-xmlns): start with the xml namespace
(soap-xml-node-first-child): skip xsd:annotation nodes too
(soap-make-xs-basic-types): more xsd types added
(soap-encode-xs-basic-type, soap-decode-xs-basic-type): handle
"language", "time", "date", "nonNegativeInteger"
(soap-resolve-references-for-xs-element): don't signal an error if
the element does not have a type.
(soap-xs-parse-simple-type): subtypes are handled with ecase,
added stum for xsd:list
(soap-xs-add-union): call soap-l2fq on all union members
(soap-xs-add-extension): call soap-l2fq on the base member
(soap-resolve-references-for-xs-simple-type): don't signal an
error if the simple type has no base.
(soap-resolve-references-for-xs-simple-type): bugfix, call
soap-wsdl-get on each type of the base
* soap-client.el (soap-resolve-references-for-xs-attribute):
referenced type can be eiher a simple type or a basic type
(soap-xs-add-restriction)
(soap-xs-parse-extension-or-restriction): use `soap-l2fq' on base
(soap-make-xs-basic-types)
(soap-encode-xs-basic-type, soap-decode-xs-basic-type): add
support for more XMLSchema basic types
(soap-current-file, soap-xmlschema-imports): new defvars
(soap-parse-schema): add locations from xsd:import tags to
`soap-xmlschema-imports'
(soap-wsdl): make destructor private
(soap-make-wsdl): new defun, SOAP-WSDL object constructor
(soap-wsdl-add-alias): check if we try to replace aliases
(soap-fetch-xml-from-url, soap-fetch-xml-from-file)
(soap-fetch-xml): new defuns
(soap-load-wsdl): updated to load the WSDL from either a file or
an url
(soap-load-wsdl-from-url): now an alias to `soap-load-wsdl'
(soap-parse-wsdl): process wsdl:import tags and imports from
`soap-xmlschema-imports'
* soap-client.el (soap-l2wk): bugfix: call symbolp instead of
symbol-name
(soap-l2fq): make the name part always a string
(soap-name-p): new defun, used for name tests
* soap-inspect.el (soap-sample-value-for-xs-complex-type): supply
sample values for choice types with a special tag
* soap-client.el (soap-encode-xs-complex-type): handle anonymous
elements correctly
(soap-encode-value): accept nodes that have no namespace tag
* soap-client.el (soap-invoke): encode the string for
`url-request-data' as UTF-8. Fixes issue 16
Co-authored-by: Alexandru Harsanyi <AlexHarsanyi@gmail.com>
This patch should not change behavior. It typically omits backslashes
where they are redundant (e.g., in the string literal "^\$").
In a few places, insert backslashes where they make regular
expressions clearer: e.g., replace "^\*" (equivalent to "^*") with
"^\\*", which has the same effect as a regular expression.
Also, use ‘\ %’ instead of ‘\%’ when avoiding confusion with SCCS IDs,
and similarly use ‘\ $’ instead of ‘\$’ when avoiding confusion with
RCS IDs, as that makes it clearer that the backslash is intended.
Mostly these fixes prevent the transliteration of apostrophes
that should stay apostrophes. Also, prefer curved quotes in
Bahá’í proper names, as that’s the preferred Bahá’í style and
these names are chock-full of non-ASCII characters anyway.
* lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload)
(eieio-defclass-internal):
* lisp/emacs-lisp/eieio.el (defclass):
* lisp/hi-lock.el (hi-lock-mode):
Don’t transliterate Lisp apostrophes when generating a
doc string or diagnostic.
* lisp/international/mule-diag.el (list-coding-systems-1):
* lisp/international/ogonek.el (ogonek-jak, ogonek-how):
* lisp/mail/sendmail.el (sendmail-query-user-about-smtp):
* lisp/vc/ediff-mult.el (ediff-redraw-registry-buffer):
* lisp/vc/ediff-ptch.el (ediff-fixup-patch-map):
Substitute quotes before putting them in the help buffer.
* soap-client.el (soap-resolve-references-for-sequence-type)
(soap-resolve-references-for-array-type): hack to prevent self
references, see Bug#9.
(soap-parse-envelope): report the contents of the 'detail' node
when receiving a fault reply.
(soap-parse-envelope): report the contents of the entire 'detail' node.
* soap-inspect.el (soap-sample-value-for-simple-type)
(soap-inspect-simple-type): new function
* soap-client.el (soap-simple-type): new struct
(soap-default-xsd-types, soap-default-soapenc-types)
(soap-decode-basic-type, soap-encode-basic-type): support
unsignedInt and double basic types
(soap-resolve-references-for-simple-type)
(soap-parse-simple-type, soap-encode-simple-type): new function
(soap-parse-schema): parse xsd:simpleType declarations
* soap-client.el (soap-default-xsd-types)
(soap-default-soapenc-types): add integer, byte and anyURI types
(soap-parse-complex-type-complex-content): use `soap-wk2l' to find
the local name of "soapenc:Array"
(soap-decode-basic-type, soap-encode-basic-type): support encoding
decoding integer, byte and anyURI xsd types.
* lisp/files.el (hack-one-local-variable-eval-safep):
Consider "eval: (foo-mode)" to be safe.
* doc/emacs/custom.texi (Specifying File Variables):
Deprecate using mode: for minor modes.
* etc/NEWS: Mention this.
* lisp/doc-view.el, lisp/net/soap-client.el:
Change "mode:" minor-mode file local variables to use "eval:".
* net/soap-client.el (soap-namespace-put-link): Check if the target
name is fully qualified -- use only the name part.
(soap-parse-complex-type, soap-parse-sequence): Recognize xsd:all
types, treated the same as xsd:sequence. (Bug#8166)