Thread: [CEDET-devel] unicode characters from parsed files in *temp object write* buffer cause 'Select codi
Brought to you by:
zappo
From: Kai T. <kai...@gm...> - 2009-10-07 19:41:16
|
Hi, I occasionally get minibuffer prompts Select coding system (default utf-8): during cedet idle parsing of lisp files (i don't own these files, they just happen to be in a directory which also contains some of my own files). In addition to the prompt, emacs is switching to a 2 window config where one windows lists the offending characters (in *Warnings* buffer) and the other window shows the position of one of those characters in the *temp object write* buffer. Does anybody know how to avoid these prompts and the buffer switching? /Kai |
From: David E. <de...@ra...> - 2009-10-07 19:55:13
|
Kai Tetzlaff <kai...@gm...> writes: > I occasionally get minibuffer prompts > > Select coding system (default utf-8): > > during cedet idle parsing of lisp files (i don't own these files, they > just happen to be in a directory which also contains some of my own > files). In addition to the prompt, emacs is switching to a 2 window > config where one windows lists the offending characters (in *Warnings* > buffer) and the other window shows the position of one of those > characters in the *temp object write* buffer. > > Does anybody know how to avoid these prompts and the buffer switching? This happens in eieio-persistent-save. One quick fix would be to just set the coding system to 'raw-text: --- a/eieio/eieio-base.el +++ b/eieio/eieio-base.el @@ -265,6 +265,7 @@ instance." (save-excursion (let ((b (set-buffer (get-buffer-create " *tmp object write*"))) (default-directory (file-name-directory (oref this file))) + (buffer-file-coding-system 'raw-text) (cfn (oref this file))) (unwind-protect (save-excursion Regards, David |
From: Kai T. <kai...@gm...> - 2009-10-07 20:24:41
|
Thanks David, i've applied your patch. Will let you know if i get further prompts. /Kai David Engster wrote: > Kai Tetzlaff <kai...@gm...> writes: >> I occasionally get minibuffer prompts >> >> Select coding system (default utf-8): >> >> during cedet idle parsing of lisp files (i don't own these files, they >> just happen to be in a directory which also contains some of my own >> files). In addition to the prompt, emacs is switching to a 2 window >> config where one windows lists the offending characters (in *Warnings* >> buffer) and the other window shows the position of one of those >> characters in the *temp object write* buffer. >> >> Does anybody know how to avoid these prompts and the buffer switching? > > This happens in eieio-persistent-save. One quick fix would be to just > set the coding system to 'raw-text: > > --- a/eieio/eieio-base.el > +++ b/eieio/eieio-base.el > @@ -265,6 +265,7 @@ instance." > (save-excursion > (let ((b (set-buffer (get-buffer-create " *tmp object write*"))) > (default-directory (file-name-directory (oref this file))) > + (buffer-file-coding-system 'raw-text) > (cfn (oref this file))) > (unwind-protect > (save-excursion > > Regards, > David > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference |
From: David E. <de...@ra...> - 2009-10-07 21:32:15
|
Kai Tetzlaff <kai...@gm...> writes: > i've applied your patch. Will let you know if i get further prompts. While this patch should not be critical for Semantic's purposes, it is not really nice to simply write everything as raw-text. Since eieio-base is a general function for writing objects to disk, it would probably be better to use find-coding-systems-region and just choose the first one by default, so that the user is not prompted: --- a/eieio/eieio-base.el +++ b/eieio/eieio-base.el @@ -275,7 +275,11 @@ instance." (eieio-persistent-path-relative this file) (file-name-nondirectory cfn))) (object-write this (oref this file-header-line))) - (let ((backup-inhibited (not (oref this do-backups)))) + (let ((backup-inhibited (not (oref this do-backups))) + (cs (car (find-coding-systems-region + (point-min) (point-max))))) + (unless (eq cs 'undecided) + (setq buffer-file-coding-system cs)) ;; Old way - write file. Leaves message behind. ;;(write-file cfn nil) Regards, David |
From: Kai T. <kai...@gm...> - 2009-10-07 21:57:39
|
Hi David, my mastery of emacs lisp is still at a basic level an my understanding of cedet internals is even worse. I'll count on your understanding of the issue and just use what i get :-). If i'm not the only one with this issue i hope a solution gets implemented for all of us. Thanks again, Kai David Engster wrote: > Kai Tetzlaff <kai...@gm...> writes: >> i've applied your patch. Will let you know if i get further prompts. > > While this patch should not be critical for Semantic's purposes, it is > not really nice to simply write everything as raw-text. Since > eieio-base is a general function for writing objects to disk, it would > probably be better to use find-coding-systems-region and just choose the > first one by default, so that the user is not prompted: > > --- a/eieio/eieio-base.el > +++ b/eieio/eieio-base.el > @@ -275,7 +275,11 @@ instance." > (eieio-persistent-path-relative this file) > (file-name-nondirectory cfn))) > (object-write this (oref this file-header-line))) > - (let ((backup-inhibited (not (oref this do-backups)))) > + (let ((backup-inhibited (not (oref this do-backups))) > + (cs (car (find-coding-systems-region > + (point-min) (point-max))))) > + (unless (eq cs 'undecided) > + (setq buffer-file-coding-system cs)) > ;; Old way - write file. Leaves message behind. > ;;(write-file cfn nil) > > Regards, > David > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference |
From: David E. <de...@ra...> - 2009-10-07 22:25:06
|
Kai Tetzlaff <kai...@gm...> writes: > If i'm not the only one with this issue i hope a solution gets > implemented for all of us. No, you're not; it has actually bothered me for a while, but never enough to really take a shot at it. But it really should be fixed, so I'm glad you brought it up. :-) Regards, David |
From: Eric M. L. <er...@si...> - 2009-10-07 22:40:07
|
Hi David, Thanks for looking into this issue. I don't know much about coding systems, but it seems like a fine thing to check in pending confirmation that it fixes Kai's problem. Thanks Eric On Wed, 2009-10-07 at 23:32 +0200, David Engster wrote: > Kai Tetzlaff <kai...@gm...> writes: > > i've applied your patch. Will let you know if i get further prompts. > > While this patch should not be critical for Semantic's purposes, it is > not really nice to simply write everything as raw-text. Since > eieio-base is a general function for writing objects to disk, it would > probably be better to use find-coding-systems-region and just choose the > first one by default, so that the user is not prompted: > > --- a/eieio/eieio-base.el > +++ b/eieio/eieio-base.el > @@ -275,7 +275,11 @@ instance." > (eieio-persistent-path-relative this file) > (file-name-nondirectory cfn))) > (object-write this (oref this file-header-line))) > - (let ((backup-inhibited (not (oref this do-backups)))) > + (let ((backup-inhibited (not (oref this do-backups))) > + (cs (car (find-coding-systems-region > + (point-min) (point-max))))) > + (unless (eq cs 'undecided) > + (setq buffer-file-coding-system cs)) > ;; Old way - write file. Leaves message behind. > ;;(write-file cfn nil) > > Regards, > David |
From: Kai T. <kai...@gm...> - 2009-10-10 05:49:17
|
I'm using it since Thursday and haven't seen the problem since then. Thanks again, Kai David Engster wrote: > Kai Tetzlaff <kai...@gm...> writes: >> David Engster wrote: >>> --- a/eieio/eieio-base.el >>> +++ b/eieio/eieio-base.el >>> @@ -275,7 +275,11 @@ instance." >>> (eieio-persistent-path-relative this file) >>> (file-name-nondirectory cfn))) >>> (object-write this (oref this file-header-line))) >>> - (let ((backup-inhibited (not (oref this do-backups)))) >>> + (let ((backup-inhibited (not (oref this do-backups))) >>> + (cs (car (find-coding-systems-region >>> + (point-min) (point-max))))) >>> + (unless (eq cs 'undecided) >>> + (setq buffer-file-coding-system cs)) >>> ;; Old way - write file. Leaves message behind. >>> ;;(write-file cfn nil) > > Kai, could you please try out this patch instead of the first 'raw-text' > one and tell me if it solves the problem for you? > > Regards, > David > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference |
From: David E. <de...@ra...> - 2009-10-10 08:51:17
|
Kai Tetzlaff <kai...@gm...> writes: > I'm using it since Thursday and haven't seen the problem since then. Thanks for testing. I'll commit it then. Regards, David PS: Mails to your GMX address get bounced. If you have an alternative address, I can send you the full bounce report there. |
From: Eric M. L. <er...@si...> - 2010-02-15 18:33:41
|
On 02/15/2010 12:24 PM, Marcus Harnisch wrote: > "Eric M. Ludlam"<er...@si...> writes: > >> Thanks for looking into this issue. I don't know much about coding >> systems, but it seems like a fine thing to check in pending confirmation >> that it fixes Kai's problem. > > This breaks XEmacs, which currently doesn't have > #'find-coding-systems-region. I think I do have a working emulation > for this particular application. Do you want me to put it in > cedet-compat.el? That seems like a good place for it, though I've forgotten what the rest of the thread was about. :) Eric |
From: Marcus H. <mar...@gm...> - 2010-02-15 19:45:03
|
"Eric M. Ludlam" <er...@si...> writes: > That seems like a good place for it, though I've forgotten what the rest > of the thread was about. :) It's been a while: http://article.gmane.org/gmane.emacs.cedet/3965 Thanks Marcus |
From: Eric M. L. <er...@si...> - 2010-02-18 00:49:03
|
On 02/16/2010 02:24 PM, Marcus Harnisch wrote: > "Eric M. Ludlam"<er...@si...> writes: > >> On 02/15/2010 12:24 PM, Marcus Harnisch wrote: >>> This breaks XEmacs, which currently doesn't have >>> #'find-coding-systems-region. I think I do have a working emulation >>> for this particular application. Do you want me to put it in >>> cedet-compat.el? >> >> That seems like a good place for it, though I've forgotten what the rest >> of the thread was about. :) > > Here you go. Thanks for putting it in. Thanks! It is now in. Eric |
From: David E. <de...@ra...> - 2009-10-09 12:40:46
|
Kai Tetzlaff <kai...@gm...> writes: >David Engster wrote: >> --- a/eieio/eieio-base.el >> +++ b/eieio/eieio-base.el >> @@ -275,7 +275,11 @@ instance." >> (eieio-persistent-path-relative this file) >> (file-name-nondirectory cfn))) >> (object-write this (oref this file-header-line))) >> - (let ((backup-inhibited (not (oref this do-backups)))) >> + (let ((backup-inhibited (not (oref this do-backups))) >> + (cs (car (find-coding-systems-region >> + (point-min) (point-max))))) >> + (unless (eq cs 'undecided) >> + (setq buffer-file-coding-system cs)) >> ;; Old way - write file. Leaves message behind. >> ;;(write-file cfn nil) Kai, could you please try out this patch instead of the first 'raw-text' one and tell me if it solves the problem for you? Regards, David |
From: Marcus H. <mar...@gm...> - 2010-02-15 17:25:03
|
"Eric M. Ludlam" <er...@si...> writes: > Thanks for looking into this issue. I don't know much about coding > systems, but it seems like a fine thing to check in pending confirmation > that it fixes Kai's problem. This breaks XEmacs, which currently doesn't have #'find-coding-systems-region. I think I do have a working emulation for this particular application. Do you want me to put it in cedet-compat.el? -- Marcus |
From: Marcus H. <mar...@gm...> - 2010-02-16 19:24:40
|
"Eric M. Ludlam" <er...@si...> writes: > On 02/15/2010 12:24 PM, Marcus Harnisch wrote: >> This breaks XEmacs, which currently doesn't have >> #'find-coding-systems-region. I think I do have a working emulation >> for this particular application. Do you want me to put it in >> cedet-compat.el? > > That seems like a good place for it, though I've forgotten what the rest > of the thread was about. :) Here you go. Thanks for putting it in. -- Marcus Index: common/cedet-compat.el =================================================================== RCS file: /cvsroot/cedet/cedet/common/cedet-compat.el,v retrieving revision 1.6 diff -u -r1.6 cedet-compat.el --- common/cedet-compat.el 29 Sep 2009 02:02:28 -0000 1.6 +++ common/cedet-compat.el 16 Feb 2010 19:20:50 -0000 @@ -33,6 +33,21 @@ (require 'inversion) ;;; Code: +(when (not (fboundp 'find-coding-systems-region)) +;; XEmacs does not currently have `find-coding-systems-region'. Here +;; is a cheap emulation, which seems sufficient for CEDET's purposes. +;; This implementation will always return a list containing a single +;; element. +;;;###autoload +(defun find-coding-systems-region (start end) + "Return a list of possible coding systems in the region between +START and END. + +In this implementation, the returned list will always consist of one +element only!" + (list (coding-system-name (detect-coding-region start end)))) +) + (when (not (fboundp 'compare-strings)) ;; XEmacs does not have the `compare-strings' function. Here is an |
From: Marcus H. <mar...@gm...> - 2010-02-19 21:05:09
|
"Eric M. Ludlam" <er...@si...> writes: > Thanks! It is now in. Aidan, our coding systems expert raised his objection. What had been suggested is not close enough to Emacs' find-coding-systems-region. At some point XEmacs will have a real implementation, but for now the workaround below has been proposed instead of the patch I sent earlier. Sorry about this. (defun find-coding-systems-region (begin end) (if (stringp begin) (if (equal (charsets-in-string begin) '(ascii)) '(undecided) (delete-if-not #'(lambda (coding-system) ;; Assume strings are always short enough that the ;; condition-case is not worth it. (query-coding-string begin coding-system t)) (remove-duplicates (append (get-language-info current-language-environment 'coding-system) (mapcar #'coding-system-name (coding-system-list))) :test #'eq :from-end t))) (if (equal (charsets-in-region begin end) '(ascii)) '(undecided) (delete-if-not #'(lambda (coding-system) (condition-case nil (query-coding-region begin end coding-system nil t t) (text-conversion-error))) (remove-duplicates (append (get-language-info current-language-environment 'coding-system) (mapcar #'coding-system-name (coding-system-list))) :test #'eq :from-end t))))) -- note that "property" can also be used as syntactic sugar to reference a property, breaking the clean design of verilog; [...] (seen on http://www.veripool.com/verilog-mode_news.html) |
From: Eric M. L. <er...@si...> - 2010-02-19 22:43:55
|
Thanks. I've checked in this new variant. Eric On 02/19/2010 04:04 PM, Marcus Harnisch wrote: > "Eric M. Ludlam"<er...@si...> writes: > >> Thanks! It is now in. > > Aidan, our coding systems expert raised his objection. What had been > suggested is not close enough to Emacs' find-coding-systems-region. At > some point XEmacs will have a real implementation, but for now the > workaround below has been proposed instead of the patch I sent > earlier. Sorry about this. > > > (defun find-coding-systems-region (begin end) > (if (stringp begin) > (if (equal (charsets-in-string begin) '(ascii)) > '(undecided) > (delete-if-not > #'(lambda (coding-system) > ;; Assume strings are always short enough that the > ;; condition-case is not worth it. > (query-coding-string begin coding-system t)) > > (remove-duplicates > (append > (get-language-info current-language-environment 'coding-system) > (mapcar #'coding-system-name (coding-system-list))) > :test #'eq :from-end t))) > (if (equal (charsets-in-region begin end) '(ascii)) > '(undecided) > (delete-if-not > #'(lambda (coding-system) > (condition-case nil > (query-coding-region begin end coding-system nil t t) > (text-conversion-error))) > (remove-duplicates > (append > (get-language-info current-language-environment 'coding-system) > (mapcar #'coding-system-name (coding-system-list))) > :test #'eq :from-end t))))) > |