tildify.el: introduce a `tildify-pattern' variable

* textmodes/tildify.el (tildify-pattern): New variable for
defining tildifying pattern.  Being a buffer-local variable it is
much easier to handle than `tildify-pattern-alist' that has been
used so far.  It also works better with derived modes.
(tildify-pattern-alist): Mark as obsolete.
This commit is contained in:
Michal Nazarewicz 2014-11-16 18:08:36 +01:00
parent b810409007
commit d5ec102b7a
3 changed files with 45 additions and 27 deletions

View file

@ -301,8 +301,8 @@ use PDF instead of DVI.
By default, 32 spaces and four TABs are considered to be too much but By default, 32 spaces and four TABs are considered to be too much but
`whitespace-big-indent-regexp' can be configured to change that. `whitespace-big-indent-regexp' can be configured to change that.
** tildify: `tildify-space-string' variable has been added making ** tildify: `tildify-space-string' and `tildify-pattern' variables added making
`tildify-string-alist' obsolete. `tildify-string-alist' and `tildify-pattern-alist' obsolete.
** Obsolete packages ** Obsolete packages

View file

@ -1,11 +1,13 @@
2014-11-17 Michal Nazarewicz <mina86@mina86.com> 2014-11-17 Michal Nazarewicz <mina86@mina86.com>
* textmodes/tildify.el (tildify-space-string): New variable for * textmodes/tildify.el (tildify-pattern, tildify-space-string):
specifying representation of a hard space -- a no-break space by New variables for specifying tildify pattern and representation of
default. Being a buffer-local variable it is much easier to a hard space -- a no-break space by default -- respectively.
handle than `tildify-string-alist' that has been used so far. It Being buffer-local they are much easier to handle than
also works better with derived modes. `tildify-string-alist' and `tildify-pattern-alist' respectively
(tildify-string-alist): Mark as obsolete. that have been used so far. They also works better with derived
modes.
(tildify-pattern, tildify-string-alist): Mark as obsolete.
* textmodes/tex-mode.el (tex-common-initialization): Set * textmodes/tex-mode.el (tex-common-initialization): Set
`tildify-space-string' variable in all variants of TeX mode since `tildify-space-string' variable in all variants of TeX mode since

View file

@ -4,7 +4,7 @@
;; Author: Milan Zamazal <pdm@zamazal.org> ;; Author: Milan Zamazal <pdm@zamazal.org>
;; Michal Nazarewicz <mina86@mina86.com> ;; Michal Nazarewicz <mina86@mina86.com>
;; Version: 4.5.5 ;; Version: 4.5.6
;; Keywords: text, TeX, SGML, wp ;; Keywords: text, TeX, SGML, wp
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
@ -56,8 +56,21 @@
:version "21.1" :version "21.1"
:group 'wp) :group 'wp)
(defcustom tildify-pattern-alist (defcustom tildify-pattern
'((t "\\([,:;(][ \t]*[a]\\|\\<[AIKOSUVZikosuvz]\\)\\([ \t]+\\|[ \t]*\n[ \t]*\\)\\(\\w\\|[([{\\]\\|<[a-zA-Z]\\)" 2)) "\\(?:[,:;(][ \t]*[a]\\|\\<[AIKOSUVZikosuvz]\\)\\([ \t]+\\|[ \t]*\n[ \t]*\\)\\(?:\\w\\|[([{\\]\\|<[a-zA-Z]\\)"
"A pattern specifying where to insert hard spaces.
`tildify-buffer' function will replace first capturing group of the regexp with
a hard space (as defined by `tildify-space-string' variable). (Hint: \\(\\)
non-capturing groups can be used for grouping prior to the part of the regexp
matching the white space). The pattern is matched case-sensitive regardless of
the value of `case-fold-search' setting."
:version "25.1"
:group 'tildify
:type 'string
:safe t)
(defcustom tildify-pattern-alist ()
"Alist specifying where to insert hard spaces. "Alist specifying where to insert hard spaces.
Each alist item is of the form (MAJOR-MODE REGEXP NUMBER) or Each alist item is of the form (MAJOR-MODE REGEXP NUMBER) or
@ -85,6 +98,7 @@ mode, the item for the mode SYMBOL is looked up in the alist instead."
regexp regexp
(integer :tag "Group ")) (integer :tag "Group "))
(symbol :tag "Like other"))))) (symbol :tag "Like other")))))
(make-obsolete-variable 'tildify-pattern-alist 'tildify-pattern "25.1")
(defcustom tildify-space-string "\u00A0" (defcustom tildify-space-string "\u00A0"
"Representation of a hard (a.k.a. no-break) space in current major mode. "Representation of a hard (a.k.a. no-break) space in current major mode.
@ -115,8 +129,7 @@ MAJOR-MODE defines major mode, for which the item applies. It can be either:
alist item alist item
STRING defines the hard space, which is inserted at places defined by STRING defines the hard space, which is inserted at places defined by
`tildify-pattern-alist'. For example it can be \"~\" for TeX or \"&nbsp;\" `tildify-pattern'. For example it can be \"~\" for TeX or \"&nbsp;\" for SGML.
for SGML.
The form (MAJOR-MODE . SYMBOL) defines alias item for MAJOR-MODE. For this The form (MAJOR-MODE . SYMBOL) defines alias item for MAJOR-MODE. For this
mode, the item for the mode SYMBOL is looked up in the alist instead." mode, the item for the mode SYMBOL is looked up in the alist instead."
@ -204,7 +217,7 @@ END-REGEX defines end of the corresponding text part and can be either:
;;;###autoload ;;;###autoload
(defun tildify-region (beg end &optional dont-ask) (defun tildify-region (beg end &optional dont-ask)
"Add hard spaces in the region between BEG and END. "Add hard spaces in the region between BEG and END.
See variables `tildify-pattern-alist', `tildify-space-string', and See variables `tildify-pattern', `tildify-space-string', and
`tildify-ignored-environments-alist' for information about configuration `tildify-ignored-environments-alist' for information about configuration
parameters. parameters.
This function performs no refilling of the changed text. This function performs no refilling of the changed text.
@ -225,7 +238,7 @@ won't be prompted for confirmation of each substitution."
;;;###autoload ;;;###autoload
(defun tildify-buffer (&optional dont-ask) (defun tildify-buffer (&optional dont-ask)
"Add hard spaces in the current buffer. "Add hard spaces in the current buffer.
See variables `tildify-pattern-alist', `tildify-space-string', and See variables `tildify-pattern', `tildify-space-string', and
`tildify-ignored-environments-alist' for information about configuration `tildify-ignored-environments-alist' for information about configuration
parameters. parameters.
This function performs no refilling of the changed text. This function performs no refilling of the changed text.
@ -311,18 +324,21 @@ replacements done and response is one of symbols: t (all right), nil
(quit), force (replace without further questions)." (quit), force (replace without further questions)."
(save-excursion (save-excursion
(goto-char beg) (goto-char beg)
(let* ((alist (tildify--pick-alist-entry tildify-pattern-alist)) (let ((regexp tildify-pattern)
(regexp (car alist)) (match-number 1)
(match-number (cadr alist)) (tilde (or (tildify--pick-alist-entry tildify-string-alist)
(tilde (or (tildify--pick-alist-entry tildify-string-alist) tildify-space-string))
tildify-space-string)) (end-marker (copy-marker end))
(end-marker (copy-marker end)) answer
answer bad-answer
bad-answer replace
replace quit
quit (message-log-max nil)
(message-log-max nil) (count 0))
(count 0)) ;; For the time being, tildify-pattern-alist overwrites tildify-pattern
(let ((alist (tildify--pick-alist-entry tildify-pattern-alist)))
(when alist
(setq regexp (car alist) match-number (cadr alist))))
(while (and (not quit) (while (and (not quit)
(re-search-forward regexp (marker-position end-marker) t)) (re-search-forward regexp (marker-position end-marker) t))
(when (or (not ask) (when (or (not ask)