patch 8.2.1597: the channel source file is too big

Problem:    The channel source file is too big.
Solution:   Move job related code to a new source file.
diff --git a/src/proto/channel.pro b/src/proto/channel.pro
index a402177..bbe5288 100644
--- a/src/proto/channel.pro
+++ b/src/proto/channel.pro
@@ -3,13 +3,17 @@
 int ch_log_active(void);
 channel_T *add_channel(void);
 int has_any_channel(void);
+int channel_still_useful(channel_T *channel);
+int channel_can_close(channel_T *channel);
 int channel_unref(channel_T *channel);
 int free_unused_channels_contents(int copyID, int mask);
 void free_unused_channels(int copyID, int mask);
 void channel_gui_register_all(void);
 channel_T *channel_open(const char *hostname, int port, int waittime, void (*nb_close_cb)(void));
+void ch_close_part(channel_T *channel, ch_part_T part);
 void channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err);
 void channel_set_job(channel_T *channel, job_T *job, jobopt_T *options);
+void channel_write_in(channel_T *channel);
 void channel_buffer_free(buf_T *buf);
 void channel_write_any_lines(void);
 void channel_write_new_lines(buf_T *buf);
@@ -36,30 +40,6 @@
 int channel_parse_messages(void);
 int channel_any_readahead(void);
 int set_ref_in_channel(int copyID);
-void clear_job_options(jobopt_T *opt);
-int get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2);
-void job_free_all(void);
-int job_any_running(void);
-int win32_build_cmd(list_T *l, garray_T *gap);
-void job_cleanup(job_T *job);
-int set_ref_in_job(int copyID);
-void job_unref(job_T *job);
-int free_unused_jobs_contents(int copyID, int mask);
-void free_unused_jobs(int copyID, int mask);
-job_T *job_alloc(void);
-void job_set_options(job_T *job, jobopt_T *opt);
-void job_stop_on_exit(void);
-int has_pending_job(void);
-int job_check_ended(void);
-job_T *job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg, job_T **term_job);
-char *job_status(job_T *job);
-int job_stop(job_T *job, typval_T *argvars, char *type);
-void invoke_prompt_callback(void);
-int invoke_prompt_interrupt(void);
-void f_prompt_getprompt(typval_T *argvars, typval_T *rettv);
-void f_prompt_setcallback(typval_T *argvars, typval_T *rettv);
-void f_prompt_setinterrupt(typval_T *argvars, typval_T *rettv);
-void f_prompt_setprompt(typval_T *argvars, typval_T *rettv);
 void f_ch_canread(typval_T *argvars, typval_T *rettv);
 void f_ch_close(typval_T *argvars, typval_T *rettv);
 void f_ch_close_in(typval_T *argvars, typval_T *rettv);
@@ -78,10 +58,4 @@
 void f_ch_sendraw(typval_T *argvars, typval_T *rettv);
 void f_ch_setoptions(typval_T *argvars, typval_T *rettv);
 void f_ch_status(typval_T *argvars, typval_T *rettv);
-void f_job_getchannel(typval_T *argvars, typval_T *rettv);
-void f_job_info(typval_T *argvars, typval_T *rettv);
-void f_job_setoptions(typval_T *argvars, typval_T *rettv);
-void f_job_start(typval_T *argvars, typval_T *rettv);
-void f_job_status(typval_T *argvars, typval_T *rettv);
-void f_job_stop(typval_T *argvars, typval_T *rettv);
 /* vim: set ft=c : */
diff --git a/src/proto/edit.pro b/src/proto/edit.pro
index e2ec8dc..1b5f46d 100644
--- a/src/proto/edit.pro
+++ b/src/proto/edit.pro
@@ -4,9 +4,7 @@
 void ins_redraw(int ready);
 int decodeModifyOtherKeys(int c);
 void edit_putchar(int c, int highlight);
-char_u *buf_prompt_text(buf_T* buf);
-char_u *prompt_text(void);
-int prompt_curpos_editable(void);
+void set_insstart(linenr_T lnum, int col);
 void edit_unputchar(void);
 void display_dollar(colnr_T col);
 void undisplay_dollar(void);
diff --git a/src/proto/job.pro b/src/proto/job.pro
new file mode 100644
index 0000000..bf97577
--- /dev/null
+++ b/src/proto/job.pro
@@ -0,0 +1,37 @@
+/* job.c */
+void clear_job_options(jobopt_T *opt);
+void free_job_options(jobopt_T *opt);
+int get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2);
+void job_free_all(void);
+int job_any_running(void);
+int win32_build_cmd(list_T *l, garray_T *gap);
+void job_cleanup(job_T *job);
+int set_ref_in_job(int copyID);
+void job_unref(job_T *job);
+int free_unused_jobs_contents(int copyID, int mask);
+void free_unused_jobs(int copyID, int mask);
+job_T *job_alloc(void);
+void job_set_options(job_T *job, jobopt_T *opt);
+void job_stop_on_exit(void);
+int has_pending_job(void);
+int job_check_ended(void);
+job_T *job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg, job_T **term_job);
+char *job_status(job_T *job);
+int job_stop(job_T *job, typval_T *argvars, char *type);
+void invoke_prompt_callback(void);
+int invoke_prompt_interrupt(void);
+char_u *buf_prompt_text(buf_T *buf);
+char_u *prompt_text(void);
+void init_prompt(int cmdchar_todo);
+int prompt_curpos_editable(void);
+void f_prompt_setcallback(typval_T *argvars, typval_T *rettv);
+void f_prompt_setinterrupt(typval_T *argvars, typval_T *rettv);
+void f_prompt_getprompt(typval_T *argvars, typval_T *rettv);
+void f_prompt_setprompt(typval_T *argvars, typval_T *rettv);
+void f_job_getchannel(typval_T *argvars, typval_T *rettv);
+void f_job_info(typval_T *argvars, typval_T *rettv);
+void f_job_setoptions(typval_T *argvars, typval_T *rettv);
+void f_job_start(typval_T *argvars, typval_T *rettv);
+void f_job_status(typval_T *argvars, typval_T *rettv);
+void f_job_stop(typval_T *argvars, typval_T *rettv);
+/* vim: set ft=c : */