Mercurial > vim
diff src/eval.c @ 8493:caed4b2d305f v7.4.1537
commit https://github.com/vim/vim/commit/509ce2a558e7e0c03242e32e844255af52f1c821
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Mar 11 22:52:15 2016 +0100
patch 7.4.1537
Problem: Too many feature flags for pipes, jobs and channels.
Solution: Only use FEAT_JOB_CHANNEL.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 11 Mar 2016 23:00:06 +0100 |
parents | daebcbd87bd3 |
children | 42277980a76d |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -496,14 +496,12 @@ static void f_call(typval_T *argvars, ty #ifdef FEAT_FLOAT static void f_ceil(typval_T *argvars, typval_T *rettv); #endif -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL static void f_ch_close(typval_T *argvars, typval_T *rettv); static void f_ch_evalexpr(typval_T *argvars, typval_T *rettv); static void f_ch_evalraw(typval_T *argvars, typval_T *rettv); static void f_ch_getbufnr(typval_T *argvars, typval_T *rettv); -# ifdef FEAT_JOB static void f_ch_getjob(typval_T *argvars, typval_T *rettv); -# endif static void f_ch_log(typval_T *argvars, typval_T *rettv); static void f_ch_logfile(typval_T *argvars, typval_T *rettv); static void f_ch_open(typval_T *argvars, typval_T *rettv); @@ -632,10 +630,8 @@ static void f_islocked(typval_T *argvars static void f_isnan(typval_T *argvars, typval_T *rettv); #endif static void f_items(typval_T *argvars, typval_T *rettv); -#ifdef FEAT_JOB -# ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL static void f_job_getchannel(typval_T *argvars, typval_T *rettv); -# endif static void f_job_setoptions(typval_T *argvars, typval_T *rettv); static void f_job_start(typval_T *argvars, typval_T *rettv); static void f_job_stop(typval_T *argvars, typval_T *rettv); @@ -6236,11 +6232,11 @@ tv_equal( return tv1->vval.v_float == tv2->vval.v_float; #endif case VAR_JOB: -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL return tv1->vval.v_job == tv2->vval.v_job; #endif case VAR_CHANNEL: -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL return tv1->vval.v_channel == tv2->vval.v_channel; #endif case VAR_UNKNOWN: @@ -6926,7 +6922,7 @@ garbage_collect(void) abort = abort || set_ref_in_python3(copyID); #endif -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL abort = abort || set_ref_in_channel(copyID); #endif @@ -7738,7 +7734,7 @@ failret: return OK; } -#if defined(FEAT_CHANNEL) || defined(PROTO) +#if defined(FEAT_JOB_CHANNEL) || defined(PROTO) /* * Decrement the reference count on "channel" and maybe free it when it goes * down to zero. Don't free it if there is a pending action. @@ -7751,15 +7747,12 @@ channel_unref(channel_T *channel) return channel_may_free(channel); return FALSE; } -#endif - -#if defined(FEAT_JOB) || defined(PROTO) + static job_T *first_job = NULL; static void job_free(job_T *job) { -# ifdef FEAT_CHANNEL ch_log(job->jv_channel, "Freeing job"); if (job->jv_channel != NULL) { @@ -7771,7 +7764,6 @@ job_free(job_T *job) job->jv_channel->ch_job = NULL; channel_unref(job->jv_channel); } -# endif mch_clear_job(job); if (job->jv_next != NULL) @@ -7798,7 +7790,6 @@ job_unref(job_T *job) { job_free(job); } -# ifdef FEAT_CHANNEL else if (job->jv_channel != NULL) { /* Do remove the link to the channel, otherwise it hangs @@ -7807,7 +7798,6 @@ job_unref(job_T *job) channel_unref(job->jv_channel); job->jv_channel = NULL; } -# endif } } @@ -8204,14 +8194,12 @@ static struct fst #ifdef FEAT_FLOAT {"ceil", 1, 1, f_ceil}, #endif -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL {"ch_close", 1, 1, f_ch_close}, {"ch_evalexpr", 2, 3, f_ch_evalexpr}, {"ch_evalraw", 2, 3, f_ch_evalraw}, {"ch_getbufnr", 2, 2, f_ch_getbufnr}, -# ifdef FEAT_JOB {"ch_getjob", 1, 1, f_ch_getjob}, -# endif {"ch_log", 1, 2, f_ch_log}, {"ch_logfile", 1, 2, f_ch_logfile}, {"ch_open", 1, 2, f_ch_open}, @@ -8344,10 +8332,8 @@ static struct fst {"isnan", 1, 1, f_isnan}, #endif {"items", 1, 1, f_items}, -#ifdef FEAT_JOB -# ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL {"job_getchannel", 1, 1, f_job_getchannel}, -# endif {"job_setoptions", 2, 2, f_job_setoptions}, {"job_start", 1, 2, f_job_start}, {"job_status", 1, 1, f_job_status}, @@ -9955,7 +9941,7 @@ f_ceil(typval_T *argvars, typval_T *rett } #endif -#if defined(FEAT_CHANNEL) || defined(FEAT_JOB) +#if defined(FEAT_JOB_CHANNEL) /* * Get a callback from "arg". It can be a Funcref or a function name. * When "arg" is zero return an empty string. @@ -10312,7 +10298,7 @@ get_job_options(typval_T *tv, jobopt_T * } #endif -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL /* * Get the channel from the argument. * Returns NULL if the handle is invalid. @@ -10387,7 +10373,6 @@ f_ch_getbufnr(typval_T *argvars, typval_ } } -# ifdef FEAT_JOB /* * "ch_getjob()" function */ @@ -10404,7 +10389,6 @@ f_ch_getjob(typval_T *argvars, typval_T ++channel->ch_job->jv_refcount; } } -# endif /* * "ch_log()" function @@ -11427,13 +11411,13 @@ f_empty(typval_T *argvars, typval_T *ret break; case VAR_JOB: -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL n = argvars[0].vval.v_job == NULL || argvars[0].vval.v_job->jv_status != JOB_STARTED; break; #endif case VAR_CHANNEL: -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL n = argvars[0].vval.v_channel == NULL || !channel_is_open(argvars[0].vval.v_channel); break; @@ -13815,7 +13799,7 @@ f_has(typval_T *argvars, typval_T *rettv #ifdef FEAT_BYTEOFF "byte_offset", #endif -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL "channel", #endif #ifdef FEAT_CINDENT @@ -13951,7 +13935,7 @@ f_has(typval_T *argvars, typval_T *rettv #ifdef FEAT_INS_EXPAND "insert_expand", #endif -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL "job", #endif #ifdef FEAT_JUMPLIST @@ -15092,7 +15076,7 @@ f_items(typval_T *argvars, typval_T *ret dict_list(argvars, rettv, 2); } -#if defined(FEAT_JOB) || defined(PROTO) +#if defined(FEAT_JOB_CHANNEL) || defined(PROTO) /* * Get the job from the argument. * Returns NULL if the job is invalid. @@ -15114,7 +15098,6 @@ get_job_arg(typval_T *tv) return job; } -# ifdef FEAT_CHANNEL /* * "job_getchannel()" function */ @@ -15131,7 +15114,6 @@ f_job_getchannel(typval_T *argvars, typv ++job->jv_channel->ch_refcount; } } -# endif /* * "job_setoptions()" function @@ -15298,7 +15280,6 @@ f_job_start(typval_T *argvars, typval_T } #ifdef USE_ARGV -# ifdef FEAT_CHANNEL if (ch_log_active()) { garray_T ga; @@ -15314,20 +15295,15 @@ f_job_start(typval_T *argvars, typval_T ch_logs(NULL, "Starting job: %s", (char *)ga.ga_data); ga_clear(&ga); } -# endif mch_start_job(argv, job, &opt); #else -# ifdef FEAT_CHANNEL ch_logs(NULL, "Starting job: %s", (char *)cmd); -# endif mch_start_job((char *)cmd, job, &opt); #endif -#ifdef FEAT_CHANNEL /* If the channel is reading from a buffer, write lines now. */ if (job->jv_channel != NULL) channel_write_in(job->jv_channel); -#endif theend: #ifdef USE_ARGV @@ -15354,10 +15330,8 @@ job_status(job_T *job) else { result = mch_job_status(job); -# ifdef FEAT_CHANNEL if (job->jv_status == JOB_ENDED) ch_log(job->jv_channel, "Job ended"); -# endif if (job->jv_status == JOB_ENDED && job->jv_exit_cb != NULL) { typval_T argv[3]; @@ -15450,9 +15424,7 @@ f_job_stop(typval_T *argvars UNUSED, typ return; } } -# ifdef FEAT_CHANNEL ch_logs(job->jv_channel, "Stopping job with '%s'", (char *)arg); -# endif if (mch_stop_job(job, arg) == FAIL) rettv->vval.v_number = 0; else @@ -22414,12 +22386,12 @@ free_tv(typval_T *varp) dict_unref(varp->vval.v_dict); break; case VAR_JOB: -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL job_unref(varp->vval.v_job); break; #endif case VAR_CHANNEL: -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL channel_unref(varp->vval.v_channel); break; #endif @@ -22468,13 +22440,13 @@ clear_tv(typval_T *varp) break; #endif case VAR_JOB: -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL job_unref(varp->vval.v_job); varp->vval.v_job = NULL; #endif break; case VAR_CHANNEL: -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL channel_unref(varp->vval.v_channel); varp->vval.v_channel = NULL; #endif @@ -22543,12 +22515,12 @@ get_tv_number_chk(typval_T *varp, int *d return varp->vval.v_number == VVAL_TRUE ? 1 : 0; break; case VAR_JOB: -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL EMSG(_("E910: Using a Job as a Number")); break; #endif case VAR_CHANNEL: -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL EMSG(_("E913: Using a Channel as a Number")); break; #endif @@ -22589,12 +22561,12 @@ get_tv_float(typval_T *varp) EMSG(_("E907: Using a special value as a Float")); break; case VAR_JOB: -# ifdef FEAT_JOB +# ifdef FEAT_JOB_CHANNEL EMSG(_("E911: Using a Job as a Float")); break; # endif case VAR_CHANNEL: -# ifdef FEAT_CHANNEL +# ifdef FEAT_JOB_CHANNEL EMSG(_("E914: Using a Channel as a Float")); break; # endif @@ -22711,7 +22683,7 @@ get_tv_string_buf_chk(typval_T *varp, ch STRCPY(buf, get_var_special_name(varp->vval.v_number)); return buf; case VAR_JOB: -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL { job_T *job = varp->vval.v_job; char *status; @@ -22738,7 +22710,7 @@ get_tv_string_buf_chk(typval_T *varp, ch #endif break; case VAR_CHANNEL: -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL { channel_T *channel = varp->vval.v_channel; char *status = channel_status(channel); @@ -23377,14 +23349,14 @@ copy_tv(typval_T *from, typval_T *to) break; #endif case VAR_JOB: -#ifdef FEAT_JOB +#ifdef FEAT_JOB_CHANNEL to->vval.v_job = from->vval.v_job; if (to->vval.v_job != NULL) ++to->vval.v_job->jv_refcount; break; #endif case VAR_CHANNEL: -#ifdef FEAT_CHANNEL +#ifdef FEAT_JOB_CHANNEL to->vval.v_channel = from->vval.v_channel; if (to->vval.v_channel != NULL) ++to->vval.v_channel->ch_refcount;