+2015-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Spelling fix (Bug#21420)
+
+2015-09-05 Nicolas Petton <nicolas@petton.fr>
+
+ Improve the semantic of map-some
+ Update map-some to return the returned by the predicate, similar to
+ seq-some.
+ * lisp/emacs-lisp/map.el (map-some): Update the function to return the
+ return value of the predicate.
+ * test/automated/map-tests.el (test-map-some): Update the test to check
+ for non-nil values only.
+
+ Rename map-contains-key-p and map-some-p
+ Remove the "-p" suffix from both function names.
+ * lisp/emacs-lisp/map.el (map-contains-key, map-some): Rename the functions.
+ * test/automated/map-tests.el (test-map-contains-key, test-map-some):
+ Update both test functions.
+
+ Improve the semantic of seq-some
+ Update seq-some to return non-nil if the predicate returns non-nil for
+ any element of the seq, in which case the returned value is the one
+ returned by the predicate.
+ * lisp/emacs-lisp/seq.el (seq-some): Update the function and its
+ docstring.
+ * test/automated/seq-tests.el (test-seq-some): Add a regression test.
+ * doc/lispref/sequences.texi (Sequence Functions): Update the
+ documentation for seq-some.
+
+ Rename seq-some-p to seq-some and seq-contains-p to seq-contains
+ * lisp/emacs-lisp/seq.el (seq-some, seq-contains): Rename the functions
+ without the "-p" prefix.
+ * test/automated/seq-tests.el (test-seq-some, test-seq-contains): Update
+ the tests accordingly.
+ * doc/lispref/sequences.texi (Sequence Functions): Update the
+ documentation for seq.el.
+
+2015-09-05 Paul Eggert <eggert@Penguin.CS.UCLA.EDU>
+
+ text-quoting-style for usage of fn names with ‘’
+ * lisp/help.el (help--docstring-quote): Don’t assume
+ text-quoting-style is ‘curve’ when generating usage strings for
+ functions whose names contain curved quotes.
+
+2015-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix fix for describe-function keybinding confusion
+ This fixes a bug introduced by the previous patch.
+ * lisp/help-fns.el (help-fns--signature):
+ Last arg of help-fns--signature is now a buffer, or nil if a
+ raw signature is wanted. All callers changed.
+ (describe-function-1): Use this to do the right thing with signatures.
+
+2015-09-05 Johan Bockgård <bojohan@gnu.org>
+
+ * doc/lispref/frames.texi (Mouse Tracking): Fix typo.
+
+ Use PAT rather than UPAT in pcase macros
+ * lisp/emacs-lisp/cl-macs.el (cl-struct) <pcase-defmacro>:
+ * lisp/emacs-lisp/eieio.el (eieio) <pcase-defmacro>: Use PAT rather
+ than UPAT.
+
+2015-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix describe-function keybinding confusion
+ * lisp/help-fns.el (describe-function-1): Compute signature
+ in the original buffer, not in standard-output, so that
+ substitute-command-keys uses the proper keybindings.
+ This fixes Bug#21412, introduced in commit
+ 2015-06-11T10:23:46-0700!eggert@cs.ucla.edu.
+
+2015-09-05 Xue Fuqiao <xfq.free@gmail.com>
+
+ * doc/emacs/programs.texi (Program Modes): Remove an index entry.
+
+2015-09-05 Robert Pluim <rpluim@gmail.com> (tiny change)
+
+ Avoid read error messages from 'inotify'
+ * src/process.c (wait_reading_process_output): Add a
+ 'tls_available' set and manipulate it instead of 'Available' when
+ checking TLS inputs. Assign the value to 'Available' only if we
+ find any TLS data waiting to be read. This avoids error messages
+ from 'inotify' that tries to read data it shouldn't. (Bug#21337)
+
+2015-09-05 Eli Zaretskii <eliz@gnu.org>
+
+ Avoid errors in thing-at-point with 2nd argument non-nil
+ * lisp/thingatpt.el (thing-at-point): Only call 'length' on
+ sequences. (Bug#21391)
+
+2015-09-05 Philip <pipcet@gmail.com> (tiny change)
+
+ Fix segfaults due to using a stale face ID
+ * src/xdisp.c (forget_escape_and_glyphless_faces): New function.
+ (display_echo_area_1, redisplay_internal): Call it to avoid
+ reusing stale face IDs for 'escape-glyph' and 'glyphless-char'
+ faces, which could case a segfault if the frame's face cache was
+ freed since the last redisplay. (Bug#21394)
+ * src/xfaces.c (free_realized_faces): Call forget_escape_and_glyphless_faces.
+ * src/dispextern.h (forget_escape_and_glyphless_faces): Add prototype.
+
+2015-09-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix minor problems with " in manual
+
+2015-09-04 Michael Albinus <michael.albinus@gmx.de>
+
+ * doc/misc/tramp.texi (Frequently Asked Questions): New item for ad-hoc
+ multi-hop files.
+
+2015-09-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Support automated ‘make check’ in non-C locale
+ This lets the builder optionally test Emacs behavior in other locales.
+ The C locale is still the default for tests.
+ * test/automated/Makefile.in (TEST_LOCALE): New macro.
+ (emacs): Use it.
+ * test/automated/flymake-tests.el (flymake-tests--current-face):
+ Use C locale for subprocesses so that tests behave as expected.
+ * test/automated/python-tests.el:
+ (python-shell-prompt-validate-regexps-1)
+ (python-shell-prompt-validate-regexps-2)
+ (python-shell-prompt-validate-regexps-3)
+ (python-shell-prompt-validate-regexps-4)
+ (python-shell-prompt-validate-regexps-5)
+ (python-shell-prompt-validate-regexps-6)
+ (python-shell-prompt-set-calculated-regexps-1):
+ Adjust expected output to match locale.
+ * test/automated/tildify-tests.el (tildify-test--test)
+ (tildify-space-test--test, tildify-space-undo-test--test):
+ This test assumes UTF-8 encoding.
+
+2015-09-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some more docstring etc. quoting problems
+ 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.
+
+2015-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ Re-add the notion of echo_prompt lost in the translation
+ * src/keyboard.h (struct kboard): Replace echo_after_prompt with new
+ echo_prompt which contains the actual string. Update all uses.
+ * src/keyboard.c (kset_echo_prompt): New function.
+ (echo_update): Add echo_prompt at the very beginning.
+ (read_char): Remove workaround for bug#19875, not needed any more.
+ (read_key_sequence): Set echo_prompt rather than echo_string (bug#21403).
+ (mark_kboards): Mark echo_prompt.
+
+ Fix disassembly of non-compiled lexical functions (bug#21377)
+ * lisp/emacs-lisp/bytecomp.el (byte-compile): Handle `closure' arg.
+ * lisp/emacs-lisp/disass.el: Use lexical-binding.
+ (disassemble): Recognize `closure's as well.
+ (disassemble-internal): Use indirect-function and
+ help-function-arglist, and accept `closure's.
+ (disassemble-internal): Use interactive-form.
+ (disassemble-1): Use functionp.
+
+ (tex--prettify-symbols-compose-p): Don't compose in verbatim blocks!
+ * lisp/textmodes/tex-mode.el (tex--prettify-symbols-compose-p):
+ Don't compose inside verbatim blocks!
+
+2015-09-03 Mark Oteiza <mvoteiza@udel.edu>
+
+ * lisp/thingatpt.el (thing-at-point-uri-schemes): Add "man:"
+ (bug#19441)
+
+ * lisp/mpc.el (mpc--proc-connect): Handle unix sockets (bug#19394)
+
+2015-09-03 Dmitry Gutov <dgutov@yandex.ru>
+
+ vc-git-mode-line-string: Explicitly re-apply the face
+ * lisp/vc/vc-git.el (vc-git-mode-line-string): Explicitly re-apply
+ the face (bug#21404).
+
+2015-09-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Treat initial-scratch-message as a doc string
+ * doc/emacs/building.texi (Lisp Interaction):
+ * doc/lispref/os.texi (Startup Summary):
+ * etc/NEWS: Document this.
+ * lisp/startup.el (initial-scratch-message):
+ Look up find-file’s key rather than hardcoding it.
+ (command-line-1): Substitute the doc string.
+ This also substitutes the quotes, which will help test display
+ quoting at startup.
+
+ Fix describe-char bug with glyphs on terminals
+ * lisp/descr-text.el (describe-char): Terminals can have glyphs in
+ buffers too, so don’t treat them differently from graphic displays.
+ Without this fix, describe-char would throw an error on a terminal
+ if given a glyph with a non-default face.
+
+ Follow text-quoting-style in display table init
+ This attempts to fix a problem reported by Alan Mackenzie in:
+ http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00112.html
+ * doc/lispref/display.texi (Active Display Table):
+ Mention how text-quoting-style affects it.
+ * doc/lispref/help.texi (Keys in Documentation):
+ Say how to set text-quoting-style in ~/.emacs.
+ * etc/NEWS: Document the change.
+ * lisp/startup.el (startup--setup-quote-display):
+ Follow user preference if text-quoting-style is set.
+ (command-line): Setup quote display again if user expresses
+ a preference in .emacs.
+
+2015-09-02 K. Handa <handa@gnu.org>
+
+ Fix typo
+ * ftfont.c (ftfont_drive_otf): otf_positioning_type_components_mask -> OTF_positioning_type_components_mask.
+
+ fix previous change
+ * ftfont.c (ftfont_drive_otf): Remember some bits of
+ OTF_Glyph->positioning_type in MFLTGlyphFT->libotf_positioning_type.
+
+2015-09-01 David Caldwell <david@porkrind.org> (tiny change)
+
+ * lisp/vc/vc-hooks.el (vc-refresh-state): New command
+ (vc-refresh-state): Rename from vc-find-file-hook and make interactive.
+ (vc-find-file-hook): Redefine as obsolete alias.
+
+2015-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Escape ` and ' in doc
+ Escape apostrophes and grave accents in docstrings if they are
+ are supposed to stand for themselves and are not quotes. Remove
+ apostrophes from docstring examples like ‘'(calendar-nth-named-day
+ -1 0 10 year)’ that confuse source code with data. Do some other
+ minor docstring fixups as well, e.g., insert a missing close
+ quote.
+
+2015-09-01 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ Generalize the prefix-command machinery of C-u
+ * lisp/simple.el (prefix-command-echo-keystrokes-functions)
+ (prefix-command-preserve-state-hook): New hooks.
+ (internal-echo-keystrokes-prefix): New function.
+ (prefix-command--needs-update, prefix-command--last-echo): New vars.
+ (prefix-command-update, prefix-command-preserve): New functions.
+ (reset-this-command-lengths): New compatibility definition.
+ (universal-argument--mode): Call prefix-command-update.
+ (universal-argument, universal-argument-more, negative-argument)
+ (digit-argument): Call prefix-command-preserve-state.
+ * src/keyboard.c: Call internal-echo-keystrokes-prefix to build
+ the "prefix argument" to echo.
+ (this_command_key_count_reset, before_command_key_count)
+ (before_command_echo_length): Delete variables.
+ (echo_add_key): Always add a space.
+ (echo_char): Remove.
+ (echo_dash): Don't give up when this_command_key_count is 0, since that
+ is now the case after a prefix command.
+ (echo_update): New function, extracted from echo_now.
+ (echo_now): Use it.
+ (add_command_key, read_char, record_menu_key): Remove old disabled code.
+ (command_loop_1): Don't refrain from pushing an undo boundary when
+ prefix-arg is set. Remove other prefix-arg special case, now handled
+ directly in the prefix commands instead. But call echo_now if there's
+ a prefix state to echo.
+ (read_char, record_menu_key): Use echo_update instead of echo_char.
+ (read_key_sequence): Use echo_now rather than echo_dash/echo_char.
+ (Freset_this_command_lengths): Delete function.
+ (syms_of_keyboard): Define Qinternal_echo_keystrokes_prefix.
+ (syms_of_keyboard): Don't defsubr Sreset_this_command_lengths.
+ * lisp/simple.el: Use those new hooks for C-u.
+ (universal-argument--description): New function.
+ (prefix-command-echo-keystrokes-functions): Use it.
+ (universal-argument--preserve): New function.
+ (prefix-command-preserve-state-hook): Use it.
+ (command-execute): Call prefix-command-update if needed.
+ * lisp/kmacro.el (kmacro-step-edit-prefix-commands)
+ (kmacro-step-edit-prefix-index): Delete variables.
+ (kmacro-step-edit-query, kmacro-step-edit-insert): Remove ad-hoc
+ support for prefix arg commands.
+ (kmacro-step-edit-macro): Don't bind kmacro-step-edit-prefix-index.
+ * lisp/emulation/cua-base.el (cua--prefix-override-replay)
+ (cua--shift-control-prefix): Use prefix-command-preserve-state.
+ Remove now unused arg `arg'.
+ (cua--prefix-override-handler, cua--prefix-repeat-handler)
+ (cua--shift-control-c-prefix, cua--shift-control-x-prefix):
+ Update accordingly.
+ (cua--prefix-override-timeout): Don't call reset-this-command-lengths
+ any more.
+ (cua--keep-active, cua-exchange-point-and-mark): Don't set mark-active
+ if the mark is not set.
+
+2015-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Rework quoting in tutorial
+ * doc/lispintro/emacs-lisp-intro.texi (Sample let Expression)
+ (if in more detail, type-of-animal in detail, else): Rework the
+ early example to use " rather than ' so that we don’t burden
+ complete novices with the low-priority detail of text quoting style.
+ (Complete zap-to-char, kill-region, Complete copy-region-as-kill)
+ (kill-new function, kill-ring-yank-pointer)
+ (Complete forward-sentence, Loading Files)
+ (Code for current-kill, Code for current-kill, yank):
+ Resurrect the Emacs 22 versions of the code, which uses grave
+ quoting style in doc strings.
+ (Complete zap-to-char): Mention how quoting works in doc strings.
+
+ Setup quote display only if interactive
+ * lisp/startup.el (command-line):
+ Skip call to startup--setup-quote-display if noninteractive.
+ Without this change, python-shell-prompt-validate-regexps-1
+ fails in test/automated/python-tests.el when run in an
+ en_US.utf8 locale on Fedora.
+
+2015-09-01 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ Use defalias at the top level
+ * lisp/gnus/gnus-util.el (gnus-format-message):
+ * lisp/net/tls.el (tls-format-message): Use defalias at the top level
+ so as to make eval-and-compile unnecessary. Thanks to Stefan Monnier.
+
+2015-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ terminal-init-w32console mimicks command-line
+ Problem reported by Eli Zaretskii.
+ * lisp/startup.el (startup--setup-quote-display):
+ New function, refactored from a part of ‘command-line’.
+ (command-line): Use it.
+ * lisp/term/w32console.el (terminal-init-w32console):
+ Use it, so that this function stays consistent with ‘command-line’.
+
+ Display replacement quotes with shadow glyphs
+ * lisp/startup.el (command-line): When displaying ASCII
+ replacements for curved quotes, use a shadow glyph instead of a
+ regular one, to avoid ambiguity.
+
+2015-09-01 Michael Albinus <michael.albinus@gmx.de>
+
+ * lisp/net/tramp-sh.el (tramp-methods) <sudo>: Mask "Password:".
+
+2015-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Docstring fixes re quotes in C code
+ Fix some docstring quoting problems, mostly by escaping apostrophe.
+
+2015-09-01 Michael Albinus <michael.albinus@gmx.de>
+
+ Some Tramp password fixes
+ * lisp/net/tramp.el (tramp-clear-passwd): Clear also the passwords
+ of the hops.
+ * lisp/net/tramp-sh.el (tramp-methods) <sudo>: Move "-p" "Password:"
+ at the beginning of the command. Otherwise, it could be
+ interpreted as password prompt if the remote host echoes the
+ command.
+ (tramp-remote-coding-commands): Add "openssl enc -base64".
+
+2015-09-01 Dmitry Gutov <dgutov@yandex.ru>
+
+ Make vc-git-working-revision always return the commit hash
+ * lisp/vc/vc-git.el (vc-git-working-revision):
+ Return the commit hash (bug#21383).
+ (vc-git--symbolic-ref): New function, extracted from above.
+ (vc-git-mode-line-string): Use it.
+
+2015-09-01 K. Handa <handa@gnu.org>
+
+ Use the new type MFLTGlyphFT for MFLTGlyphString.glyphs.
+ * ftfont.c (MFLTGlyphFT): New type.
+ (ftfont_get_glyph_id, ftfont_get_metrics, ftfont_drive_otf)
+ (ftfont_shape_by_flt): Make MFLTGlyphFT the actual type of
+ elements in the array MFLTGlyphString.glyphs.
+
+2015-09-01 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ Improve comments in elisp-mode.el, elisp-mode-tests.el
+ * lisp/progmodes/elisp-mode.el: Clean up FIXMEs, comments.
+
+ Delete Emacs 25 test in mode-local.el
+ * lisp/cedet/mode-local.el (describe-mode-local-overload): Fix missed an
+ edit in previous commit.
+
+ Show all known mode-local overrides in *Help*
+ * lisp/cedet/mode-local.el (describe-mode-local-overload): Assume Emacs
+ 25. Add all known mode-local overrides.
+
+2015-09-01 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lisp/gnus/gnus-sum.el (gnus-summary-search-article):
+ Ensure that the article where the search word is found is displayed
+ and pointed to in the summary buffer.
+
+2015-08-31 Zachary Kanfer <zkanfer@gmail.com> (tiny change)
+
+ * lisp/newcomment.el (comment-dwim): Use `use-region-p'
+ When the region is active, but is empty (length 0), act as though
+ the region was not active; that is, put a comment at the end of
+ the line. (Bug#21119)
+
+2015-08-31 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ Port tls.el to older Emacs
+ * lisp/net/tls.el (tls-format-message):
+ Alias to format-message, or format if not available.
+ (open-tls-stream): Use it.
+
+2015-08-31 Rüdiger Sonderfeld <ruediger@c-plusplus.net>
+
+ hideif.el: Recognize .h++ as C++ header.
+ * lisp/progmodes/hideif.el (hide-ifdef-header-regexp): Add .h++.
+
+ isearch: Document character folding mode.
+ * isearch.el (isearch-forward): Mention `isearch-toggle-character-fold'
+ in docstring.
+
+2015-08-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ Quoting fixes in ERC and Eshell
+ * lisp/erc/erc-autoaway.el (erc-autoaway-set-away):
+ * lisp/erc/erc-backend.el (define-erc-response-handler):
+ * lisp/erc/erc-fill.el (erc-fill-static-center):
+ * lisp/eshell/em-dirs.el (eshell-save-some-last-dir):
+ * lisp/eshell/em-glob.el (eshell-glob-entries):
+ * lisp/eshell/em-hist.el (eshell-save-some-history):
+ * lisp/eshell/em-unix.el (eshell-remove-entries, eshell/rm)
+ (eshell-shuffle-files):
+ * lisp/eshell/esh-cmd.el (eshell-do-eval):
+ * lisp/eshell/esh-proc.el (eshell-process-interact)
+ (eshell-query-kill-processes):
+ Respect ‘text-quoting-style’ in diagnostics and doc strings.
+
+ Quoting fixes in Gnus
+ * lisp/gnus/gnus-agent.el:
+ (gnus-agent-possibly-synchronize-flags-server):
+ * lisp/gnus/gnus-art.el (gnus-article-browse-delete-temp-files):
+ * lisp/gnus/gnus-eform.el (gnus-edit-form):
+ * lisp/gnus/gnus-group.el (gnus-group-edit-group)
+ (gnus-group-nnimap-edit-acl):
+ * lisp/gnus/gnus-topic.el (gnus-topic-edit-parameters):
+ * lisp/gnus/mail-source.el (mail-source-delete-old-incoming):
+ * lisp/gnus/message.el (message-strip-subject-encoded-words)
+ (message-check-recipients, message-send-form-letter):
+ * lisp/gnus/mm-decode.el (mm-display-part):
+ * lisp/gnus/mm-uu.el (mm-uu-pgp-signed-extract-1):
+ * lisp/gnus/mml-smime.el (mml-smime-get-dns-cert)
+ (mml-smime-get-ldap-cert):
+ * lisp/gnus/spam-report.el (spam-report-process-queue):
+ Respect ‘text-quoting-style’ in diagnostics.
+ * lisp/gnus/gnus-art.el (article-display-face)
+ * lisp/gnus/gnus-fun.el (gnus-display-x-face-in-from):
+ Use straight quoting in email.
+ * lisp/gnus/rfc2231.el (rfc2231-decode-encoded-string):
+ Escape apostrophes in doc strings.
+
+ Quoting fixes in lisp mail, mh-e, net, url
+ * lisp/mail/emacsbug.el (report-emacs-bug)
+ (report-emacs-bug-hook): Use straight quotes in outgoing email,
+ * lisp/mail/feedmail.el (feedmail-message-action-help-blat):
+ * lisp/mail/rmail.el (rmail-unknown-mail-followup-to):
+ * lisp/mail/rmailout.el (rmail-output-read-file-name):
+ * lisp/net/imap.el (imap-interactive-login):
+ * lisp/net/tls.el (open-tls-stream):
+ * lisp/url/url-auth.el (url-register-auth-scheme):
+ Respect ‘text-quoting-style’ in diagnostics.
+ * lisp/mh-e/mh-e.el (mh-sortm-args):
+ Quote docstring example using text quotes, not as a Lisp quote.
+
+2015-08-31 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ Fix some byte-compiler warnings in EDE
+ This fixes a bug that caused ede-generic-new-autoloader to overwrite the
+ existing autoloader list, rather than add to it.
+ * lisp/cedet/ede/auto.el (ede-project-class-files): Delete obsolete name
+ argument to eieio class constructor.
+ (ede-show-supported-projects): New.
+ (ede-add-project-autoload): Replace obsolete `eieio-object-name-string'
+ with (oref ... name).
+ (ede-auto-load-project): Use slot name, not initarg key.
+ * lisp/cedet/ede/generic.el (ede-generic-load,
+ ede-generic-find-matching-target): Use slot name, not initarg key.
+ (ede-find-target): Use oref-default on class name.
+ (ede-generic-new-autoloader): Delete obsolete name argument to eieio
+ class constructor.
+ (ede-enable-generic-projects): Make project type names unique.
+
+2015-08-31 Eli Zaretskii <eliz@gnu.org>
+
+ Fix directory accessibility tests for w32 network volumes
+ * src/w32.c (faccessat): Don't fail with network volumes without a
+ share.
+ (w32_accessible_directory_p): Handle network volumes without a
+ share.
+
+ Fix handling long file names in readdir on MS-Windows
+ * src/w32.c (sys_readdir): Append "\*" to the directory after
+ converting it to UTF-16/ANSI, not before, to avoid overflowing the
+ 260-character limit on file names in filename_to_utf16/ansi.
+
+ Make file-accessible-directory-p reliable on MS-Windows
+ * src/w32.c (w32_accessible_directory_p): New function.
+ * src/w32.h (w32_accessible_directory_p): Add prototype.
+ * src/fileio.c (file_accessible_directory_p) [WINDOWSNT]: Call
+ w32_accessible_directory_p to test a directory for accessibility
+ by the current user. (Bug#21346)
+ (Ffile_accessible_directory_p): Remove the w32 specific caveat
+ from the doc string.
+
+2015-08-31 Martin Rudalics <rudalics@gmx.at>
+
+ Don't call do_pending_window_change in signal handlers (Bug#21380)
+ * src/gtkutil.c (xg_frame_resized):
+ * src/xterm.c (x_set_window_size):
+ * src/w32term.c (x_set_window_size): Don't call
+ do_pending_window_change.
+
+2015-08-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ Quoting fixes in lisp/org
+ * lisp/org/org-agenda.el (org-search-view, org-todo-list)
+ (org-tags-view):
+ * lisp/org/org-capture.el (org-capture-mode)
+ * lisp/org/org-ctags.el (org-ctags-visit-buffer-or-file)
+ (org-ctags-ask-append-topic):
+ * lisp/org/org.el (org-time-string-to-time)
+ (org-time-string-to-absolute):
+ * lisp/org/org-ctags.el (org-ctags-visit-buffer-or-file)
+ (org-ctags-ask-append-topic):
+ * lisp/org/org.el (org-time-string-to-time)
+ (org-time-string-to-absolute):
+ Respect ‘text-quoting-style’ in diagnostics.
+ * lisp/org/org-agenda.el (org-agenda-custom-commands)
+ (org-agenda-dim-blocked-tasks): Plural of TODO is TODOs, not TODO’s.
+ * lisp/org/org-capture.el (org-capture-fill-template):
+ Avoid contraction in output file that might be ASCII.
+ * lisp/org/org-compat.el (format-message):
+ Define if not already defined, for backward compatibility.
+ * lisp/org/org-src.el (org-edit-src-save):
+ * lisp/org/org.el (org-cycle, org-ctrl-c-ctrl-c):
+ Escape apostrophes in diagnostics.
+
+ Treat “instead†strings as docstrings
+ * lisp/emacs-lisp/bytecomp.el (byte-compile-form):
+ * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning):
+ Substitute quotes in instead strings.
+
+2015-08-31 Nicolas Petton <nicolas@petton.fr>
+
+ Better documentation of seq-let
+ * doc/lispref/sequences.texi (Sequence Functions): Rephrase the
+ documentation of seq-let.
+
+2015-08-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lisp/international/ccl.el: Fix quoting.
+
+ Quoting fixes in lisp/international and lisp/leim
+ * lisp/international/ccl.el (ccl-dump, ccl-dump-call):
+ * lisp/international/ja-dic-utl.el (skkdic-lookup-key):
+ * lisp/international/mule-cmds.el:
+ (select-safe-coding-system-interactively, leim-list-file-name):
+ * lisp/international/quail.el (quail-use-package, quail-help):
+ * lisp/international/titdic-cnv.el (tit-process-header)
+ (miscdic-convert):
+ Respect text quoting style in doc strings and diagnostics.
+ * lisp/international/quail.el (lisp/international/quail.el):
+ * lisp/leim/quail/ethiopic.el ("ethiopic"):
+ Escape apostrophes in doc strings.
+
+ Make ‘text-quoting-style’ a plain defvar
+ It doesn’t need customization, as it’s likely useful only by experts.
+ Suggested by Stefan Monnier in:
+ http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg01020.html
+ * lisp/cus-start.el: Remove doc.c section for builtin customized vars.
+
+ Quoting fixes in lisp/textmodes
+ * lisp/textmodes/bibtex.el (bibtex-validate)
+ (bibtex-validate-globally, bibtex-search-entries):
+ * lisp/textmodes/ispell.el (ispell-command-loop):
+ * lisp/textmodes/page-ext.el (search-pages, pages-directory):
+ * lisp/textmodes/texinfmt.el (texinfmt-version)
+ (texinfo-format-region, texinfo-format-buffer-1):
+ * lisp/textmodes/two-column.el (2C-split):
+ Respect text quoting style in doc strings and diagnostics.
+ * lisp/textmodes/conf-mode.el (conf-mode-map, conf-quote-normal):
+ * lisp/textmodes/sgml-mode.el (sgml-specials, sgml-mode):
+ Escape apostrophes in doc strings.
+
+ Documentation fixes re quotes
+ Prefer curved quotes in examples if users will typically see
+ curved quotes when the examples run.
+ Mention format-message when appropriate.
+ Don’t use @code in examples.
+ Quote an apostrophe with @kbd.
+
+ Quoting fixes in lisp/progmodes
+ * lisp/progmodes/cc-engine.el (c-bos-report-error):
+ * lisp/progmodes/cpp.el (cpp-edit-reset):
+ * lisp/progmodes/ebrowse.el (ebrowse-tags-apropos):
+ * lisp/progmodes/etags.el (etags-tags-apropos-additional)
+ (etags-tags-apropos, list-tags, tags-apropos):
+ * lisp/progmodes/executable.el (executable-set-magic):
+ * lisp/progmodes/octave.el (octave-sync-function-file-names)
+ (octave-help, octave-find-definition-default-filename)
+ (octave-find-definition):
+ Respect text quoting style in doc strings and diagnostics.
+ * lisp/progmodes/cc-langs.el (c-populate-syntax-table):
+ * lisp/progmodes/verilog-mode.el (verilog-auto-reset-widths):
+ * lisp/progmodes/vhdl-mode.el (vhdl-electric-quote):
+ Escape apostrophes in doc strings.
+ * lisp/progmodes/cmacexp.el (c-macro-expansion):
+ Use straight quoting in ASCII comment.
+ * lisp/progmodes/idlwave.el (idlwave-auto-fill-split-string)
+ (idlwave-pad-keyword):
+ * lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate)
+ (vhdl-electric-open-bracket, vhdl-electric-close-bracket):
+ (vhdl-electric-semicolon, vhdl-electric-comma)
+ (vhdl-electric-period, vhdl-electric-equal):
+ Use directed quotes in diagnostics and doc strings.
+
+2015-08-30 Xue Fuqiao <xfq.free@gmail.com>
+
+ Minor documentation and NEWS tweak
+ * doc/lispintro/emacs-lisp-intro.texi (fwd-para let): Add an index
+ entry.
+
2015-08-30 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp-sh.el (tramp-convert-file-attributes):
This file records repository revisions from
commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
-commit cc90c25a50e536669ac327f7e05ec9194d1650d0 (inclusive).
+commit 88b9a8000da6cf2d4aede86e9eae4f00016d0d6b (inclusive).
See ChangeLog.1 for earlier changes.
;; Local Variables:
;; (4) possibly update the switch cases in
;; bidi.c:bidi_get_type and bidi.c:bidi_get_category.
(bidi-warning "\
-** Found new bidi-class ‘%s’, please update bidi.c and dispextern.h")
+** Found new bidi-class `%s', please update bidi.c and dispextern.h")
tail elt range val val-code idx slot
prev-range-data)
(setq val-list (cons nil (copy-sequence val-list)))
At startup, the @file{*scratch*} buffer contains a short message, in
the form of a Lisp comment, that explains what it is for. This
message is controlled by the variable @code{initial-scratch-message},
-which should be either a string, or @code{nil} (which means to
+which should be either a documentation string, or @code{nil} (which means to
suppress the message).
@findex ielm
to decide what to do; by setting variables,
you can control their functioning.
* Key Bindings:: The keymaps say what command each key runs.
- By changing them, you can "redefine keys".
+ By changing them, you can ``redefine keys''.
* Init File:: How to write common customizations in the
initialization file.
@end menu
* Help:: Commands for asking Emacs about its commands.
Important Text-Changing Commands
-* Mark:: The mark: how to delimit a "region" of text.
+* Mark:: The mark: how to delimit a ``region'' of text.
* Killing:: Killing (cutting) and yanking (copying) text.
* Registers:: Saving a text string or a location in the buffer.
* Display:: Controlling what text is displayed.
* Files:: All about handling files.
* Buffers:: Multiple buffers; editing several files at once.
* Windows:: Viewing multiple pieces of text in one frame.
-* Frames:: Using multiple "windows" on your display.
+* Frames:: Using multiple ``windows'' on your display.
* International:: Using non-@acronym{ASCII} character sets.
Advanced Features
@end ifnottex
* Editing Binary Files:: Editing binary files with Hexl mode.
* Saving Emacs Sessions:: Saving Emacs state from one session to the next.
-* Recursive Edit:: Performing edits while "within another command".
+* Recursive Edit:: Performing edits while ``within another command''.
* Hyperlinking:: Following links in buffers.
* Amusements:: Various games and hacks.
* Packages:: Installing additional features.
* Language Help:: Help relating to international language support.
* Misc Help:: Other help commands.
* Help Files:: Commands to display auxiliary help files.
-* Help Echo:: Help on active text and tooltips ("balloon help").
+* Help Echo:: Help on active text and tooltips (``balloon help'').
The Mark and the Region
* Earlier Kills:: Yanking something killed some time ago.
* Appending Kills:: Several kills in a row all yank together.
-"Cut and Paste" Operations on Graphical Displays
+``Cut and Paste'' Operations on Graphical Displays
* Clipboard:: How Emacs uses the system clipboard.
* Primary Selection:: The temporarily selected text selection.
* Customize Save:: Customizing the saving of files.
* Interlocking:: How Emacs protects against simultaneous editing
of one file by two users.
-* File Shadowing:: Copying files to "shadows" automatically.
+* File Shadowing:: Copying files to ``shadows'' automatically.
* Time Stamps:: Emacs can update time stamps on saved files.
Backup Files
* TeX Mode:: Editing TeX and LaTeX files.
* HTML Mode:: Editing HTML and SGML files.
* Nroff Mode:: Editing input to the nroff formatter.
-* Enriched Text:: Editing text "enriched" with fonts, colors, etc.
+* Enriched Text:: Editing text ``enriched'' with fonts, colors, etc.
* Text Based Tables:: Commands for editing text-based tables.
* Two-Column:: Splitting text columns into separate windows.
* Enriched Indentation:: Changing the left and right margins.
* Enriched Justification:: Centering, setting text flush with the
left or right margin, etc.
-* Enriched Properties:: The "special" text properties submenu.
+* Enriched Properties:: The ``special'' text properties submenu.
@c The automatic texinfo menu update inserts some duplicate items here
@c (faces, colors, indentation, justification, properties), because
* Basic Picture:: Basic concepts and simple commands of Picture Mode.
* Insert in Picture:: Controlling direction of cursor motion
- after "self-inserting" characters.
+ after ``self-inserting'' characters.
* Tabs in Picture:: Various features for tab stops and indentation.
* Rectangles in Picture:: Clearing and superimposing rectangles.
@end ifnottex
to decide what to do; by setting variables,
you can control their functioning.
* Key Bindings:: The keymaps say what command each key runs.
- By changing them, you can "redefine" keys.
+ By changing them, you can ``redefine'' keys.
* Init File:: How to write common customizations in the
initialization file.
* Customize Save:: Customizing the saving of files.
* Interlocking:: How Emacs protects against simultaneous editing
of one file by two users.
-* Shadowing: File Shadowing. Copying files to "shadows" automatically.
+* Shadowing: File Shadowing. Copying files to ``shadows'' automatically.
* Time Stamps:: Emacs can update time stamps on saved files.
@end menu
* Language Help:: Help relating to international language support.
* Misc Help:: Other help commands.
* Help Files:: Commands to display auxiliary help files.
-* Help Echo:: Help on active text and tooltips ("balloon help").
+* Help Echo:: Help on active text and tooltips (``balloon help'').
@end menu
@iftex
should call the function @code{package-initialize}. It is up to you
to ensure that relevant user options, such as @code{package-load-list}
(see below), are set up prior to the @code{package-initialize} call.
-You should also set @code{package-enable-at-startup} to @code{nil}, to
+This will automatically set @code{package-enable-at-startup} to @code{nil}, to
avoid loading the packages again after processing the init file.
Alternatively, you may choose to completely inhibit package loading at
startup, and invoke the command @kbd{M-x package-initialize} to load
@menu
* Basic Picture:: Basic concepts and simple commands of Picture Mode.
* Insert in Picture:: Controlling direction of cursor motion
- after "self-inserting" characters.
+ after ``self-inserting'' characters.
* Tabs in Picture:: Various features for tab stops and indentation.
* Rectangles in Picture:: Clearing and superimposing rectangles.
@end menu
distributed with Emacs (@pxref{Packages}); or you can contribute one.
@kindex DEL @r{(programming modes)}
-@findex c-electric-backspace
@findex backward-delete-char-untabify
In most programming languages, indentation should vary from line to
line to illustrate the structure of the program. Therefore, in most
to replace all remaining occurrences in all remaining buffers in
multi-buffer replacements (like the Dired @key{Q} command that performs
query replace on selected files). It answers this question and all
-subsequent questions in the series with "yes", without further
+subsequent questions in the series with ``yes'', without further
user interaction.
@item N @r{(Upper-case)}
to skip to the next buffer in multi-buffer replacements without
replacing remaining occurrences in the current buffer. It answers
-this question "no", gives up on the questions for the current buffer,
+this question ``no'', gives up on the questions for the current buffer,
and continues to the next buffer in the sequence.
@item ^
* TeX Mode:: Editing TeX and LaTeX files.
* HTML Mode:: Editing HTML and SGML files.
* Nroff Mode:: Editing input to the nroff formatter.
-* Enriched Text:: Editing text "enriched" with fonts, colors, etc.
+* Enriched Text:: Editing text ``enriched'' with fonts, colors, etc.
* Text Based Tables:: Commands for editing text-based tables.
* Two-Column:: Splitting text columns into separate windows.
@end menu
* Enriched Indentation:: Changing the left and right margins.
* Enriched Justification:: Centering, setting text flush with the
left or right margin, etc.
-* Enriched Properties:: The "special" text properties submenu.
+* Enriched Properties:: The ``special'' text properties submenu.
@end menu
@node Enriched Mode
@item
@ifset WWW_GNU_ORG
@ifhtml
-the "Tips" Appendix in the Emacs Lisp Reference
+the ``Tips'' Appendix in the Emacs Lisp Reference
@url{http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html}.
@end ifhtml
@ifnothtml
-@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
+@xref{Tips, ``Tips'' Appendix in the Emacs Lisp Reference, Tips
Appendix, elisp, Emacs Lisp Reference}.
@end ifnothtml
@end ifset
@ifclear WWW_GNU_ORG
-@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
+@xref{Tips, ``Tips'' Appendix in the Emacs Lisp Reference, Tips
Appendix, elisp, Emacs Lisp Reference}.
@end ifclear
A copyright disclaimer is also a possibility, but we prefer an assignment.
Note that the disclaimer, like an assignment, involves you sending
-signed paperwork to the FSF (simply saying "this is in the public domain"
+signed paperwork to the FSF (simply saying ``this is in the public domain''
is not enough). Also, a disclaimer cannot be applied to future work, it
has to be repeated each time you want to send something new.
@smallexample
@group
(defvar shell-command-default-error-buffer nil
- "*Buffer name for ‘shell-command’ @dots{} error output.
+ "*Buffer name for `shell-command' @dots{} error output.
@dots{} ")
@end group
@end smallexample
@smallexample
@group
(defun triangle-using-dotimes (number-of-rows)
- "Using ‘dotimes’, add up the number of pebbles in a triangle."
+ "Using `dotimes', add up the number of pebbles in a triangle."
(let ((total 0)) ; otherwise a total is a void variable
(dotimes (number number-of-rows total)
(setq total (+ total (1+ number))))))
@smallexample
@group
(let* ((foo 7)
- (bar (* 3 foo)))
- (message "‘bar’ is %d." bar))
+ (bar (* 3 foo)))
+ (message "`bar' is %d." bar))
@result{} ‘bar’ is 21.
@end group
@end smallexample
"Print number of words in the region.
Words are defined as at least one word-constituent
character followed by at least one character that
-is not a word-constituent. The buffer’s syntax
+is not a word-constituent. The buffer's syntax
table determines which characters these are."
(interactive "r")
(message "Counting words in region ... ")
(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region.
Words are defined as at least one word-constituent character followed
-by at least one character that is not a word-constituent. The buffer’s
+by at least one character that is not a word-constituent. The buffer's
syntax table determines which characters these are."
@end group
@group
as you expect because there are no word-constituent characters in the
region. Since it fails, we receive an error message. But we do not
want to receive an error message in this case; we want to receive the
-message that "The region does NOT have any words."
+message ``The region does NOT have any words.''
The solution to this problem is to provide @code{re-search-forward}
with a third argument of @code{t}, which causes the function to return
@smallexample
@group
(defun lengths-list-file (filename)
- "Return list of definitions’ lengths within FILE.
+ "Return list of definitions' lengths within FILE.
The returned list is a list of numbers.
Each number is the number of words or
symbols in one function definition."
@end group
@group
- (message "Working on ‘%s’ ... " filename)
+ (message "Working on `%s' ... " filename)
(save-excursion
(let ((buffer (find-file-noselect filename))
(lengths-list))
160 170 180 190 200
210 220 230 240 250
260 270 280 290 300)
- "List specifying ranges for ‘defuns-per-range’.")
+ "List specifying ranges for `defuns-per-range'.")
@end group
@end smallexample
@group
(defun Y-axis-element (number full-Y-label-width)
"Construct a NUMBERed label element.
-A numbered element looks like this ‘ 5 - ’,
+A numbered element looks like this ` 5 - ',
and is padded as needed so all line up with
the element for the largest number."
@end group
Height must be the maximum height of the graph.
Full width is the width of the highest label element."
;; Value of height and full-Y-label-width
-;; are passed by ‘print-graph’.
+;; are passed by print-graph.
@end group
@group
(let ((start (point)))
@end group
@group
;; Value of symbol-width and full-Y-label-width
-;; are passed by ‘print-graph’.
+;; are passed by print-graph.
(let* ((leading-spaces
(make-string full-Y-label-width ? ))
;; symbol-width @r{is provided by} graph-body-print
110 120 130 140 150
160 170 180 190 200
210 220 230 240 250)
- "List specifying ranges for ‘defuns-per-range’.")
+ "List specifying ranges for `defuns-per-range'.")
@end group
@group
@smallexample
@group
(defun lengths-list-file (filename)
- "Return list of definitions’ lengths within FILE.
+ "Return list of definitions' lengths within FILE.
The returned list is a list of numbers.
Each number is the number of words or
symbols in one function definition."
@end group
@group
- (message "Working on ‘%s’ ... " filename)
+ (message "Working on `%s' ... " filename)
(save-excursion
(let ((buffer (find-file-noselect filename))
(lengths-list))
@group
(defun Y-axis-element (number full-Y-label-width)
"Construct a NUMBERed label element.
-A numbered element looks like this ‘ 5 - ’,
+A numbered element looks like this ` 5 - ',
and is padded as needed so all line up with
the element for the largest number."
@end group
@end group
@group
;; Value of height and full-Y-label-width
-;; are passed by ‘print-graph’.
+;; are passed by 'print-graph'.
(let ((start (point)))
(insert-rectangle
(Y-axis-column height full-Y-label-width vertical-step))
@end group
@group
;; Value of symbol-width and full-Y-label-width
-;; are passed by ‘print-graph’.
+;; are passed by 'print-graph'.
(let* ((leading-spaces
(make-string full-Y-label-width ? ))
;; symbol-width @r{is provided by} graph-body-print
messing up how lines and paragraphs are displayed, the function
@code{bidi-string-mark-left-to-right} has been removed; so have many
other functions and variables related to bidirectional display.
-Unicode directionality characters like @code{U+200E} ("left-to-right
-mark") have no special effect on display.
+Unicode directionality characters like @code{U+200E} LEFT-TO-RIGHT
+MARK have no special effect on display.
@item
Emacs windows now have most of their internal state hidden from Lisp.
* Buffer File Name:: The buffer file name indicates which file is visited.
* Buffer Modification:: A buffer is @dfn{modified} if it needs to be saved.
* Modification Time:: Determining whether the visited file was changed
- "behind Emacs's back".
+ ``behind Emacs's back''.
* Read Only Buffers:: Modifying text is not allowed in a read-only buffer.
* Buffer List:: How to look at all the existing buffers.
* Creating Buffers:: Functions that create buffers.
@example
(pcase (get-return-code x)
(`success (message "Done!"))
- (`would-block (message "Sorry, can’t do it now"))
+ (`would-block (message "Sorry, can't do it now"))
(`read-only (message "The shmliblick is read-only"))
(`access-denied (message "You do not have the needed rights"))
(code (message "Unknown return code %S" code)))
The value of this variable is the standard display table, which is
used when Emacs is displaying a buffer in a window with neither a
window display table nor a buffer display table defined, or when Emacs
-is outputting text to the standard output or error streams. Its
-default is @code{nil}.
+is outputting text to the standard output or error streams. Although its
+default is typically @code{nil}, in an interactive session if the
+locale cannot display curved quotes, or if the initial value of
+@code{text-quoting-style} specifies a preference for ASCII, its
+default maps curved quotes to ASCII approximations. @xref{Keys in
+Documentation}.
@end defvar
The @file{disp-table} library defines several functions for changing
we find the real function via the symbol.
* Function Forms:: Forms that call functions.
* Macro Forms:: Forms that call macros.
-* Special Forms:: "Special forms" are idiosyncratic primitives,
+* Special Forms:: ``Special forms'' are idiosyncratic primitives,
most of them extremely important.
* Autoloading:: Functions set up to load files
containing their real definitions.
Variables
* Global Variables:: Variable values that exist permanently, everywhere.
-* Constant Variables:: Certain "variables" have values that never change.
+* Constant Variables:: Certain ``variables'' have values that never change.
* Local Variables:: Variable values that exist only temporarily.
* Void Variables:: Symbols that lack values.
* Defining Variables:: A definition says a symbol is used as a variable.
* Repeated Loading:: Precautions about loading a file twice.
* Named Features:: Loading a library if it isn't already loaded.
* Where Defined:: Finding which file defined a certain symbol.
-* Unloading:: How to "unload" a library that was loaded.
+* Unloading:: How to ``unload'' a library that was loaded.
* Hooks for Loading:: Providing code to be run when
particular libraries are loaded.
is visited.
* Buffer Modification:: A buffer is @dfn{modified} if it needs to be saved.
* Modification Time:: Determining whether the visited file was changed
- "behind Emacs's back".
+ ``behind Emacs's back''.
* Read Only Buffers:: Modifying text is not allowed in a
read-only buffer.
* Buffer List:: How to look at all the existing buffers.
* Marker Insertion Types:: Two ways a marker can relocate when you
insert where it points.
* Moving Markers:: Moving the marker to a new buffer or position.
-* The Mark:: How "the mark" is implemented with a marker.
-* The Region:: How to access "the region".
+* The Mark:: How ``the mark'' is implemented with a marker.
+* The Region:: How to access ``the region''.
Text
* Base 64:: Conversion to or from base 64 encoding.
* Checksum/Hash:: Computing cryptographic hashes.
* Parsing HTML/XML:: Parsing HTML and XML.
-* Atomic Changes:: Installing several buffer changes "atomically".
+* Atomic Changes:: Installing several buffer changes ``atomically''.
* Change Hooks:: Supplying functions to be run when text is changed.
The Kill Ring
we find the real function via the symbol.
* Function Forms:: Forms that call functions.
* Macro Forms:: Forms that call macros.
-* Special Forms:: "Special forms" are idiosyncratic primitives,
+* Special Forms:: ``Special forms'' are idiosyncratic primitives,
most of them extremely important.
* Autoloading:: Functions set up to load files
containing their real definitions.
directory).
@item "lh"
-is owned by the user with name "lh".
+is owned by the user with name @samp{lh}.
@item "users"
-is in the group with name "users".
+is in the group with name @samp{users}.
@item (20614 64019 50040 152000)
was last accessed on October 23, 2012, at 20:12:03.050040152 UTC.
it is time to stop tracking.
The @code{track-mouse} form causes Emacs to generate mouse motion
-events by binding the variable @code{mouse-tracking} to a
+events by binding the variable @code{track-mouse} to a
non-@code{nil} value. If that variable has the special value
@code{dragging}, it additionally instructs the display engine to
refrain from changing the shape of the mouse pointer. This is
@example
(defadvice foo (around foo-around)
- "Ignore case in ‘foo’."
+ "Ignore case in `foo'."
(let ((case-fold-search t))
ad-do-it))
(ad-activate 'foo)
@example
(defun foo--foo-around (orig-fun &rest args)
- "Ignore case in ‘foo’."
+ "Ignore case in `foo'."
(let ((case-fold-search t))
(apply orig-fun args)))
(advice-add 'foo :around #'foo--foo-around)
apostrophes. If the value is @code{grave}, the style is @t{`like
this'} with grave accent and apostrophe. The default value @code{nil}
acts like @code{curve} if curved single quotes are displayable, and
-like @code{grave} otherwise.
+like @code{grave} otherwise. To use the traditional @code{grave}
+style, put the line @code{(setq text-quoting-style 'grave)} into your
+@file{~/.emacs} file.
@end defvar
@defun substitute-command-keys string
@smallexample
@group
(substitute-command-keys
- "To abort recursive edit, type ‘\\[abort-recursive-edit]’.")
+ "To abort recursive edit, type `\\[abort-recursive-edit]'.")
@result{} "To abort recursive edit, type ‘C-]’."
@end group
@group
(substitute-command-keys
- "To abort a recursive edit from the minibuffer, type\
+ "To abort a recursive edit from the minibuffer, type \
`\\<minibuffer-local-must-match-map>\\[abort-recursive-edit]'.")
@result{} "To abort a recursive edit from the minibuffer, type ‘C-g’."
@end group
* Repeated Loading:: Precautions about loading a file twice.
* Named Features:: Loading a library if it isn't already loaded.
* Where Defined:: Finding which file defined a certain symbol.
-* Unloading:: How to "unload" a library that was loaded.
+* Unloading:: How to ``unload'' a library that was loaded.
* Hooks for Loading:: Providing code to be run when
particular libraries are loaded.
@end menu
* Marker Insertion Types:: Two ways a marker can relocate when you
insert where it points.
* Moving Markers:: Moving the marker to a new buffer or position.
-* The Mark:: How "the mark" is implemented with a marker.
-* The Region:: How to access "the region".
+* The Mark:: How ``the mark'' is implemented with a marker.
+* The Region:: How to access ``the region''.
@end menu
@node Overview of Markers
"Major mode for editing text written for humans to read.
In this mode, paragraphs are delimited only by blank or white lines.
You can thus get the full benefit of adaptive filling
- (see the variable ‘adaptive-fill-mode’).
+ (see the variable `adaptive-fill-mode').
\\@{text-mode-map@}
-Turning on Text mode runs the normal hook ‘text-mode-hook’."
+Turning on Text mode runs the normal hook `text-mode-hook'."
@end group
@group
(set (make-local-variable 'text-mode-variant) t)
@dots{}
map)
"Keymap for ordinary Lisp mode.
-All commands in ‘lisp-mode-shared-map’ are inherited by this map.")
+All commands in `lisp-mode-shared-map' are inherited by this map.")
@end group
@end smallexample
Blank lines separate paragraphs. Semicolons start comments.
\\@{lisp-mode-map@}
-Note that ‘run-lisp’ may be used either to start an inferior Lisp job
+Note that `run-lisp' may be used either to start an inferior Lisp job
or to switch back to an existing one.
@end group
@group
-Entry to this mode calls the value of ‘lisp-mode-hook’
+Entry to this mode calls the value of `lisp-mode-hook'
if that value is non-nil."
(lisp-mode-variables nil t)
(set (make-local-variable 'find-tag-default-function)
(defcustom msb-mode nil
"Toggle msb-mode.
Setting this variable directly does not take effect;
-use either \\[customize] or the function ‘msb-mode’."
+use either \\[customize] or the function `msb-mode'."
:set 'custom-set-minor-mode
:initialize 'custom-initialize-default
:version "20.4"
Interactively with no argument, this command toggles the mode.
A positive prefix argument enables the mode, any other prefix
argument disables it. From Lisp, argument omitted or nil enables
-the mode, ‘toggle’ toggles the state.
+the mode, `toggle' toggles the state.
When Hungry mode is enabled, the control delete key
gobbles all preceding whitespace except the last.
@item
If the @file{*scratch*} buffer exists and is empty, it inserts
-@code{initial-scratch-message} into that buffer.
+@code{(substitute-command-keys initial-scratch-message)} into that buffer.
@item
If @code{initial-buffer-choice} is a string, it visits the file (or
@defopt initial-scratch-message
This variable, if non-@code{nil}, should be a string, which is
+treated as documentation to be
inserted into the @file{*scratch*} buffer when Emacs starts up. If it
is @code{nil}, the @file{*scratch*} buffer is empty.
@end defopt
@example
(defvar my-resume-timer nil
- "Timer for ‘my-timer-function’ to reschedule itself, or nil.")
+ "Timer for `my-timer-function' to reschedule itself, or nil.")
(defun my-timer-function ()
;; @r{If the user types a command while @code{my-resume-timer}}
@end group
@group
-A message window opens on the desktop. Press "I agree"
+A message window opens on the desktop. Press ``I agree''.
@result{} Message 22, key "Confirm" pressed
Message 22, closed due to "dismissed"
@end group
@end example
Whether the action @code{renamed} is returned, depends on the used
-watch library. It can be expected, when a directory is watched, and
-both @var{file} and @var{file1} belong to this directory. Otherwise,
-the actions @code{deleted} and @code{created} could be returned in a
-random order.
+watch library. Otherwise, the actions @code{deleted} and
+@code{created} could be returned in a random order.
@example
@group
(rename-file "/tmp/foo" "/tmp/bla")
@result{} Event (35025468 renamed "/tmp/foo" "/tmp/bla")
@end group
-
-@group
-(file-notify-add-watch
- "/var/tmp" '(change attribute-change) 'my-notify-callback)
- @result{} 35025504
-@end group
-
-@group
-(rename-file "/tmp/bla" "/var/tmp/bla")
- @result{} ;; gfilenotify
- Event (35025468 renamed "/tmp/bla" "/var/tmp/bla")
-
- @result{} ;; inotify
- Event (35025504 created "/var/tmp/bla")
- Event (35025468 deleted "/tmp/bla")
-@end group
@end example
@end defun
This function initializes Emacs' internal record of which packages are
installed, and loads them. The user option @code{package-load-list}
specifies which packages to load; by default, all installed packages
-are loaded. @xref{Package Installation,,, emacs, The GNU Emacs
-Manual}.
+are loaded. If called during startup, this function also sets
+@code{package-enable-at-startup} to @code{nil}, to avoid accidentally
+loading the packages twice. @xref{Package Installation,,, emacs, The
+GNU Emacs Manual}.
The optional argument @var{no-activate}, if non-@code{nil}, causes
Emacs to update its record of installed packages without actually
@group
(defun msg-me (process event)
(princ
- (format "Process: %s had the event ‘%s’" process event)))
+ (format "Process: %s had the event '%s'" process event)))
(set-process-sentinel (get-process "shell") 'msg-me)
@result{} msg-me
@end group
@group
(kill-process (get-process "shell"))
- @print{} Process: #<process shell> had the event ‘killed’
+ @print{} Process: #<process shell> had the event 'killed'
@result{} #<process shell>
@end group
@end smallexample
@end example
@end defun
-@defun seq-some-p predicate sequence
- This function returns the first member of sequence for which @var{predicate}
-returns non-@code{nil}.
+@defun seq-some predicate sequence
+ This function returns non-@code{nil} if @var{predicate} returns
+non-@code{nil} for any element of @var{sequence}. If so, the returned
+value is the value returned by @var{predicate}.
@example
@group
-(seq-some-p #'numberp ["abc" 1 nil])
-@result{} 1
+(seq-some #'numberp ["abc" 1 nil])
+@result{} t
@end group
@group
-(seq-some-p #'numberp ["abc" "def"])
+(seq-some #'numberp ["abc" "def"])
@result{} nil
@end group
+@group
+(seq-some #'null ["abc" 1 nil])
+@result{} t
+@end group
@end example
@end defun
@result{} t
@end group
@group
-(seq-some-p #'numberp [2 4 "6"])
+(seq-some #'numberp [2 4 "6"])
@result{} nil
@end group
@end example
non-@code{nil} if the first argument should sort before the second.
@end defun
-@defun seq-contains-p sequence elt &optional function
+@defun seq-contains sequence elt &optional function
This function returns the first element in @var{sequence} that is equal to
@var{elt}. If the optional argument @var{function} is non-@code{nil},
it is a function of two arguments to use instead of the default @code{equal}.
@example
@group
-(seq-contains-p '(symbol1 symbol2) 'symbol1)
+(seq-contains '(symbol1 symbol2) 'symbol1)
@result{} symbol1
@end group
@group
-(seq-contains-p '(symbol1 symbol2) 'symbol3)
+(seq-contains '(symbol1 symbol2) 'symbol3)
@result{} nil
@end group
@end example
The optional argument @var{locale}, a string, overrides the setting of
your current locale identifier for collation. The value is system
-dependent; a @var{locale} "en_US.UTF-8" is applicable on POSIX
-systems, while it would be, e.g., "enu_USA.1252" on MS-Windows
+dependent; a @var{locale} @code{"en_US.UTF-8"} is applicable on POSIX
+systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
systems.
If @var{ignore-case} is non-@code{nil}, characters are converted to lower-case
To emulate Unicode-compliant collation on MS-Windows systems,
bind @code{w32-collate-ignore-punctuation} to a non-@code{nil} value, since
-the codeset part of the locale cannot be "UTF-8" on MS-Windows.
+the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
If your system does not support a locale environment, this function
behaves like @code{string-equal}.
The optional argument @var{locale}, a string, overrides the setting of
your current locale identifier for collation. The value is system
-dependent; a @var{locale} "en_US.UTF-8" is applicable on POSIX
-systems, while it would be, e.g., "enu_USA.1252" on MS-Windows
-systems. The @var{locale} "POSIX" lets @code{string-collate-lessp}
+dependent; a @var{locale} @code{"en_US.UTF-8"} is applicable on POSIX
+systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
+systems. The @var{locale} @code{"POSIX"} lets @code{string-collate-lessp}
behave like @code{string-lessp}:
@example
To emulate Unicode-compliant collation on MS-Windows systems,
bind @code{w32-collate-ignore-punctuation} to a non-@code{nil} value, since
-the codeset part of the locale cannot be "UTF-8" on MS-Windows.
+the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
If your system does not support a locale environment, this function
behaves like @code{string-lessp}.
@example
@group
-(format "The word ‘%7s’ has %d letters in it."
+(format "The word '%7s' has %d letters in it."
"foo" (length "foo"))
- @result{} "The word ‘ foo’ has 3 letters in it."
-(format "The word ‘%7s’ has %d letters in it."
+ @result{} "The word ' foo' has 3 letters in it."
+(format "The word '%7s' has %d letters in it."
"specification" (length "specification"))
- @result{} "The word ‘specification’ has 13 letters in it."
+ @result{} "The word 'specification' has 13 letters in it."
@end group
@end example
(format "%06d is padded on the left with zeros" 123)
@result{} "000123 is padded on the left with zeros"
-(format "‘%-6d’ is padded on the right" 123)
- @result{} "‘123 ’ is padded on the right"
+(format "'%-6d' is padded on the right" 123)
+ @result{} "'123 ' is padded on the right"
-(format "The word ‘%-7s’ actually has %d letters in it."
+(format "The word '%-7s' actually has %d letters in it."
"foo" (length "foo"))
- @result{} "The word ‘foo ’ actually has 3 letters in it."
+ @result{} "The word 'foo ' actually has 3 letters in it."
@end group
@end example
* Base 64:: Conversion to or from base 64 encoding.
* Checksum/Hash:: Computing cryptographic hashes.
* Parsing HTML/XML:: Parsing HTML and XML.
-* Atomic Changes:: Installing several buffer changes "atomically".
+* Atomic Changes:: Installing several buffer changes ``atomically''.
* Change Hooks:: Supplying functions to be run when text is changed.
@end menu
@group
REVERSE (non-nil means reverse order),\
BEG and END (region to sort).
-The variable ‘sort-fold-case’ determines\
+The variable `sort-fold-case' determines\
whether alphabetic case affects
the sort order."
@end group
recognizing these indicator words.) For example, if you write
@example
-This function sets the variable ‘buffer-file-name’.
+This function sets the variable `buffer-file-name'.
@end example
@noindent
symbol name to prevent making any hyperlink. For example,
@example
-If the argument KIND-OF-RESULT is the symbol ‘list’,
+If the argument KIND-OF-RESULT is the symbol `list',
this function returns a list of all the objects
that satisfy the criterion.
@end example
anchor}. The Info file name defaults to @samp{emacs}. For example,
@smallexample
-See Info node ‘Font Lock’ and Info node ‘(elisp)Font Lock Basics’.
+See Info node `Font Lock' and Info node `(elisp)Font Lock Basics'.
@end smallexample
Finally, to create a hyperlink to URLs, write the single-quoted URL,
@smallexample
The home page for the GNU project has more information (see URL
-‘http://www.gnu.org/’).
+`http://www.gnu.org/').
@end smallexample
@item
@menu
* Global Variables:: Variable values that exist permanently, everywhere.
-* Constant Variables:: Certain "variables" have values that never change.
+* Constant Variables:: Certain ``variables'' have values that never change.
* Local Variables:: Variable values that exist only temporarily.
* Void Variables:: Symbols that lack values.
* Defining Variables:: A definition says a symbol is used as a variable.
)
(defun MY-ROOT-FCN ()
- "Return the root fcn for ‘default-directory’"
+ "Return the root fcn for `default-directory'"
;; You might be able to use 'ede-cpp-root-project-root'
;; and not write this at all.
)
(defun MY-LOAD (dir)
- "Load a project of type ‘cpp-root’ for the directory DIR.
-Return nil if there isn’t one."
+ "Load a project of type `cpp-root' for the directory DIR.
+Return nil if there isn't one."
;; Use your preferred construction method here.
(ede-cpp-root-project "NAME" :file (expand-file-name "FILE" dir)
:locate-fcn 'MYFCN)
@lisp
(defun rmail-reply-t ()
- "Reply only to the sender of the current message. (See ‘rmail-reply’.)"
+ "Reply only to the sender of the current message. (See rmail-reply.)"
(interactive)
(rmail-reply t))
nil
"Default parent class for classes with no specified parent class.
Its slots are automatically adopted by classes with no specified
-parents. This class is not stored in the ‘parent’ slot of a class vector."
+parents. This class is not stored in the `parent' slot of a class vector."
:abstract t)
@end example
particular module. Since symbol prefixes are the usual way of
separating module namespaces in Emacs Lisp, test selectors already
solve this by allowing regexp matching on test names; e.g., the
-selector "^ert-" selects ERT's self-tests.
+selector @code{"^ert-"} selects ERT's self-tests.
Other uses include grouping tests by their expected execution time,
e.g., to run quick tests during interactive development and slow tests less
@subsubheading Answer
-Gnus offers you several functions to "wash" incoming mail, you can
+Gnus offers you several functions to ``wash'' incoming mail, you can
find them if you browse through the menu, item
-Article->Washing. The most interesting ones are probably "Wrap
-long lines" (@samp{W w}), "Decode ROT13"
-(@samp{W r}) and "Outlook Deuglify" which repairs
+Article->Washing. The most interesting ones are probably ``Wrap
+long lines'' (@samp{W w}), ``Decode ROT13''
+(@samp{W r}) and ``Outlook Deuglify'' which repairs
the dumb quoting used by many users of Microsoft products
(@samp{W Y f} gives you full deuglify.
See @samp{W Y C-h} or have a look at the menus for
No, that's a matter of design of Gnus, fixing this would
mean reimplementation of major parts of Gnus'
-back ends. Gnus thinks "highest-article-number @minus{}
-lowest-article-number = total-number-of-articles". This
+back ends. Gnus thinks ``highest-article-number @minus{}
+lowest-article-number = total-number-of-articles''. This
works OK for Usenet groups, but if you delete and move
many messages in mail groups, this fails. To cure the
symptom, enter the group via @samp{C-u RET}
gnus-summary-line-format. Its value is a string of
symbols which stand for things like author, date, subject
etc. A list of the available specifiers can be found in the
-manual node "Summary Buffer Lines" and the often forgotten
-node "Formatting Variables" and its sub-nodes. There
+manual node ``Summary Buffer Lines'' and the often forgotten
+node ``Formatting Variables'' and its sub-nodes. There
you'll find useful things like positioning the cursor and
tabulators which allow you a summary in table form, but
sadly hard tabulators are broken in 5.8.8.
(setq message-user-fqdn fqdn)
(gnus-message 1 "Redefining `message-make-fqdn'.")
(defun message-make-fqdn ()
- "Return user’s fully qualified domain name."
+ "Return user's fully qualified domain name."
fqdn))))
@end example
@noindent
@example
(defun my-archive-article (&optional n)
- "Copies one or more article(s) to a corresponding ‘nnml:’ group, e.g.,
-‘gnus.ding’ goes to ‘nnml:1.gnus.ding’. And ‘nnml:List-gnus.ding’ goes
-to ‘nnml:1.List-gnus-ding’.
+ "Copies one or more article(s) to a corresponding `nnml:' group, e.g.,
+`gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes
+to `nnml:1.List-gnus-ding'.
Use process marks or mark a region in the summary buffer to archive
more then one article."
send. The default method is to use the @dfn{archive virtual server} to
store the messages. If you want to disable this completely, the
@code{gnus-message-archive-group} variable should be @code{nil}. The
-default is "sent.%Y-%m", which gives you one archive group per month.
+default is @code{"sent.%Y-%m"}, which gives you one archive group per month.
For archiving interesting messages in a group you read, see the
@kbd{B c} (@code{gnus-summary-copy-article}) command (@pxref{Mail
@item :mailbox
The name of the mailbox to get mail from. The default is @samp{INBOX}
-which normally is the mailbox which receives incoming mail.
+which normally is the mailbox which receives incoming mail. Instead of
+a single mailbox, this can be a list of mailboxes to fetch mail from.
@item :predicate
The predicate used to find articles to fetch. The default, @samp{UNSEEN
@lisp
(defun gnus-decay-score (score)
- "Decay SCORE according to ‘gnus-score-decay-constant’
-and ‘gnus-score-decay-scale’."
+ "Decay SCORE according to `gnus-score-decay-constant'
+and `gnus-score-decay-scale'."
(let ((n (- score
(* (if (< score 0) -1 1)
(min (abs score)
@lisp
(defun my-gnus-raze-spam ()
- "Submit SPAM to Vipul’s Razor, then mark it as expirable."
+ "Submit SPAM to Vipul's Razor, then mark it as expirable."
(interactive)
(gnus-summary-save-in-pipe "razor-report -f -d" t)
(gnus-summary-mark-as-expirable 1))
"Reconnect the server process."
(interactive "i")
(unless process
- (error "There’s no process for this target"))
+ (error "There's no process for this target"))
(let* ((server (car (process-contact process)))
(port (process-contact process :service))
(nick (rcirc-nick process))
the different recipes!
+@item I have saved @value{tramp} file names as indicated. But it
+doesn't work in a new @value{emacsname} session!
+
+If you have saved an ad-hoc multi-hop @value{tramp} file name
+(@pxref{Ad-hoc multi-hops}) via bookmarks, recent files,
+@ifset emacs
+filecache, bbdb,
+@end ifset
+or another package, you must use the full ad-hoc file name including
+all hops, like @file{@trampfn{ssh, bird,
+bastion|ssh@value{postfixhop}news.my.domain, /opt/news/etc}}.
+
+Alternatively, if you save only the abbreviated multi-hop file name
+@file{@trampfn{ssh, news, news.my.domain, /opt/news/etc}}, the
+customer option @code{tramp-save-ad-hoc-proxies} must be set to a to a
+non-@code{nil} value.
+
+
@ifset emacs
@item
How can I use @value{tramp} to connect to a remote @value{emacsname}
Viper lets you define hot keys, i.e., you can associate keyboard keys
such as F1, Help, PgDn, etc., with Emacs Lisp functions (that may already
-exist or that you will write). Each key has a "preferred form" in
+exist or that you will write). Each key has a ``preferred form'' in
Emacs. For instance, the Up key's preferred form is [up], the Help key's
preferred form is [help], and the Undo key has the preferred form [f14].
You can find out the preferred form of a key by typing @kbd{M-x
and *Buffer List*. This makes Emacs convenient to use from the
command line when `initial-buffer-choice' is non-nil.
++++
+** The value of ‘initial-scratch-message’ is now treated as a doc string
+and can contain escape sequences for command keys, quotes, and the like.
+
\f
* Changes in Emacs 25.1
*** landmark.el (moved to elpa.gnu.org)
-+++
-** The character classes [:graph:] and [:print:] in regular expressions
-no longer match every multibyte character. Instead, Emacs now
-consults the Unicode character properties to determine which
-characters are graphic or printable. In particular, surrogates and
-unassigned codepoints are now rejected. If you want the old behavior,
-use [:multibyte:] instead.
-
\f
* New Modes and Packages in Emacs 25.1
\f
* Incompatible Lisp Changes in Emacs 25.1
++++
+** `package-initialize' now sets `package-enable-at-startup' to nil if
+called during startup. Users who call this function in their init
+file and still expect it to be run after startup should set
+`package-enable-at-startup' to t after the call to
+`package-initialize'.
+
** `:global' minor mode use `setq-default' rather than `setq'.
This means that you can't use `make-local-variable' and expect them to
"magically" become buffer-local.
If you want the old behavior where they matched any character with
word syntax, use `\sw' instead.
++++
+** The character classes [:graph:] and [:print:] in regular expressions
+no longer match every multibyte character. Instead, Emacs now
+consults the Unicode character properties to determine which
+characters are graphic or printable. In particular, surrogates and
+unassigned codepoints are now rejected. If you want the old behavior,
+use [:multibyte:] instead.
+
+++
** The `diff' command uses the unified format now. To restore the old
behavior, set `diff-switches' to `-c'.
** New function `set-binary-mode' allows to switch a standard stream
of the Emacs process to binary I/O mode.
-** In locales that cannot display curved quotes, ASCII approximations
-are installed in standard-display-table.
+** ASCII approximations to curved quotes are put in standard-display-table
+if the locale cannot display curved quotes, or if text-quoting-style
+initially specifies a preference for ASCII.
** Standard output and error streams now transliterate characters via
standard-display-table, and encode output using locale-coding-system.
(buffer-substring-no-properties
(save-excursion (forward-word -1) (point))
pnt)))
- (if (or noquery (y-or-n-p (format-message "Expand ‘%s’? " string)))
+ (if (or noquery (y-or-n-p (format-message "Expand `%s'? " string)))
(expand-abbrev)))))))
;;; Abbrev properties.
(if real-beg
(goto-char beg)
(if (or (not thissep) (eq thissep 'entire))
- (error "Cannot determine alignment region for ‘%s’"
+ (error "Cannot determine alignment region for `%s'"
(symbol-name (cdr (assq 'title rule)))))
(beginning-of-line)
(while (and (not (eobp))
Entries on the list are lists whose first element is a symbol indicating
the change type and subsequent elements are data specific to that change
-type. Specifically:
+type. For example:
- 'exposure `allout-exposure-from' `allout-exposure-to' `allout-exposure-flag'
+ (exposure ALLOUT-EXPOSURE-FROM ALLOUT-EXPOSURE-TO ALLOUT-EXPOSURE-FLAG)
The changes are recorded in reverse order, with new values pushed
onto the front.")
\(That space is used to convey selected cues indicating body qualities,
including things like:
- - encryption ‘~’
- - numbering ‘#’
- - indirect reference ‘@’
+ - encryption `~'
+ - numbering `#'
+ - indirect reference `@'
- distinctive bullets - see `allout-distinctive-bullets-string'.)")
;;;_ = allout-span-to-category
(defvar allout-span-to-category
that are not prefixed.
Use vector format for the keys:
- - put literal keys after a ‘?’ question mark, eg: ‘?a’, ‘?.’
+ - put literal keys after a `?' question mark, eg: `?a', `?.'
- enclose control, shift, or meta-modified keys as sequences within
parentheses, with the literal key, as above, preceded by the name(s)
of the modifiers, eg: [(control ?a)]
preceding command key.
Use vector format for the keys:
- - put literal keys after a ‘?’ question mark, eg: ‘?a’, ‘?.’
+ - put literal keys after a `?' question mark, eg: `?a', `?.'
- enclose control, shift, or meta-modified keys as sequences within
parentheses, with the literal key, as above, preceded by the name(s)
of the modifiers, eg: [(control ?a)]
being followed by a legitimate item of excessively greater depth.
The classic example of a mistaken item, for a standard allout
-outline configuration, is a body line that begins with an ‘...’
+outline configuration, is a body line that begins with an `...'
ellipsis. This happens to contain a legitimate depth-2 header
-prefix, constituted by two ‘..’ dots at the beginning of the
+prefix, constituted by two `..' dots at the beginning of the
line. The only thing that can distinguish it *in principle* from
a legitimate one is if the following real header is at a depth
that is discontinuous from the depth of 2 implied by the
(and (not (string= allout-auto-activation "activate"))
(if (string= allout-auto-activation "ask")
(if (y-or-n-p (format-message
- "Expose %s with layout ‘%s’? "
+ "Expose %s with layout `%s'? "
(buffer-name) use-layout))
t
(message "Skipped %s layout." (buffer-name))
nil)
t)))
(save-excursion
- (message "Adjusting ‘%s’ exposure..." (buffer-name))
+ (message "Adjusting `%s' exposure..." (buffer-name))
(goto-char 0)
(allout-this-or-next-heading)
(condition-case err
(progn
(apply 'allout-expose-topic (list use-layout))
- (message "Adjusting ‘%s’ exposure... done."
+ (message "Adjusting `%s' exposure... done."
(buffer-name)))
;; Problem applying exposure -- notify user, but don't
;; interrupt, eg, file visit:
(goto-char (allout-current-bullet-pos))
(setq choice (solicit-char-in-string
(format-message
- "Select bullet: %s (‘%s’ default): "
+ "Select bullet: %s (`%s' default): "
sans-escapes
(allout-substring-no-properties default-bullet))
sans-escapes
(defun allout-toggle-current-subtree-encryption (&optional keymode-cue)
"Encrypt clear or decrypt encoded topic text.
-Allout uses Emacs ‘epg’ library to perform encryption. Symmetric
+Allout uses Emacs `epg' library to perform encryption. Symmetric
and keypair encryption are supported. All encryption is ascii
armored.
recipients with the file, by selecting no recipients in the
dialog.
-Encryption and decryption uses the Emacs ‘epg’ library.
+Encryption and decryption uses the Emacs `epg' library.
Encrypted text will be ascii-armored.
(allout-open-topic 2)
(insert (substitute-command-keys
(concat "Dummy outline topic header -- see"
- " ‘allout-mode’ docstring: ‘\\[describe-mode]’.")))
+ " `allout-mode' docstring: `\\[describe-mode]'.")))
(allout-adjust-file-variable
"allout-layout" (or allout-layout '(-1 : 0))))))
;;;_ > allout-file-vars-section-data ()
(defun regexp-sans-escapes (regexp &optional successive-backslashes)
"Return a copy of REGEXP with all character escapes stripped out.
-Representations of actual backslashes -- ‘\\\\\\\\’ -- are left as a
+Representations of actual backslashes -- `\\\\\\\\' -- are left as a
single backslash.
Optional arg SUCCESSIVE-BACKSLASHES is used internally for recursion."
symbols apropos-do-all
(concat
(format-message
- "Library ‘%s’ provides: %s\nand requires: %s"
+ "Library `%s' provides: %s\nand requires: %s"
file
(mapconcat 'apropos-library-button
(or provides '(nil)) " and ")
The default annotation text is simply some text explaining how to use
annotations."
(concat (format-message
- "# Type the annotation for bookmark ‘%s’ here.\n"
+ "# Type the annotation for bookmark `%s' here.\n"
bookmark-name)
(format-message
- "# All lines which start with a ‘#’ will be deleted.\n")
+ "# All lines which start with a `#' will be deleted.\n")
"# Type C-c C-c when done.\n#\n"
"# Author: " (user-full-name) " <" (user-login-name) "@"
(system-name) ">\n"
(format-mode-line mode-name nil nil start-buffer))
(defun bs--get-file-name (_start-buffer _all-buffers)
- "Return string for column ‘File’ in Buffer Selection Menu.
+ "Return string for column `File' in Buffer Selection Menu.
This is the variable `buffer-file-name' of current buffer.
If not visiting a file, `list-buffers-directory' is returned instead.
START-BUFFER is the buffer where we started buffer selection.
"Return the symbol used by button-type TYPE to store properties.
Buttons inherit them by setting their `category' property to that symbol."
(or (get type 'button-category-symbol)
- (error "Unknown button type ‘%s’" type)))
+ (error "Unknown button type `%s'" type)))
(defun define-button-type (name &rest properties)
"Define a `button type' called NAME (a symbol).
(setq val (button-category-symbol val)))
((eq prop 'category)
;; Disallow updating the `category' property directly.
- (error "Button ‘category’ property may not be set directly")))
+ (error "Button `category' property may not be set directly")))
;; Add the property.
(cond ((overlayp button)
(overlay-put button prop val))
(setq object beg beg 0 end (length object)))
;; Disallow setting the `category' property directly.
(when (plist-get properties 'category)
- (error "Button ‘category’ property may not be set directly"))
+ (error "Button `category' property may not be set directly"))
(if (null type-entry)
;; The user didn't specify a `type' property, use the default.
(setq properties (cons 'category (cons 'default-button properties)))
(defun math-restore-placeholders (x)
"Replace placeholders by the proper characters in the symbol x.
-This includes ‘#’ for ‘_’ and ‘'’ for ‘%’.
+This includes `#' for `_' and `'' for `%'.
If the current Calc language does not use placeholders, return nil."
(if (or (memq calc-language calc-lang-allow-underscores)
(memq calc-language calc-lang-allow-percentsigns))
(defun math-read-if (cond op)
(let ((then (math-read-expr-level 0)))
(or (equal math-expr-data ":")
- (throw 'syntax "Expected ‘:’"))
+ (throw 'syntax "Expected `:'"))
(math-read-token)
(list 'calcFunc-if cond then (math-read-expr-level (nth 3 op)))))
(math-read-expr-list))))
(if (not (or (equal math-expr-data calc-function-close)
(eq math-exp-token 'end)))
- (throw 'syntax "Expected ‘)’"))
+ (throw 'syntax "Expected `)'"))
(math-read-token)
(if (and (memq calc-language
calc-lang-parens-are-subscripts)
(setq el (cdr el))))
(if (equal math-expr-data "]")
(math-read-token)
- (throw 'syntax "Expected ‘]’")))
+ (throw 'syntax "Expected `]'")))
val)))))
((eq math-exp-token 'dollar)
(let ((abs (if (> math-expr-data 0) math-expr-data (- math-expr-data))))
(if (not (or (equal math-expr-data ")")
(and (equal math-expr-data "]") (eq (car-safe exp) 'intv))
(eq math-exp-token 'end)))
- (throw 'syntax "Expected ‘)’"))
+ (throw 'syntax "Expected `)'"))
(math-read-token)
exp))
((eq math-exp-token 'string)
(message (concat
"Embedded Calc mode enabled; "
(if calc-embedded-quiet
- "Type ‘C-x * x’"
+ "Type `C-x * x'"
"Give this command again")
" to return to normal")))))
(scroll-down 0)) ; fix a bug which occurs when truncate-lines is changed.
(desc
(if (symbolp func)
(if (= (logand kind 3) 0)
- (format-message "‘%c’ = %s" key name)
+ (format-message "`%c' = %s" key name)
(if pos
(format "%s%c%s"
(downcase (substring name 0 pos))
(define-key calc-dumb-map "\C-c\C-c" 'exit-recursive-edit)))
(use-local-map calc-dumb-map)
(setq truncate-lines t)
- (message "Type ‘q’ or ‘C-c C-c’ to return to Calc")
+ (message "Type `q' or `C-c C-c' to return to Calc")
(recursive-edit)
(bury-buffer "*Gnuplot Trail*")))
(if (string-match "\\` +" prompts)
(setq prompts (substring prompts (match-end 0))))
(setq msg (format-message
- "%s: %s%s‘%s’%s%s %s%s"
+ "%s: %s%s`%s'%s%s %s%s"
(if (string-match
"\\`\\(calc-[-a-zA-Z0-9]+\\) *\\(.*\\)\\'"
cmd)
(calc-describe-thing var "Variable Index"))
(defun calc-describe-thing (thing where &optional target not-quoted)
- (message "Looking for ‘%s’ in %s..." thing where)
+ (message "Looking for `%s' in %s..." thing where)
(let ((savewin (current-window-configuration)))
(calc-info-goto-node where)
(or (let ((case-fold-search nil))
(if Info-history
(Info-last))
(set-window-configuration savewin)
- (error "Can't find ‘%s’ in %s" thing where)))
+ (error "Can't find `%s' in %s" thing where)))
(let (Info-history)
(Info-goto-node (buffer-substring (match-beginning 1) (match-end 1))))
(let* ((string-target (or target thing))
(re-search-forward quoted nil t)
(search-forward string-target nil t)))))
(beginning-of-line)
- (message "Found ‘%s’ in %s" thing where)))
+ (message "Found `%s' in %s" thing where)))
(defun calc-view-news ()
(interactive)
(princ "GNU Emacs Calculator.\n")
(princ " By Dave Gillespie.\n")
(princ (format " %s\n\n" emacs-copyright))
- (princ (format-message "Type ‘h s’ for a more detailed summary.\n"))
+ (princ (format-message "Type `h s' for a more detailed summary.\n"))
(princ (format-message
- "Or type ‘h i’ to read the full Calc manual on-line.\n\n"))
+ "Or type `h i' to read the full Calc manual on-line.\n\n"))
(princ "Basic keys:\n")
(let* ((calc-full-help-flag t))
(mapc (function (lambda (x) (princ (format
(princ
(if (eq (nth 2 msgs) ?v)
(format-message
- "\n‘v’ or ‘V’ prefix (vector/matrix) keys: \n")
+ "\n`v' or `V' prefix (vector/matrix) keys: \n")
(if (nth 2 msgs)
(format-message
- "\n‘%c’ prefix (%s) keys:\n"
+ "\n`%c' prefix (%s) keys:\n"
(nth 2 msgs)
(or (cdr (assq (nth 2 msgs)
calc-help-long-names))
(interactive)
(calc-wrapper
(calc-set-language 'c)
- (message "‘C’ language mode")))
+ (message "C language mode")))
(put 'c 'math-oper-table
'( ( "u!" calcFunc-lnot -1 1000 )
math-exp-token 'end
math-expr-data "\000")
x)
- (throw 'syntax "Unmatched closing ‘/’")))
+ (throw 'syntax "Unmatched closing `/'")))
(defun math-parse-fortran-subscr (sym args)
(setq sym (math-build-var-name sym))
(defun math-parse-tex-sum (f val)
(let (low high save)
- (or (equal math-expr-data "_") (throw 'syntax "Expected ‘_’"))
+ (or (equal math-expr-data "_") (throw 'syntax "Expected `_'"))
(math-read-token)
(setq save math-exp-old-pos)
(setq low (math-read-factor))
(progn
(setq math-exp-old-pos (1+ save))
(throw 'syntax "Expected equation")))
- (or (equal math-expr-data "^") (throw 'syntax "Expected ‘^’"))
+ (or (equal math-expr-data "^") (throw 'syntax "Expected `^'"))
(math-read-token)
(setq high (math-read-factor))
(list (nth 2 f) (math-read-factor) (nth 1 low) (nth 2 low) high)))
(while (assoc math-expr-data '(("ccol") ("lcol") ("rcol")))
(math-read-token)
(or (equal math-expr-data calc-function-open)
- (throw 'syntax "Expected ‘{’"))
+ (throw 'syntax "Expected `{'"))
(math-read-token)
(setq vec (cons (cons 'vec (math-read-expr-list)) vec))
(or (equal math-expr-data calc-function-close)
- (throw 'syntax "Expected ‘}’"))
+ (throw 'syntax "Expected `}'"))
(math-read-token))
(or (equal math-expr-data calc-function-close)
- (throw 'syntax "Expected ‘}’"))
+ (throw 'syntax "Expected `}'"))
(math-read-token)
(math-transpose (cons 'vec (nreverse vec)))))
(math-read-expr-list))))
(if (not (or (equal math-expr-data calc-function-close)
(eq math-exp-token 'end)))
- (throw 'syntax "Expected ‘)’"))
+ (throw 'syntax "Expected `)'"))
(math-read-token)
(cons (intern (format "calcFunc-%s'" (nth 1 x))) args)))
(list 'var
(interactive)
(calc-wrapper
(calc-set-language 'yacas)
- (message "‘Yacas’ language mode")))
+ (message "Yacas language mode")))
(put 'yacas 'math-vector-brackets "{}")
(interactive)
(calc-wrapper
(calc-set-language 'maxima)
- (message "‘Maxima’ language mode")))
+ (message "Maxima language mode")))
(put 'maxima 'math-oper-table
'(("+" + 100 100)
(interactive)
(calc-wrapper
(calc-set-language 'giac)
- (message "‘Giac’ language mode")))
+ (message "Giac language mode")))
(put 'giac 'math-oper-table
'( ( "[" (math-read-giac-subscr) 250 -1 )
(defun math-read-giac-subscr (x op)
(let ((idx (math-read-expr-level 0)))
(or (equal math-expr-data "]")
- (throw 'syntax "Expected ‘]’"))
+ (throw 'syntax "Expected `]'"))
(math-read-token)
(list 'calcFunc-subscr x (calc-normalize (list '+ idx 1)))))
(progn
(math-read-token)
(equal math-expr-data "]")))
- (throw 'syntax "Expected ‘]]’"))
+ (throw 'syntax "Expected `]]'"))
(math-read-token)
(list 'calcFunc-subscr x idx)))
(if (= sep ?\.)
(setq h (1+ h)))
(if (= sep ?\])
- (math-read-big-error (1- h) v "Expected ‘)’"))
+ (math-read-big-error (1- h) v "Expected `)'"))
(if (= sep ?\))
(setq p (math-read-big-rec
(1+ math-rb-h1) math-rb-v1 (1- h) math-rb-v2 v))
0 1)
p))))
((= (math-read-big-char (1- h) v) ?\])
- (math-read-big-error (1- h) v "Expected ‘)’"))
+ (math-read-big-error (1- h) v "Expected `)'"))
((= sep ?\,)
(or (and (math-realp (car p)) (math-realp (nth 1 p)))
(math-read-big-error
(setq h (math-read-big-balance (1+ hleft) v "["))
(if hright
(or (= h hright)
- (math-read-big-error hright v "Expected ‘]’"))
+ (math-read-big-error hright v "Expected `]'"))
(setq hright h))
(setq p (cons (math-read-big-rec
hleft v h (1+ v)) p))
(setq h (1+ h)))
(and (= (math-read-big-char h v) ?\])
(setq h (1+ h))))
- (math-read-big-error (1- h) v "Expected ‘]’"))
+ (math-read-big-error (1- h) v "Expected `]'"))
(if (= (math-read-big-char h vtop) ?\,)
(setq h (1+ h)))
(math-read-big-emptyp math-rb-h1 (1+ v) (1- h) math-rb-v2 nil t)
(setq widest (math-read-big-char (1- h) v))
(if (or (memq widest '(?\; ?\)))
(and (eq widest ?\.) (cdr p)))
- (math-read-big-error (1- h) v "Expected ‘]’"))
+ (math-read-big-error (1- h) v "Expected `]'"))
(if (= widest ?\.)
(setq h (1+ h)
widest (math-read-big-balance h v "[")
h widest)
(= (math-read-big-char (1- h) v) ?\,)))
(or (= (math-read-big-char (1- h) v) ?\))
- (math-read-big-error (1- h) v "Expected ‘)’"))
+ (math-read-big-error (1- h) v "Expected `)'"))
(setq p (cons line (nreverse p))))
(setq p (list 'var
(intern (math-remove-dashes p))
math-rb-v2 baseline nil t)))
(or (= (math-read-big-char math-read-big-h2 baseline) ?\:)
(math-read-big-error math-read-big-h2 baseline
- "Expected ‘:’"))
+ "Expected `:'"))
(setq p (list (nth 1 widest) p y
(math-read-big-rec
(1+ math-read-big-h2) math-rb-v1 math-rb-h2 math-rb-v2
(if (>= h len)
(if what
(math-read-big-error nil v (format-message
- "Unmatched ‘%s’" what))
+ "Unmatched `%s'" what))
(setq count 0))
(if (memq (aref line h) '(?\( ?\[))
(setq count (1+ count))
(defun calc-help ()
(interactive)
(let ((msgs
- '("Press ‘h’ for complete help; press ‘?’ repeatedly for a summary"
+ '("Press `h' for complete help; press `?' repeatedly for a summary"
"Letter keys: Negate; Precision; Yank; Why; Xtended cmd; Quit"
"Letter keys: SHIFT + Undo, reDo; Inverse, Hyperbolic, Option"
"Letter keys: SHIFT + sQrt; Sin, Cos, Tan; Exp, Ln, logB"
nil nil nil
"Please describe exactly what actions triggered the bug and the
precise symptoms of the bug. If possible, include a backtrace by
-doing ‘\\[toggle-debug-on-error]’, then reproducing the bug.
+doing `\\[toggle-debug-on-error]', then reproducing the bug.
" )))
;;;###autoload
(defalias 'calc-report-bug 'report-calc-bug)
(setq n (and (not (eq calc-auto-why t)) (if calc-auto-why t 1))))
(calc-change-mode 'calc-auto-why n nil)
(cond ((null n)
- (message "User must press ‘w’ to explain unsimplified results"))
+ (message "User must press `w' to explain unsimplified results"))
((eq n t)
- (message "Automatically doing ‘w’ to explain unsimplified results"))
+ (message "Automatically doing `w' to explain unsimplified results"))
(t
- (message "Automatically doing ‘w’ only for unusual messages")))))
+ (message "Automatically doing `w' only for unusual messages")))))
(defun calc-group-digits (n)
(interactive "P")
(vals (mapcar (function (lambda (v) (symbol-value (car v))))
calc-mode-var-list)))
(unless calc-settings-file
- (error "No ‘calc-settings-file’ specified"))
+ (error "No `calc-settings-file' specified"))
(set-buffer (find-file-noselect (substitute-in-file-name
calc-settings-file)))
(goto-char (point-min))
(calc-change-mode 'calc-auto-recompute arg nil t)
(calc-refresh-evaltos)
(message (if calc-auto-recompute
- "Automatically recomputing ‘=>’ forms when necessary"
- "Not recomputing ‘=>’ forms automatically"))))
+ "Automatically recomputing `=>' forms when necessary"
+ "Not recomputing `=>' forms automatically"))))
(defun calc-working (n)
(interactive "P")
",")
((equal name "#")
(search-backward "#")
- (error "Token ‘#’ is reserved"))
+ (error "Token `#' is reserved"))
((and unquoted (string-match "#" name))
- (error "Tokens containing ‘#’ must be quoted"))
+ (error "Tokens containing `#' must be quoted"))
((not (string-match "[^ ]" name))
(search-backward "\"" nil t)
(error "Blank tokens are not allowed"))
(quoted nil))
(while (progn
(skip-chars-forward "\n\t ")
- (if (eobp) (error "Expected ‘%s’" eterm))
+ (if (eobp) (error "Expected `%s'" eterm))
(not (looking-at term)))
(cond ((looking-at "%%")
(end-of-line))
(forward-char 2)
(let ((p (calc-read-parse-table-part "}" "}")))
(or (looking-at "[+*?]")
- (error "Expected ‘+’, ‘*’, or ‘?’"))
+ (error "Expected `+', `*', or `?'"))
(let ((sym (intern (buffer-substring (point) (1+ (point))))))
(forward-char 1)
(looking-at "[^\n\t ]*")
(match-end 1)))))))
(goto-char (match-end 0)))
((looking-at ":=[\n\t ]")
- (error "Misplaced ‘:=’"))
+ (error "Misplaced `:='"))
(t
(looking-at "[^\n\t ]*")
(let ((end (match-end 0)))
(or last-kbd-macro
(error "No keyboard macro defined"))
(setq calc-invocation-macro last-kbd-macro)
- (message "Use ‘C-x * Z’ to invoke this macro"))
+ (message "Use `C-x * Z' to invoke this macro"))
(defun calc-user-define-edit ()
(interactive) ; but no calc-wrapper!
`((and
(,chk ,var)
(math-reject-arg ,var ',qual)))))
- (error "Unknown qualifier ‘%s’" qual-name))))))))
+ (error "Unknown qualifier `%s'" qual-name))))))))
(defun math-do-arg-list-check (args is-opt is-rest)
(cond ((null args) nil)
(calc-edit-mode (list 'calc-finish-stack-edit (list 'quote var))
t
(format-message
- "Editing variable ‘%s’" (calc-var-name var)))
+ "Editing variable `%s'" (calc-var-name var)))
(and value
(insert (math-format-nice-expr value (frame-width)) "\n")))))
(calc-show-edit-buffer))
(format-message
(concat
"(**) When in TeX or LaTeX display mode, the TeX specific unit\n"
- "names will not use the ‘tex’ prefix; the unit name for a\n"
- "TeX point will be ‘pt’ instead of ‘texpt’, for example.\n"
+ "names will not use the `tex' prefix; the unit name for a\n"
+ "TeX point will be `pt' instead of `texpt', for example.\n"
"To avoid conflicts, the unit names for pint and parsec will\n"
- "be ‘pint’ and ‘parsec’ instead of ‘pt’ and ‘pc’."))))
+ "be `pint' and `parsec' instead of `pt' and `pc'."))))
(view-mode)
(message "Formatting units table...done"))
(setq math-units-table-buffer-valid t)
(if (not (or (equal math-expr-data math-rb-close)
(equal math-expr-data ")")
(eq math-exp-token 'end)))
- (throw 'syntax "Expected ‘]’")))
+ (throw 'syntax "Expected `]'")))
(if (equal math-expr-data ";")
(let ((math-exp-keep-spaces space-sep))
(setq vals (cons 'vec (math-read-matrix (list vals))))))
(if (not (or (equal math-expr-data math-rb-close)
(eq math-exp-token 'end)))
- (throw 'syntax "Expected ‘]’")))
+ (throw 'syntax "Expected `]'")))
(or (eq math-exp-token 'end)
(math-read-token))
vals)))
(insert (propertize
(concat
(or title title "Calc Edit Mode. ")
- (format-message "Press ‘C-c C-c’")
+ (format-message "Press `C-c C-c'")
(if allow-ret "" " or RET")
- (format-message " to finish, ‘C-x k RET’ to cancel.\n\n"))
+ (format-message " to finish, `C-x k RET' to cancel.\n\n"))
'font-lock-face 'italic 'read-only t 'rear-nonsticky t 'front-sticky t))
(make-local-variable 'calc-edit-top)
(setq calc-edit-top (point))))
(defvar calc-last-kill nil
"The last number killed in calc-mode.")
(defvar calc-dollar-values nil
- "Values to be used for ‘$’.")
+ "Values to be used for `$'.")
(defvar calc-dollar-used nil
- "The highest order of ‘$’ that occurred.")
+ "The highest order of `$' that occurred.")
(defvar calc-hashes-used nil
- "The highest order of ‘#’ that occurred.")
+ "The highest order of `#' that occurred.")
(defvar calc-quick-prev-results nil
"Previous results from Quick Calc.")
(defvar calc-said-hello nil
(and calc-display-trail
(= (window-width) (frame-width))
(calc-trail-display 1 t)))
- (message "Welcome to the GNU Emacs Calculator! Press ‘?’ or ‘h’ for help, ‘q’ to quit")
+ (message "Welcome to the GNU Emacs Calculator! Press `?' or `h' for help, `q' to quit")
(run-hooks 'calc-start-hook)
(and (windowp full-display)
(window-point full-display)
(stringp (nth 1 err))
(string-match "max-specpdl-size\\|max-lisp-eval-depth"
(nth 1 err)))
- (error "Computation got stuck or ran too long. Type ‘M’ to increase the limit")
+ (error "Computation got stuck or ran too long. Type `M' to increase the limit")
(setq calc-aborted-prefix nil)
(signal (car err) (cdr err)))))
(when calc-aborted-prefix
(defun calc-user-invocation ()
(interactive)
(unless calc-invocation-macro
- (error "Use ‘Z I’ inside Calc to define a ‘C-x * Z’ keyboard macro"))
+ (error "Use `Z I' inside Calc to define a `C-x * Z' keyboard macro"))
(execute-kbd-macro calc-invocation-macro nil))
;;; User-programmability.
+ - * / \\(div) %(rem) _(-X,postfix) ;(1/X,postfix) ^(exp) L(og)
Q(sqrt) !(fact) S(in) C(os) T(an) |(or) #(xor) &(and) ~(not)
* >/< repeats last binary operation with its 2nd (1st) arg as postfix op
-* I inverses next trig function * '/\"/{} - display/display args
+* I inverses next trig function * \\='/\"/{} - display/display args
* D - switch to all-decimal, or toggle deg/rad mode
* B/O/H/X - binary/octal/hex mode for i/o (X is a shortcut for H)
* i/o - prefix for d/b/o/x - set only input/output modes
(wrong-type-argument
(if (not (listp mins))
(signal (car err) (cdr err))
- (message "Argtype error in ‘appt-disp-window-function’ - \
+ (message "Argtype error in `appt-disp-window-function' - \
update it for multiple appts?")
;; Fallback to just displaying the first appt, as we used to.
(funcall appt-disp-window-function
-;;; cal-bahai.el --- calendar functions for the Bahá'à calendar.
+;;; cal-bahai.el --- calendar functions for the Bahá’à calendar.
;; Copyright (C) 2001-2015 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@gnu.org>
;; Keywords: calendar
-;; Human-Keywords: Bahá'à calendar, Bahá'Ã, Baha'i, Bahai, calendar, diary
+;; Human-Keywords: Bahá’à calendar, Bahá’Ã, Baha'i, Bahai, calendar, diary
;; Package: calendar
;; This file is part of GNU Emacs.
;;; Commentary:
;; This collection of functions implements the features of calendar.el
-;; and diary-lib.el that deal with the Bahá'à calendar.
+;; and diary-lib.el that deal with the Bahá’à calendar.
-;; The Bahá'à (http://www.bahai.org) calendar system is based on a
+;; The Bahá’à (http://www.bahai.org) calendar system is based on a
;; solar cycle of 19 months with 19 days each. The four remaining
;; "intercalary" days are called the Ayyám-i-Há (days of Há), and are
;; placed between the 18th and 19th months. They are meant as a time
["Bahá" "Jalál" "Jamál" "‘Aẓamat" "Núr" "Raḥmat" "Kalimát" "Kamál"
"Asmá’" "‘Izzat" "MashÃyyat" "‘Ilm" "Qudrat" "Qawl" "Masá’il"
"Sharaf" "Sulá¹Ã¡n" "Mulk" "‘Alá’"]
- "Array of the month names in the Bahá'à calendar.")
+ "Array of the month names in the Bahá’à calendar.")
(defconst calendar-bahai-epoch (calendar-absolute-from-gregorian '(3 21 1844))
- "Absolute date of start of Bahá'à calendar = March 21, 1844 AD.")
+ "Absolute date of start of Bahá’à calendar = March 21, 1844 AD.")
(defun calendar-bahai-leap-year-p (year)
- "True if Bahá'à YEAR is a leap year in the Bahá'à calendar."
+ "True if Bahá’à YEAR is a leap year in the Bahá’à calendar."
(calendar-leap-year-p (+ year 1844)))
(defconst calendar-bahai-leap-base
Used by `calendar-bahai-to-absolute'.")
(defun calendar-bahai-to-absolute (date)
- "Compute absolute date from Bahá'à date DATE.
+ "Compute absolute date from Bahá’à date DATE.
The absolute date is the number of days elapsed since the (imaginary)
Gregorian date Sunday, December 31, 1 BC."
(let* ((month (calendar-extract-month date))
day))) ; days so far this month
(defun calendar-bahai-from-absolute (date)
- "Bahá'à date (month day year) corresponding to the absolute DATE."
+ "Bahá’à date (month day year) corresponding to the absolute DATE."
(if (< date calendar-bahai-epoch)
- (list 0 0 0) ; pre-Bahá'à date
+ (list 0 0 0) ; pre-Bahá’à date
(let* ((greg (calendar-gregorian-from-absolute date))
(gmonth (calendar-extract-month greg))
(year (+ (- (calendar-extract-year greg) 1844)
;;;###cal-autoload
(defun calendar-bahai-date-string (&optional date)
- "String of Bahá'à date of Gregorian DATE.
+ "String of Bahá’à date of Gregorian DATE.
Defaults to today's date if DATE is not given."
(let* ((bahai-date (calendar-bahai-from-absolute
(calendar-absolute-from-gregorian
;;;###cal-autoload
(defun calendar-bahai-print-date ()
- "Show the Bahá'à calendar equivalent of the selected date."
+ "Show the Bahá’à calendar equivalent of the selected date."
(interactive)
(let ((s (calendar-bahai-date-string (calendar-cursor-to-date t))))
(if (string-equal s "")
- (message "Date is pre-Bahá'Ã")
- (message "Bahá'à date: %s" s))))
+ (message "Date is pre-Bahá’Ã")
+ (message "Bahá’à date: %s" s))))
(defun calendar-bahai-read-date ()
- "Interactively read the arguments for a Bahá'à date command.
+ "Interactively read the arguments for a Bahá’à date command.
Reads a year, month and day."
(let* ((today (calendar-current-date))
(year (calendar-read
- "Bahá'à calendar year (not 0): "
+ "Bahá’à calendar year (not 0): "
(lambda (x) (not (zerop x)))
(number-to-string
(calendar-extract-year
(completion-ignore-case t)
(month (cdr (assoc
(completing-read
- "Bahá'à calendar month name: "
+ "Bahá’à calendar month name: "
(mapcar 'list
(append calendar-bahai-month-name-array nil))
nil t)
(calendar-make-alist calendar-bahai-month-name-array
1))))
- (day (calendar-read "Bahá'à calendar day (1-19): "
+ (day (calendar-read "Bahá’à calendar day (1-19): "
(lambda (x) (and (< 0 x) (<= x 19))))))
(list (list month day year))))
;;;###cal-autoload
(defun calendar-bahai-goto-date (date &optional noecho)
- "Move cursor to Bahá'à date DATE; echo Bahá'à date unless NOECHO is non-nil."
+ "Move cursor to Bahá’à date DATE; echo Bahá’à date unless NOECHO is non-nil."
(interactive (calendar-bahai-read-date))
(calendar-goto-date (calendar-gregorian-from-absolute
(calendar-bahai-to-absolute date)))
;;;###holiday-autoload
(defun holiday-bahai (month day string)
- "Holiday on MONTH, DAY (Bahá'Ã) called STRING.
-If MONTH, DAY (Bahá'Ã) is visible in the current calendar window,
+ "Holiday on MONTH, DAY (Bahá’Ã) called STRING.
+If MONTH, DAY (Bahá’Ã) is visible in the current calendar window,
returns the corresponding Gregorian date in the form of the
list (((month day year) STRING)). Otherwise, returns nil."
;; Since the calendar window shows 3 months at a time, there are
(m (calendar-extract-month bahai-date))
(y (calendar-extract-year bahai-date))
date)
- (unless (< m 1) ; Bahá'à calendar doesn't apply
+ (unless (< m 1) ; Bahá’à calendar doesn't apply
;; Cf holiday-fixed, holiday-islamic.
;; With a +- 3 month calendar window, and 19 months per year,
;; month 16 is special. When m16 is central is when the
;; To see if other months are visible we can shift the range
;; accordingly.
(calendar-increment-month m y (- 16 month) 19)
- (and (> m 12) ; Bahá'à date might be visible
+ (and (> m 12) ; Bahá’à date might be visible
(calendar-date-is-visible-p
(setq date (calendar-gregorian-from-absolute
(calendar-bahai-to-absolute (list month day y)))))
;;;###holiday-autoload
(defun holiday-bahai-new-year ()
- "Holiday entry for the Bahá'à New Year, if visible in the calendar window."
+ "Holiday entry for the Bahá’à New Year, if visible in the calendar window."
(holiday-fixed 3 21
- (format "Bahá'à New Year (Naw-Ruz) %d"
+ (format "Bahá’à New Year (Naw-Ruz) %d"
(- displayed-year (1- 1844)))))
;;;###holiday-autoload
;;;###diary-autoload
(defun diary-bahai-list-entries ()
- "Add any Bahá'à date entries from the diary file to `diary-entries-list'.
-Bahá'à date diary entries must be prefaced by `diary-bahai-entry-symbol'
+ "Add any Bahá’à date entries from the diary file to `diary-entries-list'.
+Bahá’à date diary entries must be prefaced by `diary-bahai-entry-symbol'
\(normally a `B'). The same diary date forms govern the style of the
-Bahá'à calendar entries, except that the Bahá'à month names cannot be
-abbreviated. The Bahá'à months are numbered from 1 to 19 with Bahá being
-1 and 19 being `Alá. If a Bahá'à date diary entry begins with
+Bahá’à calendar entries, except that the Bahá’à month names cannot be
+abbreviated. The Bahá’à months are numbered from 1 to 19 with Bahá being
+1 and 19 being `Alá. If a Bahá’à date diary entry begins with
`diary-nonmarking-symbol', the entry will appear in the diary listing, but
will not be marked in the calendar. This function is provided for use with
`diary-nongregorian-listing-hook'."
;;;###diary-autoload
(defun calendar-bahai-mark-date-pattern (month day year &optional color)
- "Mark dates in calendar window that conform to Bahá'à date MONTH/DAY/YEAR.
+ "Mark dates in calendar window that conform to Bahá’à date MONTH/DAY/YEAR.
A value of 0 in any position is a wildcard. Optional argument COLOR is
passed to `calendar-mark-visible-date' as MARK."
(calendar-mark-1 month day year 'calendar-bahai-from-absolute
;;;###diary-autoload
(defun diary-bahai-mark-entries ()
- "Mark days in the calendar window that have Bahá'à date diary entries.
+ "Mark days in the calendar window that have Bahá’à date diary entries.
Marks each entry in `diary-file' (or included files) visible in the calendar
window. See `diary-bahai-list-entries' for more information."
(diary-mark-entries-1 'calendar-bahai-mark-date-pattern
;;;###cal-autoload
(defun diary-bahai-insert-entry (arg)
"Insert a diary entry.
-For the Bahá'à date corresponding to the date indicated by point.
+For the Bahá’à date corresponding to the date indicated by point.
Prefix argument ARG makes the entry nonmarking."
(interactive "P")
(diary-insert-entry-1 nil arg calendar-bahai-month-name-array
;;;###cal-autoload
(defun diary-bahai-insert-monthly-entry (arg)
"Insert a monthly diary entry.
-For the day of the Bahá'à month corresponding to the date indicated by point.
+For the day of the Bahá’à month corresponding to the date indicated by point.
Prefix argument ARG makes the entry nonmarking."
(interactive "P")
(diary-insert-entry-1 'monthly arg calendar-bahai-month-name-array
;;;###cal-autoload
(defun diary-bahai-insert-yearly-entry (arg)
"Insert an annual diary entry.
-For the day of the Bahá'à year corresponding to the date indicated by point.
+For the day of the Bahá’à year corresponding to the date indicated by point.
Prefix argument ARG will make the entry nonmarking."
(interactive "P")
(diary-insert-entry-1 'yearly arg calendar-bahai-month-name-array
;; To be called from diary-list-sexp-entries, where DATE is bound.
;;;###diary-autoload
(defun diary-bahai-date ()
- "Bahá'à calendar equivalent of date diary entry."
- (format "Bahá'à date: %s" (calendar-bahai-date-string date)))
+ "Bahá’à calendar equivalent of date diary entry."
+ (format "Bahá’à date: %s" (calendar-bahai-date-string date)))
(provide 'cal-bahai)
"Mark dates in calendar window that conform to Hebrew date MONTH/DAY/YEAR.
A value of 0 in any position is a wildcard. Optional argument COLOR is
passed to `calendar-mark-visible-date' as MARK."
- ;; FIXME not the same as the Bahai and Islamic cases, so can't use
+ ;; FIXME not the same as the Bahá’à and Islamic cases, so can't use
;; calendar-mark-1.
(with-current-buffer calendar-buffer
(if (and (not (zerop month)) (not (zerop day)))
["Insert Anniversary" diary-insert-anniversary-entry]
["Insert Block" diary-insert-block-entry]
["Insert Cyclic" diary-insert-cyclic-entry]
- ("Insert Bahá'Ã"
+ ("Insert Bahá’Ã"
["One time" diary-bahai-insert-entry]
["Monthly" diary-bahai-insert-monthly-entry]
["Yearly" diary-bahai-insert-yearly-entry])
["Astronomical Date" calendar-astro-goto-day-number]
["Hebrew Date" calendar-hebrew-goto-date]
["Persian Date" calendar-persian-goto-date]
- ["Bahá'à Date" calendar-bahai-goto-date]
+ ["Bahá’à Date" calendar-bahai-goto-date]
["Islamic Date" calendar-islamic-goto-date]
["Julian Date" calendar-julian-goto-date]
["Chinese Date" calendar-chinese-goto-date]
(goto-char (point-min))
(when (search-forward "documentclass" nil t)
(forward-line 1)
- ;; Eg for some Bahai holidays.
+ ;; E.g., for some Bahá’à holidays.
;; FIXME latin1 might not always be right.
(insert "\\usepackage[latin1]{inputenc}\n"))))
(latex-mode)
;; can be translated from the (usual) Gregorian calendar to the day of
;; the year/days remaining in year, to the ISO commercial calendar, to
;; the Julian (old style) calendar, to the Hebrew calendar, to the
-;; Islamic calendar, to the Bahá'à calendar, to the French
+;; Islamic calendar, to the Bahá’à calendar, to the French
;; Revolutionary calendar, to the Mayan calendar, to the Chinese
;; calendar, to the Coptic calendar, to the Ethiopic calendar, and to
;; the astronomical (Julian) day number. Times of sunrise/sunset can
;; The following files are part of the calendar/diary code:
;; appt.el Appointment notification
-;; cal-bahai.el Bahá'à calendar
+;; cal-bahai.el Bahá’à calendar
;; cal-china.el Chinese calendar
;; cal-coptic.el Coptic/Ethiopic calendars
;; cal-dst.el Daylight saving time rules
integers appropriate to the relevant date. For example, to
display the ISO date:
- (setq calendar-date-echo-text '(format \"ISO date: %s\"
+ (setq calendar-date-echo-text \\='(format \"ISO date: %s\"
(calendar-iso-date-string
(list month day year))))
Changing this variable without using customize has no effect on
November 10, 1990. See the documentation for the function
`diary-list-sexp-entries' for more details.
-Diary entries based on the Hebrew, the Islamic and/or the Bahá'Ã
+Diary entries based on the Hebrew, the Islamic and/or the Bahá’Ã
calendar are also possible, but because these are somewhat slow, they
are ignored unless you set the `diary-nongregorian-listing-hook' and
the `diary-nongregorian-marking-hook' appropriately. See the
:group 'diary)
(defcustom diary-bahai-entry-symbol "B"
- "Symbol indicating a diary entry according to the Bahá'à calendar."
+ "Symbol indicating a diary entry according to the Bahá’à calendar."
:type 'string
:group 'diary)
:group 'holidays)
(defcustom calendar-bahai-all-holidays-flag nil
- "If nil, show only major holidays from the Bahá'à calendar.
+ "If nil, show only major holidays from the Bahá’à calendar.
These are the days on which work and school must be suspended.
-Otherwise, show all the holidays that would appear in a complete Bahá'Ã
+Otherwise, show all the holidays that would appear in a complete Bahá’Ã
calendar."
:type 'boolean
:group 'holidays)
(list
\"\"
- '(calendar-hebrew-date-string date)
- '(let* ((year (calendar-extract-year date))
+ \\='(calendar-hebrew-date-string date)
+ \\='(let* ((year (calendar-extract-year date))
(d (calendar-day-number date))
(days-remaining
(- (calendar-day-number (list 12 31 year)) d)))
(format \"%d/%d\" d days-remaining))
- '(let* ((d (calendar-absolute-from-gregorian date))
+ \\='(let* ((d (calendar-absolute-from-gregorian date))
(iso-date (calendar-iso-from-absolute d)))
(format \"ISO week %d of %d\"
(calendar-extract-month iso-date)
(unless (string-equal
(setq odate (calendar-bahai-date-string date))
"")
- (format "Bahá'à date: %s" odate))
+ (format "Bahá’à date: %s" odate))
(format "Chinese date: %s"
(calendar-chinese-date-string date))
(unless (string-equal
(defcustom diary-abbreviated-year-flag t
"Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
-This applies to the Gregorian, Hebrew, Islamic, and Bahá'à calendars.
+This applies to the Gregorian, Hebrew, Islamic, and Bahá’à calendars.
When the current century is added to a two-digit year, if the result
is more than 50 years in the future, the previous century is assumed.
If the result is more than 50 years in the past, the next century is assumed.
(if (and diary-file (file-exists-p diary-file))
(if (file-readable-p diary-file)
diary-file
- (error "Diary file ‘%s’ is not readable" diary-file))
- (error "Diary file ‘%s’ does not exist" diary-file)))
+ (error "Diary file `%s' is not readable" diary-file))
+ (error "Diary file `%s' does not exist" diary-file)))
;;;###autoload
(defun diary (&optional arg)
"
(interactive "P")
(if (string-equal diary-mail-addr "")
- (user-error "You must set ‘diary-mail-addr’ to use this command")
+ (user-error "You must set `diary-mail-addr' to use this command")
(let ((diary-display-function 'diary-fancy-display))
(diary-list-entries (calendar-current-date) (or ndays diary-mail-days)))
(compose-mail diary-mail-addr
(calendar-mark-month m y month day year color)
(calendar-increment-month m y 1)))))
-;; Bahai, Hebrew, Islamic.
+;; Bahá’Ã, Hebrew, Islamic.
(defun calendar-mark-complex (month day year fromabs &optional color)
"Mark dates in the calendar conforming to MONTH DAY YEAR of some system.
The function FROMABS converts absolute dates to the appropriate date system.
(calendar-mark-visible-date
(calendar-gregorian-from-absolute date) color)))))
-;; Bahai, Islamic.
+;; Bahá’Ã, Islamic.
(defun calendar-mark-1 (month day year fromabs toabs &optional color)
"Mark dates in the calendar conforming to MONTH DAY YEAR of some system.
The function FROMABS converts absolute dates to the appropriate date system.
&%%(let ((dayname (calendar-day-of-week date))
(day (calendar-extract-day date)))
(or
- (and (= day 21) (memq dayname '(1 2 3 4 5)))
- (and (memq day '(19 20)) (= dayname 5)))
+ (and (= day 21) (memq dayname \\='(1 2 3 4 5)))
+ (and (memq day \\='(19 20)) (= dayname 5)))
) UIUC pay checks deposited
A number of built-in functions are available for this type of
#'diary-from-outlook-rmail)
((memq major-mode '(gnus-summary-mode gnus-article-mode))
#'diary-from-outlook-gnus)
- (t (error "Don't know how to snarf in ‘%s’" major-mode)))))
+ (t (error "Don't know how to snarf in `%s'" major-mode)))))
(funcall func noconfirm)))
(provide 'diary-lib)
'((holiday-bahai-new-year)
(holiday-bahai-ridvan) ; respects calendar-bahai-all-holidays-flag
(holiday-fixed 5 23 "Declaration of the Báb")
- (holiday-fixed 5 29 "Ascension of Bahá'u'lláh")
+ (holiday-fixed 5 29 "Ascension of Bahá’u’lláh")
(holiday-fixed 7 9 "Martyrdom of the Báb")
(holiday-fixed 10 20 "Birth of the Báb")
- (holiday-fixed 11 12 "Birth of Bahá'u'lláh")
+ (holiday-fixed 11 12 "Birth of Bahá’u’lláh")
(if calendar-bahai-all-holidays-flag
(append
(holiday-fixed 11 26 "Day of the Covenant")
- (holiday-fixed 11 28 "Ascension of `Abdu'l-Bahá")))))
- "Bahá'à holidays.
+ (holiday-fixed 11 28 "Ascension of `Abdu’l-Bahá")))))
+ "Bahá’à holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
K>0, and MONTH's last day otherwise.
(holiday-hebrew MONTH DAY STRING) a fixed date on the Hebrew calendar
(holiday-islamic MONTH DAY STRING) a fixed date on the Islamic calendar
- (holiday-bahai MONTH DAY STRING) a fixed date on the Bahá'à calendar
+ (holiday-bahai MONTH DAY STRING) a fixed date on the Bahá’à calendar
(holiday-julian MONTH DAY STRING) a fixed date on the Julian calendar
(holiday-sexp SEXP STRING) SEXP is a Gregorian-date-valued expression
in the variable `year'; if it evaluates to
(holiday-islamic 3 12 \"Mohammed's Birthday\")
since the Islamic months are numbered from 1 starting with Muharram.
-To add an entry for the Bahá'à festival of Ridvan, use
+To add an entry for the Bahá’à festival of Ridvan, use
(holiday-bahai 2 13 \"Festival of Ridvan\")
-since the Bahá'à months are numbered from 1 starting with Bahá.
+since the Bahá’à months are numbered from 1 starting with Bahá.
To add Thomas Jefferson's birthday, April 2, 1743 (Julian), use
(holiday-julian 4 2 \"Jefferson's Birthday\")
Tuesday after the first Monday in November of years divisible by 4, add
(holiday-sexp
- '(if (zerop (% year 4))
+ \\='(if (zerop (% year 4))
(calendar-gregorian-from-absolute
(1+ (calendar-dayname-on-or-before
1 (+ 6 (calendar-absolute-from-gregorian
(if holiday-islamic-holidays
(cons "Islamic" holiday-islamic-holidays))
(if holiday-bahai-holidays
- (cons "Bahá'Ã" holiday-bahai-holidays))
+ (cons "Bahá’Ã" holiday-bahai-holidays))
(if holiday-oriental-holidays
(cons "Oriental" holiday-oriental-holidays))
(if holiday-solar-holidays
result))
(defun icalendar--split-value (value-string)
- "Split VALUE-STRING at ‘;=’."
+ "Split VALUE-STRING at `;='."
(let ((result '())
param-name param-value)
(when value-string
(setq found-error t)
(save-current-buffer
(set-buffer (get-buffer-create "*icalendar-errors*"))
- (insert (format-message "Error in line %d -- %s: ‘%s’\n"
+ (insert (format-message "Error in line %d -- %s: `%s'\n"
(count-lines (point-min) (point))
error-val
entry-main))))))
(when day
(progn
(icalendar--dmsg "diary-float %s" entry-main)
- (error "Don't know if or how to implement day in ‘diary-float’")))
+ (error "Don't know if or how to implement day in `diary-float'")))
(cons (concat
;;Start today (yes this is an arbitrary choice):
entry-main)
(progn
(icalendar--dmsg "diary-date %s" entry-main)
- (error "‘diary-date’ is not supported yet"))
+ (error "`diary-date' is not supported yet"))
;; no match
nil))
(rrule (icalendar--get-event-property e 'RRULE))
(rdate (icalendar--get-event-property e 'RDATE))
(duration (icalendar--get-event-property e 'DURATION)))
- (icalendar--dmsg "%s: ‘%s’" start-d summary)
+ (icalendar--dmsg "%s: `%s'" start-d summary)
;; check whether start-time is missing
(if (and dtstart
(string=
interval))))
)
(t
- (message "Cannot handle COUNT attribute for ‘%s’ events."
+ (message "Cannot handle COUNT attribute for `%s' events."
frequency)))
(setq until-conv (icalendar--datetime-to-diary-date until))
(setq until-1-conv (icalendar--datetime-to-diary-date until-1))
entry. In this case the user will be asked whether he wants to insert
the entry."
(when (or (not summary)
- (y-or-n-p (format-message "Add appointment for ‘%s’ to diary? "
+ (y-or-n-p (format-message "Add appointment for `%s' to diary? "
summary)))
(when summary
(setq non-marking
spec (match-string 1 string))
(unless (string-equal spec "%")
(or (setq match (assoc (downcase spec) units))
- (error "Bad format specifier: ‘%s’" spec))
+ (error "Bad format specifier: `%s'" spec))
(if (assoc (downcase spec) usedunits)
- (error "Multiple instances of specifier: ‘%s’" spec))
+ (error "Multiple instances of specifier: `%s'" spec))
(if (string-equal (car match) "z")
(setq zeroflag t)
(unless larger
;; on calling this function.
(if display-time-mode
(timeclock-update-mode-line)
- (message "Activate ‘display-time-mode’ or turn off \
-‘timeclock-use-display-time’ to see timeclock information"))
+ (message "Activate `display-time-mode' or turn off \
+`timeclock-use-display-time' to see timeclock information"))
(add-hook 'display-time-hook 'timeclock-update-mode-line))
(setq timeclock-update-timer
(run-at-time nil 60 'timeclock-update-mode-line))))
OLD-DEFAULT hours are set for every day that has no number indicated."
(interactive "P")
(if old-default (setq old-default (prefix-numeric-value old-default))
- (error "‘timelog-make-hours-explicit’ requires an explicit argument"))
+ (error "`timelog-make-hours-explicit' requires an explicit argument"))
(let ((extant-timelog (find-buffer-visiting timeclock-file))
current-date)
(with-current-buffer (find-file-noselect timeclock-file t)
(unless (looking-at
(concat "^\\([bhioO]\\) \\([0-9]+/[0-9]+/[0-9]+\\) "
"\\([0-9]+:[0-9]+:[0-9]+\\)"))
- (error "Can't parse ‘%s’" timeclock-file))
+ (error "Can't parse `%s'" timeclock-file))
(let ((this-date (match-string 2)))
(unless (or (and current-date
(string= this-date current-date))
(DEBT ENTRIES-BY-DAY ENTRIES-BY-PROJECT)
DEBT is a floating point number representing the number of seconds
-“owed†before any work was done. For a new file (one without a ‘b’
+“owed†before any work was done. For a new file (one without a `b'
entry), this is always zero.
The two entries lists have similar formats. They are both alists,
(widget-put
widget :error
(format-message
- "Invalid value: must be distinct from ‘todo-item-mark’"))
+ "Invalid value: must be distinct from `todo-item-mark'"))
widget)))
:initialize 'custom-initialize-default
:set 'todo-reset-prefix
"deleting it will also delete the file.\n"
"Do you want to proceed? ")))
((> archived 0)
- (todo-y-or-n-p (concat "This category has archived items; "
+ (todo-y-or-n-p (format-message
+ (concat "This category has archived items; "
"the archived category will remain\n"
"after deleting the todo category. "
"Do you still want to delete it\n"
- "(see ‘todo-skip-archived-categories’ "
- "for another option)? ")))
+ "(see `todo-skip-archived-categories' "
+ "for another option)? "))))
(t
(todo-y-or-n-p (concat "Permanently remove category \"" cat
"\"" (and arg " and all its entries")
(widget-put
widget :error
(format-message
- "Invalid value: must be distinct from ‘todo-prefix’"))
+ "Invalid value: must be distinct from `todo-prefix'"))
widget)))
:set (lambda (symbol value)
(custom-set-default symbol (propertize value 'face 'todo-mark)))
;; Warn user if categories sexp has changed.
(unless (string= ssexp cats)
(message (concat "The sexp at the beginning of the file differs "
- "from the value of ‘todo-categories’.\n"
+ "from the value of `todo-categories'.\n"
"If the sexp is wrong, you can fix it with "
"M-x todo-repair-categories-sexp,\n"
"but note this reverts any changes you have "
(todo-insert-item--this-key)
todo-insert-item--argsleft)))))))))
(setq todo-insert-item--argsleft todo-insert-item--newargsleft))
- (when prompt (message "Press a key (so far ‘%s’): %s"
+ (when prompt (message "Press a key (so far `%s'): %s"
todo-insert-item--keys-so-far prompt))
(set-transient-map map)
(setq todo-insert-item--argsleft argsleft)))
'(add/edit delete))
" comment"))))
params " "))
- (this-key (let ((key (read-key (concat todo-edit-item--prompt p->k))))
+ (key-prompt (substitute-command-keys todo-edit-item--prompt))
+ (this-key (let ((key (read-key (concat key-prompt p->k))))
(and (characterp key) (char-to-string key))))
(this-param (car (rassoc this-key params))))
(pcase this-param
(`delete (todo-edit-item--text 'comment-delete))
(`diary (todo-edit-item--diary-inclusion))
(`nonmarking (todo-edit-item--diary-inclusion 'nonmarking))
- (`date (let ((todo-edit-item--prompt "Press a key (so far ‘e d’): "))
+ (`date (let ((todo-edit-item--prompt "Press a key (so far `e d'): "))
(todo-edit-item--next-key
todo-edit-item--date-param-key-alist arg)))
(`full (progn (todo-edit-item--header 'date)
(if (called-interactively-p 'any)
(message "%s"
(substitute-command-keys
- "Type ‘\\[todo-show]’ to enter Todo mode"))
+ "Type `\\[todo-show]' to enter Todo mode"))
(todo-modes-set-1)
(todo-modes-set-2)
(todo-modes-set-3)
(defcustom cedet-global-gtags-command "gtags"
"Command name for the GNU Global gtags executable.
-GTAGS is used to create the tags table queried by the ‘global’ command."
+GTAGS is used to create the tags table queried by the `global' command."
:type 'string
:group 'cedet)
(if cs
(error "No valid interactive sub project types for %s"
cs)
- (error "EDE error: Can't fin project types to create")))
+ (error "EDE error: Can't find project types to create")))
r)
)
nil t)))
"Add PROJAUTO, an EDE autoload definition to `ede-project-class-files'.
Optional argument FLAG indicates how this autoload should be
added. Possible values are:
- 'generic - A generic project type. Keep this at the very end.
- 'unique - A unique project type for a specific project. Keep at the very
- front of the list so more generic projects don't get priority."
+ `generic' - A generic project type. Keep this at the very end.
+ `unique' - A unique project type for a specific project. Keep at the very
+ front of the list so more generic projects don't get priority."
;; First, can we identify PROJAUTO as already in the list? If so, replace.
(let ((projlist ede-project-class-files)
(projname (oref projauto name)))
"It needs to be regenerated by EDE.\n"
"\t@echo If you have not modified Project.ede, you can"
(format-message
- " use ‘touch’ to update the Makefile time stamp.\n")
+ " use `touch' to update the Makefile time stamp.\n")
"\t@false\n\n"
"\n\n# End of Makefile\n")))
RESERVED arguments are kept for a later use.
Return:
- nil if everything is ok.
-- 'outdated if VERSION is less than MINIMUM.
-- 'incompatible if VERSION is not backward compatible with MINIMUM.
+- `outdated' if VERSION is less than MINIMUM.
+- `incompatible' if VERSION is not backward compatible with MINIMUM.
- t if the check failed."
(let ((code (if (stringp version)
(inversion-decode-version version)
(require 'find-func)
;; For find-function-regexp-alist. It is tempting to replace this
-;; â\80\98requireâ\80\98 by (defvar find-function-regexp-alist) and
+;; â\80\98requireâ\80\99 by (defvar find-function-regexp-alist) and
;; with-eval-after-load, but model-local.el is typically loaded when a
;; semantic autoload is invoked, and something in semantic loads
;; find-func.el before mode-local.el, so the eval-after-load is lost.
(override (fetch-overload symbol)))
(when override
- (insert (format-message "\noverride in mode ‘%s’: ’%s’\n"
+ (insert (format-message "\noverride in mode `%s': `%s'\n"
major-mode override))
)))
)))
(defun mode-local-print-binding (symbol)
"Print the SYMBOL binding."
(let ((value (symbol-value symbol)))
- (princ (format-message "\n ‘%s’ value is\n " symbol))
+ (princ (format-message "\n `%s' value is\n " symbol))
(if (and value (symbolp value))
- (princ (format-message "‘%s’" value))
+ (princ (format-message "`%s'" value))
(let ((pt (point)))
(pp value)
(save-excursion
)
((symbolp buffer-or-mode)
(setq mode buffer-or-mode)
- (princ (format-message "‘%s’\n" buffer-or-mode))
+ (princ (format-message "`%s'\n" buffer-or-mode))
)
((signal 'wrong-type-argument
(list 'buffer-or-mode buffer-or-mode))))
(while mode
(setq table (get mode 'mode-local-symbol-table))
(when table
- (princ (format-message "\n- From ‘%s’\n" mode))
+ (princ (format-message "\n- From `%s'\n" mode))
(mode-local-print-bindings table))
(setq mode (get-mode-local-parent mode)))))
Optional argument THROWSYM specifies a symbol the throw on non-recoverable error.
Remaining arguments FLAGS are additional flags to apply when searching.
This function knows of flags:
- 'mustbeclassvariable"
+ `mustbeclassvariable'"
(let ((s sequence) ; copy of the sequence
(tmp nil) ; tmp find variable
(tag nil) ; tag return list
)
;; First order check. Is this wholly contained in the typecache?
(setq tmp (semanticdb-typecache-find sequence))
-
+
(when tmp
(if (or (not tagclass) (semantic-tag-of-class-p tmp tagclass))
;; We are effectively done...
(when (eq (semantic-tag-get-attribute (car taglist) :kind) 'alias)
(let ((tagname
(semantic-analyze-split-name
- (semantic-tag-name
+ (semantic-tag-name
(car (semantic-tag-get-attribute (car taglist) :members))))))
(append (if (listp tagname)
tagname
Argument CONTEXT is an object specifying the locally derived context.
The optional argument FLAGS changes which return options are returned.
FLAGS can be any number of:
- 'no-tc - do not apply data-type constraint.
- 'no-longprefix - ignore long multi-symbol prefixes.
- 'no-unique - do not apply unique by name filtering."
+ `no-tc' - do not apply data-type constraint.
+ `no-longprefix' - ignore long multi-symbol prefixes.
+ `no-unique' - do not apply unique by name filtering."
(let* ((a context)
(desired-type (semantic-analyze-type-constraint a))
(desired-class (oref a prefixclass))
"The GCC setup data.
This is setup by `semantic-gcc-setup'.
This is an alist, and should include keys of:
- 'version - the version of gcc
- '--host - the host symbol (used in include directories)
- '--prefix - where GCC was installed.
+ `version' - the version of gcc
+ `--host' - the host symbol (used in include directories)
+ `--prefix' - where GCC was installed.
It should also include other symbols GCC was compiled with.")
;;;###autoload
(when (>= (oref obj typing-count) 5)
(oset obj mode 'standard)
(setq mode 'standard)
- (message "Resetting inline-mode to ‘standard’."))
+ (message "Resetting inline-mode to `standard'."))
(when (and (> numcompl max-tags)
(< (oref obj typing-count) 2))
;; Discretely hint at completion availability.
(setq msg-tail (concat "\n[<TAB> " (number-to-string (- numcompl max-tags)) " more]"))
(setq msg-tail (concat "\n[<n/a> " (number-to-string (- numcompl max-tags)) " more]"))
(when (>= (oref obj typing-count) 2)
- (message "Refine search to display results beyond the ‘%s’ limit"
+ (message "Refine search to display results beyond the `%s' limit"
(symbol-name 'semantic-complete-inline-max-tags-extended)))))
((= numcompl 1)
;; two possible cases
Note for overloading: If you opt to overload this function for your
major mode, and your routine takes a long time, be sure to call
- (semantic-throw-on-input 'your-symbol-here)
+ (semantic-throw-on-input \\='your-symbol-here)
so that it can be called from the idle work handler."
)
EDE project that will wrap an existing build system. You can do that
like this in your .emacs file:
- (ede-cpp-root-project \"NAME\" :file \"FILENAME\" :locate-fcn 'MYFCN)
+ (ede-cpp-root-project \"NAME\" :file \"FILENAME\" :locate-fcn \\='MYFCN)
See the CEDET manual, the EDE manual, or the commentary in
ede/cpp-root.el for more.
LIFESPAN indicates how long the data cache will be remembered.
The default LIFESPAN is 'end-of-command.
Possible Lifespans are:
- 'end-of-command - Remove the cache at the end of the currently
- executing command.
- 'exit-cache-zone - Remove when point leaves the overlay at the
- end of the currently executing command."
+ `end-of-command' - Remove the cache at the end of the currently
+ executing command.
+ `exit-cache-zone' - Remove when point leaves the overlay at the
+ end of the currently executing command."
;; Check if LIFESPAN is valid before to create any overlay
(or lifespan (setq lifespan 'end-of-command))
(or (memq lifespan '(end-of-command exit-cache-zone))
(defsubst semantic-java-doc-tag-name (tag)
"Return name of the doc TAG symbol.
-That is TAG `symbol-name' without the leading ‘@’."
+That is TAG `symbol-name' without the leading `@'."
(substring (symbol-name tag) 1))
(defun semantic-java-doc-keyword-before-p (k1 k2)
(define-overloadable-function semantic-tag-protection (tag &optional parent)
"Return protection information about TAG with optional PARENT.
This function returns on of the following symbols:
- nil - No special protection. Language dependent.
- 'public - Anyone can access this TAG.
- 'private - Only methods in the local scope can access TAG.
- 'protected - Like private for outside scopes, like public for child
- classes.
+ nil - No special protection. Language dependent.
+ `public' - Anyone can access this TAG.
+ `private' - Only methods in the local scope can access TAG.
+ `protected' - Like private for outside scopes, like public for child
+ classes.
Some languages may choose to provide additional return symbols specific
to themselves. Use of this function should allow for this.
(define-mode-local-override semantic-tag-protection javascript-mode (tag &optional parent)
"Return protection information about TAG with optional PARENT.
This function returns on of the following symbols:
- nil - No special protection. Language dependent.
- 'public - Anyone can access this TAG.
- 'private - Only methods in the local scope can access TAG.
- 'protected - Like private for outside scopes, like public for child
- classes.
+ nil - No special protection. Language dependent.
+ `public' - Anyone can access this TAG.
+ `private' - Only methods in the local scope can access TAG.
+ `protected' - Like private for outside scopes, like public for child
+ classes.
Some languages may choose to provide additional return symbols specific
to themselves. Use of this function should allow for this.
(setq symlist (list (match-string 1 tmp)
(substring tmp (1+ (match-end 1)) (length tmp))))
(setq symlist (list tmp))))))))
-
+
;;; Setup Function
;;
;; Since javascript-mode is an alias for js-mode, let it inherit all
Only the ASK style inserter will query the user for a value.
Dictionary value references that ask begin with the ? character.
Possible values are:
- 'ask - Prompt in the minibuffer as the value is inserted.
- 'field - Use the dictionary macro name as the inserted value,
- and place a field there. Matched fields change together.
+ `ask' - Prompt in the minibuffer as the value is inserted.
+ `field' - Use the dictionary macro name as the inserted value,
+ and place a field there. Matched fields change together.
NOTE: The field feature does not yet work with XEmacs."
:group 'srecode
(when (class-abstract-p C)
(throw 'skip nil))
- (princ (substitute-command-keys "‘"))
+ (princ (substitute-command-keys "`"))
(princ name)
- (princ (substitute-command-keys "’"))
+ (princ (substitute-command-keys "'"))
(when (slot-exists-p C 'key)
(when key
(princ " - Character Key: ")
A typical use:
(interactive (comint-get-source \"Compile file: \" prev-lisp-dir/file
- '(lisp-mode) t))"
+ \\='(lisp-mode) t))"
(let* ((def (comint-source-default prev-dir/file source-modes))
(stringfile (comint-extract-string))
(sfile-p (and stringfile
(defun custom-split-regexp-maybe (regexp)
"If REGEXP is a string, split it to a list at `\\|'.
You can get the original back from the result with:
- (mapconcat 'identity result \"\\|\")
+ (mapconcat \\='identity result \"\\|\")
IF REGEXP is not a string, return it unchanged."
(if (stringp regexp)
(if (not (boundp symbol))
;; If variables are removed from C code, give an error here!
(and native-p
- (message "Note, built-in variable ‘%S’ not bound" symbol))
+ (message "Note, built-in variable `%S' not bound" symbol))
;; Save the standard value, unless we already did.
(or (get symbol 'standard-value)
(put symbol 'standard-value (list standard)))
'("" "c")))
doc)
(when fn
- (princ (substitute-command-keys " in ‘"))
+ (princ (substitute-command-keys " in `"))
(help-insert-xref-button (file-name-nondirectory fn)
'help-theme-def fn)
- (princ (substitute-command-keys "’")))
+ (princ (substitute-command-keys "'")))
(princ ".\n")
(if (custom-theme-p theme)
(progn
this specifies that SYMBOL should be set after the specified symbol,
if both appear in constructs like `custom-set-variables'."
(unless (listp value)
- (error "Invalid custom dependency ‘%s’" value))
+ (error "Invalid custom dependency `%s'" value))
(let* ((deps (get symbol 'custom-dependencies))
(new-deps deps))
(while value
(let ((dep (car value)))
(unless (symbolp dep)
- (error "Invalid custom dependency ‘%s’" dep))
+ (error "Invalid custom dependency `%s'" dep))
(unless (memq dep new-deps)
(setq new-deps (cons dep new-deps)))
(setq value (cdr value))))
(defsubst custom-check-theme (theme)
"Check whether THEME is valid, and signal an error if it is not."
(unless (custom-theme-p theme)
- (error "Unknown theme ‘%s’" theme)))
+ (error "Unknown theme `%s'" theme)))
(defun custom-push-theme (prop symbol theme mode &optional value)
"Record VALUE for face or variable SYMBOL in custom theme THEME.
(when elt
(cond
((eq (car elt) 'dependant)
- (error "Circular custom dependency on ‘%s’" sym))
+ (error "Circular custom dependency on `%s'" sym))
((car elt)
(setcar elt 'dependant)
(dolist (dep (get sym 'custom-dependencies))
(custom-available-themes))))
nil nil))
(unless (custom-theme-name-valid-p theme)
- (error "Invalid theme name ‘%s’" theme))
+ (error "Invalid theme name `%s'" theme))
;; If THEME is already enabled, re-enable it after loading, even if
;; NO-ENABLE is t.
(if no-enable
'("" "c")))
hash)
(unless fn
- (error "Unable to find theme file for ‘%s’" theme))
+ (error "Unable to find theme file for `%s'" theme))
(with-temp-buffer
(insert-file-contents fn)
(setq hash (secure-hash 'sha256 (current-buffer)))
;; Buttons
(when (and button (not (widgetp wid-button)))
(newline)
- (insert (format-message "Here is a ‘%S’ button labeled ‘%s’.\n\n"
+ (insert (format-message "Here is a `%S' button labeled `%s'.\n\n"
button-type button-label)))
;; Overlays
(when overlays
(when disp-vector
(insert
"\nThe display table entry is displayed by ")
- (if (display-graphic-p (selected-frame))
- (progn
- (insert "these fonts (glyph codes):\n")
- (dotimes (i (length disp-vector))
- (insert (glyph-char (car (aref disp-vector i))) ?:
- (propertize " " 'display '(space :align-to 5))
- (or (cdr (aref disp-vector i)) "-- no font --")
- "\n")
- (let ((face (glyph-face (car (aref disp-vector i)))))
- (when face
- (insert (propertize " " 'display '(space :align-to 5))
- "face: ")
- (insert (format-message "‘%s’\n" face))))))
- (insert "these terminal codes:\n")
- (dotimes (i (length disp-vector))
- (insert (car (aref disp-vector i))
- (propertize " " 'display '(space :align-to 5))
- (or (cdr (aref disp-vector i)) "-- not encodable --")
- "\n"))))
+ (insert "these fonts (glyph codes):\n")
+ (dotimes (i (length disp-vector))
+ (insert (glyph-char (car (aref disp-vector i))) ?:
+ (propertize " " 'display '(space :align-to 5))
+ (or (cdr (aref disp-vector i)) "-- no font --")
+ "\n")
+ (let ((face (glyph-face (car (aref disp-vector i)))))
+ (when face
+ (insert (propertize " " 'display '(space :align-to 5))
+ "face: ")
+ (insert (format-message "`%s'\n" face))))))
(when composition
(insert "\nComposed")
Also useful for `auto-mode-alist' like this:
- (add-to-list 'auto-mode-alist
- '(\"[^/]\\\\.dired\\\\'\" . dired-virtual-mode))"
+ (add-to-list \\='auto-mode-alist
+ \\='(\"[^/]\\\\.dired\\\\\\='\" . dired-virtual-mode))"
(interactive)
(dired-virtual (dired-virtual-guess-dir)))
(let ((file (dired-get-filename t)))
(if dired-bind-vm
(if (y-or-n-p (format-message
- "Visit ‘%s’ as a mail folder with VM?" file))
+ "Visit `%s' as a mail folder with VM?" file))
(dired-vm))
;; Read mail folder using rmail.
(if (y-or-n-p (format-message
- "Visit ‘%s’ as a mailbox with RMAIL?" file))
+ "Visit `%s' as a mailbox with RMAIL?" file))
(dired-rmail)))))
\f
support this option. Alternatively, you might want to use Emacs's
own emulation of \"ls\", by using:
(setq ls-lisp-use-insert-directory-program nil)
- (require 'ls-lisp)
+ (require \\='ls-lisp)
This is used by default on MS Windows, which does not have an \"ls\" program.
Note that `ls-lisp' does not support as many options as GNU ls, though.
For more details, see Info node `(emacs)ls in Lisp'."
(unless (bolp)
(insert "\n"))
(insert (current-time-string)
- (format-message "\tBuffer ‘%s’\n" (buffer-name obuf)))
+ (format-message "\tBuffer `%s'\n" (buffer-name obuf)))
(goto-char (point-max))
(insert "\f\n")))))))
;;;***
\f
-;;;### (autoloads nil "dired-x" "dired-x.el" "c1a6289ba8504b605595321436a9c04d")
+;;;### (autoloads nil "dired-x" "dired-x.el" "63be23901985afd2a9aadc64f2aacf37")
;;; Generated autoloads from dired-x.el
(autoload 'dired-jump "dired-x" "\
nil string))))
(defun electric-quote-post-self-insert-function ()
- "Function that ‘electric-quote-mode’ adds to ‘post-self-insert-hook’.
+ "Function that `electric-quote-mode' adds to `post-self-insert-hook'.
This requotes when a quoting key is typed."
(when (and electric-quote-mode
(memq last-command-event '(?\' ?\`)))
(let ((start
- (if comment-start
+ (if (and comment-start comment-use-syntax)
(when (or electric-quote-comment electric-quote-string)
(let ((syntax (syntax-ppss)))
(and (or (and electric-quote-comment (nth 4 syntax))
When enabled, as you type this replaces \\=` with \\=‘, \\=' with \\=’,
\\=`\\=` with “, and \\='\\=' with â€. This occurs only in comments, strings,
and text paragraphs, and these are selectively controlled with
-‘electric-quote-comment’, ‘electric-quote-string’, and
-‘electric-quote-paragraph’.
+`electric-quote-comment', `electric-quote-string', and
+`electric-quote-paragraph'.
This is a global minor mode. To toggle the mode in a single buffer,
-use ‘electric-quote-local-mode’."
+use `electric-quote-local-mode'."
:global t :group 'electricity
:initialize 'custom-initialize-delay
:init-value nil
;;;###autoload
(define-minor-mode electric-quote-local-mode
- "Toggle ‘electric-quote-mode’ only in this buffer."
+ "Toggle `electric-quote-mode' only in this buffer."
:variable (buffer-local-value 'electric-quote-mode (current-buffer))
(cond
((eq electric-quote-mode (default-value 'electric-quote-mode))
(if (equal function "")
(if (ad-is-advised default)
default
- (error "ad-read-advised-function: ‘%s’ is not advised" default))
+ (error "ad-read-advised-function: `%s' is not advised" default))
(intern function))))
(defvar ad-advice-class-completion-table
(cl-dolist (class ad-advice-classes)
(if (ad-get-advice-info-field function class)
(cl-return class)))
- (error "ad-read-advice-class: ‘%s’ has no advices" function)))
+ (error "ad-read-advice-class: `%s' has no advices" function)))
(let ((class (completing-read
(format "%s (default %s): " (or prompt "Class") default)
ad-advice-class-completion-table nil t)))
(ad-get-advice-info-field function class)))
(default
(if (null name-completion-table)
- (error "ad-read-advice-name: ‘%s’ has no %s advice"
+ (error "ad-read-advice-name: `%s' has no %s advice"
function class)
(car (car name-completion-table))))
(prompt (format "%s (default %s): " (or prompt "Name") default))
(interactive (ad-read-advice-specification "Enable advice of"))
(if (ad-is-advised function)
(if (eq (ad-enable-advice-internal function class name t) 0)
- (error "ad-enable-advice: ‘%s’ has no %s advice matching ‘%s’"
+ (error "ad-enable-advice: `%s' has no %s advice matching `%s'"
function class name))
- (error "ad-enable-advice: ‘%s’ is not advised" function)))
+ (error "ad-enable-advice: `%s' is not advised" function)))
;;;###autoload
(defun ad-disable-advice (function class name)
(interactive (ad-read-advice-specification "Disable advice of"))
(if (ad-is-advised function)
(if (eq (ad-enable-advice-internal function class name nil) 0)
- (error "ad-disable-advice: ‘%s’ has no %s advice matching ‘%s’"
+ (error "ad-disable-advice: `%s' has no %s advice matching `%s'"
function class name))
- (error "ad-disable-advice: ‘%s’ is not advised" function)))
+ (error "ad-disable-advice: `%s' is not advised" function)))
(defun ad-enable-regexp-internal (regexp class flag)
"Set enable FLAGs of all CLASS advices whose name contains a REGEXP match.
(ad-set-advice-info-field
function class
(delq advice-to-remove (ad-get-advice-info-field function class)))
- (error "ad-remove-advice: ‘%s’ has no %s advice ‘%s’"
+ (error "ad-remove-advice: `%s' has no %s advice `%s'"
function class name)))
- (error "ad-remove-advice: ‘%s’ is not advised" function)))
+ (error "ad-remove-advice: `%s' is not advised" function)))
;;;###autoload
(defun ad-add-advice (function advice class position)
,value-form))
(argument-access
`(setq ,argument-access ,value-form))
- (t (error "ad-set-argument: No argument at position %d of ‘%s’"
+ (t (error "ad-set-argument: No argument at position %d of `%s'"
index arglist)))))
(defun ad-get-arguments (arglist index)
(setq index (1+ index))
(setq values-index (1+ values-index)))
(if (null set-forms)
- (error "ad-set-arguments: No argument at position %d of ‘%s’"
+ (error "ad-set-arguments: No argument at position %d of `%s'"
index arglist)
(if (= (length set-forms) 1)
;; For exactly one set-form we can use values-form directly,...
;; The mapping should work for any two argument lists.
(defun ad-map-arglists (source-arglist target-arglist)
- "Make ‘funcall/apply’ form to map SOURCE-ARGLIST to TARGET-ARGLIST.
+ "Make `funcall/apply' form to map SOURCE-ARGLIST to TARGET-ARGLIST.
The arguments supplied to TARGET-ARGLIST will be taken from SOURCE-ARGLIST just
as if they had been supplied to a function with TARGET-ARGLIST directly.
Excess source arguments will be neglected, missing source arguments will be
-supplied as nil. Returns a ‘funcall’ or ‘apply’ form with the second element
-being ‘function’ which has to be replaced by an actual function argument.
-Example: ‘(ad-map-arglists '(a &rest args) '(w x y z))’ will return
- ‘(funcall ad--addoit-function a (car args) (car (cdr args)) (nth 2 args))’."
+supplied as nil. Returns a `funcall' or `apply' form with the second element
+being `function' which has to be replaced by an actual function argument.
+Example: (ad-map-arglists '(a &rest args) '(w x y z)) will return
+ (funcall ad--addoit-function a (car args) (car (cdr args)) (nth 2 args))."
(let* ((parsed-source-arglist (ad-parse-arglist source-arglist))
(source-reqopt-args (append (nth 0 parsed-source-arglist)
(nth 1 parsed-source-arglist)))
(if (not (eq current-definition original-definition))
;; We have a redefinition:
(if (not (memq ad-redefinition-action '(accept discard warn)))
- (error "ad-redefinition-action: ‘%s’ %s"
+ (error "ad-redefinition-action: `%s' %s"
function "invalidly redefined")
(if (eq ad-redefinition-action 'discard)
nil ;; Just drop it!
(funcall (or fsetfun #'fset) function newdef)
(ad-activate-internal function)
(if (eq ad-redefinition-action 'warn)
- (message "ad-handle-definition: ‘%s’ got redefined"
+ (message "ad-handle-definition: `%s' got redefined"
function))))
;; either advised def or correct original is in place:
nil)
current-prefix-arg))
(cond
((not (ad-is-advised function))
- (error "ad-activate: ‘%s’ is not advised" function))
+ (error "ad-activate: `%s' is not advised" function))
;; Just return for forward advised and not yet defined functions:
((not (ad-get-orig-definition function)) nil)
((not (ad-has-any-advice function)) (ad-unadvise function))
(interactive
(list (ad-read-advised-function "Deactivate advice of" 'ad-is-active)))
(if (not (ad-is-advised function))
- (error "ad-deactivate: ‘%s’ is not advised" function)
+ (error "ad-deactivate: `%s' is not advised" function)
(cond ((ad-is-active function)
(if (not (ad-get-orig-definition function))
- (error "ad-deactivate: ‘%s’ has no original definition"
+ (error "ad-deactivate: `%s' has no original definition"
function)
(ad-clear-advicefunname-definition function)
(ad-set-advice-info-field function 'active nil)
(cdr (assq name byte-compile-function-environment)))))
(pcase fn
(`nil
- (byte-compile-warn "attempt to inline ‘%s’ before it was defined"
+ (byte-compile-warn "attempt to inline `%s' before it was defined"
name)
form)
(`(autoload . ,_)
- (error "File ‘%s’ didn't define ‘%s’" (nth 1 fn) name))
+ (error "File `%s' didn't define `%s'" (nth 1 fn) name))
((and (pred symbolp) (guard (not (eq fn t)))) ;A function alias.
(byte-compile-inline-expand (cons fn (cdr form))))
((pred byte-code-function-p)
bindings)
values nil))
((and (not optionalp) (null values))
- (byte-compile-warn "attempt to open-code ‘%s’ with too few arguments" name)
+ (byte-compile-warn "attempt to open-code `%s' with too few arguments" name)
(setq arglist nil values 'too-few))
(t
(setq bindings (cons (list (car arglist) (car values))
(progn
(or (eq values 'too-few)
(byte-compile-warn
- "attempt to open-code ‘%s’ with too many arguments" name))
+ "attempt to open-code `%s' with too many arguments" name))
form)
;; The following leads to infinite recursion when loading a
form))
((eq fn 'quote)
(if (cdr (cdr form))
- (byte-compile-warn "malformed quote form: ‘%s’"
+ (byte-compile-warn "malformed quote form: `%s'"
(prin1-to-string form)))
;; map (quote nil) to nil to simplify optimizer logic.
;; map quoted constants to nil if for-effect (just because).
(if (symbolp binding)
binding
(if (cdr (cdr binding))
- (byte-compile-warn "malformed let binding: ‘%s’"
+ (byte-compile-warn "malformed let binding: `%s'"
(prin1-to-string binding)))
(list (car binding)
(byte-optimize-form (nth 1 binding) nil))))
(cons
(byte-optimize-form (car clause) nil)
(byte-optimize-body (cdr clause) for-effect))
- (byte-compile-warn "malformed cond form: ‘%s’"
+ (byte-compile-warn "malformed cond form: `%s'"
(prin1-to-string clause))
clause))
(cdr form))))
((eq fn 'if)
(when (< (length form) 3)
- (byte-compile-warn "too few arguments for ‘if’"))
+ (byte-compile-warn "too few arguments for `if'"))
(cons fn
(cons (byte-optimize-form (nth 1 form) nil)
(cons
(cons fn (mapcar 'byte-optimize-form (cdr form)))))
((eq fn 'interactive)
- (byte-compile-warn "misplaced interactive spec: ‘%s’"
+ (byte-compile-warn "misplaced interactive spec: `%s'"
(prin1-to-string form))
nil)
(cons fn (mapcar #'byte-optimize-form (cdr form))))
((not (symbolp fn))
- (byte-compile-warn "‘%s’ is a malformed function"
+ (byte-compile-warn "`%s' is a malformed function"
(prin1-to-string fn))
form)
(defun byte-optimize-while (form)
(when (< (length form) 2)
- (byte-compile-warn "too few arguments for ‘while’"))
+ (byte-compile-warn "too few arguments for `while'"))
(if (nth 1 form)
form))
(nconc (list 'funcall fn) butlast
(mapcar (lambda (x) (list 'quote x)) (nth 1 last))))
(byte-compile-warn
- "last arg to apply can't be a literal atom: ‘%s’"
+ "last arg to apply can't be a literal atom: `%s'"
(prin1-to-string last))
nil))
form)))
(cdr body)
body)))
nil)
- (t (message "Warning: Unknown defun property ‘%S’ in %S"
+ (t (message "Warning: Unknown defun property `%S' in %S"
(car x) name)))))
decls))
(def (list 'defalias
(declare (debug defun) (doc-string 3))
(or (memq (get name 'byte-optimizer)
'(nil byte-compile-inline-expand))
- (error "‘%s’ is a primitive" name))
+ (error "`%s' is a primitive" name))
`(prog1
(defun ,name ,arglist ,@body)
(eval-and-compile
off (cdr lap-entry))
(cond
((not (symbolp op))
- (error "Non-symbolic opcode ‘%s’" op))
+ (error "Non-symbolic opcode `%s'" op))
((eq op 'TAG)
(setcar off pc))
(t
pt)
(when dir
(unless was-same
- (insert (format-message "Leaving directory ‘%s’\n"
+ (insert (format-message "Leaving directory `%s'\n"
default-directory))))
(unless (bolp)
(insert "\n"))
(when dir
(setq default-directory dir)
(unless was-same
- (insert (format-message "Entering directory ‘%s’\n"
+ (insert (format-message "Entering directory `%s'\n"
default-directory))))
(setq byte-compile-last-logged-file byte-compile-current-file
byte-compile-last-warned-form nil)
(nargs (- (length form) 2)))
(unless (= nargs nfields)
(byte-compile-warn
- "‘%s’ called with %d args to fill %d format field(s)" (car form)
+ "`%s' called with %d args to fill %d format field(s)" (car form)
nargs nfields)))))
(dolist (elt '(format message error))
(plist-get keyword-args :group)
(not (and (consp name) (eq (car name) 'quote)))
(byte-compile-warn
- "%s for ‘%s’ fails to specify containing group"
+ "%s for `%s' fails to specify containing group"
(cdr (assq (car form)
'((custom-declare-group . defgroup)
(custom-declare-face . defface)
(let ((calls (assq name byte-compile-unresolved-functions))
nums sig min max)
(when (and calls macrop)
- (byte-compile-warn "macro ‘%s’ defined too late" name))
+ (byte-compile-warn "macro `%s' defined too late" name))
(setq byte-compile-unresolved-functions
(delq calls byte-compile-unresolved-functions))
(setq calls (delq t calls)) ;Ignore higher-order uses of the function.
(when (and (symbolp name)
(eq (function-get name 'byte-optimizer)
'byte-compile-inline-expand))
- (byte-compile-warn "defsubst ‘%s’ was used before it was defined"
+ (byte-compile-warn "defsubst `%s' was used before it was defined"
name))
(setq sig (byte-compile-arglist-signature arglist)
nums (sort (copy-sequence (cdr calls)) (function <))
;; so don't warn about them.
macroexpand
cl--compiling-file))))
- (byte-compile-warn "function ‘%s’ from cl package called at runtime"
+ (byte-compile-warn "function `%s' from cl package called at runtime"
func)))
form)
(if (fboundp f) (push f noruntime) (push f unresolved)))
;; Complain about the no-run-time functions
(byte-compile-print-syms
- "the function ‘%s’ might not be defined at runtime."
+ "the function `%s' might not be defined at runtime."
"the following functions might not be defined at runtime:"
noruntime)
;; Complain about the unresolved functions
(byte-compile-print-syms
- "the function ‘%s’ is not known to be defined."
+ "the function `%s' is not known to be defined."
"the following functions are not known to be defined:"
unresolved)))
nil)
;; (byte-compile-abbreviate-file filename)
;; (with-current-buffer input-buffer no-byte-compile))
(when (file-exists-p target-file)
- (message "%s deleted because of ‘no-byte-compile: %s’"
+ (message "%s deleted because of `no-byte-compile: %s'"
(byte-compile-abbreviate-file target-file)
(buffer-local-value 'no-byte-compile input-buffer))
(condition-case nil (delete-file target-file) (error nil)))
(when (and (symbolp sym)
(not (string-match "[-*/:$]" (symbol-name sym)))
(byte-compile-warning-enabled-p 'lexical))
- (byte-compile-warn "global/dynamic var ‘%s’ lacks a prefix"
+ (byte-compile-warn "global/dynamic var `%s' lacks a prefix"
sym))
(when (memq sym byte-compile-lexical-variables)
(setq byte-compile-lexical-variables
(delq sym byte-compile-lexical-variables))
- (byte-compile-warn "Variable ‘%S’ declared after its first use" sym))
+ (byte-compile-warn "Variable `%S' declared after its first use" sym))
(push sym byte-compile-bound-variables))
(defun byte-compile-file-form-defvar (form)
;; Don't warn when compiling the stubs in byte-run...
(not (assq name byte-compile-initial-macro-environment)))
(byte-compile-warn
- "‘%s’ defined multiple times, as both function and macro"
+ "`%s' defined multiple times, as both function and macro"
name))
(setcdr that-one nil))
(this-one
;; Hack: Don't warn when compiling the magic internal
;; byte-compiler macros in byte-run.el...
(not (assq name byte-compile-initial-macro-environment)))
- (byte-compile-warn "%s ‘%s’ defined multiple times in this file"
+ (byte-compile-warn "%s `%s' defined multiple times in this file"
(if macro "macro" "function")
name)))
((eq (car-safe (symbol-function name))
(if macro 'lambda 'macro))
(when (byte-compile-warning-enabled-p 'redefine)
- (byte-compile-warn "%s ‘%s’ being redefined as a %s"
+ (byte-compile-warn "%s `%s' being redefined as a %s"
(if macro "function" "macro")
name
(if macro "macro" "function")))
(stringp (car-safe (cdr-safe (cdr-safe body)))))
;; FIXME: We've done that already just above, so this looks wrong!
;;(byte-compile-set-symbol-position name)
- (byte-compile-warn "probable ‘\"’ without ‘\\’ in doc string of %s"
+ (byte-compile-warn "probable `\"' without `\\' in doc string of %s"
name))
(if (not (listp body))
(if (symbolp form) form "provided"))
fun)
(t
- (when (symbolp form)
+ (when (or (symbolp form) (eq (car-safe fun) 'closure))
+ ;; `fun' is a function *value*, so try to recover its corresponding
+ ;; source code.
(setq lexical-binding (eq (car fun) 'closure))
(setq fun (byte-compile--reify-function fun)))
;; Expand macros.
(`(',var . ,_)
(when (assq var byte-compile-lexical-variables)
(byte-compile-log-warning
- (format-message "%s cannot use lexical var ‘%s’" fn var)
+ (format-message "%s cannot use lexical var `%s'" fn var)
nil :error)))))
(when (macroexp--const-symbol-p fn)
- (byte-compile-warn "‘%s’ called as a function" fn))
+ (byte-compile-warn "`%s' called as a function" fn))
(when (and (byte-compile-warning-enabled-p 'interactive-only)
interactive-only)
- (byte-compile-warn "‘%s’ is for interactive use only%s"
+ (byte-compile-warn "`%s' is for interactive use only%s"
fn
(cond ((stringp interactive-only)
(format "; %s"
interactive-only)))
((and (symbolp 'interactive-only)
(not (eq interactive-only t)))
- (format-message "; use ‘%s’ instead."
+ (format-message "; use `%s' instead."
interactive-only))
(t "."))))
(if (eq (car-safe (symbol-function (car form))) 'macro)
(byte-compile-warning-enabled-p 'mapcar))
(byte-compile-set-symbol-position 'mapcar)
(byte-compile-warn
- "‘mapcar’ called for effect; use ‘mapc’ or ‘dolist’ instead"))
+ "`mapcar' called for effect; use `mapc' or `dolist' instead"))
(byte-compile-push-constant (car form))
(mapc 'byte-compile-form (cdr form)) ; wasteful, but faster.
(byte-compile-out 'byte-call (length (cdr form))))
(cond ((or (not (symbolp var)) (macroexp--const-symbol-p var))
(when (byte-compile-warning-enabled-p 'constants)
(byte-compile-warn (if (eq access-type 'let-bind)
- "attempt to let-bind %s ‘%s’"
- "variable reference to %s ‘%s’")
+ "attempt to let-bind %s `%s'"
+ "variable reference to %s `%s'")
(if (symbolp var) "constant" "nonvariable")
(prin1-to-string var))))
((let ((od (get var 'byte-obsolete-variable)))
(boundp var)
(memq var byte-compile-bound-variables)
(memq var byte-compile-free-references))
- (byte-compile-warn "reference to free variable ‘%S’" var)
+ (byte-compile-warn "reference to free variable `%S'" var)
(push var byte-compile-free-references))
(byte-compile-dynamic-variable-op 'byte-varref var))))
(boundp var)
(memq var byte-compile-bound-variables)
(memq var byte-compile-free-assignments))
- (byte-compile-warn "assignment to free variable ‘%s’" var)
+ (byte-compile-warn "assignment to free variable `%s'" var)
(push var byte-compile-free-assignments))
(byte-compile-dynamic-variable-op 'byte-varset var))))
\f
(defun byte-compile-subr-wrong-args (form n)
(byte-compile-set-symbol-position (car form))
- (byte-compile-warn "‘%s’ called with %d arg%s, but requires %s"
+ (byte-compile-warn "`%s' called with %d arg%s, but requires %s"
(car form) (length (cdr form))
(if (= 1 (length (cdr form))) "" "s") n)
;; Get run-time wrong-number-of-args error.
(macroexp--const-symbol-p var t))
(byte-compile-warning-enabled-p 'constants)
(byte-compile-warn
- "variable assignment to %s ‘%s’"
+ "variable assignment to %s `%s'"
(if (symbolp var) "constant" "nonvariable")
(prin1-to-string var)))
(byte-compile-normal-call `(set-default ',var ,@(cdr form)))))))
(list 'not
(cons (or (get (car form) 'byte-compile-negated-op)
(error
- "Compiler error: ‘%s’ has no ‘byte-compile-negated-op’ property"
+ "Compiler error: `%s' has no `byte-compile-negated-op' property"
(car form)))
(cdr form))))
\f
(byte-compile-set-symbol-position 'condition-case)
(unless (symbolp var)
(byte-compile-warn
- "‘%s’ is not a variable-name or nil (in condition-case)" var))
+ "`%s' is not a variable-name or nil (in condition-case)" var))
(if fun-bodies (setq var (make-symbol "err")))
(byte-compile-push-constant var)
(if fun-bodies
(setq ok nil)))
ok))))
(byte-compile-warn
- "‘%S’ is not a condition name or list of such (in condition-case)"
+ "`%S' is not a condition name or list of such (in condition-case)"
condition))
;; (not (or (eq condition 't)
;; (and (stringp (get condition 'error-message))
(byte-compile-set-symbol-position 'condition-case)
(unless (symbolp var)
(byte-compile-warn
- "‘%s’ is not a variable-name or nil (in condition-case)" var))
+ "`%s' is not a variable-name or nil (in condition-case)" var))
(dolist (clause (reverse clauses))
(let ((condition (nth 1 clause)))
(dolist (c condition)
(unless (and c (symbolp c))
(byte-compile-warn
- "‘%S’ is not a condition name (in condition-case)" c))
+ "`%S' is not a condition name (in condition-case)" c))
;; In reality, the `error-conditions' property is only required
;; for the argument to `signal', not to `condition-case'.
;;(unless (consp (get c 'error-conditions))
(if (and (eq 'set-buffer (car-safe (car-safe (cdr form))))
(byte-compile-warning-enabled-p 'suspicious))
(byte-compile-warn
- "Use ‘with-current-buffer’ rather than save-excursion+set-buffer"))
+ "Use `with-current-buffer' rather than save-excursion+set-buffer"))
(byte-compile-out 'byte-save-excursion 0)
(byte-compile-body-do-effect (cdr form))
(byte-compile-out 'byte-unbind 1))
(when (and (symbolp (nth 1 form))
(not (string-match "[-*/:$]" (symbol-name (nth 1 form))))
(byte-compile-warning-enabled-p 'lexical))
- (byte-compile-warn "global/dynamic var ‘%s’ lacks a prefix"
+ (byte-compile-warn "global/dynamic var `%s' lacks a prefix"
(nth 1 form)))
(let ((fun (nth 0 form))
(var (nth 1 form))
(and (eq fun 'defconst) (null (cddr form))))
(let ((ncall (length (cdr form))))
(byte-compile-warn
- "‘%s’ called with %d argument%s, but %s %s"
+ "`%s' called with %d argument%s, but %s %s"
fun ncall
(if (= 1 ncall) "" "s")
(if (< ncall 2) "requires" "accepts only")
(if (eq fun 'defconst)
(push var byte-compile-const-variables))
(when (and string (not (stringp string)))
- (byte-compile-warn "third arg to ‘%s %s’ is not a string: %s"
+ (byte-compile-warn "third arg to `%s %s' is not a string: %s"
fun var string))
(byte-compile-form-do-effect
(if (cddr form) ; `value' provided
(not (fboundp (eval (nth 1 form))))
(byte-compile-warn
"The compiler ignores `autoload' except at top level. You should
- probably put the autoload of the macro ‘%s’ at top-level."
+ probably put the autoload of the macro `%s' at top-level."
(eval (nth 1 form))))
(byte-compile-normal-call form))
;; The ones that remain are errors.
(defun byte-compile-lambda-form (_form)
(byte-compile-set-symbol-position 'lambda)
- (error "‘lambda’ used as function name is invalid"))
+ (error "`lambda' used as function name is invalid"))
;; Compile normally, but deal with warnings for the function being defined.
(put 'defalias 'byte-hunk-handler 'byte-compile-file-form-defalias)
(if (and (eq (car-safe (car-safe (cdr-safe form))) 'quote)
(byte-compile-warning-enabled-p 'make-local))
(byte-compile-warn
- "‘make-variable-buffer-local’ not called at toplevel"))
+ "`make-variable-buffer-local' not called at toplevel"))
(byte-compile-normal-call form))
(put 'make-variable-buffer-local
'byte-hunk-handler 'byte-compile-form-make-variable-buffer-local)
(length (nth 2 y))))))
(`name
(lambda (x y) (string< (car x) (car y))))
- (_ (error "‘byte-compile-call-tree-sort’: ‘%s’ - unknown sort mode"
+ (_ (error "`byte-compile-call-tree-sort': `%s' - unknown sort mode"
byte-compile-call-tree-sort))))))
(message "Generating call tree...")
(let ((rest byte-compile-call-tree)
;; startup.el.
(defvar command-line-args-left) ;Avoid 'free variable' warning
(if (not noninteractive)
- (error "‘batch-byte-compile’ is to be used only with -batch"))
+ (error "`batch-byte-compile' is to be used only with -batch"))
(let ((error nil))
(while command-line-args-left
(if (file-directory-p (expand-file-name (car command-line-args-left)))
(prog1 binder (setq binder (list binder)))
(when (cddr binder)
(byte-compile-log-warning
- (format-message "Malformed ‘%S’ binding: %S"
+ (format-message "Malformed `%S' binding: %S"
letsym binder)))
(setq value (cadr binder))
(car binder)))
(`((,(and var (guard (eq ?_ (aref (symbol-name var) 0)))) . ,_)
,_ ,_ ,_ ,_)
(byte-compile-log-warning
- (format-message "%s ‘%S’ not left unused" varkind var))))
+ (format-message "%s `%S' not left unused" varkind var))))
(pcase vardata
(`((,var . ,_) nil ,_ ,_ nil)
;; FIXME: This gives warnings in the wrong order, with imprecise line
(eq ?_ (aref (symbol-name var) 0))
;; As a special exception, ignore "ignore".
(eq var 'ignored))
- (byte-compile-log-warning (format-message "Unused lexical %s ‘%S’"
+ (byte-compile-log-warning (format-message "Unused lexical %s `%S'"
varkind var))))
;; If it's unused, there's no point converting it into a cons-cell, even if
;; it's captured and mutated.
(set-buffer b)
(erase-buffer)
(insert "cd " d ";du -sk * \n")
- (message "Running ‘cd %s;du -sk *’..." d)
+ (message "Running `cd %s;du -sk *'..." d)
(call-process-region (point-min) (point-max) shell-file-name t
(current-buffer) nil)
(goto-char (point-min))
(symbolp (setq fileonly (nth 4 form))))
(setq alist (cons (list fnfile fn arglist fileonly) alist))
;; FIXME make this more noticeable.
- (if form (message "Malformed declaration for ‘%s’" (cadr form))))))
+ (if form (message "Malformed declaration for `%s'" (cadr form))))))
(message "%sdone" m)
alist))
entry))
(warning-fill-prefix " "))
(display-warning 'check-declare
- (format-message "said ‘%s’ was defined in %s: %s"
+ (format-message "said `%s' was defined in %s: %s"
fn (file-name-nondirectory fnfile) type)
nil check-declare-warning-buffer)))
See `check-declare-directory' for more information."
(interactive "fFile to check: ")
(or (file-exists-p file)
- (error "File ‘%s’ not found" file))
+ (error "File `%s' not found" file))
(let ((m (format "Checking %s..." file))
errlist)
(message "%s" m)
Returns non-nil if any false statements are found."
(interactive "DDirectory to check: ")
(or (file-directory-p (setq root (expand-file-name root)))
- (error "Directory ‘%s’ not found" root))
- (let ((m "Checking ‘declare-function’ statements...")
+ (error "Directory `%s' not found" root))
+ (let ((m "Checking `declare-function' statements...")
(m2 "Finding files with declarations...")
errlist files)
(message "%s" m)
(when (re-search-forward "^(" e t)
(if (checkdoc-autofix-ask-replace (match-beginning 0)
(match-end 0)
- "Escape this ‘(’? "
+ (format-message "Escape this `('? ")
"\\(")
nil
(checkdoc-create-error
(if (checkdoc-autofix-ask-replace
(match-beginning 1) (match-end 1)
(format-message
- "If this is the argument ‘%s’, it should appear as %s. Fix? "
+ "If this is the argument `%s', it should appear as %s. Fix? "
(car args) (upcase (car args)))
(upcase (car args)) t)
(setq found (match-beginning 1))))))
nil)
(checkdoc-create-error
(format-message
- "Argument ‘%s’ should appear (as %s) in the doc string"
+ "Argument `%s' should appear (as %s) in the doc string"
(car args) (upcase (car args)))
s (marker-position e)))
(if (or (and order (eq order 'yes))
(or (boundp found) (fboundp found)))
(progn
(setq msg (format-message
- "Add quotes around Lisp symbol ‘%s’? " ms))
+ "Add quotes around Lisp symbol `%s'? " ms))
(if (checkdoc-autofix-ask-replace
(match-beginning 1) (+ (match-beginning 1)
(length ms))
- msg (concat "‘" ms "’") t)
+ msg (format-message "`%s'" ms) t)
(setq msg nil)
(setq msg
(format-message
- "Lisp symbol ‘%s’ should appear in quotes" ms))))))
+ "Lisp symbol `%s' should appear in quotes" ms))))))
(if msg
(checkdoc-create-error msg (match-beginning 1)
(+ (match-beginning 1)
(match-string 2) t)
nil
(checkdoc-create-error
- "Symbols t and nil should not appear in ‘...’ quotes"
+ "Symbols t and nil should not appear in single quotes"
(match-beginning 1) (match-end 1)))))
;; Here is some basic sentence formatting
(checkdoc-sentencespace-region-engine (point) e)
;; If we see a ?, then replace with "? ".
(if (checkdoc-autofix-ask-replace
(match-beginning 0) (match-end 0)
- "‘y-or-n-p’ argument should end with \"? \". Fix? "
+ (format-message
+ "`y-or-n-p' argument should end with \"? \". Fix? ")
"? " t)
nil
(checkdoc-create-error
- "‘y-or-n-p’ argument should end with \"? \""
+ "`y-or-n-p' argument should end with \"? \""
(match-beginning 0) (match-end 0)))
(if (save-excursion (forward-sexp 1)
(forward-char -2)
(looking-at " "))
(if (checkdoc-autofix-ask-replace
(match-beginning 0) (match-end 0)
- "‘y-or-n-p’ argument should end with \"? \". Fix? "
+ (format-message
+ "`y-or-n-p' argument should end with \"? \". Fix? ")
"? " t)
nil
(checkdoc-create-error
- "‘y-or-n-p’ argument should end with \"? \""
+ "`y-or-n-p' argument should end with \"? \""
(match-beginning 0) (match-end 0)))
(if (and ;; if this isn't true, we have a problem.
(save-excursion (forward-sexp 1)
(looking-at "\""))
(checkdoc-autofix-ask-replace
(match-beginning 0) (match-end 0)
- "‘y-or-n-p’ argument should end with \"? \". Fix? "
+ (format-message
+ "`y-or-n-p' argument should end with \"? \". Fix? ")
"? \"" t))
nil
(checkdoc-create-error
- "‘y-or-n-p’ argument should end with \"? \""
+ "`y-or-n-p' argument should end with \"? \""
(match-beginning 0) (match-end 0)))))))
;; Now, let's just run the spell checker on this guy.
(checkdoc-ispell-docstring-engine (save-excursion (forward-sexp 1)
(cond ((and junk-allowed (null sum)) sum)
(junk-allowed (* sign sum))
((or (/= start end) (null sum))
- (error "Not an integer string: ‘%s’" string))
+ (error "Not an integer string: `%s'" string))
(t (* sign sum)))))))
;; FIXME: Add a `cl-class-of' or `cl-typeof' or somesuch.
(metatype (cl--class-name (symbol-value (aref class 0)))))
(insert (symbol-name type)
- (substitute-command-keys " is a type (of kind ‘"))
+ (substitute-command-keys " is a type (of kind `"))
(help-insert-xref-button (symbol-name metatype)
'cl-help-type metatype)
- (insert (substitute-command-keys "’)"))
+ (insert (substitute-command-keys "')"))
(when location
- (insert (substitute-command-keys " in ‘"))
+ (insert (substitute-command-keys " in `"))
(help-insert-xref-button
(help-fns-short-filename location)
'cl-type-definition type location 'define-type)
- (insert (substitute-command-keys "’")))
+ (insert (substitute-command-keys "'")))
(insert ".\n")
;; Parents.
(insert " Inherits from ")
(while (setq cur (pop pl))
(setq cur (cl--class-name cur))
- (insert (substitute-command-keys "‘"))
+ (insert (substitute-command-keys "`"))
(help-insert-xref-button (symbol-name cur)
'cl-help-type cur)
- (insert (substitute-command-keys (if pl "’, " "’"))))
+ (insert (substitute-command-keys (if pl "', " "'"))))
(insert ".\n")))
;; Children, if available. ¡For EIEIO!
(when ch
(insert " Children ")
(while (setq cur (pop ch))
- (insert (substitute-command-keys "‘"))
+ (insert (substitute-command-keys "`"))
(help-insert-xref-button (symbol-name cur)
'cl-help-type cur)
- (insert (substitute-command-keys (if ch "’, " "’"))))
+ (insert (substitute-command-keys (if ch "', " "'"))))
(insert ".\n")))
;; Type's documentation.
(when generics
(insert (propertize "Specialized Methods:\n\n" 'face 'bold))
(dolist (generic generics)
- (insert (substitute-command-keys "‘"))
+ (insert (substitute-command-keys "`"))
(help-insert-xref-button (symbol-name generic)
'help-function generic)
- (insert (substitute-command-keys "’"))
+ (insert (substitute-command-keys "'"))
(pcase-dolist (`(,qualifiers ,args ,doc)
(cl--generic-method-documentation generic type))
(insert (format " %s%S\n" qualifiers args)
(when doc (error "Multiple doc strings for %S" name))
(setq doc (cadr (pop options-and-methods))))
(`declare
- (when declarations (error "Multiple ‘declare’ for %S" name))
+ (when declarations (error "Multiple `declare' for %S" name))
(setq declarations (pop options-and-methods)))
(`:method (push (cdr (pop options-and-methods)) methods))
(_ (push (pop options-and-methods) options))))
defun-declarations-alist))))
(cond
(f (apply (car f) name args (cdr declaration)))
- (t (message "Warning: Unknown defun property ‘%S’ in %S"
+ (t (message "Warning: Unknown defun property `%S' in %S"
(car declaration) name)
nil))))
(cdr declarations))
(cl--generic-method-specializers method)))
(file (find-lisp-object-file-name met-name 'cl-defmethod)))
(when file
- (insert (substitute-command-keys " in ‘"))
+ (insert (substitute-command-keys " in `"))
(help-insert-xref-button (help-fns-short-filename file)
'help-function-def met-name file
'cl-defmethod)
- (insert (substitute-command-keys "’.\n"))))
+ (insert (substitute-command-keys "'.\n"))))
(insert "\n" (or (nth 2 info) "Undocumented") "\n\n")))))))
(defun cl--generic-specializers-apply-to-type-p (specializers type)
(and (assq type cl--generic-typeof-types)
(progn
(if (memq type '(vector array sequence))
- (message "‘%S’ also matches CL structs and EIEIO classes" type))
+ (message "`%S' also matches CL structs and EIEIO classes" type))
(list cl--generic-typeof-generalizer)))
(cl-call-next-method)))
(cond
((null cl--loop-args)
- (error "Malformed ‘cl-loop’ macro"))
+ (error "Malformed `cl-loop' macro"))
((eq word 'named)
(setq cl--loop-name (pop cl--loop-args)))
((eq word 'initially)
(if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
(or (consp (car cl--loop-args))
- (error "Syntax error on ‘initially’ clause"))
+ (error "Syntax error on `initially' clause"))
(while (consp (car cl--loop-args))
(push (pop cl--loop-args) cl--loop-initially)))
(or (cl--pop2 cl--loop-args) '(quote nil)))
(if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
(or (consp (car cl--loop-args))
- (error "Syntax error on ‘finally’ clause"))
+ (error "Syntax error on `finally' clause"))
(if (and (eq (caar cl--loop-args) 'return) (null cl--loop-name))
(setq cl--loop-result-explicit
(or (nth 1 (pop cl--loop-args)) '(quote nil)))
above below by))
(push word cl--loop-args)
(if (memq (car cl--loop-args) '(downto above))
- (error "Must specify ‘from’ value for downward cl-loop"))
+ (error "Must specify `from' value for downward cl-loop"))
(let* ((down (or (eq (car cl--loop-args) 'downfrom)
(memq (nth 2 cl--loop-args)
'(downto above))))
(step-var (and (not (macroexp-const-p step))
(make-symbol "--cl-var--"))))
(and step (numberp step) (<= step 0)
- (error "Loop ‘by’ value is not positive: %s" step))
+ (error "Loop `by' value is not positive: %s" step))
(push (list var (or start 0)) loop-for-bindings)
(if end-var (push (list end-var end) loop-for-bindings))
(if step-var (push (list step-var step)
((memq word '(element elements))
(let ((ref (or (memq (car cl--loop-args) '(in-ref of-ref))
(and (not (memq (car cl--loop-args) '(in of)))
- (error "Expected ‘of’"))))
+ (error "Expected `of'"))))
(seq (cl--pop2 cl--loop-args))
(temp-seq (make-symbol "--cl-seq--"))
(temp-idx
(if (and (= (length (cadr cl--loop-args)) 2)
(eq (cl-caadr cl--loop-args) 'index))
(cadr (cl--pop2 cl--loop-args))
- (error "Bad ‘using’ clause"))
+ (error "Bad `using' clause"))
(make-symbol "--cl-idx--"))))
(push (list temp-seq seq) loop-for-bindings)
(push (list temp-idx 0) loop-for-bindings)
((memq word hash-types)
(or (memq (car cl--loop-args) '(in of))
- (error "Expected ‘of’"))
+ (error "Expected `of'"))
(let* ((table (cl--pop2 cl--loop-args))
(other
(if (eq (car cl--loop-args) 'using)
(memq (cl-caadr cl--loop-args) hash-types)
(not (eq (cl-caadr cl--loop-args) word)))
(cadr (cl--pop2 cl--loop-args))
- (error "Bad ‘using’ clause"))
+ (error "Bad `using' clause"))
(make-symbol "--cl-var--"))))
(if (memq word '(hash-value hash-values))
(setq var (prog1 other (setq other var))))
((memq word key-types)
(or (memq (car cl--loop-args) '(in of))
- (error "Expected ‘of’"))
+ (error "Expected `of'"))
(let ((cl-map (cl--pop2 cl--loop-args))
(other
(if (eq (car cl--loop-args) 'using)
(memq (cl-caadr cl--loop-args) key-types)
(not (eq (cl-caadr cl--loop-args) word)))
(cadr (cl--pop2 cl--loop-args))
- (error "Bad ‘using’ clause"))
+ (error "Bad `using' clause"))
(make-symbol "--cl-var--"))))
(if (memq word '(key-binding key-bindings))
(setq var (prog1 other (setq other var))))
(get word 'cl-loop-for-handler))))
(if handler
(funcall handler var)
- (error "Expected a ‘for’ preposition, found %s" word)))))
+ (error "Expected a `for' preposition, found %s" word)))))
(eq (car cl--loop-args) 'and))
(setq ands t)
(pop cl--loop-args))
((memq word '(do doing))
(let ((body nil))
- (or (consp (car cl--loop-args)) (error "Syntax error on ‘do’ clause"))
+ (or (consp (car cl--loop-args)) (error "Syntax error on `do' clause"))
(while (consp (car cl--loop-args)) (push (pop cl--loop-args) body))
(push (cons 'progn (nreverse (cons t body))) cl--loop-body)))
`((go . ,(lambda (label)
(let ((catch-tag (cdr (assq label cl--tagbody-alist))))
(unless catch-tag
- (error "Unknown cl-tagbody go label ‘%S’" label))
+ (error "Unknown cl-tagbody go label `%S'" label))
`(throw ',catch-tag ',label))))
,@macroexpand-all-environment)))))
macroexpand-all-environment))))
(if (or (null (cdar bindings)) (cl-cddar bindings))
(macroexp--warn-and-return
- (format-message "Malformed ‘cl-symbol-macrolet’ binding: %S"
+ (format-message "Malformed `cl-symbol-macrolet' binding: %S"
(car bindings))
expansion)
expansion)))
;;;###autoload
(pcase-defmacro cl-struct (type &rest fields)
"Pcase patterns to match cl-structs.
-Elements of FIELDS can be of the form (NAME UPAT) in which case the contents of
-field NAME is matched against UPAT, or they can be of the form NAME which
+Elements of FIELDS can be of the form (NAME PAT) in which case the contents of
+field NAME is matched against PAT, or they can be of the form NAME which
is a shorthand for (NAME NAME)."
- (declare (debug (sexp &rest [&or (sexp pcase-UPAT) sexp])))
+ (declare (debug (sexp &rest [&or (sexp pcase-PAT) sexp])))
`(and (pred (pcase--flip cl-typep ',type))
,@(mapcar
(lambda (field)
(defun cl-unload-function ()
"Stop unloading of the Common Lisp extensions."
- (message "Cannot unload the feature ‘cl’")
+ (message "Cannot unload the feature `cl'")
;; Stop standard unloading!
t)
(if (or (and (fboundp (car x))
(eq (car-safe (symbol-function (car x))) 'macro))
(cdr (assq (car x) macroexpand-all-environment)))
- (error "Use ‘labels’, not ‘flet’, to rebind macro names"))
+ (error "Use `labels', not `flet', to rebind macro names"))
(let ((func `(cl-function
(lambda ,(cadr x)
(cl-block ,(car x) ,@(cddr x))))))
(when (cl--compiling-file)
;; Bug#411. It would be nice to fix this.
(and (get (car x) 'byte-compile)
- (error "Byte-compiling a redefinition of ‘%s’ \
-will not work - use ‘labels’ instead" (symbol-name (car x))))
+ (error "Byte-compiling a redefinition of `%s' \
+will not work - use `labels' instead" (symbol-name (car x))))
;; FIXME This affects the rest of the file, when it
;; should be restricted to the flet body.
(and (boundp 'byte-compile-function-environment)
(or (getenv "ORGANIZATION")
str)
'(if (copyright-offset-too-large-p)
- (message "Copyright extends beyond ‘copyright-limit’ and won't be updated automatically."))
+ (message "Copyright extends beyond `copyright-limit' and won't be updated automatically."))
comment-end \n)
;; TODO: recurse, exclude COPYING etc.
(interactive "DDirectory: \nMFilenames matching (regexp): ")
(dolist (file (directory-files directory t match nil))
(unless (file-directory-p file)
- (message "Updating file ‘%s’" file)
+ (message "Updating file `%s'" file)
;; FIXME we should not use find-file+save+kill.
(let ((enable-local-variables :safe)
(enable-local-eval nil))
-;;; disass.el --- disassembler for compiled Emacs Lisp code
+;;; disass.el --- disassembler for compiled Emacs Lisp code -*- lexical-binding:t -*-
;; Copyright (C) 1986, 1991, 2002-2015 Free Software Foundation, Inc.
(require 'macroexp)
-;;; The variable byte-code-vector is defined by the new bytecomp.el.
-;;; The function byte-decompile-lapcode is defined in byte-opt.el.
-;;; Since we don't use byte-decompile-lapcode, let's try not loading byte-opt.
+;; The variable byte-code-vector is defined by the new bytecomp.el.
+;; The function byte-decompile-lapcode is defined in byte-opt.el.
+;; Since we don't use byte-decompile-lapcode, let's try not loading byte-opt.
(require 'byte-compile "bytecomp")
(defvar disassemble-column-1-indent 8 "*")
(interactive (list (intern (completing-read "Disassemble function: "
obarray 'fboundp t))
nil 0 t))
- (if (and (consp object) (not (eq (car object) 'lambda)))
- (setq object (list 'lambda () object)))
+ (if (and (consp object) (not (functionp object)))
+ (setq object `(lambda () ,object)))
(or indent (setq indent 0)) ;Default indent to zero
(save-excursion
(if (or interactive-p (null buffer))
(defun disassemble-internal (obj indent interactive-p)
(let ((macro 'nil)
- (name 'nil)
- (doc 'nil)
+ (name (when (symbolp obj)
+ (prog1 obj
+ (setq obj (indirect-function obj)))))
args)
- (while (symbolp obj)
- (setq name obj
- obj (symbol-function obj)))
+ (setq obj (autoload-do-load obj name))
(if (subrp obj)
(error "Can't disassemble #<subr %s>" name))
- (setq obj (autoload-do-load obj name))
(if (eq (car-safe obj) 'macro) ;Handle macros.
(setq macro t
obj (cdr obj)))
- (if (and (listp obj) (eq (car obj) 'byte-code))
- (setq obj (list 'lambda nil obj)))
- (if (and (listp obj) (not (eq (car obj) 'lambda)))
- (error "not a function"))
- (if (consp obj)
- (if (assq 'byte-code obj)
- nil
- (if interactive-p (message (if name
- "Compiling %s's definition..."
- "Compiling definition...")
- name))
- (setq obj (byte-compile obj))
- (if interactive-p (message "Done compiling. Disassembling..."))))
+ (if (eq (car-safe obj) 'byte-code)
+ (setq obj `(lambda () ,obj)))
+ (when (consp obj)
+ (unless (functionp obj) (error "not a function"))
+ (if (assq 'byte-code obj)
+ nil
+ (if interactive-p (message (if name
+ "Compiling %s's definition..."
+ "Compiling definition...")
+ name))
+ (setq obj (byte-compile obj))
+ (if interactive-p (message "Done compiling. Disassembling..."))))
(cond ((consp obj)
+ (setq args (help-function-arglist obj)) ;save arg list
(setq obj (cdr obj)) ;throw lambda away
- (setq args (car obj)) ;save arg list
(setq obj (cdr obj)))
((byte-code-function-p obj)
- (setq args (aref obj 0)))
+ (setq args (help-function-arglist obj)))
(t (error "Compilation failed")))
(if (zerop indent) ; not a nested function
(progn
(insert " args: ")
(prin1 args (current-buffer))
(insert "\n")
- (let ((interactive (cond ((consp obj)
- (assq 'interactive obj))
- ((> (length obj) 5)
- (list 'interactive (aref obj 5))))))
+ (let ((interactive (interactive-form obj)))
(if interactive
(progn
(setq interactive (nth 1 interactive))
;; but if the value of the constant is compiled code, then
;; recursively disassemble it.
(cond ((or (byte-code-function-p arg)
- (and (eq (car-safe arg) 'lambda)
+ (and (consp arg) (functionp arg)
(assq 'byte-code arg))
(and (eq (car-safe arg) 'macro)
(or (byte-code-function-p (cdr arg))
- (and (eq (car-safe (cdr arg)) 'lambda)
+ (and (consp (cdr arg))
+ (functionp (cdr arg))
(assq 'byte-code (cdr arg))))))
(cond ((byte-code-function-p arg)
(insert "<compiled-function>\n"))
- ((eq (car-safe arg) 'lambda)
+ ((functionp arg)
(insert "<compiled lambda>"))
(t (insert "<compiled macro>\n")))
(disassemble-internal
(setq dotted-form (edebug-read-storing-offsets stream))
elements (nconc elements dotted-form)
(if (not (eq (edebug-next-token-class) 'rparen))
- (edebug-syntax-error "Expected ‘)’"))
+ (edebug-syntax-error "Expected `)'"))
(setq edebug-read-dotted-list (listp dotted-form))
))
elements)
`eieio-persistent-read' to load in subclasses of class instead of
being pedantic."
(unless class
- (message "Unsafe call to ‘eieio-persistent-read’."))
+ (message "Unsafe call to `eieio-persistent-read'."))
(when class (cl-check-type class class))
(let ((ret nil)
(buffstr nil))
;; turn this into a usable self-pointing symbol
(when eieio-backward-compatibility
(set cname cname)
- (make-obsolete-variable cname (format "use '%s instead" cname) "25.1"))
+ (make-obsolete-variable cname (format "use \\='%s instead" cname)
+ "25.1"))
;; Store the new class vector definition into the symbol. We need to
;; do this first so that we can call defmethod for the accessor.
;; turn this into a usable self-pointing symbol; FIXME: Why?
(when eieio-backward-compatibility
(set cname cname)
- (make-obsolete-variable cname (format "use '%s instead" cname) "25.1"))
+ (make-obsolete-variable cname (format "use \\='%s instead" cname)
+ "25.1"))
;; Create a handy list of the class test too
(when eieio-backward-compatibility
(object-of-class-p (car obj) ,cname)))
(setq obj (cdr obj)))
ans))))
- (make-obsolete csym (format "use (cl-typep ... '(list-of %s)) instead"
- cname)
+ (make-obsolete csym (format
+ "use (cl-typep ... \\='(list-of %s)) instead"
+ cname)
"25.1")))
;; Before adding new slots, let's add all the methods and classes
(progn
(set initarg initarg)
(make-obsolete-variable
- initarg (format "use '%s instead" initarg) "25.1"))))
+ initarg (format "use \\='%s instead" initarg) "25.1"))))
;; The customgroup should be a list of symbols.
(cond ((and (null customg) custom)
(if (not (eq type t))
(if (not (equal type tp))
(error
- "Child slot type ‘%s’ does not match inherited type ‘%s’ for ‘%s’"
+ "Child slot type `%s' does not match inherited type `%s' for `%s'"
type tp a))
(setf (cl--slot-descriptor-type new) tp))
;; If we have a repeat, only update the initarg...
(let ((super-prot (alist-get :protection oprops))
(prot (alist-get :protection nprops)))
(if (not (eq prot super-prot))
- (error "Child slot protection ‘%s’ does not match inherited protection ‘%s’ for ‘%s’"
+ (error "Child slot protection `%s' does not match inherited protection `%s' for `%s'"
prot super-prot a)))
;; End original PLN
((and (or `',name (and name (pred keywordp)))
(guard (not (memq name eieio--known-slot-names))))
(macroexp--warn-and-return
- (format-message "Unknown slot ‘%S’" name) exp 'compile-only))
+ (format-message "Unknown slot `%S'" name) exp 'compile-only))
(_ exp)))))
(cl-check-type slot symbol)
(cl-check-type obj (or eieio-object class))
(setq location
(find-lisp-object-file-name ctr def)))
(when location
- (insert (substitute-command-keys " in ‘"))
+ (insert (substitute-command-keys " in `"))
(help-insert-xref-button
(help-fns-short-filename location)
'cl-type-definition ctr location 'define-type)
- (insert (substitute-command-keys "’")))
+ (insert (substitute-command-keys "'")))
(insert ".\nCreates an object of class " (symbol-name ctr) ".")
(goto-char (point-max))
(if (autoloadp def)
(cl-defmethod eieio-speedbar-child-make-tag-lines ((object eieio-speedbar) _depth)
"Base method for creating tag lines for non-object children."
- (error "You must implement ‘eieio-speedbar-child-make-tag-lines’ for %s"
+ (error "You must implement `eieio-speedbar-child-make-tag-lines' for %s"
(eieio-object-name object)))
(cl-defmethod eieio-speedbar-expand ((object eieio-speedbar) depth)
(cl-defmethod eieio-speedbar-child-description ((obj eieio-speedbar))
"Return a description for a child of OBJ which is not an object."
- (error "You must implement ‘eieio-speedbar-child-description’ for %s"
+ (error "You must implement `eieio-speedbar-child-description' for %s"
(eieio-object-name obj)))
(defun eieio-speedbar-item-info ()
(cond ((and (stringp (car options-and-doc))
(/= 1 (% (length options-and-doc) 2)))
- (error "Too many arguments to ‘defclass’"))
+ (error "Too many arguments to `defclass'"))
((and (symbolp (car options-and-doc))
(/= 0 (% (length options-and-doc) 2)))
- (error "Too many arguments to ‘defclass’")))
+ (error "Too many arguments to `defclass'")))
(if (stringp (car options-and-doc))
(setq options-and-doc
(let ((f (intern (format "%s-child-p" name))))
`((defalias ',f ',testsym2)
(make-obsolete
- ',f ,(format "use (cl-typep ... '%s) instead" name) "25.1"))))
+ ',f ,(format "use (cl-typep ... \\='%s) instead" name)
+ "25.1"))))
;; When using typep, (typep OBJ 'myclass) returns t for objects which
;; are subclasses of myclass. For our predicates, however, it is
(pcase-defmacro eieio (&rest fields)
"Pcase patterns to match EIEIO objects.
-Elements of FIELDS can be of the form (NAME UPAT) in which case the contents of
-field NAME is matched against UPAT, or they can be of the form NAME which
+Elements of FIELDS can be of the form (NAME PAT) in which case the contents of
+field NAME is matched against PAT, or they can be of the form NAME which
is a shorthand for (NAME NAME)."
- (declare (debug (&rest [&or (sexp pcase-UPAT) sexp])))
+ (declare (debug (&rest [&or (sexp pcase-PAT) sexp])))
(let ((is (make-symbol "table")))
;; FIXME: This generates a horrendous mess of redundant let bindings.
;; `pcase' needs to be improved somehow to introduce let-bindings more
"Change the class of OBJ to type CLASS.
This may create or delete slots, but does not affect the return value
of `eq'."
- (error "EIEIO: ‘change-class’ is unimplemented"))
+ (error "EIEIO: `change-class' is unimplemented"))
;; Hook ourselves into help system for describing classes and methods.
;; FIXME: This is not actually needed any more since we can click on the
;;;***
\f
-;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "694d44fcd869546592d35f3321f62667")
+;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "d00419c898056fadf2f8e491f864aa1e")
;;; Generated autoloads from eieio-opt.el
(autoload 'eieio-browse "eieio-opt" "\
(elint-set-mode-line t)
(with-current-buffer elint-log-buffer
(unless (string-equal default-directory dir)
- (elint-log-message (format-message "\f\nLeaving directory ‘%s’"
+ (elint-log-message (format-message "\f\nLeaving directory `%s'"
default-directory) t)
- (elint-log-message (format-message "Entering directory ‘%s’" dir) t)
+ (elint-log-message (format-message "Entering directory `%s'" dir) t)
(setq default-directory dir))))
(let ((str (format "Linting file %s" file)))
(message "%s..." str)
;; quoted check cannot be elsewhere, since quotes skipped.
(if (looking-back "'" (1- (point)))
;; Eg cust-print.el uses ' as a comment syntax.
- (elint-warning "Skipping quoted form ‘'%.20s...’"
+ (elint-warning "Skipping quoted form `%c%.20s...'" ?\'
(read (current-buffer)))
(condition-case nil
(setq tops (cons
tops))
(end-of-file
(goto-char elint-current-pos)
- (error "Missing ‘)’ in top form: %s"
+ (error "Missing `)' in top form: %s"
(buffer-substring elint-current-pos
(line-end-position))))))))
(nreverse tops))))
(cond
;; Eg nnmaildir seems to use [] as a form of comment syntax.
((not (listp form))
- (elint-warning "Skipping non-list form ‘%s’" form))
+ (elint-warning "Skipping non-list form `%s'" form))
;; Add defined variable
((memq (car form) '(defvar defconst defcustom))
(setq elint-env (elint-env-add-var elint-env (cadr form))))
(if (or (< (length form) 4)
(eq (nth 3 form) t)
(unless (stringp (nth 2 form))
- (elint-error "Malformed declaration for ‘%s’"
+ (elint-error "Malformed declaration for `%s'"
(cadr form))
t))
'unknown
(and (eq (car-safe alias) 'quote)
(eq (car-safe target) 'quote)
(eq (elint-get-args (cadr target) env) 'undefined)
- (elint-warning "Alias ‘%s’ has unknown target ‘%s’"
+ (elint-warning "Alias `%s' has unknown target `%s'"
(cadr alias) (cadr target))))
(elint-form form env t))
(setq newenv
(elint-env-add-var newenv (car s))))
(t (elint-error
- "Malformed ‘let’ declaration: %s" s))))
+ "Malformed `let' declaration: %s" s))))
varlist)
;; Lint the body forms
(defun ert-get-test (symbol)
"If SYMBOL names a test, return that. Signal an error otherwise."
- (unless (ert-test-boundp symbol) (error "No test named ‘%S’" symbol))
+ (unless (ert-test-boundp symbol) (error "No test named `%S'" symbol))
(get symbol 'ert--test))
(defun ert-set-test (symbol definition)
"--"
["Show backtrace" ert-results-pop-to-backtrace-for-test-at-point]
["Show messages" ert-results-pop-to-messages-for-test-at-point]
- ["Show ‘should’ forms" ert-results-pop-to-should-forms-for-test-at-point]
+ ["Show `should' forms" ert-results-pop-to-should-forms-for-test-at-point]
["Describe test" ert-results-describe-test-at-point]
"--"
["Delete test" ert-delete-test]
(ert--print-backtrace backtrace)
(debugger-make-xrefs)
(goto-char (point-min))
- (insert "Backtrace for test ‘")
+ (insert (substitute-command-keys "Backtrace for test `"))
(ert-insert-test-name-button (ert-test-name test))
- (insert "’:\n")))))))
+ (insert (substitute-command-keys "':\n"))))))))
(defun ert-results-pop-to-messages-for-test-at-point ()
"Display the part of the *Messages* buffer generated during the test at point.
(ert-simple-view-mode)
(insert (ert-test-result-messages result))
(goto-char (point-min))
- (insert "Messages for test ‘")
+ (insert (substitute-command-keys "Messages for test `"))
(ert-insert-test-name-button (ert-test-name test))
- (insert "’:\n")))))
+ (insert (substitute-command-keys "':\n"))))))
(defun ert-results-pop-to-should-forms-for-test-at-point ()
"Display the list of `should' forms executed during the test at point.
(ert--pp-with-indentation-and-newline form-description)
(ert--make-xrefs-region begin (point)))))
(goto-char (point-min))
- (insert "‘should’ forms executed during test ‘")
+ (insert (substitute-command-keys
+ "`should' forms executed during test `"))
(ert-insert-test-name-button (ert-test-name test))
- (insert "’:\n")
+ (insert (substitute-command-keys "':\n"))
(insert "\n")
(insert (concat "(Values are shallow copies and may have "
"looked different during the test if they\n"
(let ((file-name (and test-name
(symbol-file test-name 'ert-deftest))))
(when file-name
- (insert " defined in ‘" (file-name-nondirectory file-name) "’")
+ (insert (format-message " defined in `%s'"
+ (file-name-nondirectory file-name)))
(save-excursion
- (re-search-backward "‘\\([^‘’]+\\)’" nil t)
+ (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
+ nil t)
(help-xref-button 1 'help-function-def test-name file-name)))
(insert ".")
(fill-region-as-paragraph (point-min) (point))
and it is interpreted via `find-function-regexp-alist'.
The search is done in the source for library LIBRARY."
(if (null library)
- (error "Don't know where ‘%s’ is defined" symbol))
+ (error "Don't know where `%s' is defined" symbol))
;; Some functions are defined as part of the construct
;; that defines something else.
(while (and (symbolp symbol) (get symbol 'definition-name))
(setq aliases (if aliases
(concat aliases
(format-message
- ", which is an alias for ‘%s’"
+ ", which is an alias for `%s'"
(symbol-name def)))
- (format-message "‘%s’ is an alias for ‘%s’"
+ (format-message "`%s' is an alias for `%s'"
function (symbol-name def)))))
(setq function (find-function-advised-original function)
def (find-function-advised-original function)))
`iter-next' resumes execution at the previous
`iter-yield' point."
(identity value)
- (error "‘iter-yield’ used outside a generator"))
+ (error "`iter-yield' used outside a generator"))
(defmacro iter-yield-from (value)
"When used inside a generator function, delegate to a sub-iterator.
so as to preserve the semantics of `setf'."
(declare (debug (sexp (&or symbolp lambda-expr) &optional sexp)))
(when (eq 'lambda (car-safe setter))
- (message "Use ‘gv-define-setter’ or name %s's setter function" name))
+ (message "Use `gv-define-setter' or name %s's setter function" name))
`(gv-define-setter ,name (val &rest args)
,(if fix-return
`(macroexp-let2 nil v val
((null name)
"Can't find package name")
((not (lm-authors))
- "‘Author:’ tag missing")
+ "`Author:' tag missing")
((not (lm-maintainer))
- "‘Maintainer:’ tag missing")
+ "`Maintainer:' tag missing")
((not (lm-summary))
"Can't find the one-line summary description")
((not (lm-keywords))
- "‘Keywords:’ tag missing")
+ "`Keywords:' tag missing")
((not (lm-keywords-finder-p))
- "‘Keywords:’ has no valid finder keywords (see ‘finder-known-keywords’)")
+ "`Keywords:' has no valid finder keywords (see `finder-known-keywords')")
((not (lm-commentary-mark))
- "Can't find a ‘Commentary’ section marker")
+ "Can't find a `Commentary' section marker")
((not (lm-history-mark))
- "Can't find a ‘History’ section marker")
+ "Can't find a `History' section marker")
((not (lm-code-mark))
- "Can't find a ‘Code’ section marker")
+ "Can't find a `Code' section marker")
((progn
(goto-char (point-max))
(not
(let ((instead (car obsolescence-data))
(asof (nth 2 obsolescence-data)))
(format-message
- "‘%s’ is an obsolete %s%s%s" fun type
+ "`%s' is an obsolete %s%s%s" fun type
(if asof (concat " (as of " asof ")") "")
(cond ((stringp instead) (concat "; " (substitute-command-keys instead)))
- (instead (format-message "; use ‘%s’ instead." instead))
+ (instead (format-message "; use `%s' instead." instead))
(t ".")))))
(defun macroexpand-1 (form &optional environment)
(action (if help (nth 2 help) "act on")))
(concat
(format-message "\
-Type SPC or ‘y’ to %s the current %s;
-DEL or ‘n’ to skip the current %s;
-RET or ‘q’ to give up on the %s (skip all remaining %s);
+Type SPC or `y' to %s the current %s;
+DEL or `n' to skip the current %s;
+RET or `q' to give up on the %s (skip all remaining %s);
C-g to quit (cancel the whole command);
! to %s all remaining %s;\n"
action object object action objects action
:array (seq-empty-p map)
:hash-table (zerop (hash-table-count map))))
-(defun map-contains-key-p (map key &optional testfn)
+(defun map-contains-key (map key &optional testfn)
"Return non-nil if MAP contain the key KEY, nil otherwise.
Equality is defined by TESTFN if non-nil or by `equal' if nil.
MAP can be a list, hash-table or array."
- (seq-contains-p (map-keys map) key testfn))
+ (seq-contains (map-keys map) key testfn))
-(defun map-some-p (pred map)
- "Return a key/value pair for which (PRED key val) is non-nil in MAP.
+(defun map-some (pred map)
+ "Return a non-nil if (PRED key val) is non-nil for any key/value pair in MAP.
MAP can be a list, hash-table or array."
(catch 'map--break
(map-apply (lambda (key value)
- (when (funcall pred key value)
- (throw 'map--break (cons key value))))
+ (let ((result (funcall pred key value)))
+ (when result
+ (throw 'map--break result))))
map)
nil))
(propertize (format "%s advice: " where)
'face 'warning)
(let ((fun (advice--car flist)))
- (if (symbolp fun) (format-message "‘%S’" fun)
+ (if (symbolp fun) (format-message "`%S'" fun)
(let* ((name (cdr (assq 'name (advice--props flist))))
(doc (documentation fun t))
(usage (help-split-fundoc doc function)))
(advice--make-1 (aref main 1) (aref main 3)
(advice--car main) rest (advice--props main)))
(let ((desc (assq where advice--where-alist)))
- (unless desc (error "Unknown add-function location ‘%S’" where))
+ (unless desc (error "Unknown add-function location `%S'" where))
(advice--make-1 (nth 1 desc) (nth 2 desc)
function main props)))))
(advice (cond ((null name) `(lambda ,lambda-list ,@body))
((or (stringp name) (symbolp name))
(intern (format "%s@%s" symbol name)))
- (t (error "Unrecognized name spec ‘%S’" name)))))
+ (t (error "Unrecognized name spec `%S'" name)))))
`(prog1 ,@(and (symbolp advice) `((defun ,advice ,lambda-list ,@body)))
(advice-add ',symbol ,where #',advice ,@(and props `(',props))))))
((string-match "\\.tar\\'" file)
(tar-mode) (package-tar-file-info))
((string-match "\\.el\\'" file) (package-buffer-info))
- (t (error "Unrecognized extension ‘%s’"
+ (t (error "Unrecognized extension `%s'"
(file-name-extension file))))))
(package-upload-buffer-internal pkg-desc (file-name-extension file)))))
This variable has three possible values:
nil: no packages are hidden;
- archive: only criteria (a) is used;
+ `archive': only criteria (a) is used;
t: both criteria are used.
This variable has no effect if `package-menu--hide-packages' is
(push (int-to-string num) str-list)
(push "." str-list))
((< num -4)
- (error "Invalid version list ‘%s’" vlist))
+ (error "Invalid version list `%s'" vlist))
(t
;; pre, or beta, or alpha
(cond ((equal "." (car str-list))
(pop str-list))
((not (string-match "[0-9]+" (car str-list)))
- (error "Invalid version list ‘%s’" vlist)))
+ (error "Invalid version list `%s'" vlist)))
(push (cond ((= num -1) "pre")
((= num -2) "beta")
((= num -3) "alpha")
((stringp force) ; held
(unless (version-list-= version (version-to-list force))
force))
- (t (error "Invalid element in ‘package-load-list’")))))
+ (t (error "Invalid element in `package-load-list'")))))
(defun package-built-in-p (package &optional min-version)
"Return true if PACKAGE is built-in to Emacs.
(require 'finder-inf nil t) ; For `package--builtins'.
(assq package package--builtins))))))
+(defun package--autoloads-file-name (pkg-desc)
+ "Return the absolute name of the autoloads file, sans extension.
+PKG-DESC is a `package-desc' object."
+ (expand-file-name
+ (format "%s-autoloads" (package-desc-name pkg-desc))
+ (package-desc-dir pkg-desc)))
+
+(defun package--activate-autoloads-and-load-path (pkg-desc)
+ "Load the autoloads file and add package dir to `load-path'.
+PKG-DESC is a `package-desc' object."
+ (let* ((old-lp load-path)
+ (pkg-dir (package-desc-dir pkg-desc))
+ (pkg-dir-dir (file-name-as-directory pkg-dir)))
+ (with-demoted-errors "Error loading autoloads: %s"
+ (load (package--autoloads-file-name pkg-desc) nil t))
+ (when (and (eq old-lp load-path)
+ (not (or (member pkg-dir load-path)
+ (member pkg-dir-dir load-path))))
+ ;; Old packages don't add themselves to the `load-path', so we have to
+ ;; do it ourselves.
+ (push pkg-dir load-path))))
+
(defvar Info-directory-list)
(declare-function info-initialize "info" ())
correspond to previously loaded files (those returned by
`package--list-loaded-files')."
(let* ((name (package-desc-name pkg-desc))
- (pkg-dir (package-desc-dir pkg-desc))
- (pkg-dir-dir (file-name-as-directory pkg-dir)))
+ (pkg-dir (package-desc-dir pkg-desc)))
(unless pkg-dir
- (error "Internal error: unable to find directory for ‘%s’"
+ (error "Internal error: unable to find directory for `%s'"
(package-desc-full-name pkg-desc)))
- ;; Add to load path, add autoloads, and activate the package.
- (let* ((old-lp load-path)
- (autoloads-file (expand-file-name
- (format "%s-autoloads" name) pkg-dir))
- (loaded-files-list (and reload (package--list-loaded-files pkg-dir))))
- (with-demoted-errors "Error in package-activate-1: %s"
- (load autoloads-file nil t))
- (when (and (eq old-lp load-path)
- (not (or (member pkg-dir load-path)
- (member pkg-dir-dir load-path))))
- ;; Old packages don't add themselves to the `load-path', so we have to
- ;; do it ourselves.
- (push pkg-dir load-path))
+ (let* ((loaded-files-list (when reload
+ (package--list-loaded-files pkg-dir))))
+ ;; Add to load path, add autoloads, and activate the package.
+ (package--activate-autoloads-and-load-path pkg-desc)
;; Call `load' on all files in `pkg-dir' already present in
;; `load-history'. This is done so that macros in these files are updated
;; to their new definitions. If another package is being installed which
(with-demoted-errors "Error in package-activate-1: %s"
(mapc (lambda (feature) (load feature nil t))
;; Skip autoloads file since we already evaluated it above.
- (remove (file-truename autoloads-file) loaded-files-list))))
+ (remove (file-truename (package--autoloads-file-name pkg-desc))
+ loaded-files-list))))
;; Add info node.
(when (file-exists-p (expand-file-name "dir" pkg-dir))
;; FIXME: not the friendliest, but simple.
(unless (package-activate (car req))
(throw 'dep-failure req))))))
(if fail
- (warn "Unable to activate package ‘%s’.
-Required package ‘%s-%s’ is unavailable"
+ (warn "Unable to activate package `%s'.
+Required package `%s-%s' is unavailable"
package (car fail) (package-version-join (cadr fail)))
;; If all goes well, activate the package itself.
(package-activate-1 pkg-vec force)))))))
(defun package--compile (pkg-desc)
"Byte-compile installed package PKG-DESC."
(let ((warning-minimum-level :error)
- (save-silently inhibit-message))
- (package-activate-1 pkg-desc)
+ (save-silently inhibit-message)
+ (load-path load-path))
+ (package--activate-autoloads-and-load-path pkg-desc)
(byte-recompile-directory (package-desc-dir pkg-desc) 0 t)))
;;;; Inferring package from current buffer
The variable `package-load-list' controls which packages to load.
If optional arg NO-ACTIVATE is non-nil, don't activate packages.
If `user-init-file' does not mention `(package-initialize)', add
-it to the file."
+it to the file.
+If called as part of loading `user-init-file', set
+`package-enable-at-startup' to nil, to prevent accidentally
+loading packages twice."
(interactive)
(setq package-alist nil)
(if (equal user-init-file load-file-name)
;; If `package-initialize' is being called as part of loading
;; the init file, it's obvious we don't need to ensure-init.
- (setq package--init-file-ensured t)
+ (setq package--init-file-ensured t
+ ;; And likely we don't need to run it again after init.
+ package-enable-at-startup nil)
(package--ensure-init-file))
(package-load-all-descriptors)
(package-read-all-archive-contents)
;; Even if the sig fails, this download is done, so
;; remove it from the in-progress list.
(package--update-downloads-in-progress archive)
- (error "Unsigned archive ‘%s’" name))
+ (error "Unsigned archive `%s'" name))
;; Write out the archives file.
(write-region content nil local-file nil 'silent)
;; Write out good signatures into archive-contents.signed file.
(when async
;; The t at the end means to propagate connection errors.
(lambda () (package--update-downloads-in-progress archive) t)))
- (error (message "Failed to download ‘%s’ archive."
+ (error (message "Failed to download `%s' archive."
(car archive))))))
;;;###autoload
(package-desc-full-name already))
(setq packages (delq already packages))
(setq already nil))
- (error "Need package ‘%s-%s’, but only %s is being installed"
+ (error "Need package `%s-%s', but only %s is being installed"
next-pkg (package-version-join next-version)
(package-version-join (package-desc-version already)))))
(cond
(setq problem
(if (stringp disabled)
(format-message
- "Package ‘%s’ held at version %s, but version %s required"
+ "Package `%s' held at version %s, but version %s required"
next-pkg disabled
(package-version-join next-version))
- (format-message "Required package ‘%s’ is disabled"
+ (format-message "Required package `%s' is disabled"
next-pkg)))))
(t (setq found pkg-desc)))))
(unless found
(cond
(problem (error "%s" problem))
(found-something
- (error "Need package ‘%s-%s’, but only %s is available"
+ (error "Need package `%s-%s', but only %s is available"
next-pkg (package-version-join next-version)
found-something))
- (t (error "Package ‘%s-%s’ is unavailable"
+ (t (error "Package `%s-%s' is unavailable"
next-pkg (package-version-join next-version)))))
(setq packages
(package-compute-transaction (cons found packages)
(unless (or good-sigs (eq package-check-signature 'allow-unsigned))
;; Even if the sig fails, this download is done, so
;; remove it from the in-progress list.
- (error "Unsigned package: ‘%s’"
+ (error "Unsigned package: `%s'"
(package-desc-name pkg-desc)))
;; Signature checked, unpack now.
(with-temp-buffer (insert content)
(package-desc-reqs pkg)))
(package-compute-transaction () (list (list pkg))))))
(package-download-transaction transaction)
- (message "‘%s’ is already installed" (package-desc-full-name pkg))))
+ (message "`%s' is already installed" (package-desc-full-name pkg))))
(defun package-strip-rcs-id (str)
"Strip RCS version ID from the version string STR.
;; using here, because the outcome is the same either way (nothing
;; gets installed).
(if (not package-selected-packages)
- (message "‘package-selected-packages’ is empty, nothing to install")
+ (message "`package-selected-packages' is empty, nothing to install")
(cl-loop for p in package-selected-packages
unless (package-installed-p p)
collect p into lst
(expand-file-name package-user-dir))
(expand-file-name dir)))
;; Don't delete "system" packages.
- (error "Package ‘%s’ is a system package, not deleting"
+ (error "Package `%s' is a system package, not deleting"
(package-desc-full-name pkg-desc)))
((and (null force)
(setq pkg-used-elsewhere-by
(package--used-elsewhere-p pkg-desc)))
;; Don't delete packages used as dependency elsewhere.
- (error "Package ‘%s’ is used by ‘%s’ as dependency, not deleting"
+ (error "Package `%s' is used by `%s' as dependency, not deleting"
(package-desc-full-name pkg-desc)
(package-desc-name pkg-used-elsewhere-by)))
(t
(delete pkg-desc pkgs)
(unless (cdr pkgs)
(setq package-alist (delq pkgs package-alist))))
- (message "Package ‘%s’ deleted." (package-desc-full-name pkg-desc))))))
+ (message "Package `%s' deleted." (package-desc-full-name pkg-desc))))))
;;;###autoload
(defun package-reinstall (pkg)
;; do absolutely nothing.
(when (or package-selected-packages
(yes-or-no-p
- "‘package-selected-packages’ is empty! Really remove ALL packages? "))
+ (format-message
+ "`package-selected-packages' is empty! Really remove ALL packages? ")))
(let ((removable (package--removable-packages)))
(if removable
(when (y-or-n-p
(with-current-buffer standard-output
(describe-package-1 package)))))
-(defface package-help-section-name-face
+(defface package-help-section-name
'((t :inherit (bold font-lock-function-name-face)))
"Face used on section names in package description buffers."
:version "25.1")
Otherwise no newline is inserted."
(declare (indent 1))
(insert (make-string (max 0 (- 11 (string-width name))) ?\s)
- (propertize (concat name ": ") 'font-lock-face 'package-help-section-name-face))
+ (propertize (concat name ": ") 'font-lock-face 'package-help-section-name))
(when strings
(apply #'insert strings)
(insert "\n")))
"Installed"
(capitalize status))
'font-lock-face 'package-status-builtin-face))
- (insert (substitute-command-keys " in ‘"))
+ (insert (substitute-command-keys " in `"))
(let ((dir (abbreviate-file-name
(file-name-as-directory
(if (file-in-directory-p pkg-dir package-user-dir)
(if (and (package-built-in-p name)
(not (package-built-in-p name version)))
(insert (substitute-command-keys
- "’,\n shadowing a ")
+ "',\n shadowing a ")
(propertize "built-in package"
'font-lock-face 'package-status-builtin-face))
- (insert (substitute-command-keys "’")))
+ (insert (substitute-command-keys "'")))
(if signed
(insert ".")
(insert " (unsigned)."))
(defun package-install-button-action (button)
(let ((pkg-desc (button-get button 'package-desc)))
- (when (y-or-n-p (format-message "Install package ‘%s’? "
+ (when (y-or-n-p (format-message "Install package `%s'? "
(package-desc-full-name pkg-desc)))
(package-install pkg-desc nil)
(revert-buffer nil t)
(defun package-delete-button-action (button)
(let ((pkg-desc (button-get button 'package-desc)))
- (when (y-or-n-p (format-message "Delete package ‘%s’? "
+ (when (y-or-n-p (format-message "Delete package `%s'? "
(package-desc-full-name pkg-desc)))
(package-delete pkg-desc)
(revert-buffer nil t)
\f
;;; Package menu faces
-(defface package-name-face
+(defface package-name
'((t :inherit link))
"Face used on package names in the package menu."
:version "25.1")
-(defface package-description-face
+(defface package-description
'((t :inherit default))
"Face used on package description summaries in the package menu."
:version "25.1")
-(defface package-status-built-in-face
+(defface package-status-built-in
'((t :inherit font-lock-builtin-face))
"Face used on the status and version of built-in packages."
:version "25.1")
-(defface package-status-external-face
+(defface package-status-external
'((t :inherit package-status-builtin-face))
"Face used on the status and version of external packages."
:version "25.1")
-(defface package-status-available-face
+(defface package-status-available
'((t :inherit default))
"Face used on the status and version of available packages."
:version "25.1")
-(defface package-status-new-face
- '((t :inherit (bold package-status-available-face)))
+(defface package-status-new
+ '((t :inherit (bold package-status-available)))
"Face used on the status and version of new packages."
:version "25.1")
-(defface package-status-held-face
+(defface package-status-held
'((t :inherit font-lock-constant-face))
"Face used on the status and version of held packages."
:version "25.1")
-(defface package-status-disabled-face
+(defface package-status-disabled
'((t :inherit font-lock-warning-face))
"Face used on the status and version of disabled packages."
:version "25.1")
-(defface package-status-installed-face
+(defface package-status-installed
'((t :inherit font-lock-comment-face))
"Face used on the status and version of installed packages."
:version "25.1")
-(defface package-status-dependency-face
- '((t :inherit package-status-installed-face))
+(defface package-status-dependency
+ '((t :inherit package-status-installed))
"Face used on the status and version of dependency packages."
:version "25.1")
-(defface package-status-unsigned-face
+(defface package-status-unsigned
'((t :inherit font-lock-warning-face))
"Face used on the status and version of unsigned packages."
:version "25.1")
-(defface package-status-incompat-face
+(defface package-status-incompat
'((t :inherit font-lock-comment-face))
"Face used on the status and version of incompat packages."
:version "25.1")
-(defface package-status-avail-obso-face
- '((t :inherit package-status-incompat-face))
+(defface package-status-avail-obso
+ '((t :inherit package-status-incompat))
"Face used on the status and version of avail-obso packages."
:version "25.1")
Return (PKG-DESC [NAME VERSION STATUS DOC])."
(let* ((status (package-desc-status pkg))
(face (pcase status
- (`"built-in" 'package-status-built-in-face)
- (`"external" 'package-status-external-face)
- (`"available" 'package-status-available-face)
- (`"avail-obso" 'package-status-avail-obso-face)
- (`"new" 'package-status-new-face)
- (`"held" 'package-status-held-face)
- (`"disabled" 'package-status-disabled-face)
- (`"installed" 'package-status-installed-face)
- (`"dependency" 'package-status-dependency-face)
- (`"unsigned" 'package-status-unsigned-face)
- (`"incompat" 'package-status-incompat-face)
+ (`"built-in" 'package-status-built-in)
+ (`"external" 'package-status-external)
+ (`"available" 'package-status-available)
+ (`"avail-obso" 'package-status-avail-obso)
+ (`"new" 'package-status-new)
+ (`"held" 'package-status-held)
+ (`"disabled" 'package-status-disabled)
+ (`"installed" 'package-status-installed)
+ (`"dependency" 'package-status-dependency)
+ (`"unsigned" 'package-status-unsigned)
+ (`"incompat" 'package-status-incompat)
(_ 'font-lock-warning-face)))) ; obsolete.
(list pkg
`[(,(symbol-name (package-desc-name pkg))
- face package-name-face
- font-lock-face package-name-face
+ face package-name
+ font-lock-face package-name
follow-link t
package-desc ,pkg
action package-menu-describe-package)
(list (propertize (or (package-desc-archive pkg) "")
'font-lock-face face)))
,(propertize (package-desc-summary pkg)
- 'font-lock-face 'package-description-face)])))
+ 'font-lock-face 'package-description)])))
(defvar package-menu--old-archive-contents nil
"`package-archive-contents' before the latest refresh.")
(cl-remove-if-not (lambda (e) (string-match re (symbol-name (car e))))
package-archive-contents)))
(message (substitute-command-keys
- (concat "Hiding %s packages, type ‘\\[package-menu-toggle-hiding]’"
- " to toggle or ‘\\[customize-variable] RET package-hidden-regexps’"
+ (concat "Hiding %s packages, type `\\[package-menu-toggle-hiding]'"
+ " to toggle or `\\[customize-variable] RET package-hidden-regexps'"
" to customize it"))
(length hidden)))))
(length packages)
(mapconcat #'package-desc-full-name packages ", ")))
;; Exactly 1
- (t (format-message "package ‘%s’"
+ (t (format-message "package `%s'"
(package-desc-full-name (car packages))))))
(defun package-menu--prompt-transaction-p (delete install upgrade)
(condition-case-unless-debug err
(let ((inhibit-message package-menu-async))
(package-delete elt nil 'nosave))
- (error (message "Error trying to delete ‘%s’: %S"
+ (error (message "Error trying to delete `%s': %S"
(package-desc-full-name elt)
err))))))
(defun package-menu--find-and-notify-upgrades ()
"Notify the user of upgradable packages."
(when-let ((upgrades (package-menu--find-upgrades)))
- (message "%d package%s can be upgraded; type ‘%s’ to mark %s for upgrading."
+ (message "%d package%s can be upgraded; type `%s' to mark %s for upgrading."
(length upgrades)
(if (= (length upgrades) 1) "" "s")
(substitute-command-keys "\\[package-menu-mark-upgrades]")
expansion))))
(declare-function help-fns--signature "help-fns"
- (function doc real-def real-function raw))
+ (function doc real-def real-function buffer))
;; FIXME: Obviously, this will collide with nadvice's use of
;; function-documentation if we happen to advise `pcase'.
(insert "\n\n-- ")
(let* ((doc (documentation me 'raw)))
(setq doc (help-fns--signature symbol doc me
- (indirect-function me) t))
+ (indirect-function me) nil))
(insert "\n" (or doc "Not documented.")))))))
(let ((combined-doc (buffer-string)))
(if ud (help-add-fundoc-usage combined-doc (car ud)) combined-doc)))))
(pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
(pcase--expand
;; FIXME: Could we add the FILE:LINE data in the error message?
- exp (append cases `((,x (error "No clause matching ‘%S’" ,x)))))))
+ exp (append cases `((,x (error "No clause matching `%S'" ,x)))))))
;;;###autoload
(defmacro pcase-lambda (lambda-list &rest body)
(let ((code (pcase--u1 matches code vars rest)))
(if (eq upat '_) code
(macroexp--warn-and-return
- "Pattern t is deprecated. Use ‘_’ instead"
+ "Pattern t is deprecated. Use `_' instead"
code))))
((eq upat 'pcase--dontcare) :pcase--dontcare)
((memq (car-safe upat) '(guard pred))
(pcase--u rest))
vars
(list `((and . ,matches) ,code . ,vars))))
- (t (error "Unknown pattern ‘%S’" upat)))))
+ (t (error "Unknown pattern `%S'" upat)))))
(t (error "Incorrect MATCH %S" (car matches)))))
(def-edebug-spec
(setq reb-subexp-mode t)
(reb-update-modestring)
(use-local-map reb-subexp-mode-map)
- (message "‘0’-‘9’ to display subexpressions ‘q’ to quit subexp mode"))
+ (message "`0'-`9' to display subexpressions `q' to quit subexp mode"))
(defun reb-show-subexp (subexp &optional pause)
"Visually show limit of subexpression SUBEXP of recent search.
The returned regexp is typically more efficient than the equivalent regexp:
(let ((open (if PAREN \"\\\\(\" \"\")) (close (if PAREN \"\\\\)\" \"\")))
- (concat open (mapconcat 'regexp-quote STRINGS \"\\\\|\") close))
+ (concat open (mapconcat \\='regexp-quote STRINGS \"\\\\|\") close))
If PAREN is `words', then the resulting regexp is additionally surrounded
by \\=\\< and \\>.
"Return the next item in the RING, after ITEM.
Raise error if ITEM is not in the RING."
(let ((curr-index (ring-member ring item)))
- (unless curr-index (error "Item is not in the ring: ‘%s’" item))
+ (unless curr-index (error "Item is not in the ring: `%s'" item))
(ring-ref ring (ring-plus1 curr-index (ring-length ring)))))
(defun ring-previous (ring item)
"Return the previous item in the RING, before ITEM.
Raise error if ITEM is not in the RING."
(let ((curr-index (ring-member ring item)))
- (unless curr-index (error "Item is not in the ring: ‘%s’" item))
+ (unless curr-index (error "Item is not in the ring: `%s'" item))
(ring-ref ring (ring-minus1 curr-index (ring-length ring)))))
(defun ring-extend (ring x)
(defun rx-check (form)
"Check FORM according to its car's parsing info."
(unless (listp form)
- (error "rx ‘%s’ needs argument(s)" form))
+ (error "rx `%s' needs argument(s)" form))
(let* ((rx (rx-info (car form) 'head))
(nargs (1- (length form)))
(min-args (nth 1 rx))
(type-pred (nth 3 rx)))
(when (and (not (null min-args))
(< nargs min-args))
- (error "rx form ‘%s’ requires at least %d args"
+ (error "rx form `%s' requires at least %d args"
(car form) min-args))
(when (and (not (null max-args))
(> nargs max-args))
- (error "rx form ‘%s’ accepts at most %d args"
+ (error "rx form `%s' accepts at most %d args"
(car form) max-args))
(when (not (null type-pred))
(dolist (sub-form (cdr form))
(unless (funcall type-pred sub-form)
- (error "rx form ‘%s’ requires args satisfying ‘%s’"
+ (error "rx form `%s' requires args satisfying `%s'"
(car form) type-pred))))))
(defun rx-anything (form)
"Match any character."
(if (consp form)
- (error "rx ‘anything’ syntax error: %s" form))
+ (error "rx `anything' syntax error: %s" form))
(rx-or (list 'or 'not-newline ?\n)))
(let ((i 0)
c1 c2 l)
(if (= 0 (length str))
- (error "String arg for Rx ‘any’ must not be empty"))
+ (error "String arg for Rx `any' must not be empty"))
(while (string-match ".-." str i)
;; string before range: convert it to characters
(if (< i (match-beginning 0))
(error nil))))
(if (or (null translation)
(null (string-match "\\`\\[\\[:[-a-z]+:\\]\\]\\'" translation)))
- (error "Invalid char class ‘%s’ in Rx ‘any’" arg))
+ (error "Invalid char class `%s' in Rx `any'" arg))
(list (substring translation 1 -1)))) ; strip outer brackets
((and (integerp (car-safe arg)) (integerp (cdr-safe arg)))
(list arg))
((stringp arg) (rx-check-any-string arg))
((error
- "rx ‘any’ requires string, character, char pair or char class args"))))
+ "rx `any' requires string, character, char pair or char class args"))))
(defun rx-any (form)
(eq arg 'word-boundary)
(and (consp arg)
(memq (car arg) '(not any in syntax category))))
- (error "rx ‘not’ syntax error: %s" arg))
+ (error "rx `not' syntax error: %s" arg))
t)
(setq form (rx-trans-forms form 1))
(unless (and (integerp (nth 1 form))
(> (nth 1 form) 0))
- (error "rx ‘=’ requires positive integer first arg"))
+ (error "rx `=' requires positive integer first arg"))
(format "%s\\{%d\\}" (rx-form (nth 2 form) '*) (nth 1 form)))
(setq form (rx-trans-forms form 1))
(unless (and (integerp (nth 1 form))
(> (nth 1 form) 0))
- (error "rx ‘>=’ requires positive integer first arg"))
+ (error "rx `>=' requires positive integer first arg"))
(format "%s\\{%d,\\}" (rx-form (nth 2 form) '*) (nth 1 form)))
(cond ((= (length form) 3)
(unless (and (integerp (nth 1 form))
(> (nth 1 form) 0))
- (error "rx ‘repeat’ requires positive integer first arg"))
+ (error "rx `repeat' requires positive integer first arg"))
(format "%s\\{%d\\}" (rx-form (nth 2 form) '*) (nth 1 form)))
((or (not (integerp (nth 2 form)))
(< (nth 2 form) 0)
(not (integerp (nth 1 form)))
(< (nth 1 form) 0)
(< (nth 2 form) (nth 1 form)))
- (error "rx ‘repeat’ range error"))
+ (error "rx `repeat' range error"))
(t
(format "%s\\{%d,%d\\}" (rx-form (nth 3 form) '*)
(nth 1 form) (nth 2 form)))))
(defun rx-check-backref (arg)
"Check arg ARG for Rx `backref'."
(or (and (integerp arg) (>= arg 1) (<= arg 9))
- (error "rx ‘backref’ requires numeric 1<=arg<=9: %s" arg)))
+ (error "rx `backref' requires numeric 1<=arg<=9: %s" arg)))
(defun rx-kleene (form)
"Parse and produce code from FORM.
(if (= 1 (length name))
(setq syntax (aref name 0))))))
(unless syntax
- (error "Unknown rx syntax ‘%s’" sym)))
+ (error "Unknown rx syntax `%s'" sym)))
(format "\\s%c" syntax)))
"Check the argument FORM of a `(category FORM)'."
(unless (or (integerp form)
(cdr (assq form rx-categories)))
- (error "Unknown category ‘%s’" form))
+ (error "Unknown category `%s'" form))
t)
(cond ((stringp info)
info)
((null info)
- (error "Unknown rx form ‘%s’" form))
+ (error "Unknown rx form `%s'" form))
(t
(funcall (nth 0 info) form)))))
((consp form)
(let ((info (rx-info (car form) 'head)))
(unless (consp info)
- (error "Unknown rx form ‘%s’" (car form)))
+ (error "Unknown rx form `%s'" (car form)))
(funcall (nth 0 info) form)))
(t
- (error "rx syntax error at ‘%s’" form))))
+ (error "rx syntax error at `%s'" form))))
;;;###autoload
(setq acc (funcall function acc elt)))
acc)))
-(cl-defgeneric seq-some-p (pred seq)
- "Return any element for which (PRED element) is non-nil in SEQ, nil otherwise."
- (catch 'seq--break
- (seq-doseq (elt seq)
- (when (funcall pred elt)
- (throw 'seq--break elt)))
- nil))
-
(cl-defgeneric seq-every-p (pred seq)
"Return non-nil if (PRED element) is non-nil for all elements of the sequence SEQ."
(catch 'seq--break
(throw 'seq--break nil)))
t))
+(cl-defgeneric seq-some (pred seq)
+ "Return non-nil if (PRED element) is non-nil for any element in SEQ, nil otherwise.
+If so, return the non-nil value returned by PRED."
+ (catch 'seq--break
+ (seq-doseq (elt seq)
+ (let ((result (funcall pred elt)))
+ (when result
+ (throw 'seq--break result))))
+ nil))
+
(cl-defgeneric seq-count (pred seq)
"Return the number of elements for which (PRED element) is non-nil in SEQ."
(let ((count 0))
(setq count (+ 1 count))))
count))
-(cl-defgeneric seq-contains-p (seq elt &optional testfn)
+(cl-defgeneric seq-contains (seq elt &optional testfn)
"Return the first element in SEQ that equals to ELT.
Equality is defined by TESTFN if non-nil or by `equal' if nil."
- (seq-some-p (lambda (e)
- (funcall (or testfn #'equal) elt e))
- seq))
+ (seq-some (lambda (e)
+ (funcall (or testfn #'equal) elt e))
+ seq))
(cl-defgeneric seq-uniq (seq &optional testfn)
"Return a list of the elements of SEQ with duplicates removed.
TESTFN is used to compare elements, or `equal' if TESTFN is nil."
(let ((result '()))
(seq-doseq (elt seq)
- (unless (seq-contains-p result elt testfn)
+ (unless (seq-contains result elt testfn)
(setq result (cons elt result))))
(nreverse result)))
"Return a list of the elements that appear in both SEQ1 and SEQ2.
Equality is defined by TESTFN if non-nil or by `equal' if nil."
(seq-reduce (lambda (acc elt)
- (if (seq-contains-p seq2 elt testfn)
+ (if (seq-contains seq2 elt testfn)
(cons elt acc)
acc))
(seq-reverse seq1)
"Return a list of the elements that appear in SEQ1 but not in SEQ2.
Equality is defined by TESTFN if non-nil or by `equal' if nil."
(seq-reduce (lambda (acc elt)
- (if (not (seq-contains-p seq2 elt testfn))
+ (if (not (seq-contains seq2 elt testfn))
(cons elt acc)
acc))
(seq-reverse seq1)
(let* ((existing (assq major-mode smie-config))
(config
(cond ((null existing)
- (message "Local rules saved in ‘smie-config’")
+ (message "Local rules saved in `smie-config'")
smie-config--buffer-local)
((y-or-n-p "Replace the existing mode's config? ")
- (message "Mode rules replaced in ‘smie-config’")
+ (message "Mode rules replaced in `smie-config'")
smie-config--buffer-local)
((y-or-n-p "Merge with existing mode's config? ")
- (message "Mode rules adjusted in ‘smie-config’")
+ (message "Mode rules adjusted in `smie-config'")
(append smie-config--buffer-local (cdr existing)))
(t (error "Abort")))))
(if existing
(when (> (length binding) 2)
(signal
'error
- (cons "‘let’ bindings can have only one value-form" binding)))
+ (cons "`let' bindings can have only one value-form" binding)))
binding)
(defsubst internal--build-binding-value-form (binding prev-var)
TAG should be a string, with length <= `tabulated-list-padding'.
If ADVANCE is non-nil, move forward by one line afterwards."
(unless (stringp tag)
- (error "Invalid argument to ‘tabulated-list-put-tag’"))
+ (error "Invalid argument to `tabulated-list-put-tag'"))
(unless (> tabulated-list-padding 0)
(error "Unable to tag the current line"))
(save-excursion
(aset testcover-vector idx (cons '1value val)))
((not (and (eq (car-safe (aref testcover-vector idx)) '1value)
(equal (cdr (aref testcover-vector idx)) val)))
- (error "Value of form marked with ‘1value’ does vary: %s" val)))
+ (error "Value of form marked with `1value' does vary: %s" val)))
val)
(apply (timer--function timer) (timer--args timer)))
(error (message "Error running timer%s: %S"
(if (symbolp (timer--function timer))
- (format-message " ‘%s’" (timer--function timer))
+ (format-message " `%s'" (timer--function timer))
"")
err)))
(when (and retrigger
(setq viper-parse-sexp-ignore-comments
(not viper-parse-sexp-ignore-comments))
(princ (format-message
- "From now on, ‘%%’ will %signore parentheses inside comment fields"
+ "From now on, `%%' will %signore parentheses inside comment fields"
(if viper-parse-sexp-ignore-comments "" "NOT "))))
\f
(cond ((or (eq arg 1)
(and (null arg)
(y-or-n-p (format-message
- "Search style: ‘%s’. Want ‘%s’? "
+ "Search style: `%s'. Want `%s'? "
(if viper-case-fold-search
"case-insensitive" "case-sensitive")
(if viper-case-fold-search
((or (eq arg 2)
(and (null arg)
(y-or-n-p (format-message
- "Search style: ‘%s’. Want ‘%s’? "
+ "Search style: `%s'. Want `%s'? "
(if viper-re-search
"regexp-search" "vanilla-search")
(if viper-re-search
(if (or (not (buffer-modified-p buffer))
(y-or-n-p
(format-message
- "Buffer ‘%s’ is modified, are you sure you want to kill it? "
+ "Buffer `%s' is modified, are you sure you want to kill it? "
buffer-name)))
(kill-buffer buffer)
(error "Buffer not killed"))))
reg (substring text (- pos s)))))
(princ
(format-message
- "Textmarker ‘%c’ is in buffer ‘%s’ at line %d.\n"
+ "Textmarker `%c' is in buffer `%s' at line %d.\n"
reg (buffer-name buf) line-no))
(princ (format "Here is some text around %c:\n\n %s"
reg text)))
(defcustom viper-keep-point-on-repeat t
"If t, don't move point when repeating previous command.
-This is useful for doing repeated changes with the ‘.’ key.
+This is useful for doing repeated changes with the `.' key.
The user can change this to nil, if she likes when the cursor moves
to a new place after repeating previous Vi command."
:type 'boolean
Normally, this would be called from a hook to a major mode or
on a per buffer basis.
Usage:
- (viper-add-local-keys state '((key-str . func) (key-str . func)...)) "
+ (viper-add-local-keys state \\='((key-str . func) (key-str . func)...)) "
(let (map)
(cond ((eq state 'vi-state)
(cond
((y-or-n-p
(format-message
- "Map this macro for buffer ‘%s’ only? "
+ "Map this macro for buffer `%s' only? "
(buffer-name)))
(setq msg
(format-message
- "%S is mapped to %s for %s in ‘%s’"
+ "%S is mapped to %s for %s in `%s'"
(viper-display-macro macro-name)
(viper-abbreviate-string
(format
(buffer-name))
((y-or-n-p
(format-message
- "Map this macro for the major mode ‘%S’ only? "
+ "Map this macro for the major mode `%S' only? "
major-mode))
(setq msg
(format-message
- "%S is mapped to %s for %s in ‘%S’"
+ "%S is mapped to %s for %s in `%S'"
(viper-display-macro macro-name)
(viper-abbreviate-string
(format
(let ((codings (find-coding-systems-string (concat variable value))))
(unless (or (eq 'undecided (car codings))
(memq (coding-system-base locale-coding-system) codings))
- (error "Can't encode ‘%s=%s’ with ‘locale-coding-system’"
+ (error "Can't encode `%s=%s' with `locale-coding-system'"
variable (or value "")))))
(and value
substitute-env-vars
(if (and value (multibyte-string-p value))
(setq value (encode-coding-string value locale-coding-system)))
(if (string-match "=" variable)
- (error "Environment variable name ‘%s’ contains ‘=’" variable))
+ (error "Environment variable name `%s' contains `='" variable))
(if (string-equal "TZ" variable)
(set-time-zone-rule value))
(setq process-environment (setenv-internal process-environment
add things to `erc-server-311-functions' instead.\"
(do-stuff-with-whois proc parsed))
- (puthash \"311\" 'erc-server-311-functions erc-server-responses)
- (puthash \"WHOIS\" 'erc-server-WHOIS-functions erc-server-responses)
- (puthash \"WI\" 'erc-server-WI-functions erc-server-responses)
+ (puthash \"311\" \\='erc-server-311-functions erc-server-responses)
+ (puthash \"WHOIS\" \\='erc-server-WHOIS-functions erc-server-responses)
+ (puthash \"WI\" \\='erc-server-WI-functions erc-server-responses)
- (defalias 'erc-server-WHOIS 'erc-server-311)
- (defvar erc-server-WHOIS-functions 'erc-server-311
+ (defalias \\='erc-server-WHOIS \\='erc-server-311)
+ (defvar erc-server-WHOIS-functions \\='erc-server-311
\"Some non-generic variable documentation.
Hook called upon receiving a WHOIS server response.
See also `erc-server-311'.\")
- (defalias 'erc-server-WI 'erc-server-311)
- (defvar erc-server-WI-functions 'erc-server-311
+ (defalias \\='erc-server-WI \\='erc-server-311)
+ (defvar erc-server-WI-functions \\='erc-server-311
\"Some non-generic variable documentation.
Hook called upon receiving a WI server response.
(defun erc-nick-popup (nick)
(let* ((completion-ignore-case t)
(action (completing-read (format-message
- "What action to take on ‘%s’? " nick)
+ "What action to take on `%s'? " nick)
erc-nick-popup-alist))
(code (cdr (assoc action erc-nick-popup-alist))))
(when code
"Return the first matching entry in `erc-dcc-list' which satisfies the
constraints given as a plist in ARGS. Returns nil on no match.
-The property :nick is treated specially, if it contains a ‘!’ character,
+The property :nick is treated specially, if it contains a `!' character,
it is treated as a nick!user@host string, and compared with the :nick property
value of the individual elements using string-equal. Otherwise it is
compared with `erc-nick-equal-p' which is IRC case-insensitive."
(defcustom erc-hide-prompt nil
"If non-nil, do not display the prompt for commands.
-\(A command is any input starting with a ‘/’).
+\(A command is any input starting with a `/').
See also the variables `erc-prompt' and `erc-command-indicator'."
:group 'erc-display
"Indicator used by ERC for showing commands.
If non-nil, this will be used in the ERC buffer to indicate
-commands (i.e., input starting with a ‘/’).
+commands (i.e., input starting with a `/').
If nil, the prompt will be constructed from the variable `erc-prompt'."
:group 'erc-display
(defun erc-cmd-SAY (line)
"Send LINE to the current query or channel as a message, not a command.
-Use this when you want to send a message with a leading ‘/’. Note
+Use this when you want to send a message with a leading `/'. Note
that since multi-line messages are never a command, you don't
need this when pasting multiple lines of text."
(if (string-match "^\\s-*$" line)
(erc-display-message nil 'error (current-buffer)
'cannot-read-file ?f file))
(t
- (message "Loading ‘%s’..." file)
+ (message "Loading `%s'..." file)
(erc-load-script file)
- (message "Loading ‘%s’...done" file))))
+ (message "Loading `%s'...done" file))))
t)
(t nil)))
It serves as a menu to find any of the occurrences in this buffer.
\\[describe-mode] in that buffer will explain how.
-If LINE contains upper case characters (excluding those preceded by ‘\\’),
+If LINE contains upper case characters (excluding those preceded by `\\'),
the matching is case-sensitive."
(occur line)
t)
"Handle the logging in process of connection."
(unless erc-logged-in
(setq erc-logged-in t)
- (message "Logging in as ‘%s’... done" (erc-current-nick))
+ (message "Logging in as `%s'... done" (erc-current-nick))
;; execute a startup script
(let ((f (erc-select-startup-file)))
(when f
Event TYPE L
- nickname change 'nick (NEW-NICK)"
+ nickname change `nick' (NEW-NICK)"
(erc-log (format "user-change: type: %S nlh: %S l: %S" type nlh l))
(cond
;; nickname change
. "\n\nConnection failed! Not re-establishing connection.\n")
(finished . "\n\n*** ERC finished ***\n")
(terminated . "\n\n*** ERC terminated: %e\n")
- (login . "Logging in as ‘%n’...")
+ (login . "Logging in as `%n'...")
(nick-in-use . "%n is in use. Choose new nickname: ")
(nick-too-long
. "WARNING: Nick length (%i) exceeds max NICKLEN(%l) defined by server")
eshell-user-names)))))))
(defun eshell/pwd (&rest args)
- "Change output from ‘pwd’ to be cleaner."
+ "Change output from `pwd' to be cleaner."
(let* ((path default-directory)
(len (length path)))
(if (and (> len 1)
(let ((curdir (eshell/pwd)))
(if (string-match path curdir)
(setq path (replace-match subpath nil nil curdir))
- (error "Path substring ‘%s’ not found" path))))
+ (error "Path substring `%s' not found" path))))
((and path (string-match "^-\\([0-9]*\\)$" path))
(let ((index (match-string 1 path)))
(setq path
* .* matches any group of characters (or none)
# * matches zero or more occurrences of preceding
## + matches one or more occurrences of preceding
- (x) \(x\) makes ‘x’ a regular expression group
+ (x) \(x\) makes `x' a regular expression group
| \| boolean OR within an expression group
[a-b] [a-b] matches a character or range
[^a] [^a] excludes a character or range
matched-in-pattern (1+ op-begin))
(let ((xlat (assq op-char eshell-glob-translate-alist)))
(if (not xlat)
- (error "Unrecognized globbing character ‘%c’" op-char)
+ (error "Unrecognized globbing character `%c'" op-char)
(if (stringp (cdr xlat))
(setq regexp (concat regexp (cdr xlat))
matched-in-pattern (1+ op-begin))
glob (car globs)
len (length glob)))))
(if (and recurse-p (not glob))
- (error "‘**’ cannot end a globbing pattern"))
+ (error "`**' cannot end a globbing pattern"))
(let ((index 1))
(setq incl glob)
(while (and (eq incl glob)
OWNERSHIP:
U owned by effective uid
- u(UID|'user') owned by UID/user
- g(GID|'group') owned by GID/group
+ u(UID|\\='user\\=') owned by UID/user
+ g(GID|\\='group\\=') owned by GID/group
FILE ATTRIBUTES:
l[+-]N +/-/= N links
- a[Mwhms][+-](N|'FILE') access time +/-/= N months/weeks/hours/mins/secs
+ a[Mwhms][+-](N|\\='FILE\\=') access time +/-/= N months/weeks/hours/mins/secs
(days if unspecified) if FILE specified,
- use as comparison basis; so a+'file.c'
+ use as comparison basis; so a+\\='file.c\\='
shows files accessed before file.c was
last accessed
- m[Mwhms][+-](N|'FILE') modification time...
- c[Mwhms][+-](N|'FILE') change time...
+ m[Mwhms][+-](N|\\='FILE\\=') modification time...
+ c[Mwhms][+-](N|\\='FILE\\=') change time...
L[kmp][+-]N file size +/-/= N Kb/Mb/blocks
EXAMPLES:
***/*~f*(-/) recursively (though not traversing symlinks),
find all directories (or symlinks referring to
directories) whose names do not begin with f.
- e*(*Lk+50) executables 50k or larger beginning with ‘e’")
+ e*(*Lk+50) executables 50k or larger beginning with `e'")
(defvar eshell-modifier-help-string
"Eshell modifier quick reference:
(if (and func (functionp func))
(setq preds (eshell-add-pred-func func preds
negate follow))
- (error "Invalid function predicate ‘%s’"
+ (error "Invalid function predicate `%s'"
(eshell-stringify func))))
(error "Invalid function predicate")))
((eq char ?^)
(cons `(lambda (lst)
(mapcar (function ,func) lst))
mods))
- (error "Invalid function modifier ‘%s’"
+ (error "Invalid function modifier `%s'"
(eshell-stringify func))))
(error "Invalid function modifier")))
((eq char ?:)
(forward-char)
(let ((mod (assq (char-after) eshell-modifier-alist)))
(if (not mod)
- (error "Unknown modifier character ‘%c’" (char-after))
+ (error "Unknown modifier character `%c'" (char-after))
(forward-char)
(setq mods (cons (eval (cdr mod)) mods)))))
(t
(let ((pred (assq char eshell-predicate-alist)))
(if (not pred)
- (error "Unknown predicate character ‘%c’" char)
+ (error "Unknown predicate character `%c'" char)
(forward-char)
(setq preds
(eshell-add-pred-func (eval (cdr pred)) preds
(defcustom eshell-login-script (expand-file-name "login" eshell-directory-name)
"If non-nil, a file to invoke when starting up Eshell interactively.
This file should be a file containing Eshell commands, where comment
-lines begin with ‘#’."
+lines begin with `#'."
:type 'file
:group 'eshell-script)
(defun eshell-source-file (file &optional args subcommand-p)
"Execute a series of Eshell commands in FILE, passing ARGS.
-Comments begin with ‘#’."
+Comments begin with `#'."
(interactive "f")
(let ((orig (point))
(here (point-max))
(concat usage
(format-message "
This command is implemented in Lisp. If an unrecognized option is
-passed to this command, the external version ‘%s’
+passed to this command, the external version `%s'
will be called instead." extcmd)))))
(throw 'eshell-usage usage)))
some other Lisp function that deals with files, not numbers), add the
following in your init file:
- (put 'find-file 'eshell-no-numeric-conversions t)
+ (put \\='find-file \\='eshell-no-numeric-conversions t)
Any function with the property `eshell-no-numeric-conversions' set to
a non-nil value, will be passed strings, not numbers, even when an
(require 'ring)
(defgroup eshell-var nil
- "Variable interpolation is introduced whenever the ‘$’ character
+ "Variable interpolation is introduced whenever the `$' character
appears unquoted in any argument (except when that argument is
surrounded by single quotes). It may be used to interpolate a
variable value, a subcommand, or even the result of a Lisp form."
symbol (intern name)))
(setq menu 'facemenu-face-menu)
(setq docstring
- (purecopy (format-message "Select face ‘%s’ for subsequent insertion.
+ (purecopy (format "Select face `%s' for subsequent insertion.
If the mark is active and there is no prefix argument,
-apply face ‘%s’ to the region instead.
-This command was defined by ‘facemenu-add-new-face’."
+apply face `%s' to the region instead.
+This command was defined by `facemenu-add-new-face'."
name name)))
(cond ((facemenu-iterate ; check if equivalent face is already in the menu
(lambda (m) (and (listp m)
This is called whenever you use a new color."
(let (symbol)
(unless (color-defined-p color)
- (error "Color ‘%s’ undefined" color))
+ (error "Color `%s' undefined" color))
(cond ((eq menu 'facemenu-foreground-menu)
(setq symbol (intern (concat "fg:" color))))
((eq menu 'facemenu-background-menu)
(setq symbol (intern (concat "bg:" color))))
- (t (error "MENU should be ‘facemenu-foreground-menu’ or ‘facemenu-background-menu’")))
+ (t (error "MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'")))
(unless (facemenu-iterate ; Check if color is already in the menu.
(lambda (m) (and (listp m)
(eq (car m) symbol)))
(let ((alias (get face 'face-alias)))
(if alias
(let ((doc (get alias 'face-documentation)))
- (format-message "%s is an alias for the face ‘%s’.%s" face alias
+ (format "%s is an alias for the face `%s'.%s" face alias
(if doc (format "\n%s" doc)
"")))
(get face 'face-documentation))))
(setq default (car (split-string default crm-separator t))))
(let ((prompt (if default
- (format-message "%s (default ‘%s’): " prompt default)
+ (format-message "%s (default `%s'): " prompt default)
(format "%s: " prompt)))
aliasfaces nonaliasfaces faces)
;; Build up the completion tables.
(let* ((completion-ignore-case t)
(value (completing-read
(format-message (if default
- "%s for face ‘%s’ (default %s): "
- "%s for face ‘%s’: ")
+ "%s for face `%s' (default %s): "
+ "%s for face `%s': ")
name face default)
completion-alist nil nil nil nil default)))
(if (equal value "") default value)))
If optional argument FRAME is nil or omitted, use the selected frame."
(let ((completion-ignore-case t))
(completing-read (format-message
- "Set font attributes of face ‘%s’ from font: " face)
+ "Set font attributes of face `%s' from font: " face)
(append (fontset-list) (x-list-fonts "*" nil frame)))))
(setq face alias)
(insert
(format-message
- "\n %s is an alias for the face ‘%s’.\n%s"
+ "\n %s is an alias for the face `%s'.\n%s"
f alias
(if (setq obsolete (get f 'obsolete-face))
(format-message
- " This face is obsolete%s; use ‘%s’ instead.\n"
+ " This face is obsolete%s; use `%s' instead.\n"
(if (stringp obsolete)
(format " since %s" obsolete)
"")
(help-xref-button 1 'help-customize-face f)))
(setq file-name (find-lisp-object-file-name f 'defface))
(when file-name
- (princ (substitute-command-keys "Defined in ‘"))
+ (princ (substitute-command-keys "Defined in `"))
(princ (file-name-nondirectory file-name))
- (princ (substitute-command-keys "’"))
+ (princ (substitute-command-keys "'"))
;; Make a hyperlink to the library.
(save-excursion
(re-search-backward
- (substitute-command-keys "‘\\([^‘’]+\\)’") nil t)
+ (substitute-command-keys "`\\([^`']+\\)'") nil t)
(help-xref-button 1 'help-face-def f file-name))
(princ ".")
(terpri)
options))
((eq req 'supports)
(display-supports-face-attributes-p options frame))
- (t (error "Unknown req ‘%S’ with options ‘%S’"
+ (t (error "Unknown req `%S' with options `%S'"
req options)))))
match))
(logand 65535 (nth 0 components))
(logand 65535 (nth 1 components))
(logand 65535 (nth 2 components))))))))
- (when msg (message "Color: ‘%s’" color))
+ (when msg (message "Color: `%s'" color))
color))
(defun face-at-point (&optional thing multiple)
(if (string-match-p "\\*" pattern)
(if (null (face-font face))
(error "No matching fonts are the same height as the frame default font")
- (error "No matching fonts are the same height as face ‘%s’" face))
+ (error "No matching fonts are the same height as face `%s'" face))
(if (null (face-font face))
- (error "Height of font ‘%s’ doesn't match the frame default font"
+ (error "Height of font `%s' doesn't match the frame default font"
pattern)
- (error "Height of font ‘%s’ doesn't match face ‘%s’"
+ (error "Height of font `%s' doesn't match face `%s'"
pattern face)))
- (error "No fonts match ‘%s’" pattern)))
+ (error "No fonts match `%s'" pattern)))
(car fonts))
(cdr (assq 'font (frame-parameters (selected-frame))))))
Optional QUIET flag suppresses the \"Pinging...\" message.
Optional STRATEGY overrides the three variables above.
Returned values:
- t means that HOST answered.
-'accept means the relevant variable told us to accept.
-\"mesg\" means HOST exists, but does not respond for some reason."
+ t means that HOST answered.
+`accept' means the relevant variable told us to accept.
+\"mesg\" means HOST exists, but does not respond for some reason."
;; Try some (Emory local):
;; (ffap-machine-p "ftp" nil nil 'ping)
;; (ffap-machine-p "nonesuch" nil nil 'ping)
"Handle file system monitoring event.
If EVENT is a filewatch event, call its callback. It has the format
- \(file-notify (DESCRIPTOR ACTIONS FILE COOKIE) CALLBACK)
+ \(file-notify (DESCRIPTOR ACTIONS FILE [FILE1-OR-COOKIE]) CALLBACK)
Otherwise, signal a `file-notify-error'."
(interactive "e")
(signal 'file-notify-error
(cons "Not a valid file-notify event" event))))
-(defvar file-notify--pending-events nil
- "List of pending file notification events for a future `renamed' action.
-The entries are a list (DESCRIPTOR ACTION FILE COOKIE). ACTION
-is either `moved-from' or `renamed-from'.")
+;; Needed for `inotify' and `w32notify'. In the latter case, COOKIE is nil.
+(defvar file-notify--pending-event nil
+ "A pending file notification events for a future `renamed' action.
+It is a form ((DESCRIPTOR ACTION FILE [FILE1-OR-COOKIE]) CALLBACK).")
(defun file-notify--event-file-name (event)
"Return file name of file notification event, or nil."
;; `inotify' returns the same descriptor when the file (directory)
;; uses the same inode. We want to distinguish, and apply a virtual
;; descriptor which make the difference.
-(defun file-notify--descriptor (descriptor file)
+(defun file-notify--descriptor (descriptor)
"Return the descriptor to be used in `file-notify-*-watch'.
For `gfilenotify' and `w32notify' it is the same descriptor as
used in the low-level file notification package."
(if (and (natnump descriptor) (eq file-notify--library 'inotify))
- (cons descriptor file)
+ (cons descriptor
+ (car (cadr (gethash descriptor file-notify-descriptors))))
descriptor))
;; The callback function used to map between specific flags of the
;; respective file notifications, and the ones we return.
(defun file-notify-callback (event)
"Handle an EVENT returned from file notification.
-EVENT is the cdr of the event in `file-notify-handle-event'
-\(DESCRIPTOR ACTIONS FILE COOKIE)."
+EVENT is the cadr of the event in `file-notify-handle-event'
+\(DESCRIPTOR ACTIONS FILE [FILE1-OR-COOKIE])."
(let* ((desc (car event))
(registered (gethash desc file-notify-descriptors))
- (pending-event (assoc desc file-notify--pending-events))
(actions (nth 1 event))
(file (file-notify--event-file-name event))
- file1 callback)
+ file1 callback pending-event)
;; Make actions a list.
(unless (consp actions) (setq actions (cons actions nil)))
(dolist (action actions)
;; Send pending event, if it doesn't match.
- (when (and pending-event
+ (when (and file-notify--pending-event
;; The cookie doesn't match.
- (not (eq (file-notify--event-cookie pending-event)
+ (not (eq (file-notify--event-cookie
+ (car file-notify--pending-event))
(file-notify--event-cookie event)))
(or
;; inotify.
- (and (eq (nth 1 pending-event) 'moved-from)
+ (and (eq (nth 1 (car file-notify--pending-event))
+ 'moved-from)
(not (eq action 'moved-to)))
;; w32notify.
- (and (eq (nth 1 pending-event) 'renamed-from)
+ (and (eq (nth 1 (car file-notify--pending-event))
+ 'renamed-from)
(not (eq action 'renamed-to)))))
- (funcall callback
- (list desc 'deleted
- (file-notify--event-file-name pending-event)))
- (setq file-notify--pending-events
- (delete pending-event file-notify--pending-events)))
+ (setq pending-event file-notify--pending-event
+ file-notify--pending-event nil)
+ (setcar (cdar pending-event) 'deleted))
;; Map action. We ignore all events which cannot be mapped.
(setq action
(setq file1 (file-notify--event-file1-name event))
'renamed)
- ;; inotify.
+ ;; inotify, w32notify.
((eq action 'attrib) 'attribute-changed)
- ((eq action 'create) 'created)
- ((eq action 'modify) 'changed)
- ((memq action '(delete 'delete-self move-self)) 'deleted)
+ ((memq action '(create added)) 'created)
+ ((memq action '(modify modified)) 'changed)
+ ((memq action '(delete 'delete-self move-self removed)) 'deleted)
;; Make the event pending.
- ((eq action 'moved-from)
- (add-to-list 'file-notify--pending-events
- (list desc action file
- (file-notify--event-cookie event)))
+ ((memq action '(moved-from renamed-from))
+ (setq file-notify--pending-event
+ `((,desc ,action ,file ,(file-notify--event-cookie event))
+ ,callback))
nil)
;; Look for pending event.
- ((eq action 'moved-to)
- (if (null pending-event)
+ ((memq action '(moved-to renamed-to))
+ (if (null file-notify--pending-event)
'created
(setq file1 file
- file (file-notify--event-file-name pending-event)
- file-notify--pending-events
- (delete pending-event file-notify--pending-events))
- 'renamed))
-
- ;; w32notify.
- ((eq action 'added) 'created)
- ((eq action 'modified) 'changed)
- ((eq action 'removed) 'deleted)
- ;; Make the event pending.
- ((eq action 'renamed-from)
- (add-to-list 'file-notify--pending-events
- (list desc action file
- (file-notify--event-cookie event)))
- nil)
- ;; Look for pending event.
- ((eq action 'renamed-to)
- (if (null pending-event)
- 'created
- (setq file1 file
- file (file-notify--event-file-name pending-event)
- file-notify--pending-events
- (delete pending-event file-notify--pending-events))
- 'renamed))))
+ file (file-notify--event-file-name
+ (car file-notify--pending-event)))
+ ;; If the source is handled by another watch, we
+ ;; must fire the rename event there as well.
+ (when (not (eq (file-notify--descriptor desc)
+ (file-notify--descriptor
+ (caar file-notify--pending-event))))
+ (setq pending-event
+ `((,(caar file-notify--pending-event)
+ renamed ,file ,file1)
+ ,(cadr file-notify--pending-event))))
+ (setq file-notify--pending-event nil)
+ 'renamed))))
+
+ ;; Apply pending callback.
+ (when pending-event
+ (setcar
+ (car pending-event) (file-notify--descriptor (caar pending-event)))
+ (funcall (cadr pending-event) (car pending-event))
+ (setq pending-event nil))
;; Apply callback.
(when (and action
(if file1
(funcall
callback
- `(,(file-notify--descriptor desc (nth 0 entry))
- ,action ,file ,file1))
+ `(,(file-notify--descriptor desc) ,action ,file ,file1))
(funcall
callback
- `(,(file-notify--descriptor desc (nth 0 entry))
- ,action ,file))))))))
+ `(,(file-notify--descriptor desc) ,action ,file))))))))
;; `gfilenotify' and `w32notify' return a unique descriptor for every
;; `file-notify-add-watch', while `inotify' returns a unique
file-notify-descriptors)
;; Return descriptor.
- (file-notify--descriptor
- desc (unless (file-directory-p file) (file-name-nondirectory file)))))
+ (file-notify--descriptor desc)))
(defun file-notify-rm-watch (descriptor)
"Remove an existing watch specified by its DESCRIPTOR.
(unless (let ((case-fold-search t))
(goto-char beg)
(search-forward "Local Variables:" nil t))
- (throw 'exit (message "Can’t add file-local variables"))))
+ (throw 'exit (message "Can't add file-local variables"))))
;; prefix is what comes before "local variables:" in its line.
;; suffix is what comes after "local variables:" in its line.
(put 'user-emacs-directory-warning 'this-session t)
(display-warning 'initialization
(format "\
-Unable to %s ‘user-emacs-directory’ (%s).
+Unable to %s `user-emacs-directory' (%s).
Any data that would normally be written there may be lost!
If you never want to see this message again,
-customize the variable ‘user-emacs-directory-warning’."
+customize the variable `user-emacs-directory-warning'."
errtype user-emacs-directory)))))
bestname))))
(user-error "Aborted"))
(and (buffer-modified-p) buffer-file-name
(not (yes-or-no-p
- (format-message "Kill and replace buffer ‘%s’ without saving it? "
+ (format-message "Kill and replace buffer `%s' without saving it? "
(buffer-name))))
(user-error "Aborted"))
(let ((obuf (current-buffer))
(catch 'nop
(dolist (mode (nreverse modes))
(if (not (functionp mode))
- (message "Ignoring unknown mode ‘%s’" mode)
+ (message "Ignoring unknown mode `%s'" mode)
(setq done t)
(or (set-auto-mode-0 mode keep-mode-if-same)
;; continuing would call minor modes again, toggling them off
(setq mode (hack-local-variables t))
(not (memq mode modes)) ; already tried and failed
(if (not (functionp mode))
- (message "Ignoring unknown mode ‘%s’" mode)
+ (message "Ignoring unknown mode `%s'" mode)
(setq done t)
(set-auto-mode-0 mode keep-mode-if-same)))
;; If we didn't, look for an interpreter specified in the first line.
(display-warning
:warning
(format-message
- "%s: ‘lexical-binding’ at end of file unreliable"
+ "%s: `lexical-binding' at end of file unreliable"
(file-name-nondirectory
(or buffer-file-name ""))))))
(t
var (if since (format " (since %s)" since))
(if (stringp instead)
(substitute-command-keys instead)
- (format-message "use ‘%s’ instead" instead)))))))
+ (format-message "use `%s' instead" instead)))))))
(defun hack-one-local-variable (var val)
"Set local variable VAR with value VAL.
for a class are defined using `dir-locals-set-class-variables'."
(setq directory (file-name-as-directory (expand-file-name directory)))
(unless (assq class dir-locals-class-alist)
- (error "No such class ‘%s’" (symbol-name class)))
+ (error "No such class `%s'" (symbol-name class)))
(push (list directory class mtime) dir-locals-directory-cache))
(defun dir-locals-set-class-variables (class variables)
(listp last-nonmenu-event)
use-dialog-box))
(or (y-or-n-p (format-message
- "File ‘%s’ exists; overwrite? " filename))
+ "File `%s' exists; overwrite? " filename))
(user-error "Canceled")))
(set-visited-file-name filename (not confirm))))
(set-buffer-modified-p t)
;; existing directory.
(error "%s is a directory" filename)
(unless (y-or-n-p (format-message
- "File ‘%s’ exists; overwrite? "
+ "File `%s' exists; overwrite? "
filename))
(error "Canceled"))))
(set-visited-file-name filename)))
(unless (file-exists-p dir)
(if (y-or-n-p
(format-message
- "Directory ‘%s’ does not exist; create? " dir))
+ "Directory `%s' does not exist; create? " dir))
(make-directory dir t)
(error "Canceled")))
(setq setmodes (basic-save-buffer-1))))
(list dir
(if (directory-files dir nil directory-files-no-dot-files-regexp)
(y-or-n-p
- (format-message "Directory ‘%s’ is not empty, really %s? "
+ (format-message "Directory `%s' is not empty, really %s? "
dir (if trashing "trash" "delete")))
nil)
(null current-prefix-arg))))
default-directory default-directory nil nil)
current-prefix-arg t nil)))
(when (file-in-directory-p newname directory)
- (error "Cannot copy ‘%s’ into its subdirectory ‘%s’"
+ (error "Cannot copy `%s' into its subdirectory `%s'"
directory newname))
;; If default-directory is a remote directory, make sure we find its
;; copy-directory handler.
Then you'll be asked about a number of files to recover."
(interactive)
(if (null auto-save-list-file-prefix)
- (error "You set ‘auto-save-list-file-prefix’ to disable making session files"))
+ (error "You set `auto-save-list-file-prefix' to disable making session files"))
(let ((dir (file-name-directory auto-save-list-file-prefix))
(nd (file-name-nondirectory auto-save-list-file-prefix)))
(unless (file-directory-p dir)
(condition-case nil
(save-excursion (recover-file file))
(error
- "Failed to recover ‘%s’" file)))
+ "Failed to recover `%s'" file)))
files
'("file" "files" "recover"))
(message "No files can be recovered from this session now")))
file result)
;; Unix. Access the file to get a suitable error.
(access-file file "Reading directory")
- (error "Listing directory failed but ‘access-file’ worked")))
+ (error "Listing directory failed but `access-file' worked")))
(when (if (stringp switches)
(string-match "--dired\\>" switches)
((= char ?g) #o2070)
((= char ?o) #o1007)
((= char ?a) #o7777)
- (t (error "%c: bad ‘who’ character" char))))
+ (t (error "%c: bad `who' character" char))))
(defun file-modes-char-to-right (char &optional from)
"Convert CHAR to a numeric value of mode bits.
(file-modes-rights-to-number (substring modes (match-end 1))
num-who num-modes)
modes (substring modes (match-end 3))))
- (error "Parse error in modes near ‘%s’" (substring modes 0))))
+ (error "Parse error in modes near `%s'" (substring modes 0))))
num-modes)))
(defun read-file-modes (&optional prompt orig-file)
trash-dir)))
;; We can't trash a parent directory of trash-directory.
(if (string-prefix-p fn trash-dir)
- (error "Trash directory ‘%s’ is a subdirectory of ‘%s’"
+ (error "Trash directory `%s' is a subdirectory of `%s'"
trash-dir filename))
(unless (file-directory-p trash-dir)
(make-directory trash-dir t))
In order to view pdf or rtf files in an Emacs buffer, you could use these:
- \(\"^.+\\\\.pdf\\\\'\" \"pdftotext\"
+ \(\"^.+\\\\.pdf\\\\\\='\" \"pdftotext\"
\((:capture-output t)
\(:args (\"%S - | fmt -w \" window-width))
\(:ignore-on-read-text t)
\(:constraintp (lambda ()
\(and \(filesets-which-command-p \"pdftotext\")
\(filesets-which-command-p \"fmt\"))))))
- \(\"^.+\\\\.rtf\\\\'\" \"rtf2htm\"
+ \(\"^.+\\\\.rtf\\\\\\='\" \"rtf2htm\"
\((:capture-output t)
\(:args (\"%S 2> /dev/null | w3m -dump -T text/html\"))
\(:ignore-on-read-text t)
(current-buffer)))
(name (or name
(completing-read
- (format-message "Add ‘%s’ to fileset: " buffer)
+ (format-message "Add `%s' to fileset: " buffer)
filesets-data nil)))
(entry (or (assoc name filesets-data)
(when (y-or-n-p
:test 'filesets-files-equalp)))
(cond
(inlist
- (message "Filesets: ‘%s’ is already in ‘%s’" this name))
+ (message "Filesets: `%s' is already in `%s'" this name))
((and (equal (filesets-entry-mode entry) ':files)
this)
(filesets-entry-set-files entry (cons this files) t)
(filesets-set-config name 'filesets-data filesets-data))
(t
- (message "Filesets: Can't add ‘%s’ to fileset ‘%s’" this name)))))))
+ (message "Filesets: Can't add `%s' to fileset `%s'" this name)))))))
(defun filesets-remove-buffer (&optional name buffer)
"Remove BUFFER (or current buffer) to fileset NAME.
(current-buffer)))
(name (or name
(completing-read
- (format-message "Remove ‘%s’ from fileset: " buffer)
+ (format-message "Remove `%s' from fileset: " buffer)
filesets-data nil t)))
(entry (assoc name filesets-data)))
(if entry
(let ((new (list (cons ':files (delete (car inlist) files)))))
(setcdr entry new)
(filesets-set-config name 'filesets-data filesets-data))
- (message "Filesets: Can't remove ‘%s’ from fileset ‘%s’"
+ (message "Filesets: Can't remove `%s' from fileset `%s'"
this
name))))))
"Filesets: manual editing of user data required!
Filesets has detected that you were using an older version before,
-which requires some manual updating. Type ‘y’ for editing the startup
+which requires some manual updating. Type `y' for editing the startup
file now.
-The layout of ‘filesets-data’ has changed. Please delete your cache file
+The layout of `filesets-data' has changed. Please delete your cache file
and edit your startup file as shown below:
-1. ‘filesets-data’: Edit all :pattern filesets in your startup file and
+1. `filesets-data': Edit all :pattern filesets in your startup file and
transform all entries as shown in this example:
\(\"Test\" (:pattern \"~/dir/^pattern$\"))
--> \(\"Test\" (:pattern \"~/dir/\" \"^pattern$\"))
-2. ‘filesets-data’: Change all occurrences of \":document\" to \":ingroup\":
+2. `filesets-data': Change all occurrences of \":document\" to \":ingroup\":
\(\(\"Test\" \(:document \"~/dir/file\"))
--> \(\(\"Test\" \(:ingroup \"~/dir/file\"))
-3. ‘filesets-subdocument-patterns’: If you already modified the variable
-previously called ‘filesets-subdocument-patterns’, change its name to
-‘filesets-ingroup-patterns’.
+3. `filesets-subdocument-patterns': If you already modified the variable
+previously called `filesets-subdocument-patterns', change its name to
+`filesets-ingroup-patterns'.
-4. ‘filesets-menu-cache-contents’: If you already modified this
-variable, change the entry ‘filesets-subdocument--cache’ to
-‘filesets-ingroup-cache’.
+4. `filesets-menu-cache-contents': If you already modified this
+variable, change the entry `filesets-subdocument--cache' to
+`filesets-ingroup-cache'.
5. Type M-x filesets-update-cleanup and restart Emacs.
If DONT-QUOTE is non-nil, arguments are quoted for passing them to
the shell."
(when (and (numberp argcount) (< (length args) argcount))
- (error "‘%s’ needs at least %d arguments" option argcount))
+ (error "`%s' needs at least %d arguments" option argcount))
(let ((oper (or oper 'find-or)))
(if (and args (length args))
(funcall oper (mapcar (lambda (x)
(find-to-string
(find-generic option oper argcnt (cdr form) dont-quote))))
(t
- (error "Sorry I don't know how to handle ‘%s’" (car form))))))))
+ (error "Sorry I don't know how to handle `%s'" (car form))))))))
(provide 'find-cmd)
(if (locate-library (match-string 1))
(make-text-button (match-beginning 1) (match-end 1)
'xref (match-string-no-properties 1)
- 'help-echo "Read this file’s commentary"
+ 'help-echo "Read this file's commentary"
:type 'finder-xref)))
(goto-char (point-min))
(setq buffer-read-only t)
dollar-sign character. Hash characters in other contexts will still
follow whatever the syntax table says about the hash character.
- (\"\\\\('\\\\).\\\\('\\\\)\"
+ (\"\\\\(\\='\\\\).\\\\(\\='\\\\)\"
(1 \"\\\"\")
(2 \"\\\"\"))
- gives a pair single-quotes, which surround a single character, a SYNTAX of
- \"\\\"\" (meaning string quote syntax). Single-quote characters in other
+ gives a pair of apostrophes, which surround a single character, a
+ SYNTAX of \"\\\"\" (meaning string quote syntax). Apostrophes in other
+
contexts will not be affected.
This is normally set via `font-lock-defaults'.")
;; Of course, this function doesn't do all of the above in all situations
;; (e.g. depending on whether jit-lock is in use) and it can't guess what
;; the caller wants.
- (interactive-only "use ‘font-lock-ensure’ or ‘font-lock-flush’ instead."))
+ (interactive-only "use `font-lock-ensure' or `font-lock-flush' instead."))
(interactive "p")
(font-lock-set-defaults)
(let ((font-lock-verbose (or font-lock-verbose interactively)))
(cdr (assq 'default-directory
(buffer-local-variables)))
nil nil (buffer-name))))
- (fmt (format-read (format-message "Write file ‘%s’ in format: "
+ (fmt (format-read (format-message "Write file `%s' in format: "
(file-name-nondirectory file)))))
(list file fmt (not current-prefix-arg))))
(let ((old-formats buffer-file-format)
(interactive
;; Same interactive spec as write-file, plus format question.
(let* ((file (read-file-name "Find file: "))
- (fmt (format-read (format-message "Read file ‘%s’ in format: "
+ (fmt (format-read (format-message "Read file `%s' in format: "
(file-name-nondirectory file)))))
(list file fmt)))
(let ((format-alist nil))
(interactive
;; Same interactive spec as write-file, plus format question.
(let* ((file (read-file-name "Find file: "))
- (fmt (format-read (format-message "Read file ‘%s’ in format: "
+ (fmt (format-read (format-message "Read file `%s' in format: "
(file-name-nondirectory file)))))
(list file fmt)))
(let (value size old-undo)
(frame-terminal f)))
((terminal-live-p device) device)
(t
- (error "Invalid argument %s in ‘get-device-terminal’" device))))
+ (error "Invalid argument %s in `get-device-terminal'" device))))
(defun frames-on-display-list (&optional device)
"Return a list of all frames on DEVICE.
(frame (cdr (assoc name frame-names-alist))))
(if frame
(select-frame-set-input-focus frame)
- (error "There is no frame named ‘%s’" name))))
+ (error "There is no frame named `%s'" name))))
\f
;;;; Background mode.
(and (consp style)
(or (null (car style)) (integerp (car style)))
(or (null (cdr style)) (integerp (cdr style))))
- (error "Invalid fringe style ‘%s’" style)))
+ (error "Invalid fringe style `%s'" style)))
;; For initialization of fringe-mode, take account of changes
;; made explicitly to default-frame-alist.
(let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
(image-load-path (cons (car load-path)
- (when (boundp 'image-load-path)
+ (when (boundp \\='image-load-path)
image-load-path))))
(mh-tool-bar-folder-buttons-init))"
(unless library (error "No library specified"))
"Headers that are only to be displayed if they have interesting data.
Possible values in this list are:
- 'empty Headers with no content.
- 'newsgroups Newsgroup identical to Gnus group.
- 'to-address To identical to To-address.
- 'to-list To identical to To-list.
- 'cc-list CC identical to To-list.
- 'followup-to Followup-to identical to Newsgroups.
- 'reply-to Reply-to identical to From.
- 'date Date less than four days old.
- 'long-to To and/or Cc longer than 1024 characters.
- 'many-to Multiple To and/or Cc."
+ `empty' Headers with no content.
+ `newsgroups' Newsgroup identical to Gnus group.
+ `to-address' To identical to To-address.
+ `to-list' To identical to To-list.
+ `cc-list' CC identical to To-list.
+ `followup-to' Followup-to identical to Newsgroups.
+ `reply-to' Reply-to identical to From.
+ `date' Date less than four days old.
+ `long-to' To and/or Cc longer than 1024 characters.
+ `many-to' Multiple To and/or Cc."
:type '(set (const :tag "Headers with no content." empty)
(const :tag "Newsgroups identical to Gnus group." newsgroups)
(const :tag "To identical to To-address." to-address)
the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\",
you could set this variable to something like:
- '((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")
+ ((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")
(\"^Subject:.*vm\\|^Xref:.*vm\" \"vm-stuff\"))
This variable is an alist where the key is the match and the
"The splitting strategy applied to the keys in `gnus-registry-track-extra'.
Given a set of unique found groups G and counts for each element
-of G, and a key K (typically 'sender or 'subject):
+of G, and a key K (typically `sender' or `subject'):
When nil, if G has only one element, use it. Otherwise give up.
This is the fastest but also least useful strategy.
-When 'majority, use the majority by count. So if there is a
+When `majority', use the majority by count. So if there is a
group with the most articles counted by K, use that. Ties are
resolved in no particular order, simply the first one found wins.
This is the slowest strategy but also the most accurate one.
-When 'first, the first element of G wins. This is fast and
+When `first', the first element of G wins. This is fast and
should be OK if your senders and subjects don't \"bleed\" across
groups."
:group 'gnus-registry
the `ask-server' method in addition to the primary, secondary, and archive
servers.
+
E.g.:
(setq gnus-check-new-newsgroups
- '((nntp \"some.server\") (nntp \"other.server\")))
+ \\='((nntp \"some.server\") (nntp \"other.server\")))
If this variable is nil, then you have to tell Gnus explicitly to
check for new newsgroups with \\<gnus-group-mode-map>\\[gnus-find-new-newsgroups]."
(mail-header-set-subject
header
(gnus-simplify-subject
- (mail-header-subject header) 're-only)))
+ (mail-header-subject header) \\='re-only)))
gnus-newsgroup-headers)))"
:group 'gnus-group-select
:type 'hook)
To use, for instance, `untar' to unpack tar files and `zip -x' to
unpack zip files, say the following:
(setq gnus-uu-user-archive-rules
- '((\"\\\\.tar$\" \"untar\")
+ \\='((\"\\\\.tar$\" \"untar\")
(\"\\\\.zip$\" \"zip -x\")))"
:group 'gnus-extract-archive
:type '(repeat (group regexp (string :tag "Command"))))
write in another group, you could say something like:
\(setq gnus-message-archive-group
- '((if (message-news-p)
+ \\='((if (message-news-p)
\"misc-news\"
\"misc-mail\")))
This variable can also be a list of visual elements to switch on. For
instance, to switch off all visual things except menus, you can say:
- (setq gnus-visual '(menu))
+ (setq gnus-visual \\='(menu))
Valid elements include `summary-highlight', `group-highlight',
`article-highlight', `mouse-face', `summary-menu', `group-menu',
(if (and (imap-open server port stream authentication buf)
(imap-authenticate
user (or (cdr (assoc from mail-source-password-cache))
- password) buf)
- (imap-mailbox-select mailbox nil buf))
+ password) buf))
+ (let ((mailbox-list (if (listp mailbox) mailbox (list mailbox))))
+ (dolist (mailbox mailbox-list)
+ (when (imap-mailbox-select mailbox nil buf)
(let ((coding-system-for-write mail-source-imap-file-coding-system)
str)
+ (message "Fetching from %s..." mailbox)
(with-temp-file mail-source-crash-box
;; Avoid converting 8-bit chars from inserted strings to
;; multibyte.
fetchflag nil buf))
(if dontexpunge
(imap-mailbox-unselect buf)
- (imap-mailbox-close nil buf))
- (imap-close buf))
+ (imap-mailbox-close nil buf)))))
+ (imap-close buf))
(imap-close buf)
;; We nix out the password in case the error
;; was because of a wrong password being given.
message-cite-style-* variables. This variable is intended for
use in `gnus-posting-styles', such as:
- ((posting-from-work-p) (eval (set (make-local-variable 'message-cite-style) message-cite-style-outlook)))"
+ ((posting-from-work-p) (eval (set (make-local-variable \\='message-cite-style) message-cite-style-outlook)))"
:version "24.1"
:group 'message-insertion
:type '(choice (const :tag "Do not override variables" :value nil)
nil
group)
server))
+ (info (when info (list info)))
active)
(with-current-buffer nntp-server-buffer
(when result
(not (setq active
(nth 2 (assoc group nnimap-current-infos)))))
(let ((sequences (nnimap-retrieve-group-data-early
- server (list info))))
- (nnimap-finish-retrieve-group-infos server (list info) sequences
+ server info)))
+ (nnimap-finish-retrieve-group-infos server info sequences
t)
(setq active (nth 2 (assoc group nnimap-current-infos)))))
+ (setq active (or active '(0 . 1)))
(erase-buffer)
(insert (format "211 %d %d %d %S\n"
(- (cdr active) (car active))
(defcustom nnir-swish++-additional-switches '()
"*A list of strings, to be given as additional arguments to swish++.
-Note that this should be a list. Ie, do NOT use the following:
+Note that this should be a list. I.e., do NOT use the following:
(setq nnir-swish++-additional-switches \"-i -w\") ; wrong
Instead, use this:
- (setq nnir-swish++-additional-switches '(\"-i\" \"-w\"))"
+ (setq nnir-swish++-additional-switches \\='(\"-i\" \"-w\"))"
:type '(repeat (string))
:group 'nnir)
(defcustom nnir-swish-e-additional-switches '()
"*A list of strings, to be given as additional arguments to swish-e.
-Note that this should be a list. Ie, do NOT use the following:
+Note that this should be a list. I.e., do NOT use the following:
(setq nnir-swish-e-additional-switches \"-i -w\") ; wrong
Instead, use this:
- (setq nnir-swish-e-additional-switches '(\"-i\" \"-w\"))
+ (setq nnir-swish-e-additional-switches \\='(\"-i\" \"-w\"))
This could be a server parameter."
:type '(repeat (string))
(defcustom nnir-hyrex-additional-switches '()
"*A list of strings, to be given as additional arguments for nnir-search.
-Note that this should be a list. Ie, do NOT use the following:
+Note that this should be a list. I.e., do NOT use the following:
(setq nnir-hyrex-additional-switches \"-ddl ddl.xml -c nnir\") ; wrong !
Instead, use this:
- (setq nnir-hyrex-additional-switches '(\"-ddl\" \"ddl.xml\" \"-c\" \"nnir\"))"
+ (setq nnir-hyrex-additional-switches \\='(\"-ddl\" \"ddl.xml\" \"-c\" \"nnir\"))"
:type '(repeat (string))
:group 'nnir)
The switches `-q', `-a', and `-s' are always used, very few other switches
make any sense in this context.
-Note that this should be a list. Ie, do NOT use the following:
+Note that this should be a list. I.e., do NOT use the following:
(setq nnir-namazu-additional-switches \"-i -w\") ; wrong
Instead, use this:
- (setq nnir-namazu-additional-switches '(\"-i\" \"-w\"))"
+ (setq nnir-namazu-additional-switches \\='(\"-i\" \"-w\"))"
:type '(repeat (string))
:group 'nnir)
(defcustom nnir-notmuch-additional-switches '()
"*A list of strings, to be given as additional arguments to notmuch.
-Note that this should be a list. Ie, do NOT use the following:
+Note that this should be a list. I.e., do NOT use the following:
(setq nnir-notmuch-additional-switches \"-i -w\") ; wrong
Instead, use this:
- (setq nnir-notmuch-additional-switches '(\"-i\" \"-w\"))"
+ (setq nnir-notmuch-additional-switches \\='(\"-i\" \"-w\"))"
:version "24.1"
:type '(repeat (string))
:group 'nnir)
else, you could do something like this:
(setq nnmail-split-methods
- '((\"mail.4ad\" \"From:.*4ad\")
+ \\='((\"mail.4ad\" \"From:.*4ad\")
(\"mail.junk\" \"From:.*Lars\\\\|Subject:.*buy\")
(\"mail.misc\" \"\")))
(lambda (newsgroup)
(cond ((string-match \"private\" newsgroup) 31)
((string-match \"junk\" newsgroup) 1)
- ((string-match \"important\" newsgroup) 'never)
+ ((string-match \"important\" newsgroup) \\='never)
(t 7))))"
:group 'nnmail-expire
:type '(choice (const :tag "nnmail-expiry-wait" nil)
(kill-all-local-variables)
(erase-buffer)
(widget-insert "Specify your query for Mairix (check boxes for activating fields):\n\n")
- (widget-insert "(Whitespaces will be converted to ‘,’ (i.e. AND). Use ‘/’ for OR.)\n\n")
+ (widget-insert
+ (substitute-command-keys
+ "(Whitespaces will be converted to `,' (i.e. AND). Use `/' for OR.)\n\n"))
; (make-local-variable 'nnmairix-widgets)
(setq nnmairix-widgets (nnmairix-widget-build-editable-fields values))
(when (member 'flags nnmairix-widget-other)
to innd, you could say something like:
\(setq nntp-server-action-alist
- '((\"innd\" (ding))))
+ \\='((\"innd\" (ding))))
You probably don't want to do that, though.")
(when remapped
(princ "Its keys are remapped to ")
(princ (if (symbolp remapped)
- (format-message "‘%s’" remapped)
+ (format-message "`%s'" remapped)
"an anonymous command"))
(princ ".\n"))
(insert "\nThis function has a compiler macro")
(if (symbolp handler)
(progn
- (insert (format-message " ‘%s’" handler))
+ (insert (format-message " `%s'" handler))
(save-excursion
- (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+ (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
nil t)
(help-xref-button 1 'help-function handler)))
;; FIXME: Obsolete since 24.4.
(let ((lib (get function 'compiler-macro-file)))
(when (stringp lib)
- (insert (format-message " in ‘%s’" lib))
+ (insert (format-message " in `%s'" lib))
(save-excursion
- (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+ (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
nil t)
(help-xref-button 1 'help-function-cmacro function lib)))))
(insert ".\n"))))
-(defun help-fns--signature (function doc real-def real-function raw)
+(defun help-fns--signature (function doc real-def real-function buffer)
"Insert usage at point and return docstring. With highlighting."
(if (keymapp function)
doc ; If definition is a keymap, skip arglist note.
(use1 (replace-regexp-in-string
"\\`(\\\\=\\\\\\\\=` \\([^\n ]*\\))\\'"
"\\\\=`\\1" use t))
- (high (if raw
- (cons use1 doc)
- (help-highlight-arguments (substitute-command-keys use1)
- (substitute-command-keys doc)))))
+ (high (if buffer
+ (let (subst-use1 subst-doc)
+ (with-current-buffer buffer
+ (setq subst-use1 (substitute-command-keys use1))
+ (setq subst-doc (substitute-command-keys doc)))
+ (help-highlight-arguments subst-use1 subst-doc))
+ (cons use1 doc))))
(let ((fill-begin (point))
(high-usage (car high))
(high-doc (cdr high)))
(get function
'derived-mode-parent))))
(when parent-mode
- (insert (substitute-command-keys "\nParent mode: ‘"))
+ (insert (substitute-command-keys "\nParent mode: `"))
(let ((beg (point)))
(insert (format "%s" parent-mode))
(make-text-button beg (point)
'type 'help-function
'help-args (list parent-mode)))
- (insert (substitute-command-keys "’.\n")))))
+ (insert (substitute-command-keys "'.\n")))))
(defun help-fns--obsolete (function)
;; Ignore lambda constructs, keyboard macros, etc.
(when (nth 2 obsolete)
(insert (format " since %s" (nth 2 obsolete))))
(insert (cond ((stringp use) (concat ";\n" use))
- (use (format-message ";\nuse ‘%s’ instead." use))
+ (use (format-message ";\nuse `%s' instead." use))
(t "."))
"\n"))))
(format ";\nin Lisp code %s" interactive-only))
((and (symbolp 'interactive-only)
(not (eq interactive-only t)))
- (format-message ";\nin Lisp code use ‘%s’ instead."
+ (format-message ";\nin Lisp code use `%s' instead."
interactive-only))
(t "."))
"\n")))))
;; Aliases are Lisp functions, so we need to check
;; aliases before functions.
(aliased
- (format-message "an alias for ‘%s’" real-def))
+ (format-message "an alias for `%s'" real-def))
((autoloadp def)
(format "%s autoloaded %s"
(if (commandp def) "an interactive" "an")
(save-excursion
(save-match-data
(when (re-search-backward (substitute-command-keys
- "alias for ‘\\([^‘’]+\\)’")
+ "alias for `\\([^`']+\\)'")
nil t)
(help-xref-button 1 'help-function real-def)))))
(when file-name
;; We used to add .el to the file name,
;; but that's completely wrong when the user used load-file.
- (princ (format-message " in ‘%s’"
+ (princ (format-message " in `%s'"
(if (eq file-name 'C-source)
"C source code"
(help-fns-short-filename file-name))))
;; Make a hyperlink to the library.
(with-current-buffer standard-output
(save-excursion
- (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+ (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
nil t)
(help-xref-button 1 'help-function-def function file-name))))
(princ ".")
(point)))
(terpri)(terpri)
- (let ((doc-raw (documentation function t)))
+ (let ((doc-raw (documentation function t))
+ (key-bindings-buffer (current-buffer)))
;; If the function is autoloaded, and its docstring has
;; key substitution constructs, load the library.
(help-fns--key-bindings function)
(with-current-buffer standard-output
- (let ((doc (help-fns--signature function doc-raw sig-key
- real-function nil)))
- (run-hook-with-args 'help-fns-describe-function-functions function)
- (insert "\n"
- (or doc "Not documented."))))))))
+ (let ((doc (help-fns--signature function doc-raw sig-key
+ real-function key-bindings-buffer)))
+ (run-hook-with-args 'help-fns-describe-function-functions function)
+ (insert "\n"
+ (or doc "Not documented."))))))))
;; Add defaults to `help-fns-describe-function-functions'.
(add-hook 'help-fns-describe-function-functions #'help-fns--obsolete)
(if file-name
(progn
(princ (format-message
- " is a variable defined in ‘%s’.\n"
+ " is a variable defined in `%s'.\n"
(if (eq file-name 'C-source)
"C source code"
(file-name-nondirectory file-name))))
(with-current-buffer standard-output
(save-excursion
(re-search-backward (substitute-command-keys
- "‘\\([^‘’]+\\)’")
+ "`\\([^`']+\\)'")
nil t)
(help-xref-button 1 'help-variable-def
variable file-name)))
(princ "Its ")))
(if valvoid
(princ " is void as a variable.")
- (princ (substitute-command-keys "’s ")))))
+ (princ (substitute-command-keys "'s ")))))
(unless valvoid
(with-current-buffer standard-output
(setq val-start-pos (point))
(unless (eq alias variable)
(setq extra-line t)
(princ (format-message
- " This variable is an alias for ‘%s’.\n"
+ " This variable is an alias for `%s'.\n"
alias)))
(when obsolete
(if (nth 2 obsolete)
(princ (format " since %s" (nth 2 obsolete))))
(princ (cond ((stringp use) (concat ";\n " use))
- (use (format-message ";\n use ‘%s’ instead."
+ (use (format-message ";\n use `%s' instead."
(car obsolete)))
(t ".")))
(terpri))
dir-file nil)))
(princ (substitute-command-keys
(if dir-file
- "by the file\n ‘"
- "for the directory\n ‘")))
+ "by the file\n `"
+ "for the directory\n `")))
(with-current-buffer standard-output
(insert-text-button
file 'type 'help-dir-local-var-def
'help-args (list variable file)))
- (princ (substitute-command-keys "’.\n"))))
+ (princ (substitute-command-keys "'.\n"))))
(princ (substitute-command-keys
" This variable's value is file-local.\n"))))
(when (assq variable safe-local-variable-values)
(princ (substitute-command-keys
" However, you have added it to \
-‘safe-local-variable-values’.\n"))))
+`safe-local-variable-values'.\n"))))
(when safe-var
(setq extra-line t)
(princ "if its value\n satisfies the predicate ")
(princ (if (byte-code-function-p safe-var)
"which is a byte-compiled expression.\n"
- (format-message "‘%s’.\n" safe-var))))
+ (format-message "`%s'.\n" safe-var))))
(if extra-line (terpri))
(princ "Documentation:\n")
(let* ((mode major-mode)
(file-name (find-lisp-object-file-name mode nil)))
(when file-name
- (princ (format-message " defined in ‘%s’"
+ (princ (format-message " defined in `%s'"
(file-name-nondirectory file-name)))
;; Make a hyperlink to the library.
(with-current-buffer standard-output
(save-excursion
- (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+ (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
nil t)
(help-xref-button 1 'help-function-def mode file-name)))))
(princ ":\n")
(let ((minor-mode (lookup-minor-mode-from-indicator indicator)))
(if minor-mode
(describe-minor-mode-from-symbol minor-mode)
- (error "Cannot find minor mode for ‘%s’" indicator))))
+ (error "Cannot find minor mode for `%s'" indicator))))
(defun lookup-minor-mode-from-indicator (indicator)
"Return a minor mode symbol from its indicator on the mode line."
\f
(defun help--docstring-quote (string)
"Return a doc string that represents STRING.
-The result, when formatted by ‘substitute-command-keys’, should equal STRING."
- (replace-regexp-in-string "['\\`]" "\\\\=\\&" string))
+The result, when formatted by `substitute-command-keys', should equal STRING."
+ (replace-regexp-in-string "['\\`‘’]" "\\\\=\\&" string))
;; The following functions used to be in help-fns.el, which is not preloaded.
;; But for various reasons, they are more widely needed, so they were
(setq hi-lock-archaic-interface-message-used t)
(if hi-lock-archaic-interface-deduce
(global-hi-lock-mode hi-lock-mode)
- (warn
+ (warn "%s"
"Possible archaic use of (hi-lock-mode).
Use (global-hi-lock-mode 1) in .emacs to enable hi-lock for all buffers,
use (hi-lock-mode 1) for individual buffers. For compatibility with Emacs
\(defun rtfm-build-source-docs (section srcdir destdir)
(interactive
\"s section[eg- emacs / p4-blame]:\\nD source-dir: \\nD output-dir: \")
- (require 'htmlfontify)
+ (require \\='htmlfontify)
(hfy-load-tags-cache srcdir)
- (let ((hfy-page-header 'rtfm-build-page-header)
- (hfy-page-footer 'rtfm-build-page-footer)
+ (let ((hfy-page-header \\='rtfm-build-page-header)
+ (hfy-page-footer \\='rtfm-build-page-footer)
(rtfm-section section)
(hfy-index-file \"index\"))
(htmlfontify-run-etags srcdir)
:type '(string))
(defcustom hfy-src-doc-link-style "text-decoration: underline;"
- "String to add to the ‘<style> a’ variant of an htmlfontify CSS class."
+ "String to add to the `<style> a' variant of an htmlfontify CSS class."
:group 'htmlfontify
:tag "src-doc-link-style"
:type '(string))
(defcustom hfy-src-doc-link-unstyle " text-decoration: none;"
- "Regex to remove from the ‘<style> a’ variant of an htmlfontify CSS class."
+ "Regex to remove from the `<style> a' variant of an htmlfontify CSS class."
:group 'htmlfontify
:tag "src-doc-link-unstyle"
:type '(string))
(defun ibuffer (&optional other-window-p name qualifiers noselect
shrink filter-groups formats)
"Begin using Ibuffer to edit a list of buffers.
-Type ‘h’ after entering ibuffer for more information.
+Type `h' after entering ibuffer for more information.
All arguments are optional.
OTHER-WINDOW-P says to use another window.
'("\\` ")
"List of regexps or functions matching buffer names to ignore.
For example, traditional behavior is not to list buffers whose names begin
-with a space, for which the regexp is ‘\\\\=` ’. See the source file for
+with a space, for which the regexp is `\\\\=` '. See the source file for
example functions that filter buffer names."
:type '(repeat (choice regexp function))
:group 'ido)
'("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./")
"List of regexps or functions matching file names to ignore.
For example, traditional behavior is not to list files whose names begin
-with a #, for which the regexp is ‘\\\\=`#’. See the source file for
+with a #, for which the regexp is `\\\\=`#'. See the source file for
example functions that filter filenames."
:type '(repeat (choice regexp function))
:group 'ido)
use its file extension as image type.
Optional DATA-P non-nil means SOURCE is a string containing image data."
(when (and (not data-p) (not (stringp source)))
- (error "Invalid image file name ‘%s’" source))
+ (error "Invalid image file name `%s'" source))
(unless type
(setq type (if data-p
(image-type-from-data source)
(image-type-from-file-name source))))
(or type (error "Cannot determine image type")))
(or (memq type (and (boundp 'image-types) image-types))
- (error "Invalid image type ‘%s’" type))
+ (error "Invalid image type `%s'" type))
type)
(when (equal (car (nth 0 nodeinfo)) (or filename Info-current-file))
(insert
(format "* %-20s %s.\n"
- (format-message "*Index for ‘%s’*::" (cdr (nth 0 nodeinfo)))
+ (format "*Index for ‘%s’*::" (cdr (nth 0 nodeinfo)))
(cdr (nth 0 nodeinfo)))))))))
(defun Info-virtual-index (topic)
(Info-goto-node orignode)
(message "")))
(Info-find-node Info-current-file
- (format-message "*Index for ‘%s’*" topic))))
+ (format "*Index for ‘%s’*" topic))))
\f
(add-to-list 'Info-virtual-files
'("\\`\\*Apropos\\*\\'"
(setq nodes (cdr nodes)))
(if nodes
(Info-find-node Info-apropos-file (car (car nodes)))
- (setq nodename (format-message "Index for ‘%s’" string))
+ (setq nodename (format "Index for ‘%s’" string))
(push (list nodename string (Info-apropos-matches string))
Info-apropos-nodes)
(Info-find-node Info-apropos-file nodename)))))
(let ((len (length ccl-code))
(buffer-mag (aref ccl-code 0)))
(cond ((= buffer-mag 0)
- (insert (substitute-command-keys
- "Don’t output anything.\n")))
+ (insert (substitute-command-keys "Don't output anything.\n")))
((= buffer-mag 1)
(insert "Out-buffer must be as large as in-buffer.\n"))
(t
(condition-case nil
(setq ascii-font (x-resolve-font-name pattern))
(error
- (message "Warning: no fonts matching ‘%s’ available" pattern)
+ (message "Warning: no fonts matching `%s' available" pattern)
(aset xlfd-fields index "*")
(setq index (1+ index))))))
(unless ascii-font
\(prefer-coding-system \\='utf-8)"
(interactive "zPrefer coding system: ")
(if (not (and coding-system (coding-system-p coding-system)))
- (error "Invalid coding system ‘%s’" coding-system))
+ (error "Invalid coding system `%s'" coding-system))
(if (memq (coding-system-type coding-system) '(raw-text undecided))
- (error "Can't prefer the coding system ‘%s’" coding-system))
+ (error "Can't prefer the coding system `%s'" coding-system))
(let ((base (coding-system-base coding-system))
(eol-type (coding-system-eol-type coding-system)))
(set-coding-system-priority base)
(set-default-coding-systems base)
(if (called-interactively-p 'interactive)
(or (eq base default-file-name-coding-system)
- (message "The default value of ‘file-name-coding-system’ was not changed because the specified coding system is not suitable for file names.")))))
+ (message "The default value of `file-name-coding-system' was not changed because the specified coding system is not suitable for file names.")))))
(defvar sort-coding-systems-predicate nil
"If non-nil, a predicate function to sort coding systems.
(insert "No default coding systems to try for "
(if (stringp from)
(format "string \"%s\"." from)
- (format-message "buffer ‘%s’." bufname)))
+ (format-message "buffer `%s'." bufname)))
(insert
"These default coding systems were tried to encode"
(if (stringp from)
(concat " \"" (if (> (length from) 10)
(concat (substring from 0 10) "...\"")
(concat from "\"")))
- (format-message " text\nin the buffer ‘%s’" bufname))
+ (format-message " text\nin the buffer `%s'" bufname))
":\n")
(let ((pos (point))
(fill-prefix " "))
(setq auto-cs (car auto-cs))
(display-warning
'mule
- (format "\
-Invalid coding system ‘%s’ is specified
+ (format-message "\
+Invalid coding system `%s' is specified
for the current buffer/file by the %s.
It is highly recommended to fix it before writing to a file."
(car auto-cs)
(if (eq (cdr auto-cs) :coding) ":coding tag"
- (format-message "variable ‘%s’" (cdr auto-cs))))
+ (format-message "variable `%s'" (cdr auto-cs))))
:warning)
(or (yes-or-no-p "Really proceed with writing? ")
(error "Save aborted"))
(unless (or current-input-method (null input-method))
(let ((slot (assoc input-method input-method-alist)))
(if (null slot)
- (error "Can't activate input method ‘%s’" input-method))
+ (error "Can't activate input method `%s'" input-method))
(setq current-input-method-title nil)
(let ((func (nth 2 slot)))
(if (functionp func)
(progn
(require (cdr func))
(apply (car func) input-method (nthcdr 5 slot)))
- (error "Can't activate input method ‘%s’" input-method))))
+ (error "Can't activate input method `%s'" input-method))))
(setq current-input-method input-method)
(or (stringp current-input-method-title)
(setq current-input-method-title (nth 3 slot)))
(interactive "P\np")
(if toggle-input-method-active
- (error "Recursive use of ‘toggle-input-method’"))
+ (error "Recursive use of `toggle-input-method'"))
(if (and current-input-method (not arg))
(deactivate-input-method)
(let ((toggle-input-method-active t)
(with-output-to-temp-buffer (help-buffer)
(let ((elt (assoc input-method input-method-alist)))
(princ (format-message
- "Input method: %s (‘%s’ in mode line) for %s\n %s\n"
+ "Input method: %s (`%s' in mode line) for %s\n %s\n"
input-method (nth 3 elt) (nth 1 elt) (nth 4 elt))))))))))
(defun describe-current-input-method ()
(if (and (symbolp describe-current-input-method-function)
(fboundp describe-current-input-method-function))
(funcall describe-current-input-method-function)
- (message "No way to describe the current input method ‘%s’"
+ (message "No way to describe the current input method `%s'"
current-input-method)
(ding))
(error "No input method is activated now")))
(search-backward (symbol-name (car l)))
(help-xref-button 0 'help-coding-system (car l))
(goto-char (point-max))
- (insert " (‘"
+ (insert (substitute-command-keys " (`")
(coding-system-mnemonic (car l))
- "’ in mode line):\n\t"
+ (substitute-command-keys "' in mode line):\n\t")
(substitute-command-keys
(coding-system-doc-string (car l)))
"\n")
(dolist (script '(devanagari sanskrit bengali tamil telugu assamese
oriya kannada malayalam gujarati punjabi))
(define-charset (intern (format "%s-cdac" script))
- (format-message
- "Glyphs of %s script for CDAC font. Subset of ‘indian-glyph’."
+ (format
+ "Glyphs of %s script for CDAC font. Subset of `indian-glyph'."
(capitalize (symbol-name script)))
:short-name (format "CDAC %s glyphs" (capitalize (symbol-name script)))
:supplementary-p t
(dolist (script '(devanagari bengali punjabi gujarati
oriya tamil telugu kannada malayalam))
(define-charset (intern (format "%s-akruti" script))
- (format-message
- "Glyphs of %s script for AKRUTI font. Subset of ‘indian-glyph’."
+ (format
+ "Glyphs of %s script for AKRUTI font. Subset of `indian-glyph'."
(capitalize (symbol-name script)))
:short-name (format "AKRUTI %s glyphs" (capitalize (symbol-name script)))
:supplementary-p t
(let ((char (charset-iso-final-char charset)))
(when (> char 0)
(insert "Final char of ISO2022 designation sequence: ")
- (insert (format-message "‘%c’\n" char))))
+ (insert (format-message "`%c'\n" char))))
(let (aliases)
(dolist (c charset-list)
(if (and (not (eq c charset))
# MNEMONIC-LETTER -- CODING-SYSTEM-NAME
# DOC-STRING
")
- (princ "\
+ (princ (substitute-command-keys "\
#########################
## LIST OF CODING SYSTEMS
## Each line corresponds to one coding system
## 0
## POST-READ-CONVERSION, PRE-WRITE-CONVERSION = function name to be called
##
-"))
+")))
(dolist (coding-system (sort-coding-systems (coding-system-list 'base-only)))
(if (null arg)
(print-coding-system-briefly coding-system 'tightly)
(save-excursion
(goto-char (point-min))
(while (re-search-forward
- "^ \\([^ ]+\\) (‘.*’ in mode line)$" nil t)
+ (substitute-command-keys "^ \\([^ ]+\\) (`.*' in mode line)$")
+ nil t)
(help-xref-button 1 'help-input-method (match-string 1)))))))
(defun list-input-methods-1 ()
(princ "
No input method is available, perhaps because you have not
installed LEIM (Libraries of Emacs Input Methods).")
- (princ "LANGUAGE\n NAME (‘TITLE’ in mode line)\n")
+ (princ (substitute-command-keys
+ "LANGUAGE\n NAME (`TITLE' in mode line)\n"))
(princ " SHORT-DESCRIPTION\n------------------------------\n")
(setq input-method-alist
(sort input-method-alist
(princ language)
(terpri))
(princ (format-message
- " %s (‘%s’ in mode line)\n %s\n"
+ " %s (`%s' in mode line)\n %s\n"
(car elt)
(let ((title (nth 3 elt)))
(if (and (consp title) (stringp (car title)))
`~/.emacs' za/z/ada/c wczytania wybranych funkcji, na dodatek dopiero
w chwili ich rzeczywistego u/zycia:
- (autoload 'ogonek-jak \"ogonek\")
- (autoload 'ogonek-recode-region \"ogonek\")
- (autoload 'ogonek-prefixify-region \"ogonek\")
- (autoload 'ogonek-deprefixify-region \"ogonek\")
+ (autoload \\='ogonek-jak \"ogonek\")
+ (autoload \\='ogonek-recode-region \"ogonek\")
+ (autoload \\='ogonek-prefixify-region \"ogonek\")
+ (autoload \\='ogonek-deprefixify-region \"ogonek\")
Cz/esto wyst/epuj/ace kombinacje wywo/la/n funkcji mo/zna dla wygody
skr/oci/c i przypisa/c klawiszom. Oto praktyczne przyk/lady:
(defun deprefixify-iso8859-2-region (start end)
(interactive \"*r\")
(ogonek-deprefixify-region start end ?/ \"iso8859-2\"))
- (global-set-key \"\\C-cd\" 'deprefixify-iso8859-2-region) ; ctrl-c d
+ (global-set-key \"\\C-cd\" \\='deprefixify-iso8859-2-region) ; ctrl-c d
(defun mazovia-to-iso8859-2 (start end)
(interactive \"*r\")
(ogonek-recode-region start end \"mazovia\" \"iso8859-2\"))
- (global-set-key \"\\C-cr\" 'mazovia-to-iso8859-2) ; ctrl-c r
+ (global-set-key \"\\C-cr\" \\='mazovia-to-iso8859-2) ; ctrl-c r
(defun prefixify-iso8859-2-region (start end)
(interactive \"*r\")
(ogonek-prefixify-region start end \"iso8859-2\" ?/))
- (global-set-key \"\\C-cp\" 'prefixify-iso8859-2-region) ; ctrl-c p
+ (global-set-key \"\\C-cp\" \\='prefixify-iso8859-2-region) ; ctrl-c p
Ka/zd/a operacj/e przekodowania mo/zna w ca/lo/sci odwo/la/c
przez wykonanie polecenia `undo'.")
"Display `ogonek-informacja' in an auxiliary *ogonek-jak* buffer."
(interactive)
(set-buffer (get-buffer-create " *ogonek-jak*"))
- (insert ogonek-informacja)
+ (insert (substitute-command-keys ogonek-informacja))
(switch-to-buffer " *ogonek-jak*")
(goto-char (point-min)))
to autoload the needed functions, for example by adding the
following lines to your init file:
- (autoload 'ogonek-how \"ogonek\")
- (autoload 'ogonek-recode-region \"ogonek\")
- (autoload 'ogonek-prefixify-region \"ogonek\")
- (autoload 'ogonek-deprefixify-region \"ogonek\")
+ (autoload \\='ogonek-how \"ogonek\")
+ (autoload \\='ogonek-recode-region \"ogonek\")
+ (autoload \\='ogonek-prefixify-region \"ogonek\")
+ (autoload \\='ogonek-deprefixify-region \"ogonek\")
The most frequent function calls can be abbreviated and assigned to
keyboard keys. Here are a few practical examples:
"Display `ogonek-information' in an auxiliary *recode-how* buffer."
(interactive "*")
(set-buffer (get-buffer-create " *ogonek-how*"))
- (insert ogonek-information)
+ (insert (substitute-command-keys ogonek-information))
(switch-to-buffer " *ogonek-how*")
(goto-char (point-min)))
(defun json-read-string ()
"Read the JSON string at point."
(unless (char-equal (json-peek) ?\")
- (signal 'json-string-format (list "doesn’t start with ‘\"’!")))
+ (signal 'json-string-format (list "doesn't start with `\"'!")))
;; Skip over the '"'
(json-advance)
(let ((characters '())
(defun kermit-clean-on ()
"Delete all null characters and ^M's from the kermit output.
Note that another (perhaps better) way to do this is to use the
-command ‘kermit | tr -d '\\015'’."
+command `kermit | tr -d \\='\\015\\=''."
(interactive)
(set-process-filter (get-buffer-process (current-buffer))
'kermit-clean-filter))
"ЯВЕРТЫ Roman transcription
This layout is based on Roman transcription by phonemic resemblance.
-When preceded by a ‘/’, the second and the third rows (number key row) change
+When preceded by a `/', the second and the third rows (number key row) change
as follows.
keytop | Q W E R T Y U I O P A S D
This phonetic layout replaces all the Latin letters with Bulgarian
\(Cyrillic) letters based on similarities in their pronunciation or look.
-Note that, since the letters ‘щ’, ‘ь’, ‘ю’ and ‘Ñ’ are attached to the
-‘]’, ‘\’, ‘\\=`’ and ‘[’ keys respectively, Caps Lock does not affect them."
+Note that, since the letters `щ', `ÑŒ', `ÑŽ' and `Ñ' are attached to the
+`]', `\', `\\=`' and `[' keys respectively, Caps Lock does not affect them."
nil t t t t nil nil nil nil nil t)
;; Ю 1! 2@ 3â„– 4$ 5% 6€ 7§ 8* 9( 0) -– =+ ÑŒÑ
Based on SI-1452 keyboard layout.
Only Hebrew-related characters are considered.
- ‘q’ is used to switch levels instead of Alt-Gr.
- Maqaaf (־) is mapped to ‘/פ’.
+ `q' is used to switch levels instead of Alt-Gr.
+ Maqaaf (־) is mapped to `/פ'.
" nil t t t t nil nil nil nil nil t)
(quail-define-rules
Based on latest draft of SI-1452 keyboard layout.
Only Hebrew-related characters are considered.
- ‘\\=`’ is used to switch levels instead of Alt-Gr.
-Geresh is mapped to ‘\\=`k’.
+ `\\=`' is used to switch levels instead of Alt-Gr.
+Geresh is mapped to `\\=`k'.
" nil t t t t nil nil nil nil nil t)
(quail-define-rules
Based on Society of Biblical Literature's Tiro keyboard layout.
Not suitable for modern Hebrew input.
- ‘q’ is used to switch levels instead of Alt-Gr.
- Combining dot above (Called Masora dot) (̇) is mapped to ‘q1’.
+ `q' is used to switch levels instead of Alt-Gr.
+ Combining dot above (Called Masora dot) (̇) is mapped to `q1'.
" nil t t t t nil nil nil nil nil t)
(quail-define-rules
Based on Society of Biblical Literature's SIL keyboard layout.
Phonetic and not suitable for modern Hebrew input.
- ‘\\=`’ is used to switch levels instead of Alt-Gr.
- Euro Sign (€) is mapped to ‘Z’.
+ `\\=`' is used to switch levels instead of Alt-Gr.
+ Euro Sign (€) is mapped to `Z'.
" nil t t t t nil nil nil nil nil t)
(quail-define-rules
"LaTeX-like input method for many characters.
These characters are from the charsets used by the `utf-8' coding
system, including many technical ones. Examples:
- \\'a -> á \\`{a} -> Ã
+ \\\\='a -> á \\\\=`{a} -> Ã
\\pi -> π \\int -> ∫ ^1 -> ¹"
'(("\t" . quail-completion))
("\\H" ?Ì‹)
("\\H{}" ?Ë)
("\\U{o}" ?Å‘) ("\\Uo" ?Å‘) ;; FIXME: Was it just a typo?
-
+
("\\OE" ?Å’) ;; ("{\\OE}" ?Å’)
("\\oe" ?Å“) ;; ("{\\oe}" ?Å“)
(name (if (match-end 1) (capitalize basename) (downcase basename))))
(concat "^" (if (> (length name) 1) "\\") name)))
"\\`MODIFIER LETTER \\(?:SMALL\\|CAPITA\\(L\\)\\) \\([[:ascii:]]+\\)\\'")
-
+
;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name))))
;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'")
;; ("^\\1" "\\`MODIFIER LETTER CAPITAL \\(.\\)\\'")
("\\defs" ?≙) ; per fuzz/zed
;; ("\\sqrt[3]" ?∛)
("\\llbracket" ?\〚) ; stmaryrd
- ("\\rrbracket" ?\〛)
+ ("\\rrbracket" ?\〛)
;; ("\\lbag" ?\〚) ; fuzz
;; ("\\rbag" ?\〛)
("\\ldata" ?\《) ; fuzz/zed
"Thai Kesmanee input method with TIS620 keyboard layout
The difference from the ordinal Thai keyboard:
- ‘฿’ and ‘à¹â€™ are assigned to ‘\\’ and ‘|’ respectively,
- ‘ฃ’ and ‘ฅ’ are assigned to ‘\\=`’ and ‘~’ respectively,
- Don't know where to assign characters ‘๚’ and ‘๛’."
+ `฿' and `à¹' are assigned to `\\' and `|' respectively,
+ `ฃ' and `ฅ' are assigned to `\\=`' and `~' respectively,
+ Don't know where to assign characters `๚' and `๛'."
nil t t t t nil nil nil nil nil t)
(thai-generate-quail-map
and to get da-drag in -r-d, -l-d .)
| : Special signs.
- Tsheg is assigned to SPC. Space is assigned to period ‘.’.
+ Tsheg is assigned to SPC. Space is assigned to period `.'.
"
nil nil nil nil nil nil nil nil
'quail-tibetan-update-translation)
+---------------------------------------------+
|zཞ|xཟ|cའ|vཡ|bར|nལ|mཤ|,ས|.ཧ|/ཨ|
+---------------------------------------+
- The key ‘h’ is used for consonant stacking.
+ The key `h' is used for consonant stacking.
[SHIFTED]
DIFFERENCE FROM THE ORIGINAL TIBKEY:
- 1. Vowel ‘a’ should be typed explicitly by the key ‘A’.
+ 1. Vowel `a' should be typed explicitly by the key `A'.
This is really inconvenient. But to make the coding
scheme clear, it is desirable to have an explicit
- vowel sign for ‘a’.
+ vowel sign for `a'.
2. Tsheg is assigned to SPC key. You can input a space
- by typing ‘>’.
+ by typing `>'.
4. To avoid the default stacking ö„» and to obtain གཡ,
- type ‘E’ instead of ‘v’ (=ཡ).
+ type `E' instead of `v' (=ཡ).
3. There are many characters that are not supported in the
current implementation (especially special signs).
I hope I'll complete in a future revision.
8601 dates, you could set:
\(setq ls-lisp-format-time-list
- '(\"%Y-%m-%d %H:%M\"
+ \\='(\"%Y-%m-%d %H:%M\"
\"%Y-%m-%d \"))"
:type '(list (string :tag "Early time format")
(string :tag "Old time format"))
If nil, the prepped message will be shown, for confirmation or
otherwise, in some window in the current frame without resizing
anything. That may or may not display enough of the message to
-distinguish it from others. If set to the symbol ‘queued’, take
+distinguish it from others. If set to the symbol `queued', take
this action only when running the queue. If set to the symbol
-‘immediate’, take this action only when sending immediately. For
+`immediate', take this action only when sending immediately. For
any other non-nil value, take the action in both cases. Even if
you're not confirming the sending of immediate or queued messages,
it can still be interesting to see a lot about them as they are
appropriate address headers in the message. Generally, they will show
up in the list of deduced addresses in the order that the headers
happen to appear (duplicate addresses are eliminated in any case).
-This variable can be set to the symbol ‘first’, in which case the
+This variable can be set to the symbol `first', in which case the
Bcc:/Resent-Bcc: addresses will appear at the beginning in the list;
-or, it can be set to the symbol ‘last’, in which case they will appear
+or, it can be set to the symbol `last', in which case they will appear
at the end of the list.
Why should you care? Well, maybe you don't, and certainly the same
seeing the message again. Some configurations of sendmail, for example,
seem to try to deliver to each addressee at least once, immediately
and serially, so slow SMTP conversations can add up to a delay. There
-is an option for either ‘first’ or ‘last’ because you might have a
+is an option for either `first' or `last' because you might have a
delivery agent that processes the addresses backwards."
:group 'feedmail-headers
:type '(choice (const nil)
"If non-nil and the email has no Sender: header, use this value.
May be nil, in which case nothing in particular is done with respect
to Sender: lines. By design, will not replace an existing Sender:
-line, but you can achieve that with a fiddle-plex 'replace action.
+line, but you can achieve that with a fiddle-plex replace action.
NB: it makes no sense to use the value t since there is no sensible
default for Sender:.
feedmail FQM message file from a queue. You could use something like
this:
-\(setq auto-mode-alist \(cons \'\(\"\\\\.fqm$\" . feedmail-vm-mail-mode\) auto-mode-alist\)\)
+\(setq auto-mode-alist \(cons \\='\(\"\\\\.fqm$\" . feedmail-vm-mail-mode\) auto-mode-alist\)\)
"
(feedmail-say-debug ">in-> feedmail-vm-mail-mode")
(let ((the-buf (current-buffer)))
;; the handler for the condition-case
(error (setq messages-skipped (1+ messages-skipped))
(ding t)
- (message "FQM: Trapped ‘%s’, message left in queue." (car signal-stuff))
+ (message "FQM: Trapped `%s', message left in queue." (car signal-stuff))
(sit-for 3)
(message "FQM: Trap details: \"%s\""
(mapconcat 'identity (cdr signal-stuff) "\" \""))
The value might look like this:
- '(remote-shell-program \"HOST\" \"-nl\" \"USER\" \"COMMAND\")
+ (remote-shell-program \"HOST\" \"-nl\" \"USER\" \"COMMAND\")
or like this:
- '(remote-shell-program \"HOST\" \"-n\" \"COMMAND '^\" pattern \"'\")"
+ (remote-shell-program \"HOST\" \"-n\" \"COMMAND \\='^\" pattern \"\\='\")"
:type 'sexp
:group 'mailalias)
(put 'mail-directory-process 'risky-local-variable t)
mail-aliases))
(if (consp mail-local-names)
mail-local-names)
- (or directory
+ (or directory
(when (consp mail-directory-names)
mail-directory-names)))
(lambda (a b)
;; describes 'mailto:'
(defconst rfc2368-mailto-scheme-index 1
- "Describes the ‘mailto:’ portion of the url.")
+ "Describes the `mailto:' portion of the url.")
;; i'm going to call this part the 'prequery'
(defconst rfc2368-mailto-prequery-index 2
- "Describes the portion of the url between ‘mailto:’ and ‘?’.")
+ "Describes the portion of the url between `mailto:' and `?'.")
;; i'm going to call this part the 'query'
(defconst rfc2368-mailto-query-index 4
- "Describes the portion of the url after ‘?’.")
+ "Describes the portion of the url after `?'.")
(defun rfc2368-unhexify-string (string)
- "Unhexify STRING -- e.g. ‘hello%20there’ -> ‘hello there’."
+ "Unhexify STRING -- e.g. `hello%20there' -> `hello there'."
(replace-regexp-in-string "%[[:xdigit:]]\\{2\\}"
(lambda (match)
(string (string-to-number (substring match 1)
;; Query the user.
(with-temp-buffer
(rename-buffer "*Emacs Mail Setup Help*" t)
- (insert "\
+ (insert (substitute-command-keys "\
Emacs is about to send an email message, but it has not been
configured for sending email. To tell Emacs how to send email:
- - Type `"
+ - Type `")
(propertize "mail client" 'face 'bold)
- "' to start your default email client and
- pass it the message text.\n\n")
+ (substitute-command-keys "\
+' to start your default email client and
+ pass it the message text.\n\n"))
(and sendmail-program
(executable-find sendmail-program)
- (insert "\
- - Type `"
+ (insert (substitute-command-keys "\
+ - Type `")
(propertize "transport" 'face 'bold)
- "' to invoke the system's mail transport agent
- (the `"
+ (substitute-command-keys "\
+' to invoke the system's mail transport agent
+ (the `")
sendmail-program
- "' program).\n\n"))
- (insert "\
- - Type `"
+ (substitute-command-keys "' program).\n\n")))
+ (insert (substitute-command-keys "\
+ - Type `")
(propertize "smtp" 'face 'bold)
- "' to send mail directly to an \"outgoing mail\" server.
+ (substitute-command-keys "' to send mail directly to an \"outgoing mail\" server.
(Emacs may prompt you for SMTP settings).
Emacs will record your selection and will use it thereafter.
- To change it later, customize the option `send-mail-function'.\n")
+ To change it later, customize the option `send-mail-function'.\n"))
(goto-char (point-min))
(display-buffer (current-buffer))
(let ((completion-ignore-case t))
"Manpage cleaning filter command phrases.
This variable contains a list of the following form:
-'((command-string phrase-string*)*)
+ ((command-string phrase-string*)*)
Each phrase-string is concatenated onto the command-string to form a
command filter. The (standard) output (and standard error) of the Un*x
Default is \"replgroupcomps\".
This file is used to form replies to the sender and all recipients of
-a message. Only used if ‘(mh-variant-p 'nmh)’ is non-nil.
+a message. Only used if (mh-variant-p \\='nmh) is non-nil.
If not an absolute file name, the file is searched for first in the
user's MH directory, then in the system MH lib directory.")
(let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
(image-load-path (cons (car load-path)
- (when (boundp 'image-load-path)
+ (when (boundp \\='image-load-path)
image-load-path))))
(mh-tool-bar-folder-buttons-init))"
(unless library (error "No library specified"))
This option is consulted when a prefix argument is used with
\\[mh-sort-folder]. Normally default arguments to \"sortm\" are
specified in the MH profile. This option may be used to provide
-an alternate view. For example, ‘(\"-nolimit\" \"-textfield\"
-\"subject\")’ is a useful setting."
+an alternate view. For example, (\"-nolimit\" \"-textfield\"
+\"subject\") is a useful setting."
:type '(repeat string)
:group 'mh-folder
:package-version '(MH-E . "8.0"))
origMode
polltime 10
headertime 0
- command emacsclient --eval '(mh-inc-spool-mh-e)'
+ command emacsclient --eval \\='(mh-inc-spool-mh-e)\\='
In XEmacs, the command \"gnuclient\" is used in a similar
fashion."
"Read and return a sequence name.
Prompt with PROMPT, raise an error if the sequence is empty and
the NOT-EMPTY flag is non-nil, and supply an optional DEFAULT
-sequence. A reply of ‘%’ defaults to the first sequence
+sequence. A reply of `%' defaults to the first sequence
containing the current message."
(let* ((input (completing-read (format "%s sequence%s: " prompt
(if default
"Parse LINE to generate folder name, unseen messages and total messages.
If CURRENT-FOLDER is non-nil then it contains the current folder
name and it is used to avoid problems in corner cases involving
-folders whose names end with a ‘+’ character."
+folders whose names end with a `+' character."
(with-temp-buffer
(insert line)
(goto-char (point-max))
return-nil-if-folder-empty)
"Normalizes FOLDER name.
-Makes sure that two ‘/’ characters never occur next to each
-other. Also all occurrences of ‘..’ and ‘.’ are suitably
+Makes sure that two `/' characters never occur next to each
+other. Also all occurrences of `..' and `.' are suitably
processed. So \"+inbox/../news\" will be normalized to \"+news\".
-If optional argument EMPTY-STRING-OKAY is nil then a ‘+’ is added
+If optional argument EMPTY-STRING-OKAY is nil then a `+' is added
at the front if FOLDER lacks one. If non-nil and FOLDER is the
empty string then nothing is added.
If optional argument DONT-REMOVE-TRAILING-SLASH is non-nil then a
-trailing ‘/’ if present is retained (if present), otherwise it is
+trailing `/' if present is retained (if present), otherwise it is
removed.
If optional argument RETURN-NIL-IF-FOLDER-EMPTY is non-nil, then
return nil if FOLDER is \"\" or \"+\". This is useful when
-normalizing the folder for the ‘folders’ command which displays
+normalizing the folder for the `folders' command which displays
the directories in / if passed \"+\". This is usually not
desired. If this argument is non-nil, then EMPTY-STRING-OKAY has
no effect."
"Drag out a secondary selection, then paste it at the current point.
To test this function, evaluate:
- (global-set-key [M-down-mouse-1] 'mouse-drag-secondary-pasting)
+ (global-set-key [M-down-mouse-1] \\='mouse-drag-secondary-pasting)
put the point at one place, then click and drag over some other region."
(interactive "e")
;; Work-around: We see and react to each part of a multi-click event
hemisphere you're in.)
To test this function, evaluate:
- (global-set-key [down-mouse-2] 'mouse-drag-throw)"
+ (global-set-key [down-mouse-2] \\='mouse-drag-throw)"
(interactive "e")
;; we want to do save-selected-window, but that requires 19.29
(let* ((start-posn (event-start start-event))
middle button in Tk text widgets.
To test this function, evaluate:
- (global-set-key [down-mouse-2] 'mouse-drag-drag)"
+ (global-set-key [down-mouse-2] \\='mouse-drag-drag)"
(interactive "e")
;; we want to do save-selected-window, but that requires 19.29
(let* ((start-posn (event-start start-event))
(describe-minor-mode-completion-table-for-indicator))))
(let* ((minor-mode (lookup-minor-mode-from-indicator indicator))
(mm-fun (or (get minor-mode :minor-mode-function) minor-mode)))
- (unless minor-mode (error "Cannot find minor mode for ‘%s’" indicator))
+ (unless minor-mode (error "Cannot find minor mode for `%s'" indicator))
(let* ((map (cdr-safe (assq minor-mode minor-mode-map-alist)))
(menu (and (keymapp map) (lookup-key map [menu-bar]))))
(setq menu
(defun mpc--proc-connect (host)
(let ((port 6600)
+ local
pass)
(when (string-match "\\`\\(?:\\(.*\\)@\\)?\\(.*?\\)\\(?::\\(.*\\)\\)?\\'"
(if (string-match "[^[:digit:]]" v)
(string-to-number v)
v)))))
+ (when (string-prefix-p "/" host) ;FIXME: Use file-name-absolute-p?
+ (setq local t))
(mpc--debug "Connecting to %s:%s..." host port)
(with-current-buffer (get-buffer-create (format " *mpc-%s:%s*" host port))
(let* ((coding-system-for-read 'utf-8-unix)
(coding-system-for-write 'utf-8-unix)
(proc (condition-case err
- (open-network-stream "MPC" (current-buffer) host port)
+ (make-network-process :name "MPC" :buffer (current-buffer)
+ :host (unless local host)
+ :service (if local host port)
+ :family (if local 'local))
(error (user-error (error-message-string err))))))
(when (processp mpc-proc)
;; Inherit the properties of the previous connection.
(completing-read "Rename playlist: "
(mpc-cmd-list 'Playlist)
nil 'require-match)))
- (newname (read-string (format-message "Rename ‘%s’ to: " oldname))))
+ (newname (read-string (format-message "Rename `%s' to: " oldname))))
(if (zerop (length newname))
(error "Aborted")
(list oldname newname))))
(interactive
(progn
(if current-prefix-arg
+ ;; FIXME: We should provide some completion here, especially for the
+ ;; case where the user specifies a local socket/file name.
(setq mpc-host (read-string "MPD host and port: " nil nil mpc-host)))
nil))
(let* ((song-buf (mpc-songs-buf))
(error (unless msb--error
(setq msb--error
(format-message
- "In msb-menu-cond, error for buffer ‘%s’."
+ "In msb-menu-cond, error for buffer `%s'."
(buffer-name buffer)))
(error "%s" msb--error))))))
(format "%s %s \"%s\"" ; remsh -l USER does not work well
; on a hp-ux machine I tried
remote-shell-program host command))
- (ange-ftp-message "Remote command ‘%s’ ..." command)
+ (ange-ftp-message "Remote command `%s' ..." command)
;; Cannot call ange-ftp-real-dired-run-shell-command here as it
;; would prepend "cd default-directory" --- which bombs because
;; default-directory is in ange-ftp syntax for remote file names.
(defcustom ange-ftp-bs2000-special-prefix
"X"
- "Prefix used for filenames starting with ‘#’ or ‘@’."
+ "Prefix used for filenames starting with `#' or `@'."
:group 'ange-ftp
:type 'string)
address to an HTTP URL:
(setq browse-url-filename-alist
- '((\"/webmaster@webserver:/home/www/html/\" .
+ \\='((\"/webmaster@webserver:/home/www/html/\" .
\"http://www.acme.co.uk/\")
(\"^/\\(ftp@\\|anonymous@\\)?\\([^:]+\\):/*\" . \"ftp://\\2/\")
(\"^/\\([^:@]+@\\)?\\([^:]+\\):/*\" . \"ftp://\\1\\2/\")
(setq user (or imap-username
(read-from-minibuffer
(format-message
- "imap: username for %s (using stream ‘%s’): "
+ "imap: username for %s (using stream `%s'): "
imap-server imap-stream)
(or user imap-default-user))))
(setq passwd
(or imap-password
(read-passwd
(format-message
- "imap: password for %s@%s (using authenticator ‘%s’): "
+ "imap: password for %s@%s (using authenticator `%s'): "
user imap-server imap-auth))))
(when (and user passwd)
(if (funcall loginfunc user passwd)
(concat "\n\n" (make-string 65 ?=)
"\nYou can now customize your saved Mairix searches by modifying\n\
the variable mairix-saved-searches. Don't forget to save your\nchanges \
-in your .emacs by pressing ‘Save for Future Sessions’.\n"
+in your .emacs by pressing `Save for Future Sessions'.\n"
(make-string 65 ?=) "\n")))
(autoload 'mail-strip-quoted-names "mail-utils")
" ^substring= to match the substring at the beginning of a word.\n"))
(widget-insert
(format-message
- "Whitespace will be converted to ‘,’ (i.e. AND). Use ‘/’ for OR.\n\n"))
+ "Whitespace will be converted to `,' (i.e. AND). Use `/' for OR.\n\n"))
(setq mairix-widgets (mairix-widget-build-editable-fields values))
(when (member 'flags mairix-widget-other)
(widget-insert "\nFlags:\n Seen: ")
newsticker--error-headline
(format-message
(concat "%s: Newsticker could not retrieve news from %s.\n"
- "Return status: ‘%s’\n"
- "Command was ‘%s’")
+ "Return status: `%s'\n"
+ "Command was `%s'")
(format-time-string "%A, %H:%M")
feed-name event command)
""
(file-exists-p newsticker-groups-filename)
(y-or-n-p
(format-message
- (concat "Obsolete variable ‘newsticker-groups-filename’ "
+ (concat "Obsolete variable `newsticker-groups-filename' "
"points to existing file \"%s\".\n"
"Read it? ")
newsticker-groups-filename))
(file-exists-p newsticker-groups-filename)
(y-or-n-p (format-message
(concat "Delete the file \"%s\",\nto which the obsolete "
- "variable ‘newsticker-groups-filename’ points ? ")
+ "variable `newsticker-groups-filename' points ? ")
newsticker-groups-filename))
(delete-file newsticker-groups-filename))
(when buf
;; Copyright (C) 2001, 2007-2015 Free Software Foundation, Inc.
;; Author: Taro Kawagishi <tarok@transpulse.org>
-;; Keywords: NTLM, SASL
-;; Version: 1.00
+;; Maintainer: Thomas Fitzsimmons <fitzsim@fitzsim.org>
+;; Keywords: NTLM, SASL, comm
+;; Version: 2.00
;; Created: February 2001
;; This file is part of GNU Emacs.
;;; Code:
(require 'md4)
+(require 'hmac-md5)
+(require 'calc)
+
+(defgroup ntlm nil
+ "NTLM (NT LanManager) authentication."
+ :version "25.1"
+ :group 'comm)
+
+(defcustom ntlm-compatibility-level 5
+ "The NTLM compatibility level.
+Ordered from 0, the oldest, least-secure level through 5, the
+newest, most-secure level. Newer servers may reject lower
+levels. At levels 3 through 5, send LMv2 and NTLMv2 responses.
+At levels 0, 1 and 2, send LM and NTLM responses.
+
+In this implementation, levels 0, 1 and 2 are the same (old,
+insecure), and levels 3, 4 and 5 are the same (new, secure). If
+NTLM authentication isn't working at level 5, try level 0. The
+other levels are only present because other clients have six
+levels."
+ :type '(choice (const 0) (const 1) (const 2) (const 3) (const 4) (const 5)))
;;;
;;; NTLM authentication interface functions
`(string-as-unibyte ,string)
string)))
+(defun ntlm-compute-timestamp ()
+ "Compute an NTLMv2 timestamp.
+Return a unibyte string representing the number of tenths of a
+microsecond since January 1, 1601 as a 64-bit little-endian
+signed integer."
+ (let* ((s-to-tenths-of-us "mul(add(lsh($1,16),$2),10000000)")
+ (us-to-tenths-of-us "mul($3,10)")
+ (ps-to-tenths-of-us "idiv($4,100000)")
+ (tenths-of-us-since-jan-1-1601
+ (apply 'calc-eval (concat "add(add(add("
+ s-to-tenths-of-us ","
+ us-to-tenths-of-us "),"
+ ps-to-tenths-of-us "),"
+ ;; tenths of microseconds between
+ ;; 1601-01-01 and 1970-01-01
+ "116444736000000000)")
+ ;; add trailing zeros to support old current-time formats
+ 'rawnum (append (current-time) '(0 0))))
+ result-bytes)
+ (dotimes (byte 8)
+ (push (calc-eval "and($1,16#FF)" 'rawnum tenths-of-us-since-jan-1-1601)
+ result-bytes)
+ (setq tenths-of-us-since-jan-1-1601
+ (calc-eval "rsh($1,8,64)" 'rawnum tenths-of-us-since-jan-1-1601)))
+ (apply 'unibyte-string (nreverse result-bytes))))
+
+(defun ntlm-generate-nonce ()
+ "Generate a random nonce, not to be used more than once.
+Return a random eight byte unibyte string."
+ (unibyte-string
+ (random 256) (random 256) (random 256) (random 256)
+ (random 256) (random 256) (random 256) (random 256)))
+
(defun ntlm-build-auth-response (challenge user password-hashes)
"Return the response string to a challenge string CHALLENGE given by
the NTLM based server for the user USER and the password hash list
uDomain-len uDomain-offs
;; response struct and its fields
lmRespData ;lmRespData, 24 bytes
- ntRespData ;ntRespData, 24 bytes
+ ntRespData ;ntRespData, variable length
domain ;ascii domain string
- lu ld off-lm off-nt off-d off-u off-w off-s)
+ lu ld ln off-lm off-nt off-d off-u off-w off-s)
;; extract domain string from challenge string
(setq uDomain-len (md4-unpack-int16 (substring uDomain 0 2)))
(setq uDomain-offs (md4-unpack-int32 (substring uDomain 4 8)))
(setq domain (substring user (1+ (match-beginning 0))))
(setq user (substring user 0 (match-beginning 0))))
- ;; check if "negotiate NTLM2 key" flag is set in type 2 message
- (if (not (zerop (logand (aref flags 2) 8)))
- (let (randomString
- sessionHash)
- ;; generate NTLM2 session response data
- (setq randomString (string-make-unibyte
- (concat
- (make-string 1 (random 256))
- (make-string 1 (random 256))
- (make-string 1 (random 256))
- (make-string 1 (random 256))
- (make-string 1 (random 256))
- (make-string 1 (random 256))
- (make-string 1 (random 256))
- (make-string 1 (random 256)))))
- (setq sessionHash (secure-hash 'md5
- (concat challengeData randomString)
- nil nil t))
- (setq sessionHash (substring sessionHash 0 8))
-
- (setq lmRespData (concat randomString (make-string 16 0)))
- (setq ntRespData (ntlm-smb-owf-encrypt
- (cadr password-hashes) sessionHash)))
- (progn
+ (unless (and (integerp ntlm-compatibility-level)
+ (>= ntlm-compatibility-level 0)
+ (<= ntlm-compatibility-level 5))
+ (error "Invalid ntlm-compatibility-level value"))
+ (if (and (>= ntlm-compatibility-level 3)
+ (<= ntlm-compatibility-level 5))
+ ;; extract target information block, if it is present
+ (if (< (cdr uDomain-offs) 48)
+ (error "Failed to find target information block")
+ (let* ((targetInfo-len (md4-unpack-int16 (substring rchallenge
+ 40 42)))
+ (targetInfo-offs (md4-unpack-int32 (substring rchallenge
+ 44 48)))
+ (targetInfo (substring rchallenge
+ (cdr targetInfo-offs)
+ (+ (cdr targetInfo-offs)
+ targetInfo-len)))
+ (upcase-user (upcase (ntlm-ascii2unicode user (length user))))
+ (ntlmv2-hash (hmac-md5 (concat upcase-user
+ (ntlm-ascii2unicode
+ domain (length domain)))
+ (cadr password-hashes)))
+ (nonce (ntlm-generate-nonce))
+ (blob (concat (make-string 2 1)
+ (make-string 2 0) ; blob signature
+ (make-string 4 0) ; reserved value
+ (ntlm-compute-timestamp) ; timestamp
+ nonce ; client nonce
+ (make-string 4 0) ; unknown
+ targetInfo ; target info
+ (make-string 4 0))) ; unknown
+ ;; for reference: LMv2 interim calculation
+ ;; (lm-interim (hmac-md5 (concat challengeData nonce)
+ ;; ntlmv2-hash))
+ (nt-interim (hmac-md5 (concat challengeData blob)
+ ntlmv2-hash)))
+ ;; for reference: LMv2 field, but match other clients that
+ ;; send all zeros
+ ;; (setq lmRespData (concat lm-interim nonce))
+ (setq lmRespData (make-string 24 0))
+ (setq ntRespData (concat nt-interim blob))))
+ ;; compatibility level is 2, 1 or 0
+ ;; level 2 should be treated specially but it's not clear how,
+ ;; so just treat it the same as levels 0 and 1
+ ;; check if "negotiate NTLM2 key" flag is set in type 2 message
+ (if (not (zerop (logand (aref flags 2) 8)))
+ (let (randomString
+ sessionHash)
+ ;; generate NTLM2 session response data
+ (setq randomString (ntlm-generate-nonce))
+ (setq sessionHash (secure-hash 'md5
+ (concat challengeData randomString)
+ nil nil t))
+ (setq sessionHash (substring sessionHash 0 8))
+ (setq lmRespData (concat randomString (make-string 16 0)))
+ (setq ntRespData (ntlm-smb-owf-encrypt
+ (cadr password-hashes) sessionHash)))
;; generate response data
(setq lmRespData
(ntlm-smb-owf-encrypt (car password-hashes) challengeData))
;; get offsets to fields to pack the response struct in a string
(setq lu (length user))
(setq ld (length domain))
+ (setq ln (length ntRespData))
(setq off-lm 64) ;offset to string 'lmResponse
(setq off-nt (+ 64 24)) ;offset to string 'ntResponse
- (setq off-d (+ 64 48)) ;offset to string 'uDomain
- (setq off-u (+ 64 48 (* 2 ld))) ;offset to string 'uUser
- (setq off-w (+ 64 48 (* 2 (+ ld lu)))) ;offset to string 'uWks
- (setq off-s (+ 64 48 (* 2 (+ ld lu lu)))) ;offset to string 'sessionKey
+ (setq off-d (+ 64 24 ln)) ;offset to string 'uDomain
+ (setq off-u (+ 64 24 ln (* 2 ld))) ;offset to string 'uUser
+ (setq off-w (+ 64 24 ln (* 2 (+ ld lu)))) ;offset to string 'uWks
+ (setq off-s (+ 64 24 ln (* 2 (+ ld lu lu)))) ;offset to string 'sessionKey
;; pack the response struct in a string
(concat "NTLMSSP\0" ;response ident field, 8 bytes
(md4-pack-int32 '(0 . 3)) ;response msgType field, 4 bytes
(md4-pack-int32 (cons 0 off-lm)) ;field offset
;; ntResponse field, 8 bytes
- ;;AddBytes(response,ntResponse,ntRespData,24);
- (md4-pack-int16 24) ;len field
- (md4-pack-int16 24) ;maxlen field
+ ;;AddBytes(response,ntResponse,ntRespData,ln);
+ (md4-pack-int16 ln) ;len field
+ (md4-pack-int16 ln) ;maxlen field
(md4-pack-int32 (cons 0 off-nt)) ;field offset
;; uDomain field, 8 bytes
(defun rcirc-complete ()
"Cycle through completions from list of nicks in channel or IRC commands.
-IRC command completion is performed only if ‘/’ is the first input char."
+IRC command completion is performed only if `/' is the first input char."
(interactive)
(unless (rcirc-looking-at-input)
(error "Point not located after rcirc prompt"))
variable."
(interactive (list
(read-from-minibuffer (format-message
- "Arguments for ‘%s’ (hostname first): "
+ "Arguments for `%s' (hostname first): "
(file-name-nondirectory rlogin-program))
nil nil nil 'rlogin-history)
current-prefix-arg))
For example, to retrieve a message named \"foo\" when other
elements named \"foo\" exist in the WSDL you could use:
- (soap-wsdl-get \"foo\" WSDL 'soap-message-p)
+ (soap-wsdl-get \"foo\" WSDL \\='soap-message-p)
If USE-LOCAL-ALIAS-TABLE is not nil, `soap-local-xmlns' will be
used to resolve the namespace alias."
consider trustworthy, e.g.:
\(setq tls-program
- '(\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h\"
+ \\='(\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h\"
\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h --protocols ssl3\"
\"openssl s_client -connect %h:%p -CAfile /etc/ssl/certs/ca-certificates.crt -no_ssl2 -ign_eof\"))"
:type '(choice (const :tag "Always" t)
(erase-buffer)
(let ((proc (start-process (buffer-name) (current-buffer)
\"ssh\" \"-l\" user host \"wc\" \"-c\")))
- (when (memq (process-status proc) '(run open))
+ (when (memq (process-status proc) \\='(run open))
(process-send-string proc (make-string sent ?\\ ))
(process-send-eof proc)
(process-send-eof proc))
(while (not (progn (goto-char (point-min))
(re-search-forward \"\\\\w+\" (point-max) t)))
(accept-process-output proc 1))
- (when (memq (process-status proc) '(run open))
+ (when (memq (process-status proc) \\='(run open))
(setq received (string-to-number (match-string 0)))
(delete-process proc)
(message \"Bytes sent: %s\\tBytes received: %s\" sent received)
for process communication also."
(with-current-buffer (process-buffer proc)
;; FIXME: If there is a gateway process, we need communication
- ;; between several processes. Too complicate to implement, so we
+ ;; between several processes. Too complicated to implement, so we
;; read output from all processes.
(let ((p (if (tramp-get-connection-property proc "gateway" nil) nil proc))
buffer-read-only last-coding-system-used)
With arg, turn Fast Lock mode on if and only if arg is positive and the buffer
is associated with a file. Enable it automatically in your `~/.emacs' by:
- (setq font-lock-support-mode 'fast-lock-mode)
+ (setq font-lock-support-mode \\='fast-lock-mode)
If Fast Lock mode is enabled, and the current buffer does not contain any text
properties, any associated Font Lock cache is used if its timestamp matches the
machines, e.g., on one machine the cache file name has the prefix `#home',
perhaps due to automount, try putting in your `~/.emacs' something like:
- (setq directory-abbrev-alist (cons '(\"^/home/\" . \"/\") directory-abbrev-alist))
+ (setq directory-abbrev-alist (cons \\='(\"^/home/\" . \"/\") directory-abbrev-alist))
Emacs automagically removes the common `/tmp_mnt' automount prefix by default.
(and iswitchb-prompt-newbuffer
(y-or-n-p
(format-message
- "No buffer matching ‘%s’, create one? "
+ "No buffer matching `%s', create one? "
buf)))))
;; then create a new buffer
(progn
(move-to-column (+ landmark-x-offset (* landmark-square-width (1- x)))))
(defun landmark-plot-square (square value)
- "Draw ‘X’, ‘O’ or ‘.’ on SQUARE depending on VALUE, leave point there."
+ "Draw `X', `O' or `.' on SQUARE depending on VALUE, leave point there."
(or (= value 1)
(landmark-goto-square square))
(let ((inhibit-read-only t))
With arg, turn Lazy Lock mode on if and only if arg is positive. Enable it
automatically in your `~/.emacs' by:
- (setq font-lock-support-mode 'lazy-lock-mode)
+ (setq font-lock-support-mode \\='lazy-lock-mode)
For a newer font-lock support mode with similar functionality, see
`jit-lock-mode'. Eventually, Lazy Lock mode will be deprecated in
(forward-line (1- todo-previous-line))
(let ((item (todo-item-string-start)))
(setq todo-previous-answer
- (y-or-n-p (format-message "More important than ‘%s’? " item)))))
+ (y-or-n-p (format-message "More important than `%s'? " item)))))
todo-previous-answer)
(defalias 'todo-ask-p 'todo-more-important-p)
(insert-file-contents output-file-name)))
(set-buffer errors-buffer)
(if (memq status '(stop signal))
- (error "%s exited abnormally: ‘%s’" program exit-status))
+ (error "%s exited abnormally: `%s'" program exit-status))
(if (= 127 exit-status)
(error "%s could not be found" program))))
(if passphrase-with-newline
(pgg-convert-lbt-region (point-min)(point-max) 'LF)
(if (memq status '(stop signal))
- (error "%s exited abnormally: ‘%s’" program exit-status))
+ (error "%s exited abnormally: `%s'" program exit-status))
(if (= 127 exit-status)
(error "%s could not be found" program))
(pgg-convert-lbt-region (point-min)(point-max) 'LF)
(if (memq status '(stop signal))
- (error "%s exited abnormally: ‘%s’" program exit-status))
+ (error "%s exited abnormally: `%s'" program exit-status))
(if (= 127 exit-status)
(error "%s could not be found" program))
used something like this in a major mode which provides symbol
completion:
- (if (featurep 'hippie-exp)
- (set (make-local-variable 'hippie-expand-try-functions-list)
- (cons 'symbol-completion-try-complete
+ (if (featurep \\='hippie-exp)
+ (set (make-local-variable \\='hippie-expand-try-functions-list)
+ (cons \\='symbol-completion-try-complete
hippie-expand-try-functions-list)))"
(when (and symbol-completion-symbol-function
symbol-completion-completions-function)
(set-frame-width (selected-frame) width))
(defun tpu-toggle-newline-and-indent nil
- "Toggle between ‘newline and indent’ and ‘simple newline’."
+ "Toggle between `newline-and-indent' and simple `newline'."
(interactive)
(cond (tpu-newline-and-indent-p
(setq tpu-newline-and-indent-string "")
(if tpu-regexp-p "en" "dis"))))
(defun tpu-regexp-prompt (prompt)
- "Read a string, adding ‘RE ’ to the prompt if tpu-regexp-p is set."
+ "Read a string, adding `RE ' to the prompt if tpu-regexp-p is set."
(let ((re-prompt (concat (if tpu-regexp-p "RE ") prompt)))
(read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist)))
(defun vi-goto-mark (mark-char &optional line-flag)
"Go to marked position or line (if line-flag is given).
-Goto mark ‘@’ means jump into and pop the top mark on the mark ring."
+Goto mark `@' means jump into and pop the top mark on the mark ring."
(cond ((char-equal mark-char last-command-event) ; `` or ''
(exchange-point-and-mark) (if line-flag (back-to-indentation)))
((char-equal mark-char ?@) ; jump and pop mark
(if point
;; taken from `org-open-at-point'
(progn (org-mark-ring-push) (goto-char point) (org-show-context))
- (message "source-code block ‘%s’ not found in this buffer" name))))
+ (message "source-code block `%s' not found in this buffer" name))))
(defun org-babel-find-named-block (name)
"Find a named source-code block.
(if point
;; taken from `org-open-at-point'
(progn (goto-char point) (org-show-context))
- (message "result ‘%s’ not found in this buffer" name))))
+ (message "result `%s' not found in this buffer" name))))
(defun org-babel-find-named-result (name &optional point)
"Find a named result.
"Make true to capitalize begin/end example markers inserted by code blocks.")
(defun org-babel-examplize-region (beg end &optional results-switches)
- "Comment out region using the inline ‘==’ or ‘: ’ org example quote."
+ "Comment out region using the inline `==' or `: ' org example quote."
(interactive "*r")
(let ((chars-between (lambda (b e)
(not (string-match "^[\\s]*$" (buffer-substring b e)))))
"Wrap body in a \"program ... end program\" block if none exists."
(if (string-match "^[ \t]*program[ \t]*.*" (capitalize body))
(let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
- (if vars (error "Cannot use :vars if ‘program’ statement is present"))
+ (if vars (error "Cannot use :vars if `program' statement is present"))
body)
(format "program main\n%s\nend program main\n" body)))
:type 'string)
(defcustom org-babel-python-None-to 'hline
- "Replace ‘None’ in python tables with this before returning."
+ "Replace `None' in python tables with this before returning."
:group 'org-babel
:version "24.4"
:package-version '(Org . "8.0")
;; buffer (marker-buffer id-loc)
;; loc (marker-position id-loc))
;; (move-marker id-loc nil)
- (error "Reference ‘%s’ not found in this buffer" ref))
+ (error "Reference `%s' not found in this buffer" ref))
(cond
(lob-info (setq type 'lob))
(id (setq type 'id))
If the session is unnamed (nil), generate a name.
-If the session is ‘none’, use nil for the session name, and
+If the session is `none', use nil for the session name, and
org-babel-scheme-execute-with-geiser will use a temporary session."
(let ((result
(cond ((not name)
should provide a description for the prefix, like
(setq org-agenda-custom-commands
- '((\"h\" . \"HOME + Name tag searches\") ; describe prefix \"h\"
+ \\='((\"h\" . \"HOME + Name tag searches\") ; describe prefix \"h\"
(\"hl\" tags \"+HOME+Lisa\")
(\"hp\" tags \"+HOME+Peter\")
(\"hk\" tags \"+HOME+Kim\")))"
:type 'boolean)
(defun org-agenda-time-of-day-to-ampm (time)
- "Convert TIME of a string like ‘13:45’ to an AM/PM style time string."
+ "Convert TIME of a string like `13:45' to an AM/PM style time string."
(let* ((hour-number (string-to-number (substring time 0 -3)))
(minute (substring time -2))
(ampm "am"))
For example, to display a 16px horizontal space for Emacs
category, you can use:
- (\"Emacs\" '(space . (:width (16))))"
+ (\"Emacs\" \\='(space . (:width (16))))"
:group 'org-agenda-line-format
:version "24.1"
:type '(alist :key-type (string :tag "Regexp matching category")
:type 'boolean)
(defcustom org-agenda-auto-exclude-function nil
- "A function called with a tag to decide if it is filtered on ‘/ RET’.
+ "A function called with a tag to decide if it is filtered on `/ RET'.
The sole argument to the function, which is called once for each
possible tag, is a string giving the name of the tag. The
function should return either nil if the tag should be included
want this command to be accessible only from plain text files,
use this:
- '((\"p\" ((in-file . \"\\.txt\"))))
+ \\='((\"p\" ((in-file . \"\\.txt\"))))
Here are the available contexts definitions:
You can also bind a key to another agenda custom command
depending on contextual rules.
- '((\"p\" \"q\" ((in-file . \"\\.txt\"))))
+ \\='((\"p\" \"q\" ((in-file . \"\\.txt\"))))
Here it means: in .txt files, use \"p\" as the key for the
agenda command otherwise associated with \"q\". (The command
;; Popup existing buffer
(org-agenda-prepare-window (get-buffer org-agenda-buffer-name)
filter-alist)
- (message "Sticky Agenda buffer, use ‘r’ to refresh")
+ (message "Sticky Agenda buffer, use `r' to refresh")
(or org-agenda-multi (org-agenda-fit-window-to-buffer))
- (throw 'exit "Sticky Agenda buffer, use ‘r’ to refresh"))
+ (throw 'exit "Sticky Agenda buffer, use `r' to refresh"))
(setq org-todo-keywords-for-agenda nil)
(setq org-drawers-for-agenda nil)
(put 'org-agenda-tag-filter :preset-filter
"Hebrew: " (calendar-hebrew-date-string date) " (until sunset)\n"
"Islamic: " (calendar-islamic-date-string date) " (until sunset)\n"
"French: " (calendar-french-date-string date) "\n"
- "Baha'i: " (calendar-bahai-date-string date) " (until sunset)\n"
+ "Bahá’Ã: " (calendar-bahai-date-string date) " (until sunset)\n"
"Mayan: " (calendar-mayan-date-string date) "\n"
"Coptic: " (calendar-coptic-date-string date) "\n"
"Ethiopic: " (calendar-ethiopic-date-string date) "\n"
(:booktitle . "Title of a book, part of which is being cited. See the LaTeX book for how to type titles. For book entries, use the title field instead.")
(:chapter . "A chapter (or section or whatever) number.")
(:crossref . "The database key of the entry being cross referenced.")
- (:edition . "The edition of a book for example, ‘Second’. This should be an ordinal, and should have the first letter capitalized, as shown here; the standard styles convert to lower case when necessary.")
+ (:edition . "The edition of a book for example, 'Second'. This should be an ordinal, and should have the first letter capitalized, as shown here; the standard styles convert to lower case when necessary.")
(:editor . "Name(s) of editor(s), typed as indicated in the LaTeX book. If there is also an author field, then the editor field gives the editor of the book or collection in which the reference appears.")
(:howpublished . "How something strange has been published. The first word should be capitalized.")
(:institution . "The sponsoring institution of a technical report.")
(:school . "The name of the school where a thesis was written.")
(:series . "The name of a series or set of books. When citing an entire book, the title field gives its title and an optional series field gives the name of a series or multi-volume set in which the book is published.")
(:title . "The work’s title, typed as explained in the LaTeX book.")
- (:type . "The type of a technical report for example, ‘Research Note’.")
+ (:type . "The type of a technical report for example, 'Research Note'.")
(:volume . "The volume of a journal or multi-volume book.")
- (:year . "The year of publication or, for an unpublished work, the year it was written. Generally it should consist of four numerals, such as 1984, although the standard styles can handle any year whose last four nonpunctuation characters are numerals, such as ‘(about 1984)’"))
+ (:year . "The year of publication or, for an unpublished work, the year it was written. Generally it should consist of four numerals, such as 1984, although the standard styles can handle any year whose last four nonpunctuation characters are numerals, such as '(about 1984)'"))
"Bibtex fields with descriptions.")
(defvar org-bibtex-entries nil
(defcustom org-bibtex-prefix nil
"Optional prefix for all bibtex property names.
-For example setting to ‘BIB_’ would allow interoperability with fireforg."
+For example setting to `BIB_' would allow interoperability with fireforg."
:group 'org-bibtex
:version "24.1"
:type '(choice
this template to be accessible only from `message-mode' buffers,
use this:
- '((\"c\" ((in-mode . \"message-mode\"))))
+ ((\"c\" ((in-mode . \"message-mode\"))))
Here are the available contexts definitions:
You can also bind a key to another agenda custom command
depending on contextual rules.
- '((\"c\" \"d\" ((in-mode . \"message-mode\"))))
+ ((\"c\" \"d\" ((in-mode . \"message-mode\"))))
Here it means: in `message-mode buffers', use \"c\" as the
key for the capture template otherwise associated with \"d\".
(unless org-clock-notification-was-shown
(setq org-clock-notification-was-shown t)
(org-notify
- (format-message "Task ‘%s’ should be finished by now. (%s)"
+ (format-message "Task `%s' should be finished by now. (%s)"
org-clock-heading org-clock-effort)
org-clock-sound))
(setq org-clock-notification-was-shown nil)))))
clocked back in at the present time.
g/G Indicate that you “got back†X minutes ago. This is quite
- different from ‘k’: it clocks you out from the beginning of
+ different from `k': it clocks you out from the beginning of
the idle period and clock you back in X minutes ago.
s/S Subtract the idle time from the current clock. This is the
(if (and (buffer-file-name)
(y-or-n-p
(format-message
- "Tag ‘%s’ not found. Rebuild table ‘%s/TAGS’ and look again?"
+ "Tag `%s' not found. Rebuild table `%s/TAGS' and look again?"
name
(file-name-directory (buffer-file-name)))))
(org-ctags-rebuild-tags-file-then-find-tag name)
(t
(setq entry (plist-put entry :description
(format-message
- "Unknown ‘%s’ content." type)))))))
+ "Unknown `%s' content." type)))))))
entry))
(provide 'org-feed)
(error "Habit %s has no scheduled date" habit-entry))
(unless scheduled-repeat
(error
- "Habit ‘%s’ has no scheduled repeat period or has an incorrect one"
+ "Habit `%s' has no scheduled repeat period or has an incorrect one"
habit-entry))
(setq sr-days (org-habit-duration-to-days scheduled-repeat))
(unless (> sr-days 0)
(defun org-irc-ellipsify-description (string &optional after)
"Remove unnecessary white space from STRING and add ellipses if necessary.
Strip starting and ending white space from STRING and replace any
-chars that the value AFTER with ‘...’"
+chars that the value AFTER with `...'"
(let* ((after (number-to-string (or after 30)))
(replace-map (list (cons "^[ \t]*" "")
(cons "[ \t]*$" "")
((stringp (nth 2 entry))
(concat (org-mouse-agenda-type (nth 1 entry))
(nth 2 entry)))
- (t "Agenda Command ‘%s’"))
+ (t "Agenda Command `%s'"))
30))))
"--"
["Delete Blank Lines" delete-blank-lines
(save-excursion (org-apply-on-list wrap-fun nil)))))
(defun org-mouse-bolp ()
- "Return true if there only spaces, tabs, and ‘*’ before point.
+ "Return true if there only spaces, tabs, and `*' before point.
This means, between the beginning of line and the point."
(save-excursion
(skip-chars-backward " \t*") (bolp)))
((org-mouse-looking-at ":\\([A-Za-z0-9_]+\\):" "A-Za-z0-9_" -1) ;tags
(popup-menu
`(nil
- [,(format-message "Display ‘%s’" (match-string 1))
+ [,(format-message "Display `%s'" (match-string 1))
(org-tags-view nil ,(match-string 1))]
- [,(format-message "Sparse Tree ‘%s’" (match-string 1))
+ [,(format-message "Sparse Tree `%s'" (match-string 1))
(org-tags-sparse-tree nil ,(match-string 1))]
"--"
,@(org-mouse-tag-menu))))
(goto-char (org-table-begin)))
(defun org-plot/collect-options (&optional params)
- "Collect options from an org-plot ‘#+Plot:’ line.
+ "Collect options from an org-plot `#+Plot:' line.
Accepts an optional property list PARAMS, to which the options
will be added. Returns the resulting property list."
(interactive)
(defun org-protocol-flatten-greedy (param-list &optional strip-path replacement)
"Greedy handlers might receive a list like this from emacsclient:
- '((\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\")
+ ((\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\"))
where \"/dir/\" is the absolute path to emacsclients working directory. This
function transforms it into a flat list using `org-protocol-flatten' and
transforms the elements of that list as follows:
(defun org-protocol-flatten (l)
"Greedy handlers might receive a list like this from emacsclient:
- '( (\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\")
+ ((\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\"))
where \"/dir/\" is the absolute path to emacsclients working directory.
This function transforms it into a flat list."
(if (null l) ()
The location for a browser's bookmark has to look like this:
- javascript:location.href='org-protocol://store-link://'+ \\
+ javascript:location.href=\\='org-protocol://store-link://\\='+ \\
encodeURIComponent(location.href)
- encodeURIComponent(document.title)+'/'+ \\
+ encodeURIComponent(document.title)+\\='/\\='+ \\
Don't use `escape()'! Use `encodeURIComponent()' instead. The title of the page
could contain slashes and the location definitely will.
This function detects an URL, title and optional text, separated
by `/'. The location for a browser's bookmark looks like this:
- javascript:location.href='org-protocol://capture://'+ \\
- encodeURIComponent(location.href)+'/' \\
- encodeURIComponent(document.title)+'/'+ \\
+ javascript:location.href=\\='org-protocol://capture://\\='+ \\
+ encodeURIComponent(location.href)+\\='/\\=' \\
+ encodeURIComponent(document.title)+\\='/\\='+ \\
encodeURIComponent(window.getSelection())
By default, it uses the character `org-protocol-default-template-key',
which should be associated with a template in `org-capture-templates'.
But you may prepend the encoded URL with a character and a slash like so:
- javascript:location.href='org-protocol://capture://b/'+ ...
+ javascript:location.href=\\='org-protocol://capture://b/\\='+ ...
Now template ?b will be used."
(if (and (boundp 'org-stored-links)
The location for a browser's bookmark should look like this:
- javascript:location.href='org-protocol://open-source://'+ \\
+ javascript:location.href=\\='org-protocol://open-source://\\='+ \\
encodeURIComponent(location.href)"
;; As we enter this function for a match on our protocol, the return value
;; defaults to nil.
(const reorganize-frame)))
(defvar org-src-mode-hook nil
- "Hook run after Org switched a source code snippet to its Emacs mode.
+ "Hook run after Org switched a source code snippet to its Emacs mode.
This hook will run
-- when editing a source code snippet with \"C-c '\".
+- when editing a source code snippet with `\\[org-src-mode-map]'.
- When formatting a source code snippet for export with htmlize.
You may want to use this hook for example to turn off `outline-minor-mode'
(define-minor-mode org-src-mode
"Minor mode for language major mode buffers generated by org.
This minor mode is turned on in two situations:
-- when editing a source code snippet with \"C-c '\".
+- when editing a source code snippet with `\\[org-src-mode-map]'.
- When formatting a source code snippet for export with htmlize.
There is a mode hook, and keybindings for `org-edit-src-exit' and
`org-edit-src-save'")
SEPARATOR specifies the field separator in the lines. It can have the
following values:
-'(4) Use the comma as a field separator
-'(16) Use a TAB as field separator
+(4) Use the comma as a field separator
+(16) Use a TAB as field separator
integer When a number, use that many spaces as field separator
nil When nil, the command tries to be smart and figure out the
separator in the following way:
(if (eq org-table-use-standard-references t)
(org-table-fedit-toggle-ref-type))
(org-goto-line startline)
- (message "Edit formulas, finish with ‘C-c C-c’ or ‘C-c '’. See menu for more commands.")))
+ (message "%s" "Edit formulas, finish with C-c C-c or C-c '. See menu for more commands.")))
(defun org-table-fedit-post-command ()
(when (not (memq this-command '(lisp-complete-symbol)))
\(dolist (backend val)
\(cond
\((not (load (format \"ox-%s\" backend) t t))
- \(message \"Problems while trying to load export back-end ‘%s’\"
+ \(message \"Problems while trying to load export back-end \\=`%s\\='\"
backend))
\((not (memq backend new-list)) (push backend new-list))))
\(set-default \\='org-export-backends new-list)))
filename matches the regexp. If you want to
use groups here, use shy groups.
- Example: (\"\\.x?html\\'\" . \"firefox %s\")
+ Example: (\"\\.x?html\\\\='\" . \"firefox %s\")
(\"\\(?:xhtml\\|html\\)\" . \"firefox %s\")
to open *.html and *.xhtml with firefox.
In a custom lisp form, you can access the group matches with
(match-string n link).
- Example: (\"\\.pdf::\\(\\d+\\)\\'\" . \"evince -p %1 %s\")
+ Example: (\"\\.pdf::\\(\\d+\\)\\\\='\" . \"evince -p %1 %s\")
to open [[file:document.pdf::5]] with evince at page 5.
`directory' Matches a directory
With a numeric prefix arg of 0, inhibit note taking for the change.
For calling through lisp, arg is also interpreted in the following way:
-'none -> empty state
-\"\"(empty string) -> switch to empty state
-'done -> switch to DONE
-'nextset -> switch to the next set of keywords
-'previousset -> switch to the previous set of keywords
-\"WAITING\" -> switch to the specified keyword, but only if it
- really is a member of `org-todo-keywords'."
+`none' -> empty state
+\"\" (empty string) -> switch to empty state
+`done' -> switch to DONE
+`nextset' -> switch to the next set of keywords
+`previousset' -> switch to the previous set of keywords
+\"WAITING\" -> switch to the specified keyword, but only if it
+ really is a member of `org-todo-keywords'."
(interactive "P")
(if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
(let ((cl (if (eq org-loop-over-headlines-in-active-region 'start-level)
Menu entry for the export dispatcher. It should be a list
like:
- '(KEY DESCRIPTION-OR-ORDINAL ACTION-OR-MENU)
+ (KEY DESCRIPTION-OR-ORDINAL ACTION-OR-MENU)
where :
If it is an alist, associations should follow the
pattern:
- '(KEY DESCRIPTION ACTION)
+ (KEY DESCRIPTION ACTION)
where KEY, DESCRIPTION and ACTION are described above.
Valid values include:
- '(?m \"My Special Back-end\" my-special-export-function)
+ (?m \"My Special Back-end\" my-special-export-function)
or
- '(?l \"Export to LaTeX\"
+ (?l \"Export to LaTeX\"
\(?p \"As PDF file\" org-latex-export-to-pdf)
\(?o \"As PDF file and open\"
\(lambda (a s v b)
or the following, which will be added to the previous
sub-menu,
- '(?l 1
+ (?l 1
\((?B \"As TEX buffer (Beamer)\" org-beamer-export-as-latex)
\(?P \"As PDF file (Beamer)\" org-beamer-export-to-pdf)))
(kill-buffer proc-buffer))))
(org-export-add-to-stack proc-buffer nil p)
(ding)
- (message "Process ‘%s’ exited abnormally" p))
+ (message "Process `%s' exited abnormally" p))
(unless org-export-async-debug
(delete-file ,,temp-file)))))))))))))
;; User Variables:
(defcustom pcmpl-cvs-binary (or (executable-find "cvs") "cvs")
- "The full path of the ‘cvs’ binary."
+ "The full path of the `cvs' binary."
:type 'file
:group 'pcmpl-cvs)
(defun pcmpl-cvs-entries (&optional opers)
"Return the Entries for the current directory.
If OPERS is a list of characters, return entries for which that
-operation character applies, as displayed by ‘cvs -n update’."
+operation character applies, as displayed by `cvs -n update'."
(let* ((arg (pcomplete-arg))
(dir (file-name-as-directory
(or (file-name-directory arg) "")))
:group 'bubbles)
(defun bubbles-set-game-easy ()
- "Set game theme to ‘easy’."
+ "Set game theme to `easy'."
(interactive)
(setq bubbles-game-theme 'easy)
(bubbles))
(defun bubbles-set-game-medium ()
- "Set game theme to ‘medium’."
+ "Set game theme to `medium'."
(interactive)
(setq bubbles-game-theme 'medium)
(bubbles))
(defun bubbles-set-game-difficult ()
- "Set game theme to ‘difficult’."
+ "Set game theme to `difficult'."
(interactive)
(setq bubbles-game-theme 'difficult)
(bubbles))
(defun bubbles-set-game-hard ()
- "Set game theme to ‘hard’."
+ "Set game theme to `hard'."
(interactive)
(setq bubbles-game-theme 'hard)
(bubbles))
(defun bubbles-set-game-userdefined ()
- "Set game theme to ‘user-defined’."
+ "Set game theme to `user-defined'."
(interactive)
(setq bubbles-game-theme 'user-defined)
(bubbles))
(move-to-column (+ gomoku-x-offset (* gomoku-square-width (1- x)))))
(defun gomoku-plot-square (square value)
- "Draw ‘X’, ‘O’ or ‘.’ on SQUARE depending on VALUE, leave point there."
+ "Draw `X', `O' or `.' on SQUARE depending on VALUE, leave point there."
(or (= value 1)
(gomoku-goto-square square))
(let ((inhibit-read-only t))
(unless (bolp)
(insert "\n"))
(insert (current-time-string)
- (format-message "\tBuffer ‘%s’, signal ‘%s’\n"
+ (format-message "\tBuffer `%s', signal `%s'\n"
(buffer-name obuf) (car args)))
(goto-char (point-max))
(insert "\f\n")))))))
:type 'boolean :group 'ada)
(defcustom ada-indent-is-separate t
- "Non-nil means indent ‘is separate’ or ‘is abstract’ if on a single line."
+ "Non-nil means indent `is separate' or `is abstract' if on a single line."
:type 'boolean :group 'ada)
(defcustom ada-indent-record-rel-type 3
- "Indentation for ‘record’ relative to ‘type’ or ‘use’.
+ "Indentation for `record' relative to `type' or `use'.
An example is:
type A is
:group 'ada)
(defcustom ada-use-indent ada-broken-indent
- "Indentation for the lines in a ‘use’ statement.
+ "Indentation for the lines in a `use' statement.
An example is:
use Ada.Text_IO,
:type 'integer :group 'ada)
(defcustom ada-when-indent 3
- "Indentation for ‘when’ relative to ‘exception’ or ‘case’.
+ "Indentation for `when' relative to `exception' or `case'.
An example is:
case A is
:type 'integer :group 'ada)
(defcustom ada-with-indent ada-broken-indent
- "Indentation for the lines in a ‘with’ statement.
+ "Indentation for the lines in a `with' statement.
An example is:
with Ada.Text_IO,
(save-excursion
(goto-char (car match-cons))
(unless (ada-search-ignore-string-comment "when" t opos)
- (error "Missing ‘when’ between ‘case’ and ‘=>’"))
+ (error "Missing `when' between `case' and `=>'"))
(list (save-excursion (back-to-indentation) (point)) 'ada-indent)))
;;
;; case..is..when
(list cur-indent 'ada-broken-indent)))))
(defun ada-get-indent-noindent (orgpoint)
- "Calculate the indentation when point is just before a ‘noindent stmt’.
+ "Calculate the indentation when point is just before a `noindent stmt'.
ORGPOINT is the limit position used in the calculation."
(let ((label 0))
(save-excursion
Moves point to the matching block start."
(ada-goto-matching-start 0)
(unless (looking-at (concat "\\<" keyword "\\>"))
- (error "Matching start is not ‘%s’" keyword)))
+ (error "Matching start is not `%s'" keyword)))
(defun ada-check-defun-name (defun-name)
"Move point to the beginning of a block-start.
Which block depends on the value of NEST-LEVEL, which defaults to zero.
If NOERROR is non-nil, it only returns nil if no matching start was found.
-If GOTOTHEN is non-nil, point moves to the ‘then’ following ‘if’."
+If GOTOTHEN is non-nil, point moves to the `then' following `if'."
(let ((nest-count (if nest-level nest-level 0))
(found nil)
(if pos
(goto-char (car pos))
(error (concat
- "No matching ‘is’ or ‘renames’ for ‘package’ at"
+ "No matching `is' or `renames' for `package' at"
" line "
(number-to-string (count-lines 1 (1+ current)))))))
(unless (looking-at "renames")
((looking-at "do")
(unless (ada-search-ignore-string-comment
"\\<accept\\|return\\>" t)
- (error "Missing ‘accept’ or ‘return’ in front of ‘do’"))))
+ (error "Missing `accept' or `return' in front of `do'"))))
(point))
(if noerror
(defun ada-looking-at-semi-or ()
- "Return t if looking at an ‘or’ following a semicolon."
+ "Return t if looking at an `or' following a semicolon."
(save-excursion
(and (looking-at "\\<or\\>")
(progn
"type\\)\\>"))))))
(defun ada-search-ignore-complex-boolean (regexp backwardp)
- "Search for REGEXP, ignoring comments, strings, ‘and then’, ‘or else’.
+ "Search for REGEXP, ignoring comments, strings, `and then', `or else'.
If BACKWARDP is non-nil, search backward; search forward otherwise."
(let (result)
(while (and (setq result (ada-search-ignore-string-comment regexp backwardp))
(defun ada-move-to-end ()
"Move point to the end of the block around point.
-Moves to ‘begin’ if in a declarative part."
+Moves to `begin' if in a declarative part."
(interactive)
(let ((pos (point))
decl-start)
"If you want to remotely compile, debug and
run your application, specify the name of a
remote machine here. This capability requires
-the ‘rsh’ protocol on the remote machine.")
+the `rsh' protocol on the remote machine.")
(ada-prj-field 'cross_prefix "Prefix used in for the cross tool chain"
"When working on multiple cross targets, it is
most convenient to specify the prefix of the
tool chain here. For instance, on PowerPc
-vxworks, you would enter ‘powerpc-wrs-vxworks-’.
-To use JGNAT, enter ‘j’.")
+vxworks, you would enter `powerpc-wrs-vxworks-'.
+To use JGNAT, enter `j'.")
)
(ada-find-file-in-dir (concat exec-name ".exe") exec-path))))
(if result
result
- (error "‘%s’ not found in path" exec-name))))
+ (error "`%s' not found in path" exec-name))))
(defun ada-initialize-runtime-library (cross-prefix)
"Initialize the variables for the runtime library location.
If point is already at the earliest statement within braces or parens,
this function doesn't move back into any whitespace preceding it; it
-returns 'same in this case.
+returns `same' in this case.
Stop at statement continuation tokens like \"else\", \"catch\",
\"finally\" and the \"while\" in \"do ... while\" if the start point
macros before leaving them.
Return:
-'label if stopped at a label or \"case...:\" or \"default:\";
-'same if stopped at the beginning of the current statement;
-'up if stepped to a containing statement;
-'previous if stepped to a preceding statement;
-'beginning if stepped from a statement continuation clause to
+`label' if stopped at a label or \"case...:\" or \"default:\";
+`same' if stopped at the beginning of the current statement;
+`up' if stepped to a containing statement;
+`previous' if stepped to a preceding statement;
+`beginning' if stepped from a statement continuation clause to
its start clause; or
-'macro if stepped to a macro start.
-Note that 'same and not 'label is returned if stopped at the same
+`macro' if stepped to a macro start.
+Note that `same' and not `label' is returned if stopped at the same
label without crossing the colon character.
LIM may be given to limit the search. If the search hits the limit,
point will be left at the closest following token, or at the start
-position if that is less ('same is returned in this case).
+position if that is less (`same' is returned in this case).
NOERROR turns off error logging to `c-parsing-error'.
operator group, and the cdr is a list of the operator tokens in it.
The operator group types are:
-'prefix Unary prefix operators.
-'postfix Unary postfix operators.
-'postfix-if-paren
+`prefix' Unary prefix operators.
+`postfix' Unary postfix operators.
+`postfix-if-paren'
Unary postfix operators if and only if the chars have
parenthesis syntax.
-'left-assoc Binary left associative operators (i.e. a+b+c means (a+b)+c).
-'right-assoc Binary right associative operators (i.e. a=b=c means a=(b=c)).
-'right-assoc-sequence
+`left-assoc' Binary left associative operators (i.e. a+b+c means (a+b)+c).
+`right-assoc' Binary right associative operators (i.e. a=b=c means a=(b=c)).
+`right-assoc-sequence'
Right associative operator that constitutes of a
sequence of tokens that separate expressions. All the
tokens in the group are in this case taken as
no arguments, and should return one of the following values:
nil -- no determination made, continue checking
- 'stop -- do not insert a newline, and stop checking
+ `stop' -- do not insert a newline, and stop checking
(anything else) -- insert a newline, and stop checking
If every function in the list is called with no determination made,
If your Emacs does not default to `cperl-mode' on Perl files, and you
want it to: put the following into your .emacs file:
- (defalias 'perl-mode 'cperl-mode)
+ (defalias \\='perl-mode \\='cperl-mode)
Get perl5-info from
$CPAN/doc/manual/info/perl5-old/perl5-info.tar.gz
(with-output-to-temp-buffer (concat "*Apropos Members*")
(set-buffer standard-output)
(erase-buffer)
- (insert (format-message "Members matching ‘%s’\n\n" regexp))
+ (insert (format-message "Members matching `%s'\n\n" regexp))
(cl-loop for s in (ebrowse-list-of-matching-members members regexp) do
(cl-loop for info in (gethash s members) do
(ebrowse-draw-file-member-info info))))))
0 - contains the last symbol read from the buffer.
1 - contains the string last displayed in the echo area for variables,
or argument string for functions.
- 2 - 'function if function args, 'variable if variable documentation.")
+ 2 - `function' if function args, `variable' if variable documentation.")
(defun elisp-eldoc-documentation-function ()
"`eldoc-documentation-function' (which see) for Emacs Lisp."
;; \6 is the line to start searching at;
;; \7 is the char to start searching at.
(while (re-search-forward
- "^\\(\\([^\177]+[^-a-zA-Z0-9_+*$:\177]+\\)?\
+ "^\\(\\([^\177]*[^-a-zA-Z0-9_+*$:\177]+\\)?\
\\([-a-zA-Z0-9_+*$?:]+\\)[^-a-zA-Z0-9_+*$?:\177]*\\)\177\
\\(\\([^\n\001]+\\)\001\\)?\\([0-9]+\\)?,\\([0-9]+\\)?\n"
nil t)
(when (symbolp symbs)
(if (boundp symbs)
(setq symbs (symbol-value symbs))
- (insert (format-message "symbol ‘%s’ has no value\n" symbs))
+ (insert (format-message "symbol `%s' has no value\n" symbs))
(setq symbs nil)))
(if (vectorp symbs)
(mapatoms ins-symb symbs)
begin - current line is the first in a continued statement.
end - current line is the last in a continued statement
middle - current line is neither first nor last in a continued statement.
-Comment lines embedded amongst continued lines return 'middle."
+Comment lines embedded amongst continued lines return `middle'."
(let (pcont cont)
(save-excursion
(setq pcont (if (f90-previous-statement) (f90-line-continued))))
nil)))))
(defun flymake-fix-file-name (name)
- "Replace all occurrences of ‘\\’ with ‘/’."
+ "Replace all occurrences of `\\' with `/'."
(when name
(setq name (expand-file-name name))
(setq name (abbreviate-file-name name))
(when (flymake-same-files real-file-name source-file-name)
(setq line-err-info (flymake-ler-set-file line-err-info nil))
(setq err-info-list (flymake-add-err-info err-info-list line-err-info))))
- (flymake-log 3 "parsed ‘%s’, %s line-err-info" (nth idx lines) (if line-err-info "got" "no"))
+ (flymake-log 3 "parsed `%s', %s line-err-info" (nth idx lines) (if line-err-info "got" "no"))
(setq idx (1+ idx)))
err-info-list))
(error
(let* ((err-str
(format-message
- "Failed to launch syntax check process ‘%s’ with args %s: %s"
+ "Failed to launch syntax check process `%s' with args %s: %s"
cmd args (error-message-string err)))
(source-file-name buffer-file-name)
(cleanup-f (flymake-get-cleanup-function source-file-name)))
Amount of extra indentation for text in full-line comments (default 0).
`fortran-comment-indent-style'
How to indent the text in full-line comments. Allowed values are:
- nil don't change the indentation
- fixed indent to `fortran-comment-line-extra-indent' beyond the
+ nil don't change the indentation
+ `fixed' indent to `fortran-comment-line-extra-indent' beyond the
value of either
`fortran-minimum-statement-indent-fixed' (fixed format) or
`fortran-minimum-statement-indent-tab' (TAB format),
depending on the continuation format in use.
- relative indent to `fortran-comment-line-extra-indent' beyond the
+ `relative' indent to `fortran-comment-line-extra-indent' beyond the
indentation for a line of code.
- (default 'fixed)
+ (default `fixed')
`fortran-comment-indent-char'
Single-character string to be inserted instead of space for
full-line comment indentation (default \" \").
(defun gdbmi-bnf-gdb-prompt ()
"Implementation of the following GDB/MI output grammar rule:
gdb-prompt ==>
- '(gdb)' nl
+ `(gdb)' nl
nl ==>
CR | CR-LF"
"Implementation of the following GDB/MI output grammar rule:
result-record ==>
- [ token ] '^' result-class ( ',' result )* nl
+ [ token ] `^' result-class ( `,' result )* nl
token ==>
any sequence of digits."
exec-async-output | status-async-output | notify-async-output
exec-async-output ==>
- [ token ] '*' async-output
+ [ token ] `*' async-output
status-async-output ==>
- [ token ] '+' async-output
+ [ token ] `+' async-output
notify-async-output ==>
- [ token ] '=' async-output
+ [ token ] `=' async-output
async-output ==>
- async-class ( ',' result )* nl"
+ async-class ( `,' result )* nl"
(gdbmi-bnf-result-and-async-record-impl))
console-stream-output | target-stream-output | log-stream-output
console-stream-output ==>
- '~' c-string
+ `~' c-string
target-stream-output ==>
- '@' c-string
+ `@' c-string
log-stream-output ==>
- '&' c-string"
+ `&' c-string"
(when (< gdbmi-bnf-offset (length gud-marker-acc))
(if (and (member (aref gud-marker-acc gdbmi-bnf-offset) '(?~ ?@ ?&))
(string-match (concat "\\([~@&]\\)\\(" gdb--string-regexp "\\)\n")
nil Arrows just move the cursor
t Arrows force the cursor back to the current command line and
walk the history
-'cmdline When the cursor is in the current command line, arrows walk the
+`cmdline' When the cursor is in the current command line, arrows walk the
history. Everywhere else in the buffer, arrows move the cursor."
:group 'idlwave-shell-general-setup
:type '(choice
(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 ‘\"’
+Used for file name completion. Must not contain `\\='', `,' and `\"'
because these are used as separators by IDL."
:group 'idlwave-shell-general-setup
:type 'string)
are:
nil Do not mark the line
-'arrow Use the overlay arrow
-'face Use `idlwave-shell-stop-line-face' to highlight the line.
+`arrow' Use the overlay arrow
+`face' Use `idlwave-shell-stop-line-face' to highlight the line.
t Use what IDLWAVE thinks is best. Will be a face where possible,
otherwise the overlay arrow.
The overlay-arrow has the disadvantage to hide the first chars of a line.
Since many people do not have the main block of IDL programs indented,
-a face highlighting may be better.
-In Emacs 21, the overlay arrow is displayed in a special area and never
-hides any code, so setting this to 'arrow on Emacs 21 sounds like a good idea."
+a face highlighting may be better."
:group 'idlwave-shell-highlighting-and-faces
:type '(choice
(const :tag "No marking" nil)
"Non-nil means, mark breakpoints in the source files.
Valid values are:
nil Do not mark breakpoints.
-'face Highlight line with `idlwave-shell-breakpoint-face'.
-'glyph Red dot at the beginning of line. If the display does not
- support glyphs, will use 'face instead.
-t Glyph when possible, otherwise face (same effect as 'glyph)."
+`face' Highlight line with `idlwave-shell-breakpoint-face'.
+`glyph' Red dot at the beginning of line. If the display does not
+ support glyphs, will use `face' instead.
+t Glyph when possible, otherwise face (same effect as `glyph')."
:group 'idlwave-shell-highlighting-and-faces
:type '(choice
(const :tag "No marking" nil)
(defun idlwave-shell-module-source-query (module &optional type)
"Determine the source file for a given module.
-Query as a function if TYPE set to something beside 'pro."
+Query as a function if TYPE set to something beside `pro'."
(if module
(idlwave-shell-send-command
(format "print,(routine_info('%s',/SOURCE%s)).PATH" module
nil Don't scan any buffers.
t Scan all `idlwave-mode' buffers in the current editing session.
-current Scan only the current buffer, but no other buffers."
+`current' Scan only the current buffer, but no other buffers."
:group 'idlwave-routine-info
:type '(choice
(const :tag "No buffer" nil)
(defcustom idlwave-abbrev-start-char "\\"
"A single character string used to start abbreviations in abbrev mode.
Possible characters to choose from: ~\\=`\%
-or even ‘?’. ‘.’ is not a good choice because it can make structure
+or even `?'. `.' is not a good choice because it can make structure
field names act like abbrevs in certain circumstances.
Changes to this in `idlwave-mode-hook' will have no effect. Instead a user
Possible values are:
0 <=> query for the completion type
-1 <=> 'procedure
-2 <=> 'procedure-keyword
-3 <=> 'function
-4 <=> 'function-keyword
-5 <=> 'procedure-method
-6 <=> 'procedure-method-keyword
-7 <=> 'function-method
-8 <=> 'function-method-keyword
-9 <=> 'class
+1 <=> `procedure'
+2 <=> `procedure-keyword'
+3 <=> `function'
+4 <=> `function-keyword'
+5 <=> `procedure-method'
+6 <=> `procedure-method-keyword'
+7 <=> `function-method'
+8 <=> `function-method-keyword'
+9 <=> `class'
As a special case, the universal argument C-u forces completion of
function names in places where the default would be a keyword.
(defun makefile-browser-insert-continuation ()
"Insert a makefile continuation.
-In the makefile buffer, go to (end-of-line), insert a ‘\\’
+In the makefile buffer, go to (end-of-line), insert a `\\'
character, insert a new blank line, go to that line and indent by one TAB.
This is most useful in the process of creating continued lines when copying
large dependencies from the browser to the client buffer.
(defcustom prolog-parse-mode 'beg-of-clause
"The parse mode used (decides from which point parsing is done).
Legal values:
-'beg-of-line - starts parsing at the beginning of a line, unless the
- previous line ends with a backslash. Fast, but has
- problems detecting multiline /* */ comments.
-'beg-of-clause - starts parsing at the beginning of the current clause.
- Slow, but copes better with /* */ comments."
+`beg-of-line' - starts parsing at the beginning of a line, unless the
+ previous line ends with a backslash. Fast, but has
+ problems detecting multiline /* */ comments.
+`beg-of-clause' - starts parsing at the beginning of the current clause.
+ Slow, but copes better with /* */ comments."
:version "24.1"
:group 'prolog-indentation
:type '(choice (const :value beg-of-line)
Commands:
Tab indents for Prolog; with argument, shifts rest
of expression rigidly with the current line.
-Paragraphs are separated only by blank lines and '%%'. '%'s start comments.
+Paragraphs are separated only by blank lines and `%%'. `%'s start comments.
Return at end of buffer sends line as input.
Return not at end copies rest of line to end and sends it.
(or (python-shell-get-process)
(if interactivep
(user-error
- "Start a Python process first with ‘%s’ or ‘%s’."
+ "Start a Python process first with `%s' or `%s'."
(substitute-command-keys "\\[run-python]")
;; Get the binding.
(key-description
different transformations for the code sent to be evaluated in
the python shell:
1. When optional argument NOMAIN is non-nil everything under an
- \"if __name__ == '__main__'\" block will be removed.
+ \"if __name__ == \\='__main__\\='\" block will be removed.
2. When a subregion of the buffer is sent, it takes care of
appending extra empty lines so tracebacks are correct.
3. When the region sent is a substring of the current buffer, a
(let* ((name (symbol-name name))
(function-name (intern (concat "python-skeleton--" name)))
(msg (format-message
- "Add ‘%s’ clause? " name)))
+ "Add `%s' clause? " name)))
(when (not skel)
(setq skel
`(< ,(format "%s:" name) \n \n
;; work for remote hosts; we suppress the check there.
(unless (or (file-remote-p default-directory)
(executable-find program))
- (error "Unable to locate SQL program ‘%s’" program))
+ (error "Unable to locate SQL program `%s'" program))
;; Make sure buffer name is unique.
(when (sql-buffer-live-p (format "*%s*" buf-name))
(setq buf-name (format "SQL-%s" product))
(= nest 0) )) ; return nest
(defun verilog-in-deferred-immediate-final-p ()
- "Return true if inside an ‘assert/assume/cover final’ statement."
+ "Return true if inside an `assert/assume/cover final' statement."
(interactive)
(and (looking-at "final")
(verilog-looking-back "\\<\\(?:assert\\|assume\\|cover\\)\\>\\s-+" nil))
(defun verilog-func-completion (type)
"Build regular expression for module/task/function names.
-TYPE is ‘module’, ‘tf’ for task or function, or t if unknown."
+TYPE is `module', `tf' for task or function, or t if unknown."
(if (string= verilog-str "")
(setq verilog-str "[a-zA-Z_]"))
(let ((verilog-str (concat (cond
really be a match. If VERILOG-FLAG is t, the function returns a list of
all possible completions. If VERILOG-FLAG is nil it returns a string,
the longest possible completion, or t if VERILOG-STR is an exact match.
-If VERILOG-FLAG is ‘lambda’, the function returns t if VERILOG-STR is an
+If VERILOG-FLAG is `lambda', the function returns t if VERILOG-STR is an
exact match, nil otherwise."
(save-excursion
(let ((verilog-all nil))
to check if this should really be a match. If VERILOG-FLAG is t, the
function returns a list of all possible completions. If it is nil it
returns a string, the longest possible completion, or t if VERILOG-STR is
-an exact match. If VERILOG-FLAG is ‘lambda’, the function returns t if
+an exact match. If VERILOG-FLAG is `lambda', the function returns t if
VERILOG-STR is an exact match, nil otherwise."
(save-excursion
(let ((verilog-all nil)
;; Combined
(defun verilog-decls-get-signals (decls)
- "Return all declared signals in DECLS, excluding ‘assign’ statements."
+ "Return all declared signals in DECLS, excluding `assign' statements."
(append
(verilog-decls-get-outputs decls)
(verilog-decls-get-inouts decls)
Lisp functions:
vl-name Name portion of the input/output port.
- vl-bits Bus bits portion of the input/output port (‘[2:0]’).
- vl-mbits Multidimensional array bits for port (‘[2:0][3:0]’).
- vl-width Width of the input/output port (‘3’ for [2:0]).
+ vl-bits Bus bits portion of the input/output port (`[2:0]').
+ vl-mbits Multidimensional array bits for port (`[2:0][3:0]').
+ vl-width Width of the input/output port (`3' for [2:0]).
May be a (...) expression if bits isn't a constant.
vl-dir Direction of the pin input/output/inout/interface.
vl-modport The modport, if an interface with a modport.
- vl-cell-type Module name/type of the cell (‘InstModule’).
- vl-cell-name Instance name of the cell (‘instName’).
+ vl-cell-type Module name/type of the cell (`InstModule').
+ vl-cell-name Instance name of the cell (`instName').
Normal Lisp variables may be used in expressions. See
`verilog-read-defines' which can set vh-{definename} variables for use
(match-string 1) (buffer-file-name))))
(when warn
(message
- "File ‘%s’ isn't readable, use shift-mouse2 to paste in this field"
+ "File `%s' isn't readable, use shift-mouse2 to paste in this field"
(match-string 1))))))))
\f
'/' or is empty)."
(let ((val (widget-value widget)))
(unless (string-match "^\\(\\|.*/\\)$" val)
- (widget-put widget :error "Invalid directory entry: must end with ‘/’")
+ (widget-put widget :error "Invalid directory entry: must end with `/'")
widget)))
;; help string for user options
;;; --> \" := \" [[ --> [ --CR --> comment-out code
.. --> \" => \" ] --> ) --- --> horizontal line
,, --> \" <= \" ]] --> ] ---- --> display comment
- == --> \" == \" '' --> \\\"
+ == --> \" == \" \\='\\=' --> \\\"
WORD COMPLETION:
automatically recognized as VHDL source files. To add an extension
\".xxx\", add the following line to your Emacs start-up file (`.emacs'):
- \(push '(\"\\\\.xxx\\\\'\" . vhdl-mode) auto-mode-alist)
+ \(push \\='(\"\\\\.xxx\\\\\\='\" . vhdl-mode) auto-mode-alist)
HINTS:
(t nil)))))
(defun vhdl-in-extended-identifier-p ()
- "Determine if point is inside extended identifier (delimited by ‘\\’)."
+ "Determine if point is inside extended identifier (delimited by `\\')."
(save-match-data
(and (save-excursion (re-search-backward "\\\\" (vhdl-point 'bol) t))
(save-excursion (re-search-forward "\\\\" (vhdl-point 'eol) t)))))
(vhdl-comment-insert)))))
(self-insert-command count)))
-(defun vhdl-electric-open-bracket (count) "‘[’ --> ‘(’, ‘([’ --> ‘[’"
+(defun vhdl-electric-open-bracket (count) "`[' --> `(', `([' --> `['"
(interactive "p")
(if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
(if (= (preceding-char) ?\()
(insert-char ?\( 1))
(self-insert-command count)))
-(defun vhdl-electric-close-bracket (count) "‘]’ --> ‘)’, ‘)]’ --> ‘]’"
+(defun vhdl-electric-close-bracket (count) "`]' --> `)', `)]' --> `]'"
(interactive "p")
(if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
(progn
(insert-char ?\' 1))
(self-insert-command count)))
-(defun vhdl-electric-semicolon (count) "‘;;’ --> ‘ : ’, ‘: ;’ --> ‘ := ’"
+(defun vhdl-electric-semicolon (count) "`;;' --> ` : ', `: ;' --> ` := '"
(interactive "p")
(if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
(cond ((= (preceding-char) vhdl-last-input-event)
(t (insert-char ?\; 1)))
(self-insert-command count)))
-(defun vhdl-electric-comma (count) "‘,,’ --> ‘ <= ’"
+(defun vhdl-electric-comma (count) "`,,' --> ` <= '"
(interactive "p")
(if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
(cond ((= (preceding-char) vhdl-last-input-event)
(t (insert-char ?\, 1)))
(self-insert-command count)))
-(defun vhdl-electric-period (count) "‘..’ --> ‘ => ’"
+(defun vhdl-electric-period (count) "`..' --> ` => '"
(interactive "p")
(if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
(cond ((= (preceding-char) vhdl-last-input-event)
(t (insert-char ?\. 1)))
(self-insert-command count)))
-(defun vhdl-electric-equal (count) "‘==’ --> ‘ == ’"
+(defun vhdl-electric-equal (count) "`==' --> ` == '"
(interactive "p")
(if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
(cond ((= (preceding-char) vhdl-last-input-event)
"Go to the location of ITEM and display the buffer.
WINDOW controls how the buffer is displayed:
nil -- switch-to-buffer
- 'window -- pop-to-buffer (other window)
- 'frame -- pop-to-buffer (other frame)"
+ `window' -- pop-to-buffer (other window)
+ `frame' -- pop-to-buffer (other frame)"
(let* ((marker (save-excursion
(xref-location-marker (xref-item-location item))))
(buf (marker-buffer marker)))
", or type the corresponding digit key,"
"")
" to open it.\n"
- (format-message "Click on Cancel or type ‘q’ to cancel.\n"))
+ (format-message "Click on Cancel or type `q' to cancel.\n"))
;; Use a L&F that looks like the recentf menu.
(tree-widget-set-theme "folder")
(apply 'widget-create
(let ((match (match-string 3 from)))
(cond
((string= match "\\n")
- (message "Note: ‘\\n’ here doesn't match a newline; to do that, type C-q C-j instead"))
+ (message "Note: `\\n' here doesn't match a newline; to do that, type C-q C-j instead"))
((string= match "\\t")
- (message "Note: ‘\\t’ here doesn't match a tab; to do that, just type TAB")))
+ (message "Note: `\\t' here doesn't match a tab; to do that, just type TAB")))
(sit-for 2)))
(if (not to)
from
(goto-char m)
(recenter line)
(if readonly
- (message "Buffer ‘%s’ is read only." buf)
+ (message "Buffer `%s' is read only." buf)
(delete-region (line-beginning-position) (line-end-position))
(insert text))
(move-to-column col)))))))
;; it is longer than window-width.
(if (> (+ (length regexp) 42) (window-width))
"" (format-message
- " for ‘%s’" (query-replace-descr regexp)))))
+ " for `%s'" (query-replace-descr regexp)))))
(setq occur-revert-arguments (list regexp nlines bufs))
(if (= count 0)
(kill-buffer occur-buf)
(cols (nth 1 wsb)))
(cond
((not (memq side '(left right)))
- (error "‘left’ or ‘right’ expected instead of %S" side))
+ (error "`left' or `right' expected instead of %S" side))
((and (eq vtype side) cols))
((eq (frame-parameter nil 'vertical-scroll-bars) side)
;; nil means it's a non-toolkit scroll bar, and its width in
(if server-auth-key
(if (string-match-p "^[!-~]\\{64\\}$" server-auth-key)
server-auth-key
- (error "The key ‘%s’ is invalid" server-auth-key))
+ (error "The key `%s' is invalid" server-auth-key))
(server-generate-key)))
;;;###autoload
(not executing-kbd-macro)
(where-is-internal function overriding-local-map t))))
(unless (commandp function)
- (error "‘%s’ is not a valid command name" command-name))
+ (error "`%s' is not a valid command name" command-name))
(setq this-command function)
;; Normally `real-this-command' should never be changed, but here we really
;; want to pretend that M-x <cmd> RET is nothing more than a "key
(symbol-name function) typed))))
(when binding
(with-temp-message
- (format-message "You can run the command ‘%s’ with %s"
+ (format-message "You can run the command `%s' with %s"
function
(if (stringp binding)
(concat "M-x " binding " RET")
(setq undo-extra-outer-limit (+ size 50000))
(if (let (use-dialog-box track-mouse executing-kbd-macro )
(yes-or-no-p (format-message
- "Buffer ‘%s’ undo info is %d bytes long; discard it? "
+ "Buffer `%s' undo info is %d bytes long; discard it? "
(buffer-name) size)))
(progn (setq buffer-undo-list nil)
(setq undo-extra-outer-limit nil)
(display-warning '(undo discard-info)
(concat
(format-message
- "Buffer ‘%s’ undo info was %d bytes long.\n"
+ "Buffer `%s' undo info was %d bytes long.\n"
(buffer-name) size)
"The undo info was discarded because it exceeded \
`undo-outer-limit'.
`(,(buffer-name buf)
face link
help-echo ,(format-message
- "Visit buffer ‘%s’"
+ "Visit buffer `%s'"
(buffer-name buf))
follow-link t
process-buffer ,buf
(push var warn-vars)))
(when warn-vars
(display-warning 'mail
- (format "\
+ (format-message "\
The default mail mode is now Message mode.
You have the following Mail mode variable%s customized:
-\n %s\n\nTo use Mail mode, set ‘mail-user-agent’ to sendmail-user-agent.
-To disable this warning, set ‘compose-mail-user-agent-warnings’ to nil."
+\n %s\n\nTo use Mail mode, set `mail-user-agent' to sendmail-user-agent.
+To disable this warning, set `compose-mail-user-agent-warnings' to nil."
(if (> (length warn-vars) 1) "s" "")
(mapconcat 'symbol-name
warn-vars " "))))))
(t "globally"))))
(val (progn
(when obsolete
- (message (concat "‘%S’ is obsolete; "
- (if (symbolp obsolete) "use ‘%S’ instead" "%s"))
+ (message (concat "`%S' is obsolete; "
+ (if (symbolp obsolete) "use `%S' instead" "%s"))
var obsolete)
(sit-for 3))
(if prop
(require 'cus-edit)
(setq type (widget-convert type))
(unless (widget-apply type :match value)
- (user-error "Value ‘%S’ does not match type %S of %S"
+ (user-error "Value `%S' does not match type %S of %S"
value (car type) variable))))
(if make-local
;; `base-position'. It's difficult to make any use of `base-size',
;; so we just ignore it.
(unless (consp base-position)
- (message "Obsolete ‘base-size’ passed to choose-completion-string")
+ (message "Obsolete `base-size' passed to choose-completion-string")
(setq base-position nil))
(let* ((buffer (or buffer completion-reference-buffer))
`(progn
(defcustom ,varalt-sym nil
- ,(format "Alist of alternative implementations for the ‘%s’ command.
+ ,(format "Alist of alternative implementations for the `%s' command.
Each entry must be a pair (ALTNAME . ALTFUN), where:
ALTNAME - The name shown at user to describe the alternative implementation.
(defvar ,varimp-sym nil "Internal use only.")
(defun ,command (&optional arg)
- ,(format "Run generic command ‘%s’.
+ ,(format "Run generic command `%s'.
If used for the first time, or with interactive ARG, ask the user which
-implementation to use for ‘%s’. The variable ‘%s’
+implementation to use for `%s'. The variable `%s'
contains the list of implementations currently supported for this command."
command-name command-name varalt-name)
(interactive "P")
(when (or arg (null ,varimp-sym))
(let ((val (completing-read
,(format-message
- "Select implementation for command ‘%s’: "
+ "Select implementation for command `%s': "
command-name)
,varalt-sym nil t)))
(unless (string-equal val "")
(when (null ,varimp-sym)
(message
- "Use ‘C-u M-x %s RET’ to select another implementation"
+ "Use C-u M-x %s RET`to select another implementation"
,command-name)
(sit-for 3))
(customize-save-variable ',varimp-sym
(if ,varimp-sym
(call-interactively ,varimp-sym)
(message "%s" ,(format-message
- "No implementation selected for command ‘%s’"
+ "No implementation selected for command `%s'"
command-name)))))))
\f
)
"List of functions to periodically call stealthily.
This list is of the form:
- '( (\"NAME\" FUNCTION ...)
+ ( (\"NAME\" FUNCTION ...)
...)
where NAME is the name of the major display mode these functions are
for, and the remaining elements FUNCTION are functions to call in order.
(defcustom speedbar-directory-button-trim-method 'span
"Indicates how the directory button will be displayed.
Possible values are:
- 'span - span large directories over multiple lines.
- 'trim - trim large directories to only show the last few.
- nil - no trimming."
+ `span' - span large directories over multiple lines.
+ `trim' - trim large directories to only show the last few.
+ nil - no trimming."
:group 'speedbar
:type '(radio (const :tag "Span large directories over multiple lines."
span)
(setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\")
If your init file is byte-compiled, use the following form
instead:
- (eval '(setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\"))
+ (eval \\='(setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\"))
Thus, someone else using a copy of your init file will see the
startup message unless he personally acts to inhibit it."
:type '(choice (const :tag "Don't inhibit")
:group 'initialization
:initialize #'custom-initialize-default
:set (lambda (_variable _value)
- (error "Customizing ‘site-run-file’ does not work")))
+ (error "Customizing `site-run-file' does not work")))
(make-obsolete-variable 'system-name "use (system-name) instead" "25.1")
(let ((elt (assoc completion tty-long-option-alist)))
;; Check for abbreviated long option.
(or elt
- (error "Option ‘%s’ is ambiguous" argi))
+ (error "Option `%s' is ambiguous" argi))
(setq argi (cdr elt)))
;; Check for a short option.
(setq argval nil
(defvar server-process)
(defun startup--setup-quote-display ()
- "If curved quotes don't work, display ASCII approximations."
- (dolist (char-repl '((?‘ . ?\`) (?’ . ?\') (?“ . ?\") (?†. ?\")))
- (when (not (char-displayable-p (car char-repl)))
- (unless standard-display-table
- (setq standard-display-table (make-display-table)))
- (aset standard-display-table (car char-repl)
- (vector (make-glyph-code (cdr char-repl) 'shadow))))))
+ "Display ASCII approximations on user request or if curved quotes don't work."
+ (when (memq text-quoting-style '(nil grave straight))
+ (dolist (char-repl '((?‘ . ?\`) (?’ . ?\') (?“ . ?\") (?†. ?\")))
+ (let ((char (car char-repl))
+ (repl (cdr char-repl)))
+ (when (or text-quoting-style (not (char-displayable-p char)))
+ (when (and (eq repl ?\`) (eq text-quoting-style 'straight))
+ (setq repl ?\'))
+ (unless standard-display-table
+ (setq standard-display-table (make-display-table)))
+ (aset standard-display-table char
+ (vector (make-glyph-code repl 'shadow))))))))
(defun command-line ()
"A subroutine of `normal-top-level'.
((stringp completion)
(let ((elt (assoc completion longopts)))
(unless elt
- (error "Option ‘%s’ is ambiguous" argi))
+ (error "Option `%s' is ambiguous" argi))
(setq argi (substring (car elt) 1))))
(t
(setq argval nil
(setq done t)))
;; Was argval set but not used?
(and argval
- (error "Option ‘%s’ doesn't allow an argument" argi))))
+ (error "Option `%s' doesn't allow an argument" argi))))
;; Re-attach the --display arg.
(and display-arg (setq args (append display-arg args)))
(not (featurep
(intern
(concat (symbol-name initial-window-system) "-win")))))
- (error "Unsupported window system ‘%s’" initial-window-system))
+ (error "Unsupported window system `%s'" initial-window-system))
;; Process window-system specific command line parameters.
(setq command-line-args
(let ((window-system initial-window-system)) ;Hack attack!
(display-warning
'initialization
(format-message "\
-An error occurred while loading ‘%s’:\n\n%s%s%s\n\n\
+An error occurred while loading `%s':\n\n%s%s%s\n\n\
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
-the ‘--debug-init’ option to view a complete error backtrace."
+the `--debug-init' option to view a complete error backtrace."
user-init-file
(get (car error) 'error-message)
(if (cdr error) ": " "")
;; unibyte (display table, terminal coding system &c).
(set-language-environment current-language-environment)))
+ ;; Setup quote display again, if the init file sets
+ ;; text-quoting-style to a non-nil value.
+ (when (and (not noninteractive) text-quoting-style)
+ (startup--setup-quote-display))
+
;; Do this here in case the init file sets mail-host-address.
(if (equal user-mail-address "")
(setq user-mail-address (or (getenv "EMAIL")
(setq warned t)
(display-warning 'initialization
(format-message "\
-Your ‘load-path’ seems to contain\n\
-your ‘.emacs.d’ directory: %s\n\
+Your `load-path' seems to contain\n\
+your `.emacs.d' directory: %s\n\
This is likely to cause problems...\n\
Consider using a subdirectory instead, e.g.: %s"
dir (expand-file-name
(defcustom initial-scratch-message (purecopy "\
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
-;; If you want to create a file, visit that file with C-x C-f,
+;; If you want to create a file, visit that file with \\[find-file],
;; then enter the text in that file's own buffer.
")
- "Initial message displayed in *scratch* buffer at startup.
+ "Initial documentation displayed in *scratch* buffer at startup.
If this is nil, no message will be displayed."
:type '(choice (text :tag "Message")
(const :tag "none" nil))
(if (stringp completion)
(let ((elt (member completion longopts)))
(or elt
- (error "Option ‘%s’ is ambiguous" argi))
+ (error "Option `%s' is ambiguous" argi))
(setq argi (substring (car elt) 1)))
(setq argval nil
argi orig-argi)))))
(setq inhibit-startup-screen t)
(setq tem (or argval (pop command-line-args-left)))
(or (stringp tem)
- (error "File name omitted from ‘-insert’ option"))
+ (error "File name omitted from `-insert' option"))
(insert-file-contents (command-line-normalize-file-name tem)))
((equal argi "-kill")
;; An explicit option to specify visiting a file.
(setq tem (or argval (pop command-line-args-left)))
(unless (stringp tem)
- (error "File name omitted from ‘%s’ option" argi))
+ (error "File name omitted from `%s' option" argi))
(funcall process-file-arg tem))
;; These command lines now have no effect.
(unless did-hook
;; Presume that the argument is a file name.
(if (string-match "\\`-" argi)
- (error "Unknown option ‘%s’" argi))
+ (error "Unknown option `%s'" argi))
;; FIXME: Why do we only inhibit the startup
;; screen for -nw?
(unless initial-window-system
(get-buffer "*scratch*")
(with-current-buffer "*scratch*"
(when (zerop (buffer-size))
- (insert initial-scratch-message)
+ (insert (substitute-command-keys initial-scratch-message))
(set-buffer-modified-p nil))))
;; Prepend `initial-buffer-choice' to `displayable-buffers'.
If FORM does return, signal an error."
(declare (debug t))
`(prog1 ,form
- (error "Form marked with ‘noreturn’ did return")))
+ (error "Form marked with `noreturn' did return")))
(defmacro 1value (form)
"Evaluate FORM, expecting a constant return value.
(mapcar (lambda (parent)
(cons parent
(or (get parent 'error-conditions)
- (error "Unknown signal ‘%s’" parent))))
+ (error "Unknown signal `%s'" parent))))
parent))
(cons parent (get parent 'error-conditions)))))
(put name 'error-conditions
(let* ((sym (cadr list-var))
(append (eval append))
(msg (format-message
- "‘add-to-list’ can't use lexical var ‘%s’; use ‘push’ or ‘cl-pushnew’"
+ "`add-to-list' can't use lexical var `%s'; use `push' or `cl-pushnew'"
sym))
;; Big ugly hack so we only output a warning during
;; byte-compilation, and so we can use
If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
keyboard-quit events while waiting for a valid input."
(unless (consp chars)
- (error "Called ‘read-char-choice’ without valid char choices"))
+ (error "Called `read-char-choice' without valid char choices"))
(let (char done show-help (helpbuf " *Char Help*"))
(let ((cursor-in-echo-area t)
(executing-kbd-macro executing-kbd-macro)
See documentation for `version-separator' and `version-regexp-alist'."
(or (and (stringp ver) (> (length ver) 0))
- (error "Invalid version string: ‘%s’" ver))
+ (error "Invalid version string: `%s'" ver))
;; Change .x.y to 0.x.y
(if (and (>= (length ver) (length version-separator))
(string-equal (substring ver 0 (length version-separator))
((string-match "^[-_+ ]?\\([a-zA-Z]\\)$" s)
(push (- (aref (downcase (match-string 1 s)) 0) ?a -1)
lst))
- (t (error "Invalid version syntax: ‘%s’" ver))))))
+ (t (error "Invalid version syntax: `%s'" ver))))))
(if (null lst)
- (error "Invalid version syntax: ‘%s’" ver)
+ (error "Invalid version syntax: `%s'" ver)
(nreverse lst)))))
;; Handle the -xrm option.
(defun x-handle-xrm-switch (switch)
(unless (consp x-invocation-args)
- (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+ (error "%s: missing argument to `%s' option" (invocation-name) switch))
(setq x-command-line-resources
(if (null x-command-line-resources)
(pop x-invocation-args)
;; the initial frame, too.
(defun x-handle-name-switch (switch)
(or (consp x-invocation-args)
- (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+ (error "%s: missing argument to `%s' option" (invocation-name) switch))
(setq x-resource-name (pop x-invocation-args)
initial-frame-alist (cons (cons 'name x-resource-name)
initial-frame-alist)))
(let ((elt (assoc completion option-alist)))
;; Check for abbreviated long option.
(or elt
- (error "Option ‘%s’ is ambiguous" this-switch))
+ (error "Option `%s' is ambiguous" this-switch))
(setq this-switch completion))))))
(setq aelt (assoc this-switch option-alist))
(if aelt (setq handler (nth 2 aelt)))
;; Handle the --parent-id option.
(defun x-handle-parent-id (switch)
(or (consp x-invocation-args)
- (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+ (error "%s: missing argument to `%s' option" (invocation-name) switch))
(setq initial-frame-alist (cons
(cons 'parent-id
(string-to-number (car x-invocation-args)))
;; to give us back our session id we had on the previous run.
(defun x-handle-smid (switch)
(or (consp x-invocation-args)
- (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+ (error "%s: missing argument to `%s' option" (invocation-name) switch))
(setq x-session-previous-id (car x-invocation-args)
x-invocation-args (cdr x-invocation-args)))
in the message headers, `ispell-local-dictionary' will be set to
DICTIONARY if `ispell-local-dictionary' is not buffer-local.
E.g. you may use the following value:
- '((\"^Newsgroups:[ \\t]*de\\\\.\" . \"deutsch8\")
+ ((\"^Newsgroups:[ \\t]*de\\\\.\" . \"deutsch8\")
(\"^To:[^\\n,]+\\\\.de[ \\t\\n,>]\" . \"deutsch8\"))"
:type '(repeat (cons regexp string))
:group 'ispell)
"When non-nil ispell uses framepop to display choices in a dedicated frame.
You can set this variable to dynamically use framepop if you are in a
window system by evaluating the following on startup to set this variable:
- (and window-system (condition-case () (require 'framepop) (error nil)))"
+ (and window-system (condition-case () (require \\='framepop) (error nil)))"
:type 'boolean
:group 'ispell)
(symbol-value reftex-docstruct-symbol)))
(ding)
(if (y-or-n-p
- (format-message "Label ‘%s’ exists. Use anyway? " label))
+` (format-message "Label `%s' exists. Use anyway? " label))
(setq valid t)))
;; Label is ok
(setq newlabel (read-string (format "Rename label \"%s\" to:" label)))
(if (assoc newlabel (symbol-value reftex-docstruct-symbol))
(if (not (y-or-n-p
- (format-message "Label ‘%s’ exists. Use anyway? " label)))
+ (format-message "Label `%s' exists. Use anyway? " label)))
(error "Abort")))
(save-excursion
(save-window-excursion
"Sorting of the entries found in BibTeX databases by reftex-citation.
Possible values:
nil Do not sort entries.
-'author Sort entries by author name.
-'year Sort entries by increasing year.
-'reverse-year Sort entries by decreasing year."
+`author' Sort entries by author name.
+`year' Sort entries by increasing year.
+`reverse-year' Sort entries by decreasing year."
:group 'reftex-citation-support
:type '(choice (const :tag "not" nil)
(const :tag "by author" author)
;;;***
\f
-;;;### (autoloads nil "reftex-ref" "reftex-ref.el" "35c0c8fcf8eebfc4366bf0f78aed7f2f")
+;;;### (autoloads nil "reftex-ref" "reftex-ref.el" "86c0a243e49d55bb33a32ddac613e189")
;;; Generated autoloads from reftex-ref.el
(autoload 'reftex-label-location "reftex-ref" "\
;;;***
\f
-;;;### (autoloads nil "reftex-toc" "reftex-toc.el" "e3514ef292edfce6722c75225456ffa1")
+;;;### (autoloads nil "reftex-toc" "reftex-toc.el" "db9b727d89e2a6ff01986e7c6aff1058")
;;; Generated autoloads from reftex-toc.el
(autoload 'reftex-toc "reftex-toc" "\
(a) If user selects bullets or #, it's just added.
(b) If user selects enumerations, a further prompt is given. User needs to
- input a starting item, for example 'e' for 'A)' style.
+ input a starting item, for example `e' for `A)' style.
The position of the new list is arranged according to whether or not the
current line and the previous line are blank lines.
2. When continuing a list, one thing needs to be noticed:
-List style alphabetical list, such as 'a.', and roman numerical list, such as
-'i.', have some overlapping items, for example 'v.' The function can deal with
+List style alphabetical list, such as `a.', and roman numerical list, such as
+`i.', have some overlapping items, for example `v.' The function can deal with
the problem elegantly in most situations. But when those overlapped list are
preceded by a blank line, it is hard to determine which type to use
automatically. The function uses alphabetical list by default. If you want
If you mainly create your own documents, `sgml-specials' might be
interesting. But note that some HTML 2 browsers can't handle `''.
To work around that, do:
- (eval-after-load \"sgml-mode\" '(aset sgml-char-names ?\\=' nil))
+ (eval-after-load \"sgml-mode\" \\='(aset sgml-char-names ?\\=' nil))
\\{html-mode-map}"
(setq-local sgml-display-text html-display-text)
;;;###autoload
(defun table-justify (what justify)
"Justify contents of a cell, a row of cells or a column of cells.
-WHAT is a symbol ‘cell’, ‘row’ or ‘column’. JUSTIFY is a symbol
-‘left’, ‘center’, ‘right’, ‘top’, ‘middle’, ‘bottom’ or ‘none’."
+WHAT is a symbol `cell', `row' or `column'. JUSTIFY is a symbol
+`left', `center', `right', `top', `middle', `bottom' or `none'."
(interactive
(list (let* ((_ (barf-if-buffer-read-only))
(completion-ignore-case t)
;;;###autoload
(defun table-justify-cell (justify &optional paragraph)
"Justify cell contents.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal, or ‘top’,
-‘middle’, ‘bottom’ or ‘none’ for vertical. When optional PARAGRAPH is
+JUSTIFY is a symbol `left', `center' or `right' for horizontal, or `top',
+`middle', `bottom' or `none' for vertical. When optional PARAGRAPH is
non-nil the justify operation is limited to the current paragraph,
otherwise the entire cell contents is justified."
(interactive
;;;###autoload
(defun table-justify-row (justify)
"Justify cells of a row.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal,
-or ‘top’, ‘middle’, ‘bottom’ or ‘none’ for vertical."
+JUSTIFY is a symbol `left', `center' or `right' for horizontal,
+or `top', `middle', `bottom' or `none' for vertical."
(interactive
(list (table--query-justification)))
(let((cell-list (table--horizontal-cell-list nil nil 'top)))
;;;###autoload
(defun table-justify-column (justify)
"Justify cells of a column.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal,
-or ‘top’, ‘middle’, ‘bottom’ or ‘none’ for vertical."
+JUSTIFY is a symbol `left', `center' or `right' for horizontal,
+or `top', `middle', `bottom' or `none' for vertical."
(interactive
(list (table--query-justification)))
(let((cell-list (table--vertical-cell-list nil nil 'left)))
insertion which is normally 1. When zero or less is given for
INTERVAL it is interpreted as number of cells per row so that sequence
is placed straight down vertically as long as the table's cell
-structure is uniform. JUSTIFY is a symbol ‘left’, ‘center’ or
-‘right’ that specifies justification of the inserted string.
+structure is uniform. JUSTIFY is a symbol `left', `center' or
+`right' that specifies justification of the inserted string.
Example:
(defun table--justify-cell-contents (justify &optional paragraph)
"Justify the current cell contents.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal, or ‘top’,
-‘middle’, ‘bottom’ or ‘none’ for vertical. When PARAGRAPH is non-nil the
+JUSTIFY is a symbol `left', `center' or `right' for horizontal, or `top',
+`middle', `bottom' or `none' for vertical. When PARAGRAPH is non-nil the
justify operation is limited to the current paragraph."
(table-with-cache-buffer
(let ((beg (point-min))
(not (or
;; Don't compose \alpha@foo.
(eq after-syntax ?_)
+ ;; Don't compose inside verbatim blocks!
+ (nth 8 (syntax-ppss))
;; The \alpha in \alpha2 may be composed but of course \alphax may not.
(and (eq after-syntax ?w)
(or (< after-char ?0)
the section found will be at the same or higher hierarchical level in
the Texinfo file; when looking for the `Up' pointer, the section found
will be at some level higher in the Texinfo file. The fourth argument
-\(one of `next’, `previous’, or `up'\) specifies whether to find the
+\(one of `next', `previous', or `up'\) specifies whether to find the
`Next', `Previous', or `Up' pointer."
(let ((case-fold-search t))
(cond ((eq direction 'next)
(setq-local tildify-foreach-region-function
(lambda (cb beg end) (funcall cb beg end)))
or better still:
- (setq-local tildify-foreach-region-function 'funcall)
+ (setq-local tildify-foreach-region-function \\='funcall)
See `tildify-foreach-ignore-environments' function for other ways to use the
variable."
:version "25.1"
\(See \\[describe-mode] .)"
(interactive "*p")
(and (2C-other)
- (if (y-or-n-p (format-message "Overwrite associated buffer ‘%s’? "
+ (if (y-or-n-p (format-message "Overwrite associated buffer `%s'? "
(buffer-name (2C-other))))
(with-current-buffer (2C-other)
(erase-buffer))
(let ((bounds (bounds-of-thing-at-point thing)))
(when bounds
(buffer-substring (car bounds) (cdr bounds)))))))
- (when (and text no-properties)
+ (when (and text no-properties (sequencep text))
(set-text-properties 0 (length text) nil text))
text))
"uuid:" "vemmi://" "webcal://" "xri://" "xmlrpc.beep://"
"xmlrpc.beeps://" "z39.50r://" "z39.50s://" "xmpp:"
;; Compatibility
- "fax:" "mms://" "mmsh://" "modem:" "prospero:" "snews:"
+ "fax:" "man:" "mms://" "mmsh://" "modem:" "prospero:" "snews:"
"wais://")
"List of URI schemes recognized by `thing-at-point-url-at-point'.
Each string in this list should correspond to the start of a
ARG any arguments to the ACTION command,
OUTPUT-FORMAT is the file format to output (default is jpeg),
ACTION-PREFIX is the symbol to place before the ACTION command
- (defaults to '-' but can sometimes be '+')."
+ (defaults to `-' but can sometimes be `+')."
(call-process thumbs-conversion-program nil nil nil
(or action-prefix "-")
action
(tree-widget-set-parent-theme \"my-parent-theme\")
(tree-widget-set-image-properties
- (if (featurep 'xemacs)
- '(:ascent center)
- '(:ascent center :mask (heuristic t))
+ (if (featurep \\='xemacs)
+ \\='(:ascent center)
+ \\='(:ascent center :mask (heuristic t))
))"
(or name (setq name (or tree-widget-theme "default")))
(unless (string-equal name (tree-widget-theme-name))
(setq mapsym s)))))
(insert
(format
- "The default Emacs binding for the key %s is the command ‘%s’. "
+ "The default Emacs binding for the key %s is the command `%s'. "
(key-description key)
db))
(insert "However, your customizations have "
(if cb
- (format-message "rebound it to the command ‘%s’" cb)
+ (format-message "rebound it to the command `%s'" cb)
"unbound it"))
(insert ".")
(when mapsym
(insert " (For the more advanced user:"
(format-message
- " This binding is in the keymap ‘%s’.)" mapsym)))
+ " This binding is in the keymap `%s'.)" mapsym)))
(if (string= where "")
(unless (keymapp db)
(insert "\n\nYou can use M-x "
""
"the key")
where
- (format-message " to get the function ‘%s’." db))))
+ (format-message " to get the function `%s'." db))))
(fill-region (point-min) (point)))))
(help-print-return-message))))
(lookup-key global-map
[menu-bar]))))
(stringp cwhere))
- (format-message "the ‘%s’ menu" cwhere)
+ (format-message "the `%s' menu" cwhere)
"the menus"))))
(setq where ""))
(setq remark nil)
(type-break-mode-line-message-mode)
(t
(beep t)
- (message "%sYou should take a typing break now. Do ‘%s’."
+ (message "%sYou should take a typing break now. Do `%s'."
(type-break-time-stamp)
(substitute-command-keys "\\[type-break]"))
(sit-for 1)
"Build a query-string.
Given a QUERY in the form:
-'((key1 val1)
+ ((key1 val1)
(key2 val2)
(key3 val1 val2)
(key4)
Samples:
- (setq url-privacy-level 'high)
- (setq url-privacy-level '(email lastloc)) ;; equivalent to 'high
- (setq url-privacy-level '(os))
+ (setq url-privacy-level \\='high)
+ (setq url-privacy-level \\='(email lastloc)) ;; equivalent to \\='high
+ (setq url-privacy-level \\='(os))
::NOTE::
This variable controls several other variables and is _NOT_ automatically
(map-extents 'delete-extent)
(mapc 'delete-overlay (overlays-in 1 1)))
- (insert "This is a registry of all active Ediff sessions.
+ (insert (substitute-command-keys "\
+This is a registry of all active Ediff sessions.
Useful commands:
button2, `v', RET over a session record: switch to that session
\t\tActive Ediff Sessions:
\t\t----------------------
-")
+"))
;; purge registry list from dead buffers
(mapc (lambda (elt)
(if (not (ediff-buffer-live-p elt))
(with-output-to-temp-buffer ediff-msg-buffer
(ediff-with-current-buffer standard-output
(fundamental-mode))
- (princ (format "
+ (princ (format-message "
Ediff has inferred that
%s
%s
(disp-rev (or (vc-git--symbolic-ref file)
(substring rev 0 7)))
(def-ml (vc-default-mode-line-string 'Git file))
- (help-echo (get-text-property 0 'help-echo def-ml)))
+ (help-echo (get-text-property 0 'help-echo def-ml))
+ (face (get-text-property 0 'face def-ml)))
(propertize (replace-regexp-in-string (concat rev "\\'") disp-rev def-ml t t)
+ 'face face
'help-echo (concat help-echo "\nCurrent revision: " rev))))
(cl-defstruct (vc-git-extra-fileinfo
If FILES are not registered, this function always returns nil.
For registered files, the possible values are:
- 'implicit FILES are always writable, and checked out `implicitly'
+ `implicit' FILES are always writable, and checked out `implicitly'
when the user saves the first changes to the file.
- 'locking FILES are read-only if up-to-date; user must type
+ `locking' FILES are read-only if up-to-date; user must type
\\[vc-next-action] before editing. Strict locking
is assumed.
- 'announce FILES are read-only if up-to-date; user must type
+ `announce' FILES are read-only if up-to-date; user must type
\\[vc-next-action] before editing. But other users
may be editing at the same time."
(vc-call-backend backend 'checkout-model files))
A return of nil from this function means we have no information on the
status of this file. Otherwise, the value returned is one of:
- 'up-to-date The working file is unmodified with respect to the
+ `up-to-date' The working file is unmodified with respect to the
latest version on the current branch, and not locked.
- 'edited The working file has been edited by the user. If
+ `edited' The working file has been edited by the user. If
locking is used for the file, this state means that
the current version is locked by the calling user.
This status should *not* be reported for files
USER The current version of the working file is locked by
some other USER (a string).
- 'needs-update The file has not been edited by the user, but there is
+ `needs-update' The file has not been edited by the user, but there is
a more recent version on the current branch stored
in the repository.
- 'needs-merge The file has been edited by the user, and there is also
+ `needs-merge' The file has been edited by the user, and there is also
a more recent version on the current branch stored in
the repository. This state can only occur if locking
is not used for the file.
- 'unlocked-changes The working version of the file is not locked,
+ `unlocked-changes' The working version of the file is not locked,
but the working file has been changed with respect
to that version. This state can only occur for files
with locking; it represents an erroneous condition that
should be resolved by the user (vc-next-action will
prompt the user to do it).
- 'added Scheduled to go into the repository on the next commit.
+ `added' Scheduled to go into the repository on the next commit.
Often represented by vc-working-revision = \"0\" in VCSes
with monotonic IDs like Subversion and Mercurial.
- 'removed Scheduled to be deleted from the repository on next commit.
+ `removed' Scheduled to be deleted from the repository on next commit.
- 'conflict The file contains conflicts as the result of a merge.
+ `conflict' The file contains conflicts as the result of a merge.
For now the conflicts are text conflicts. In the
future this might be extended to deal with metadata
conflicts too.
- 'missing The file is not present in the file system, but the VC
+ `missing' The file is not present in the file system, but the VC
system still tracks it.
- 'ignored The file showed up in a dir-status listing with a flag
+ `ignored' The file showed up in a dir-status listing with a flag
indicating the version-control system is ignoring it,
Note: This property is not set reliably (some VCSes
don't have useful directory-status commands) so assume
that any file with vc-state nil might be ignorable
without VC knowing it.
- 'unregistered The file is not under version control."
+ `unregistered' The file is not under version control."
;; Note: in Emacs 22 and older, return of nil meant the file was
;; unregistered. This is potentially a source of
overwrite))
(error
(setq errors (1+ errors))
- (dired-log "Rename ‘%s’ to ‘%s’ failed:\n%s\n"
+ (dired-log "Rename `%s' to `%s' failed:\n%s\n"
file-ori file-new
err)))))))))
errors))
(substitute-in-file-name link-to-new) link-from))
(error
(setq errors (1+ errors))
- (dired-log "Link ‘%s’ to ‘%s’ failed:\n%s\n"
+ (dired-log "Link `%s' to `%s' failed:\n%s\n"
link-from link-to-new
err)))))
(cons changes errors)))
(unless (equal 0 (process-file dired-chmod-program
nil nil nil perm-tmp filename))
(setq errors (1+ errors))
- (dired-log "%s %s ‘%s’ failed\n\n"
+ (dired-log "%s %s `%s' failed\n\n"
dired-chmod-program perm-tmp filename)))
(setq errors (1+ errors))
- (dired-log "Cannot parse permission ‘%s’ for file ‘%s’\n\n"
+ (dired-log "Cannot parse permission `%s' for file `%s'\n\n"
perms-new filename)))
(goto-char (next-single-property-change (1+ (point)) prop-wanted
nil (point-max))))
(when has-bogus
(goto-char (point-max))
(insert (substitute-command-keys
- " Type ‘\\[whitespace-cleanup]’")
+ " Type `\\[whitespace-cleanup]'")
" to cleanup the buffer.\n\n"
(substitute-command-keys
- " Type ‘\\[whitespace-cleanup-region]’")
+ " Type `\\[whitespace-cleanup-region]'")
" to cleanup a region.\n\n"))
(whitespace-display-window (current-buffer)))))
has-bogus))))
(defun whitespace-mark-x (nchars condition)
- "Insert the mark (‘X’ or ‘ ’) after NCHARS depending on CONDITION."
+ "Insert the mark (`X' or ` ') after NCHARS depending on CONDITION."
(forward-char nchars)
(insert (if condition "X" " ")))
(defun whitespace-insert-option-mark (the-list the-value)
- "Insert the option mark (‘X’ or ‘ ’) in toggle options buffer."
+ "Insert the option mark (`X' or ` ') in toggle options buffer."
(goto-char (point-min))
(forward-line 2)
(dolist (sym the-list)
* (widget-create NAME)
-* (apply 'widget-create CLASS ARGS)
+* (apply \\='widget-create CLASS ARGS)
The third argument DOC is a documentation string for the widget."
;;
This variable can be set in your init file, like this:
- (setq special-display-frame-alist '((width . 80) (height . 20)))
+ (setq special-display-frame-alist \\='((width . 80) (height . 20)))
These supersede the values given in `default-frame-alist'."
:type '(repeat (cons :format "%v"
(defvar woman-file-regexp nil
"Regexp used to select (possibly compressed) man source files, e.g.
-\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\|xz\\)\\)?\\'\".
+\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\|xz\\)\\)?\\\\='\".
Built automatically from the customizable user options
`woman-uncompressed-file-regexp' and `woman-file-compression-regexp'.")
in the ncurses package include `toe.1m', `form.3x', etc.
Note: an optional compression regexp will be appended, so this regexp
-MUST NOT end with any kind of string terminator such as $ or \\'."
+MUST NOT end with any kind of string terminator such as $ or \\\\='."
:type 'regexp
:set 'set-woman-file-regexp
:group 'woman-interface)
"Do not change this unless you are sure you know what you are doing!
Regexp used to match compressed man file extensions for which
decompressors are available and handled by auto-compression mode,
-e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\|xz\\\\)\\\\'\" for `gzip', `bzip2', or `xz'.
-Should begin with \\. and end with \\' and MUST NOT be optional."
+e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\|xz\\\\)\\\\\\='\" for `gzip', `bzip2', or `xz'.
+Should begin with \\. and end with \\\\=' and MUST NOT be optional."
;; Should be compatible with car of
;; `jka-compr-file-name-handler-entry', but that is unduly
;; complicated, includes an inappropriate extension (.tgz) and is
"Find and return start of next control line.
PAT, if non-nil, specifies an additional component of the control
line regexp to search for, which is appended to the default
-regexp, \"\\(\\\\c\\)?\\n[.']\"."
+regexp, \"\\(\\\\c\\)?\\n[.\\=']\"."
(let ((pattern (concat "\\(\\\\c\\)?\n[.']" pat))
to)
(save-excursion
(goto-char from)))
(defun woman-horizontal-line ()
- "\\l'Nc' -- Draw a horizontal line of length N using character c, default _."
+ "\\l\\='Nc\\=' -- Draw a horizontal line of length N using character c, default _."
(delete-char -1)
(delete-char 1)
(looking-at "\\(.\\)\\(.*\\)\\1")
struct bidi_string_data *);
extern void produce_stretch_glyph (struct it *);
extern int merge_glyphless_glyph_face (struct it *);
+extern void forget_escape_and_glyphless_faces (void);
extern void get_font_ascent_descent (struct font *, int *, int *);
Each \\=‘ and \\=` is replaced by left quote, and each \\=’ and \\='
is replaced by right quote. Left and right quote characters are
-specified by ‘text-quoting-style’.
+specified by `text-quoting-style'.
\\=\\= quotes the following character and is discarded; thus,
\\=\\=\\=\\= puts \\=\\= into the output, \\=\\=\\=\\[ puts \\=\\[ into the output, and
DEFVAR_LISP ("text-quoting-style", Vtext_quoting_style,
doc: /* Style to use for single quotes when generating text.
-‘curve’ means quote with curved single quotes \\=‘like this\\=’.
-‘straight’ means quote with straight apostrophes \\='like this\\='.
-‘grave’ means quote with grave accent and apostrophe \\=`like this\\='.
-The default value nil acts like ‘curve’ if curved single quotes are
-displayable, and like ‘grave’ otherwise. */);
+`curve' means quote with curved single quotes \\=‘like this\\=’.
+`straight' means quote with straight apostrophes \\='like this\\='.
+`grave' means quote with grave accent and apostrophe \\=`like this\\='.
+The default value nil acts like `curve' if curved single quotes are
+displayable, and like `grave' otherwise. */);
Vtext_quoting_style = Qnil;
DEFVAR_BOOL ("internal--text-quoting-flag", text_quoting_flag,
- doc: /* If nil, a nil ‘text-quoting-style’ is treated as ‘grave’. */);
+ doc: /* If nil, a nil `text-quoting-style' is treated as `grave'. */);
/* Initialized by ‘main’. */
defsubr (&Sdocumentation);
The first argument is a format control string.
The other arguments are substituted into it to make the result, a string.
-This acts like ‘format’, except it also replaces each left single
+This acts like `format', except it also replaces each left single
quotation mark (\\=‘) and grave accent (\\=`) by a left quote, and each
right single quotation mark (\\=’) and apostrophe (\\=') by a right quote.
The left and right quote replacement characters are specified by
-‘text-quoting-style’.
+`text-quoting-style'.
usage: (format-message STRING &rest OBJECTS) */)
(ptrdiff_t nargs, Lisp_Object *args)
kb->echo_string_ = val;
}
static void
+kset_echo_prompt (struct kboard *kb, Lisp_Object val)
+{
+ kb->echo_prompt_ = val;
+}
+static void
kset_kbd_queue (struct kboard *kb, Lisp_Object val)
{
kb->kbd_queue_ = val;
return;
/* Do nothing if we just printed a prompt. */
- if (current_kboard->echo_after_prompt
- == SCHARS (KVAR (current_kboard, echo_string)))
+ if (STRINGP (KVAR (current_kboard, echo_prompt))
+ && (SCHARS (KVAR (current_kboard, echo_prompt))
+ == SCHARS (KVAR (current_kboard, echo_string))))
return;
/* Do nothing if we have already put a dash at the end. */
if (current_kboard->immediate_echo)
{
ptrdiff_t i;
+ Lisp_Object prompt = KVAR (current_kboard, echo_prompt);
+ Lisp_Object prefix = call0 (Qinternal_echo_keystrokes_prefix);
kset_echo_string (current_kboard,
- call0 (Qinternal_echo_keystrokes_prefix));
+ NILP (prompt) ? prefix
+ : NILP (prefix) ? prompt
+ : concat2 (prompt, prefix));
for (i = 0; i < this_command_key_count; i++)
{
cancel_echoing (void)
{
current_kboard->immediate_echo = false;
- current_kboard->echo_after_prompt = -1;
+ kset_echo_prompt (current_kboard, Qnil);
kset_echo_string (current_kboard, Qnil);
ok_to_echo_at_next_pause = NULL;
echo_kboard = NULL;
\f
DEFUN ("recursive-edit", Frecursive_edit, Srecursive_edit, 0, 0, "",
doc: /* Invoke the editor command loop recursively.
-To get out of the recursive edit, a command can throw to ‘exit’ -- for
-instance ‘(throw \\='exit nil)’.
-If you throw a value other than t, ‘recursive-edit’ returns normally
+To get out of the recursive edit, a command can throw to `exit' -- for
+instance (throw \\='exit nil).
+If you throw a value other than t, `recursive-edit' returns normally
to the function that called it. Throwing a t value causes
-‘recursive-edit’ to quit, so that control returns to the command loop
+`recursive-edit' to quit, so that control returns to the command loop
one level up.
This function is called by the editor initialization to begin editing. */)
bool saved_immediate_echo = current_kboard->immediate_echo;
struct kboard *saved_ok_to_echo = ok_to_echo_at_next_pause;
Lisp_Object saved_echo_string = KVAR (current_kboard, echo_string);
- ptrdiff_t saved_echo_after_prompt = current_kboard->echo_after_prompt;
+ Lisp_Object saved_echo_prompt = KVAR (current_kboard, echo_prompt);
/* Save the this_command_keys status. */
key_count = this_command_key_count;
cancel_echoing ();
ok_to_echo_at_next_pause = saved_ok_to_echo;
- /* Do not restore the echo area string when the user is
- introducing a prefix argument. Otherwise we end with
- repetitions of the partially introduced prefix
- argument. (bug#19875) */
- if (NILP (intern ("prefix-arg")))
- {
- kset_echo_string (current_kboard, saved_echo_string);
- }
- current_kboard->echo_after_prompt = saved_echo_after_prompt;
+ kset_echo_string (current_kboard, saved_echo_string);
+ kset_echo_prompt (current_kboard, saved_echo_prompt);
if (saved_immediate_echo)
echo_now ();
/* Install the string PROMPT as the beginning of the string
of echoing, so that it serves as a prompt for the next
character. */
- kset_echo_string (current_kboard, prompt);
- current_kboard->echo_after_prompt = SCHARS (prompt);
+ kset_echo_prompt (current_kboard, prompt);
+ current_kboard->immediate_echo = false;
echo_now ();
}
else if (cursor_in_echo_area
kb->kbd_queue_has_data = false;
kb->immediate_echo = false;
kset_echo_string (kb, Qnil);
- kb->echo_after_prompt = -1;
+ kset_echo_prompt (kb, Qnil);
kb->kbd_macro_buffer = 0;
kb->kbd_macro_bufsize = 0;
kset_defining_kbd_macro (kb, Qnil);
mark_object (KVAR (kb, Vlocal_function_key_map));
mark_object (KVAR (kb, Vdefault_minibuffer_frame));
mark_object (KVAR (kb, echo_string));
+ mark_object (KVAR (kb, echo_prompt));
}
{
union buffered_input_event *event;
/* True means echo each character as typed. */
bool_bf immediate_echo : 1;
- /* If we have echoed a prompt string specified by the user,
- this is its length in characters. Otherwise this is -1. */
- ptrdiff_t echo_after_prompt;
+ /* If we have a prompt string specified by the user, this is it. */
+ Lisp_Object echo_prompt_;
};
INLINE void
data is available in the buffers manually. */
if (nfds == 0)
{
+ fd_set tls_available;
+ int set = 0;
+
+ FD_ZERO (&tls_available);
if (! wait_proc)
{
/* We're not waiting on a specific process, so loop
{
nfds++;
eassert (p->infd == channel);
- FD_SET (p->infd, &Available);
+ FD_SET (p->infd, &tls_available);
+ set++;
}
}
}
nfds = 1;
eassert (0 <= wait_proc->infd);
/* Set to Available. */
- FD_SET (wait_proc->infd, &Available);
+ FD_SET (wait_proc->infd, &tls_available);
+ set++;
}
}
+ if (set)
+ Available = tls_available;
}
#endif
}
int
sys_unlink (const char * path)
{
+ int rmstatus, e;
+
path = map_w32_filename (path, NULL);
if (w32_unicode_filenames)
wchar_t path_w[MAX_PATH];
filename_to_utf16 (path, path_w);
- /* On Unix, unlink works without write permission. */
+ /* On Unix, unlink works without write permission. */
_wchmod (path_w, 0666);
- return _wunlink (path_w);
+ rmstatus = _wunlink (path_w);
+ e = errno;
+ /* Symlinks to directories can only be deleted by _rmdir;
+ _unlink returns EACCES. */
+ if (rmstatus != 0
+ && errno == EACCES
+ && (is_symlink (path) & FILE_ATTRIBUTE_DIRECTORY) != 0)
+ rmstatus = _wrmdir (path_w);
+ else
+ errno = e;
}
else
{
filename_to_ansi (path, path_a);
_chmod (path_a, 0666);
- return _unlink (path_a);
+ rmstatus = _unlink (path_a);
+ e = errno;
+ if (rmstatus != 0
+ && errno == EACCES
+ && (is_symlink (path) & FILE_ATTRIBUTE_DIRECTORY) != 0)
+ rmstatus = _rmdir (path_a);
+ else
+ errno = e;
}
+
+ return rmstatus;
}
static FILETIME utc_base_ft;
/* A quick inexpensive test of whether FILENAME identifies a file that
is a symlink. Returns non-zero if it is, zero otherwise. FILENAME
must already be in the normalized form returned by
- map_w32_filename.
+ map_w32_filename. If the symlink is to a directory, the
+ FILE_ATTRIBUTE_DIRECTORY bit will be set in the return value.
Note: for repeated operations on many files, it is best to test
whether the underlying volume actually supports symlinks, by
attrs_mean_symlink =
(wfdw.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0
&& (wfdw.dwReserved0 & IO_REPARSE_TAG_SYMLINK) == IO_REPARSE_TAG_SYMLINK;
+ if (attrs_mean_symlink)
+ attrs_mean_symlink |= (wfdw.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
}
else if (_mbspbrk (filename_a, "?"))
{
attrs_mean_symlink =
(wfda.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0
&& (wfda.dwReserved0 & IO_REPARSE_TAG_SYMLINK) == IO_REPARSE_TAG_SYMLINK;
+ if (attrs_mean_symlink)
+ attrs_mean_symlink |= (wfda.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
}
if (fh == INVALID_HANDLE_VALUE)
return 0;
return face_id;
}
+/* Forget the `escape-glyph' and `glyphless-char' faces. This should
+ be called before redisplaying windows, and when the frame's face
+ cache is freed. */
+void
+forget_escape_and_glyphless_faces (void)
+{
+ last_escape_glyph_frame = NULL;
+ last_escape_glyph_face_id = (1 << FACE_ID_BITS);
+ last_glyphless_glyph_frame = NULL;
+ last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
+}
+
/* Load IT's display element fields with information about the next
display element from the current position of IT. Value is false if
end of buffer (or C string) is reached. */
Lisp_Object window;
struct text_pos start;
+ /* We are about to enter redisplay without going through
+ redisplay_internal, so we need to forget these faces by hand
+ here. */
+ forget_escape_and_glyphless_faces ();
+
/* Do this before displaying, so that we have a large enough glyph
matrix for the display. If we can't get enough space for the
whole text, display the last N lines. That works by setting w->start. */
sw = w;
pending = false;
- last_escape_glyph_frame = NULL;
- last_escape_glyph_face_id = (1 << FACE_ID_BITS);
- last_glyphless_glyph_frame = NULL;
- last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
+ forget_escape_and_glyphless_faces ();
/* If face_change, init_iterator will free all realized faces, which
includes the faces referenced from current matrices. So, we
c->faces_by_id[i] = NULL;
}
+ /* Forget the escape-glyph and glyphless-char faces. */
+ forget_escape_and_glyphless_faces ();
c->used = 0;
size = FACE_CACHE_BUCKETS_SIZE * sizeof *c->buckets;
memset (c->buckets, 0, size);
## To run tests under a debugger, set this to eg: "gdb --args".
GDB =
+# The locale to run tests under. Tests should work if this is set to
+# any supported locale. Use the C locale by default, as it should be
+# supported everywhere.
+TEST_LOCALE = C
+
# The actual Emacs command run in the targets below.
# Prevent any setting of EMACSLOADPATH in user environment causing problems.
-emacs = EMACSLOADPATH= LC_ALL=C EMACS_TEST_DIRECTORY=$(srcdir) $(GDB) "$(EMACS)" $(EMACSOPT)
+emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) EMACS_TEST_DIRECTORY=$(srcdir) \
+ $(GDB) "$(EMACS)" $(EMACSOPT)
.PHONY: all check
(defun flymake-tests--current-face (file predicate)
(let ((buffer (find-file-noselect
(expand-file-name file flymake-tests-data-directory)))
+ (process-environment (cons "LC_ALL=C" process-environment))
(i 0))
(unwind-protect
(with-current-buffer buffer
(should (not (map-empty-p "hello")))
(should (map-empty-p "")))
-(ert-deftest test-map-contains-key-p ()
- (should (map-contains-key-p '((a . 1) (b . 2)) 'a))
- (should (not (map-contains-key-p '((a . 1) (b . 2)) 'c)))
- (should (map-contains-key-p '(("a" . 1)) "a"))
- (should (not (map-contains-key-p '(("a" . 1)) "a" #'eq)))
- (should (map-contains-key-p [a b c] 2))
- (should (not (map-contains-key-p [a b c] 3))))
-
-(ert-deftest test-map-some-p ()
+(ert-deftest test-map-contains-key ()
+ (should (map-contains-key '((a . 1) (b . 2)) 'a))
+ (should (not (map-contains-key '((a . 1) (b . 2)) 'c)))
+ (should (map-contains-key '(("a" . 1)) "a"))
+ (should (not (map-contains-key '(("a" . 1)) "a" #'eq)))
+ (should (map-contains-key [a b c] 2))
+ (should (not (map-contains-key [a b c] 3))))
+
+(ert-deftest test-map-some ()
(with-maps-do map
- (should (equal (map-some-p (lambda (k _v)
- (eq 1 k))
- map)
- (cons 1 4)))
- (should (not (map-some-p (lambda (k _v)
- (eq 'd k))
- map))))
+ (should (map-some (lambda (k _v)
+ (eq 1 k))
+ map))
+ (should-not (map-some (lambda (k _v)
+ (eq 'd k))
+ map)))
(let ((vec [a b c]))
- (should (equal (map-some-p (lambda (k _v)
- (> k 1))
- vec)
- (cons 2 'c)))
- (should (not (map-some-p (lambda (k _v)
- (> k 3))
- vec)))))
+ (should (map-some (lambda (k _v)
+ (> k 1))
+ vec))
+ (should-not (map-some (lambda (k _v)
+ (> k 3))
+ vec))))
(ert-deftest test-map-every-p ()
(with-maps-do map
:type 'user-error)))
(should
(string= (cadr error-data)
- "Invalid regexp \\( in `python-shell-prompt-input-regexps'"))))
+ (format-message
+ "Invalid regexp \\( in `python-shell-prompt-input-regexps'")))))
(ert-deftest python-shell-prompt-validate-regexps-2 ()
"Check `python-shell-prompt-output-regexps' are validated."
:type 'user-error)))
(should
(string= (cadr error-data)
- "Invalid regexp \\( in `python-shell-prompt-output-regexps'"))))
+ (format-message
+ "Invalid regexp \\( in `python-shell-prompt-output-regexps'")))))
(ert-deftest python-shell-prompt-validate-regexps-3 ()
"Check `python-shell-prompt-regexp' is validated."
:type 'user-error)))
(should
(string= (cadr error-data)
- "Invalid regexp \\( in `python-shell-prompt-regexp'"))))
+ (format-message
+ "Invalid regexp \\( in `python-shell-prompt-regexp'")))))
(ert-deftest python-shell-prompt-validate-regexps-4 ()
"Check `python-shell-prompt-block-regexp' is validated."
:type 'user-error)))
(should
(string= (cadr error-data)
- "Invalid regexp \\( in `python-shell-prompt-block-regexp'"))))
+ (format-message
+ "Invalid regexp \\( in `python-shell-prompt-block-regexp'")))))
(ert-deftest python-shell-prompt-validate-regexps-5 ()
"Check `python-shell-prompt-pdb-regexp' is validated."
:type 'user-error)))
(should
(string= (cadr error-data)
- "Invalid regexp \\( in `python-shell-prompt-pdb-regexp'"))))
+ (format-message
+ "Invalid regexp \\( in `python-shell-prompt-pdb-regexp'")))))
(ert-deftest python-shell-prompt-validate-regexps-6 ()
"Check `python-shell-prompt-output-regexp' is validated."
:type 'user-error)))
(should
(string= (cadr error-data)
- "Invalid regexp \\( in `python-shell-prompt-output-regexp'"))))
+ (format-message
+ "Invalid regexp \\( in `python-shell-prompt-output-regexp'")))))
(ert-deftest python-shell-prompt-validate-regexps-7 ()
"Check default regexps are valid."
:type 'user-error)))
(should
(string= (cadr error-data)
- "Invalid regexp \\( in `python-shell-prompt-output-regexp'"))))
+ (format-message
+ "Invalid regexp \\( in `python-shell-prompt-output-regexp'")))))
(ert-deftest python-shell-prompt-set-calculated-regexps-2 ()
"Check `python-shell-prompt-input-regexps' are set."
(should (eq (seq-reduce #'+ seq 0) 0))
(should (eq (seq-reduce #'+ seq 7) 7))))
-(ert-deftest test-seq-some-p ()
+(ert-deftest test-seq-some ()
(with-test-sequences (seq '(4 3 2 1))
- (should (= (seq-some-p #'test-sequences-evenp seq) 4))
- (should (= (seq-some-p #'test-sequences-oddp seq) 3))
- (should-not (seq-some-p (lambda (elt) (> elt 10)) seq)))
+ (should (seq-some #'test-sequences-evenp seq))
+ (should (seq-some #'test-sequences-oddp seq))
+ (should-not (seq-some (lambda (elt) (> elt 10)) seq)))
(with-test-sequences (seq '())
- (should-not (seq-some-p #'test-sequences-oddp seq))))
+ (should-not (seq-some #'test-sequences-oddp seq)))
+ (should (seq-some #'null '(1 nil 2))))
-(ert-deftest test-seq-contains-p ()
+(ert-deftest test-seq-contains ()
(with-test-sequences (seq '(3 4 5 6))
- (should (seq-contains-p seq 3))
- (should-not (seq-contains-p seq 7)))
+ (should (seq-contains seq 3))
+ (should-not (seq-contains seq 7)))
(with-test-sequences (seq '())
- (should-not (seq-contains-p seq 3))
- (should-not (seq-contains-p seq nil))))
+ (should-not (seq-contains seq 3))
+ (should-not (seq-contains seq nil))))
(ert-deftest test-seq-every-p ()
(with-test-sequences (seq '(43 54 22 1))
(require 'ert)
(ert-deftest textprop-tests-format ()
- "Test ‘format’ with text properties."
+ "Test `format' with text properties."
;; See Bug#21351.
(should (equal-including-properties
(format #("mouse-1, RET: %s -- w: copy %s"
INPUT is the initial content of the buffer and EXPECTED is expected result
after `tildify-buffer' is run."
(with-temp-buffer
+ (setq-local buffer-file-coding-system 'utf-8)
(dolist (mode modes)
(erase-buffer)
(funcall mode)
(defun tildify-space-test--test (modes nbsp env-open &optional set-space-string)
(with-temp-buffer
+ (setq-local buffer-file-coding-system 'utf-8)
(dolist (mode modes)
(funcall mode)
(when set-space-string
(defun tildify-space-undo-test--test
(modes nbsp env-open &optional set-space-string)
(with-temp-buffer
+ (setq-local buffer-file-coding-system 'utf-8)
(dolist (mode modes)
(funcall mode)
(when set-space-string