emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: set-process-filter-multibyte doesn't work well


From: Stefan Monnier
Subject: Re: set-process-filter-multibyte doesn't work well
Date: Sat, 08 Mar 2008 15:57:10 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

>> (require 'comint)
>> (make-comint "jdb" "jdb")
>> (setq proc (get-process "jdb"))
>> (set-process-filter-multibyte proc t)
>> (process-filter-multibyte-p proc) ;; => nil
>> 
>> I don't understand what happened in Fset_process_filter_multibyte :-(

I'd like to phase out process-filter-multibyte, so could you try to
write the code, without (set-)process-filter-multibyte, which (ideally)
should do the right thing, and then make a bug-report if it doesn't do
what it should?

The "multibyteness of a process filter" should just depend on the coding
system used and nothing more.

> Does this patch help?  Bitfields declared as int can be either signed or
> unsigned, and signed one-bit fields are not particular useful.

This is a good change, please install it,


        Stefan


> --- process.h 09 Jan 2008 10:29:39 +0100      1.41
> +++ process.h 08 Mär 2008 16:41:00 +0100      
> @@ -102,28 +102,28 @@ struct Lisp_Process
>      /* Should we delay reading output from this process.
>         Initialized from `Vprocess_adaptive_read_buffering'.
>         0 = nil, 1 = t, 2 = other.  */
> -    int adaptive_read_buffering : 2;
> +    unsigned int adaptive_read_buffering : 2;
>      /* Skip reading this process on next read.  */
> -    int read_output_skip : 1;
> +    unsigned int read_output_skip : 1;
>      /* Non-nil means kill silently if Emacs is exited.
>         This is the inverse of the `query-on-exit' flag.  */
> -    int kill_without_query : 1;
> +    unsigned int kill_without_query : 1;
>      /* Non-nil if communicating through a pty.  */
> -    int pty_flag : 1;
> +    unsigned int pty_flag : 1;
>      /* Flag to set coding-system of the process buffer from the
>         coding_system used to decode process output.  */
> -    int inherit_coding_system_flag : 1;
> +    unsigned int inherit_coding_system_flag : 1;
>      /* Flag to decide the multibyteness of a string given to the
>         filter (if any).  It is initialized to the value of
>         `default-enable-multibyte-characters' when the process is
>         generated, and can be changed by the function
>         `set-process-filter-multibyte'. */
> -    int filter_multibyte : 1;
> +    unsigned int filter_multibyte : 1;
>      /* Record the process status in the raw form in which it comes from 
> `wait'.
>         This is to avoid consing in a signal handler.  The `raw_status_new'
>         flag indicates that `raw_status' contains a new status that still
>         needs to be synced to `status'.  */
> -    int raw_status_new : 1;
> +    unsigned int raw_status_new : 1;
>      int raw_status;
>  };
 

> Andreas.

> -- 
> Andreas Schwab, SuSE Labs, address@hidden
> SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
> PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
> "And now for something completely different."





reply via email to

[Prev in Thread] Current Thread [Next in Thread]