* Non-ascii tag names
@ 2007-06-16 18:01 David Smith
2007-06-16 22:15 ` Carsten Dominik
0 siblings, 1 reply; 3+ messages in thread
From: David Smith @ 2007-06-16 18:01 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 308 bytes --]
Carsten, you said in
http://thread.gmane.org/gmane.emacs.orgmode/1327/focus=1328 that non-ascii
tag names are not supported. I've written a patch that seems to make this
work appropriately just by fixing the regexps involving tags to use
[:alnum:] instead of a-zA-Z0-9. Is this insufficient?
Cheers,
David
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: i18n_tags.patch --]
[-- Type: text/x-diff; name="i18n_tags.patch", Size: 14033 bytes --]
# HG changeset patch
# User David Smith <davidsmith@acm.org>
# Date 1182016499 -32400
# Node ID fbf053db75b446b7b896a943ed07696e2fe08110
# Parent 8296b36637ff07252e11bd5eb3f87946f33351a9
patch queue: i18n tags
diff -r 8296b36637ff -r fbf053db75b4 org.el
--- a/org.el Sun Jun 17 02:38:36 2007 +0900
+++ b/org.el Sun Jun 17 02:54:59 2007 +0900
@@ -3494,7 +3494,7 @@ means to push this value onto the list i
(cond
((equal e "{") (push '(:startgroup) tgs))
((equal e "}") (push '(:endgroup) tgs))
- ((string-match "^\\([0-9a-zA-Z_@]+\\)(\\(.\\))$" e)
+ ((string-match "^\\([[:alnum:]_@]+\\)(\\(.\\))$" e)
(push (cons (match-string 1 e)
(string-to-char (match-string 2 e)))
tgs))
@@ -3530,7 +3530,7 @@ means to push this value onto the list i
org-todo-line-tags-regexp
(concat "^\\(\\*+\\)[ \t]*\\(?:\\("
(mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
- "\\)\\>\\)? *\\(.*?\\([ \t]:[a-zA-Z0-9:_@]+:[ \t]*\\)?$\\)")
+ "\\)\\>\\)? *\\(.*?\\([ \t]:[[:alnum:]:_@]+:[ \t]*\\)?$\\)")
org-looking-at-done-regexp
(concat "^" "\\(?:"
(mapconcat 'regexp-quote org-done-keywords "\\|") "\\)"
@@ -4230,7 +4230,7 @@ between words."
"\\)\\>")))
(defun org-activate-tags (limit)
- (if (re-search-forward "[ \t]\\(:[A-Za-z_@0-9:]+:\\)[ \r\n]" limit t)
+ (if (re-search-forward "[ \t]\\(:[[:alnum:]_@:]+:\\)[ \r\n]" limit t)
(progn
(add-text-properties (match-beginning 1) (match-end 1)
(list 'mouse-face 'highlight
@@ -5981,7 +5981,7 @@ this heading."
(progn
(if (re-search-forward
(concat "\\(^\\|\r\\)"
- (regexp-quote heading) "[ \t]*\\(:[a-zA-Z0-9_@:]+:\\)?[ \t]*\\($\\|\r\\)")
+ (regexp-quote heading) "[ \t]*\\(:[[:alnum:]_@:]+:\\)?[ \t]*\\($\\|\r\\)")
nil t)
(goto-char (match-end 0))
;; Heading not found, just insert it at the end
@@ -6100,7 +6100,7 @@ If ONOFF is `on' or `off', don't toggle
(let (res current)
(save-excursion
(beginning-of-line)
- (if (re-search-forward "[ \t]:\\([a-zA-Z0-9_@:]+\\):[ \t]*$"
+ (if (re-search-forward "[ \t]:\\([[:alnum:]_@:]+\\):[ \t]*$"
(point-at-eol) t)
(progn
(setq current (match-string 1))
@@ -6206,9 +6206,9 @@ outside the table.")
(defconst org-table-range-regexp2
(concat
- "\\(" "@[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[a-zA-Z0-9]+" "\\)"
+ "\\(" "@[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[[:alnum:]]+" "\\)"
"\\.\\."
- "\\(" "@?[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[a-zA-Z0-9]+" "\\)")
+ "\\(" "@?[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[[:alnum:]]+" "\\)")
"Match a range for reference display.")
(defconst org-table-translate-regexp
@@ -7731,7 +7731,7 @@ When NAMED is non-nil, look for a named
"\n")))
(defsubst org-table-formula-make-cmp-string (a)
- (when (string-match "^\\(@\\([0-9]+\\)\\)?\\(\\$?\\([0-9]+\\)\\)?\\(\\$?[a-zA-Z0-9]+\\)?" a)
+ (when (string-match "^\\(@\\([0-9]+\\)\\)?\\(\\$?\\([0-9]+\\)\\)?\\(\\$?[[:alnum:]]+\\)?" a)
(concat
(if (match-end 2) (format "@%05d" (string-to-number (match-string 2 a))) "")
(if (match-end 4) (format "$%05d" (string-to-number (match-string 4 a))) "")
@@ -7752,7 +7752,7 @@ When NAMED is non-nil, look for a named
(when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)")
(setq strings (org-split-string (match-string 2) " *:: *"))
(while (setq string (pop strings))
- (when (string-match "\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*[^ \t]\\)" string)
+ (when (string-match "\\(@[0-9]+\\$[0-9]+\\|\\$\\([[:alnum:]]+\\)\\) *= *\\(.*[^ \t]\\)" string)
(setq scol (if (match-end 2)
(match-string 2 string)
(match-string 1 string))
@@ -10070,7 +10070,7 @@ according to FMT (default from `org-emai
;; We are using a headline, clean up garbage in there.
(if (string-match org-todo-regexp s)
(setq s (replace-match "" t t s)))
- (if (string-match ":[a-zA-Z_@0-9:]+:[ \t]*$" s)
+ (if (string-match ":[[:alnum:]_@:]+:[ \t]*$" s)
(setq s (replace-match "" t t s)))
(setq s (org-trim s))
(if (string-match (concat "^\\(" org-quote-string "\\|"
@@ -10078,7 +10078,7 @@ according to FMT (default from `org-emai
(setq s (replace-match "" t t s)))
(while (string-match org-ts-regexp s)
(setq s (replace-match "" t t s))))
- (while (string-match "[^a-zA-Z_0-9 \t]+" s)
+ (while (string-match "[^[:alnum:] \t]+" s)
(setq s (replace-match " " t t s)))
(or string (setq s (concat "*" s))) ; Add * for headlines
(mapconcat 'identity (org-split-string s "[ \t]+") " ")))
@@ -10420,7 +10420,7 @@ optional argument IN-EMACS is non-nil, E
(setq type (match-string 1) path (match-string 2))
(throw 'match t)))
(save-excursion
- (when (org-in-regexp "\\(:[A-Za-z_@0-9:]+\\):[ \t]*$")
+ (when (org-in-regexp "\\(:[[:alnum:]_@:]+\\):[ \t]*$")
(setq type "tags"
path (match-string 1))
(while (string-match ":" path)
@@ -10645,7 +10645,7 @@ in all files. If AVOID-POS is given, ig
(when (equal (string-to-char s) ?*)
;; Anchor on headlines, post may include tags.
(setq pre "^\\*+[ \t]*\\(?:\\sw+\\)?[ \t]*"
- post "[ \t]*\\(?:[ \t]+:[a-zA-Z_@0-9:+]:[ \t]*\\)?$"
+ post "[ \t]*\\(?:[ \t]+:[[:alnum:]_@:+]:[ \t]*\\)?$"
s (substring s 1)))
(remove-text-properties
0 (length s)
@@ -10863,7 +10863,7 @@ onto the ring."
"Follow a VM link to FOLDER and ARTICLE."
(require 'vm)
(setq article (org-add-angle-brackets article))
- (if (string-match "^//\\([a-zA-Z]+@\\)?\\([^:]+\\):\\(.*\\)" folder)
+ (if (string-match "^//\\([[:alnum:]]+@\\)?\\([^:]+\\):\\(.*\\)" folder)
;; ange-ftp or efs or tramp access
(let ((user (or (match-string 1 folder) (user-login-name)))
(host (match-string 2 folder))
@@ -11118,9 +11118,9 @@ If the file does not exist, an error is
(old-pos (point))
(old-mode major-mode)
ext cmd)
- (if (string-match "^.*\\.\\([a-zA-Z0-9]+\\.gz\\)$" dfile)
+ (if (string-match "^.*\\.\\([[:alnum:]]+\\.gz\\)$" dfile)
(setq ext (match-string 1 dfile))
- (if (string-match "^.*\\.\\([a-zA-Z0-9]+\\)$" dfile)
+ (if (string-match "^.*\\.\\([[:alnum:]]+\\)$" dfile)
(setq ext (match-string 1 dfile))))
(if in-emacs
(setq cmd 'emacs)
@@ -11397,7 +11397,7 @@ See also the variable `org-reverse-note-
(goto-char (point-min))
(if (re-search-forward
(concat "^\\*+[ \t]+" (regexp-quote heading)
- "\\([ \t]+:[@a-zA-Z0-9_:]*\\)?[ \t]*$")
+ "\\([ \t]+:[[:alnum:]@_:]*\\)?[ \t]*$")
nil t)
(setq org-goto-start-pos (match-beginning 0))))
@@ -11591,10 +11591,10 @@ At all other locations, this simply call
(catch 'exit
(let* ((end (point))
(beg1 (save-excursion
- (skip-chars-backward "a-zA-Z_@0-9")
+ (skip-chars-backward "[:alnum:]_@")
(point)))
(beg (save-excursion
- (skip-chars-backward "a-zA-Z0-9_:$")
+ (skip-chars-backward "[:alnum:]_:$")
(point)))
(confirm (lambda (x) (stringp (car x))))
(searchhead (equal (char-before beg) ?*))
@@ -12267,7 +12267,7 @@ are included in the output."
are included in the output."
(let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\("
(mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
- "\\>\\)\\)? *\\(.*?\\)\\(:[A-Za-z_@0-9:]+:\\)?[ \t]*$"))
+ "\\>\\)\\)? *\\(.*?\\)\\(:[[:alnum:]_@:]+:\\)?[ \t]*$"))
(props (list 'face nil
'done-face 'org-done
'undone-face nil
@@ -12364,7 +12364,7 @@ also TODO lines."
;; Parse the string and create a lisp form
(let ((match0 match)
- (re "^&?\\([-+:]\\)?\\({[^}]+}\\|LEVEL=\\([0-9]+\\)\\|[A-Za-z_@0-9]+\\)")
+ (re "^&?\\([-+:]\\)?\\({[^}]+}\\|LEVEL=\\([0-9]+\\)\\|[[:alnum:]_@]+\\)")
minus tag mm
tagsmatch todomatch tagsmatcher todomatcher kwd matcher
orterms term orlist re-p level-p)
@@ -12584,7 +12584,7 @@ Returns the new tags string, or nil to n
groups ingroup)
(save-excursion
(beginning-of-line 1)
- (if (looking-at ".*[ \t]\\(:[A-Za-z_@0-9:]+:\\)[ \t]*\\(\r\\|$\\)")
+ (if (looking-at ".*[ \t]\\(:[[:alnum:]_@:]+:\\)[ \t]*\\(\r\\|$\\)")
(setq ov-start (match-beginning 1)
ov-end (match-end 1)
ov-prefix "")
@@ -12719,7 +12719,7 @@ Returns the new tags string, or nil to n
(delete-region (point) (point-at-eol))
(org-fast-tag-insert "Current" current c-face)
(org-set-current-tags-overlay current ov-prefix)
- (while (re-search-forward "\\[.\\] \\([a-zA-Z0-9_@]+\\)" nil t)
+ (while (re-search-forward "\\[.\\] \\([[:alnum:]_@]+\\)" nil t)
(setq tg (match-string 1))
(add-text-properties (match-beginning 1) (match-end 1)
(list 'face
@@ -12739,7 +12739,7 @@ Returns the new tags string, or nil to n
(error "Not on a heading"))
(save-excursion
(beginning-of-line 1)
- (if (looking-at ".*[ \t]\\(:[A-Za-z_@0-9:]+:\\)[ \t]*\\(\r\\|$\\)")
+ (if (looking-at ".*[ \t]\\(:[[:alnum:]_@:]+:\\)[ \t]*\\(\r\\|$\\)")
(org-match-string-no-properties 1)
"")))
@@ -12748,7 +12748,7 @@ Returns the new tags string, or nil to n
(let (tags)
(save-excursion
(goto-char (point-min))
- (while (re-search-forward "[ \t]:\\([A-Za-z_@0-9:]+\\):[ \t\r\n]" nil t)
+ (while (re-search-forward "[ \t]:\\([[:alnum:]_@:]+\\):[ \t\r\n]" nil t)
(mapc (lambda (x) (add-to-list 'tags x))
(org-split-string (org-match-string-no-properties 1) ":"))))
(mapcar 'list tags)))
@@ -13906,7 +13906,7 @@ the returned times will be formatted str
(when (setq time (get-text-property p :org-clock-minutes))
(save-excursion
(beginning-of-line 1)
- (when (and (looking-at "\\(\\*+\\)[ \t]+\\(.*?\\)\\([ \t]+:[0-9a-zA-Z_@:]+:\\)?[ \t]*$")
+ (when (and (looking-at "\\(\\*+\\)[ \t]+\\(.*?\\)\\([ \t]+:[[:alnum:]_@:]+:\\)?[ \t]*$")
(setq level (- (match-end 1) (match-beginning 1)))
(<= level maxlevel))
(setq hlc (if emph (or (cdr (assoc level hlchars)) "") "")
@@ -15476,10 +15476,10 @@ MATCH is being ignored."
"\\)\\>"))
(tags (nth 2 org-stuck-projects))
(tags-re (if (member "*" tags)
- "^\\*+.*:[a-zA-Z0-9_@]+:[ \t]*$"
+ "^\\*+.*:[[:alnum:]_@]+:[ \t]*$"
(concat "^\\*+.*:\\("
(mapconcat 'identity tags "\\|")
- "\\):[a-zA-Z0-9_@:]*[ \t]*$")))
+ "\\):[[:alnum:]_@:]*[ \t]*$")))
(gen-re (nth 3 org-stuck-projects))
(re-list
(delq nil
@@ -16238,7 +16238,7 @@ only the correctly processes TXT should
(if s1 (setq s1 (org-get-time-of-day s1 'string t)))
(if s2 (setq s2 (org-get-time-of-day s2 'string t))))
- (when (string-match "\\([ \t]+\\)\\(:[a-zA-Z_@0-9:]+:\\)[ \t]*$" txt)
+ (when (string-match "\\([ \t]+\\)\\(:[[:alnum:]_@:]+:\\)[ \t]*$" txt)
;; Tags are in the string
(if (or (eq org-agenda-remove-tags t)
(and org-agenda-remove-tags
@@ -16977,7 +16977,7 @@ the new TODO state."
(let ((buffer-read-only))
(save-excursion
(goto-char (if line (point-at-bol) (point-min)))
- (while (re-search-forward "\\([ \t]+\\):[a-zA-Z0-9_@:]+:[ \t]*$"
+ (while (re-search-forward "\\([ \t]+\\):[[:alnum:]_@:]+:[ \t]*$"
(if line (point-at-eol) nil) t)
(delete-region (match-beginning 1) (match-end 1))
(goto-char (match-beginning 1))
@@ -17038,7 +17038,7 @@ the tags of the current headline come la
(org-back-to-heading t)
(condition-case nil
(while t
- (if (looking-at "[^\r\n]+?:\\([a-zA-Z_@0-9:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
+ (if (looking-at "[^\r\n]+?:\\([[:alnum:]_@:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
(setq tags (append (org-split-string
(org-match-string-no-properties 1) ":")
tags)))
@@ -18508,7 +18508,7 @@ underlined headlines. The default is 3.
(setq txt (org-html-expand-for-ascii txt))
(if (and (memq org-export-with-tags '(not-in-toc nil))
- (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt))
+ (string-match "[ \t]+:[[:alnum:]_@:]+:[ \t]*$" txt))
(setq txt (replace-match "" t t txt)))
(if (string-match quote-re0 txt)
(setq txt (replace-match "" t t txt)))
@@ -18655,7 +18655,7 @@ underlined headlines. The default is 3.
(insert "\n"))
(setq char (nth (- umax level) (reverse org-export-ascii-underline)))
(unless org-export-with-tags
- (if (string-match "[ \t]+\\(:[a-zA-Z0-9_@:]+:\\)[ \t]*$" title)
+ (if (string-match "[ \t]+\\(:[[:alnum:]_@:]+:\\)[ \t]*$" title)
(setq title (replace-match "" t t title))))
(if org-export-with-section-numbers
(setq title (concat (org-section-number level) " " title)))
@@ -19123,7 +19123,7 @@ lang=\"%s\" xml:lang=\"%s\">
(org-search-todo-below
line lines level))))
(if (and (memq org-export-with-tags '(not-in-toc nil))
- (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt))
+ (string-match "[ \t]+:[[:alnum:]_@:]+:[ \t]*$" txt))
(setq txt (replace-match "" t t txt)))
(if (string-match quote-re0 txt)
(setq txt (replace-match "" t t txt)))
@@ -19829,7 +19829,7 @@ But it has the disadvantage, that Org-mo
(defun org-export-cleanup-toc-line (s)
"Remove tags and time staps from lines going into the toc."
- (if (string-match " +:[a-zA-Z0-9_@:]+: *$" s)
+ (if (string-match " +:[[:alnum:]_@:]+: *$" s)
(setq s (replace-match "" t t s)))
(when org-export-remove-timestamps-from-toc
(while (string-match org-maybe-keyword-time-regexp s)
@@ -19968,7 +19968,7 @@ When TITLE is nil, just close all open l
(when title
;; If title is nil, this means this function is called to close
;; all levels, so the rest is done only if title is given
- (when (string-match "\\(:[a-zA-Z0-9_@:]+:\\)[ \t]*$" title)
+ (when (string-match "\\(:[[:alnum:]_@:]+:\\)[ \t]*$" title)
(setq title (replace-match
(if org-export-with-tags
(save-match-data
[-- Attachment #3: Type: text/plain, Size: 149 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Non-ascii tag names
2007-06-16 18:01 Non-ascii tag names David Smith
@ 2007-06-16 22:15 ` Carsten Dominik
2007-06-18 8:19 ` Carsten Dominik
0 siblings, 1 reply; 3+ messages in thread
From: Carsten Dominik @ 2007-06-16 22:15 UTC (permalink / raw)
To: David Smith; +Cc: emacs-orgmode
It should be largely sufficient - maybe not 100%, but close.
Unfortunately this does not work under XEmacs as far as I know.
- Carsten
On Jun 16, 2007, at 20:01, David Smith wrote:
> Carsten, you said in
> http://thread.gmane.org/gmane.emacs.orgmode/1327/focus=1328 that
> non-ascii
> tag names are not supported. I've written a patch that seems to make
> this
> work appropriately just by fixing the regexps involving tags to use
> [:alnum:] instead of a-zA-Z0-9. Is this insufficient?
>
> Cheers,
> David
>
> <i18n_tags.patch>_______________________________________________
> Emacs-orgmode mailing list
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
--
Carsten Dominik
Sterrenkundig Instituut "Anton Pannekoek"
Universiteit van Amsterdam
Kruislaan 403
NL-1098SJ Amsterdam
phone: +31 20 525 7477
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Non-ascii tag names
2007-06-16 22:15 ` Carsten Dominik
@ 2007-06-18 8:19 ` Carsten Dominik
0 siblings, 0 replies; 3+ messages in thread
From: Carsten Dominik @ 2007-06-18 8:19 UTC (permalink / raw)
To: Carsten Dominik; +Cc: David Smith, emacs-orgmode
On Jun 17, 2007, at 0:15, Carsten Dominik wrote:
> It should be largely sufficient - maybe not 100%, but close.
>
> Unfortunately this does not work under XEmacs as far as I know.
>
> - Carsten
Thanks for tha patch, i'll put it in with a way to
get back XEmacs funtionality.
- Carsten
>
> On Jun 16, 2007, at 20:01, David Smith wrote:
>
>> Carsten, you said in
>> http://thread.gmane.org/gmane.emacs.orgmode/1327/focus=1328 that
>> non-ascii
>> tag names are not supported. I've written a patch that seems to make
>> this
>> work appropriately just by fixing the regexps involving tags to use
>> [:alnum:] instead of a-zA-Z0-9. Is this insufficient?
>>
>> Cheers,
>> David
>>
>> <i18n_tags.patch>_______________________________________________
>> Emacs-orgmode mailing list
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>>
>
> --
> Carsten Dominik
> Sterrenkundig Instituut "Anton Pannekoek"
> Universiteit van Amsterdam
> Kruislaan 403
> NL-1098SJ Amsterdam
> phone: +31 20 525 7477
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
>
--
Carsten Dominik
Sterrenkundig Instituut "Anton Pannekoek"
Universiteit van Amsterdam
Kruislaan 403
NL-1098SJ Amsterdam
phone: +31 20 525 7477
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-06-18 8:19 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-16 18:01 Non-ascii tag names David Smith
2007-06-16 22:15 ` Carsten Dominik
2007-06-18 8:19 ` Carsten Dominik
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.