* bug#20334: What does all-completions with COLLECTION == obarray return? [not found] ` <87twwh1omu.fsf@web.de> @ 2015-04-15 15:14 ` Stefan Monnier 2015-04-15 15:30 ` Andreas Schwab 2015-04-15 16:15 ` Stefan Monnier 0 siblings, 2 replies; 4+ messages in thread From: Stefan Monnier @ 2015-04-15 15:14 UTC (permalink / raw) To: 20334; +Cc: Michael Heerdegen > I guess this should not happen, so it is a bug in Emacs in think. Indeed. Thanks for the test case. I reduced it to: (progn (intern "Bahá'í Date") ;this happens when requiring org (facep "Bahá'í Date") ;; Test if "Bahá'í Date" is the name of more than one interned symbol (let ((ss nil)) (mapatoms (lambda (s) (when (string= (symbol-name s) "Bahá'í Date") (push s ss))) nil) (length ss))) So the patch below fixes it, but it points at a problem in the C function `intern' which I haven't tracked down yet. Stefan diff --git a/src/xfaces.c b/src/xfaces.c index 9f8a816..d079be8 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -1822,7 +1822,8 @@ resolve_face_name (Lisp_Object face_name, bool signal_p) Lisp_Object tortoise, hare; if (STRINGP (face_name)) - face_name = intern (SSDATA (face_name)); + /* face_name = intern (SSDATA (face_name)); */ + face_name = Fintern (face_name, Qnil); if (NILP (face_name) || !SYMBOLP (face_name)) return face_name; ^ permalink raw reply related [flat|nested] 4+ messages in thread
* bug#20334: What does all-completions with COLLECTION == obarray return? 2015-04-15 15:14 ` bug#20334: What does all-completions with COLLECTION == obarray return? Stefan Monnier @ 2015-04-15 15:30 ` Andreas Schwab 2015-04-15 16:15 ` Stefan Monnier 1 sibling, 0 replies; 4+ messages in thread From: Andreas Schwab @ 2015-04-15 15:30 UTC (permalink / raw) To: Stefan Monnier; +Cc: Michael Heerdegen, 20334 Stefan Monnier <monnier@IRO.UMontreal.CA> writes: > So the patch below fixes it, but it points at a problem in the > C function `intern' which I haven't tracked down yet. The C function only works with ASCII-only strings. Lisp_Object tem = oblookup (obarray, str, len, len); Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." ^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#20334: What does all-completions with COLLECTION == obarray return? 2015-04-15 15:14 ` bug#20334: What does all-completions with COLLECTION == obarray return? Stefan Monnier 2015-04-15 15:30 ` Andreas Schwab @ 2015-04-15 16:15 ` Stefan Monnier 2015-04-15 17:24 ` Michael Heerdegen 1 sibling, 1 reply; 4+ messages in thread From: Stefan Monnier @ 2015-04-15 16:15 UTC (permalink / raw) To: 20334; +Cc: Michael Heerdegen > (progn > (intern "Bahá'í Date") ;this happens when requiring org > (facep "Bahá'í Date") > ;; Test if "Bahá'í Date" is the name of more than one interned symbol > (let ((ss nil)) > (mapatoms (lambda (s) (when (string= (symbol-name s) "Bahá'í Date") > (push s ss))) > nil) > (length ss))) I installed the patch below which should fix this problem. Thanks. Stefan diff --git a/src/lread.c b/src/lread.c index 050e43e..fa9a63e 100644 --- a/src/lread.c +++ b/src/lread.c @@ -3778,8 +3778,11 @@ intern_1 (const char *str, ptrdiff_t len) Lisp_Object obarray = check_obarray (Vobarray); Lisp_Object tem = oblookup (obarray, str, len, len); - return SYMBOLP (tem) ? tem : intern_driver (make_string (str, len), - obarray, tem); + return (SYMBOLP (tem) ? tem + /* The above `oblookup' was done on the basis of nchars==nbytes, so + the string has to be unibyte. */ + : intern_driver (make_unibyte_string (str, len), + obarray, tem)); } Lisp_Object diff --git a/src/xfaces.c b/src/xfaces.c index b269722..d198c4b 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -1822,7 +1822,7 @@ resolve_face_name (Lisp_Object face_name, bool signal_p) Lisp_Object tortoise, hare; if (STRINGP (face_name)) - face_name = intern (SSDATA (face_name)); + face_name = Fintern (face_name, Qnil); if (NILP (face_name) || !SYMBOLP (face_name)) return face_name; diff --git a/test/indent/perl.perl b/test/indent/perl.perl index 00ef312..ea48754 100755 --- a/test/indent/perl.perl +++ b/test/indent/perl.perl @@ -5,6 +5,15 @@ sub add_funds($) { return 0; } +my $hash = { + foo => 'bar', + format => 'some', +}; + +sub some_code { + print "will not indent :("; +}; + use v5.14; my $str= <<END; ^ permalink raw reply related [flat|nested] 4+ messages in thread
* bug#20334: What does all-completions with COLLECTION == obarray return? 2015-04-15 16:15 ` Stefan Monnier @ 2015-04-15 17:24 ` Michael Heerdegen 0 siblings, 0 replies; 4+ messages in thread From: Michael Heerdegen @ 2015-04-15 17:24 UTC (permalink / raw) To: Stefan Monnier; +Cc: 20334 Stefan Monnier <monnier@IRO.UMontreal.CA> writes: > I installed the patch below which should fix this problem. Thanks. It fixed my test case as well as the original issue in Helm. Thanks! P.S.: Your commit includes a change to test/indent/perl.perl that seems unrelated to this issue. Thanks again, Michael. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-04-15 17:24 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <87k2xr7skh.fsf@web.de> [not found] ` <jwv619bmcyj.fsf-monnier+emacs@gnu.org> [not found] ` <87iodaxvg0.fsf@web.de> [not found] ` <jwv7ftplxfk.fsf-monnier+emacs@gnu.org> [not found] ` <87lhi3hs6d.fsf@web.de> [not found] ` <jwvpp7espj3.fsf-monnier+emacs@gnu.org> [not found] ` <87iod68tj3.fsf@web.de> [not found] ` <87twwh1omu.fsf@web.de> 2015-04-15 15:14 ` bug#20334: What does all-completions with COLLECTION == obarray return? Stefan Monnier 2015-04-15 15:30 ` Andreas Schwab 2015-04-15 16:15 ` Stefan Monnier 2015-04-15 17:24 ` Michael Heerdegen
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).