Move option set from args to ginit.vim

This commit is contained in:
daa 2017-05-27 11:56:47 +03:00
parent f32ddbd69c
commit 68963ab628
5 changed files with 20 additions and 33 deletions

6
Cargo.lock generated
View File

@ -13,7 +13,7 @@ dependencies = [
"gtk-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "gtk-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
"htmlescape 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "htmlescape 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"neovim-lib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "neovim-lib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pango 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "pango 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"pangocairo 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "pangocairo 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", "phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)",
@ -293,7 +293,7 @@ dependencies = [
[[package]] [[package]]
name = "neovim-lib" name = "neovim-lib"
version = "0.4.0" version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [ dependencies = [
"log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
@ -584,7 +584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "684f330624d8c3784fb9558ca46c4ce488073a8d22450415c5eb4f4cfb0d11b5" "checksum libc 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "684f330624d8c3784fb9558ca46c4ce488073a8d22450415c5eb4f4cfb0d11b5"
"checksum log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5141eca02775a762cc6cd564d8d2c50f67c0ea3a372cbf1c51592b3e029e10ad" "checksum log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5141eca02775a762cc6cd564d8d2c50f67c0ea3a372cbf1c51592b3e029e10ad"
"checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" "checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"
"checksum neovim-lib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aa0477861ec64754cbc089f8a65db8092dc53c68e397315bf342d7781140be1b" "checksum neovim-lib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c4f4cf765a2dee99de95861fc1eea0b64da31552b2f8d85bfd1edb59fc26f1b9"
"checksum num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "e1cbfa3781f3fe73dc05321bed52a06d2d491eaa764c52335cf4399f046ece99" "checksum num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "e1cbfa3781f3fe73dc05321bed52a06d2d491eaa764c52335cf4399f046ece99"
"checksum pango 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4215233226ff03c9a3ed7c85cbc3c58257203723e3a93d5a20ce3560f66261b7" "checksum pango 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4215233226ff03c9a3ed7c85cbc3c58257203723e3a93d5a20ce3560f66261b7"
"checksum pango-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e401ee469540e60a80d1df63dcea4e9c201115e79344b77529fa3705ea8eadcd" "checksum pango-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e401ee469540e60a80d1df63dcea4e9c201115e79344b77529fa3705ea8eadcd"

View File

@ -37,7 +37,6 @@ use gio::ApplicationExt;
use ui::Ui; use ui::Ui;
const BIN_PATH_ARG: &'static str = "--nvim-bin-path"; const BIN_PATH_ARG: &'static str = "--nvim-bin-path";
const ENABLE_EXTERNAL_POPUP: &'static str = "--enable-external-popup";
fn main() { fn main() {
env_logger::init().expect("Can't initialize env_logger"); env_logger::init().expect("Can't initialize env_logger");
@ -55,7 +54,6 @@ fn main() {
let args: Vec<String> = env::args().collect(); let args: Vec<String> = env::args().collect();
let mut argv: Vec<&str> = args.iter() let mut argv: Vec<&str> = args.iter()
.filter(|a| !a.starts_with(BIN_PATH_ARG)) .filter(|a| !a.starts_with(BIN_PATH_ARG))
.filter(|a| !a.starts_with(ENABLE_EXTERNAL_POPUP))
.map(String::as_str) .map(String::as_str)
.collect(); .collect();
if open_arg().is_some() { if open_arg().is_some() {
@ -69,7 +67,6 @@ fn activate(app: &gtk::Application) {
ui.init(app, ui.init(app,
nvim_bin_path(std::env::args()).as_ref(), nvim_bin_path(std::env::args()).as_ref(),
external_popup(std::env::args()),
open_arg().as_ref()); open_arg().as_ref());
} }
@ -82,15 +79,6 @@ fn nvim_bin_path<I>(args: I) -> Option<String>
.unwrap_or(None) .unwrap_or(None)
} }
fn external_popup<I>(args: I) -> bool
where I: Iterator<Item = String>
{
args.filter(|a| a.starts_with(ENABLE_EXTERNAL_POPUP))
.map(|_| true)
.nth(0)
.unwrap_or(false)
}
fn open_arg() -> Option<String> { fn open_arg() -> Option<String> {
open_arg_impl(std::env::args()) open_arg_impl(std::env::args())
} }
@ -112,14 +100,6 @@ fn open_arg_impl<I>(args: I) -> Option<String>
mod tests { mod tests {
use super::*; use super::*;
#[test]
fn test_external_menu() {
assert_eq!(true,
external_popup(vec!["neovim-gtk", "--enable-external-popup"]
.iter()
.map(|s| s.to_string())));
}
#[test] #[test]
fn test_bin_path_arg() { fn test_bin_path_arg() {
assert_eq!(Some("/test_path".to_string()), assert_eq!(Some("/test_path".to_string()),

View File

@ -5,7 +5,7 @@ use std::result;
use std::sync::Arc; use std::sync::Arc;
use ui::UiMutex; use ui::UiMutex;
use neovim_lib::{Handler, Neovim, NeovimApi, Session, Value, UiAttachOptions, CallError}; use neovim_lib::{Handler, Neovim, NeovimApi, Session, Value, UiAttachOptions, CallError, UiOption};
use ui_model::{ModelRect, ModelRectVec}; use ui_model::{ModelRect, ModelRectVec};
use shell; use shell;
use glib; use glib;
@ -70,8 +70,7 @@ macro_rules! try_uint {
} }
pub fn initialize(shell: Arc<UiMutex<shell::State>>, pub fn initialize(shell: Arc<UiMutex<shell::State>>,
nvim_bin_path: Option<&String>, nvim_bin_path: Option<&String>)
external_popup: bool)
-> Result<Neovim> { -> Result<Neovim> {
let mut cmd = if let Some(path) = nvim_bin_path { let mut cmd = if let Some(path) = nvim_bin_path {
Command::new(path) Command::new(path)
@ -90,8 +89,7 @@ pub fn initialize(shell: Arc<UiMutex<shell::State>>,
if let Ok(runtime_path) = env::var("NVIM_GTK_RUNTIME_PATH") { if let Ok(runtime_path) = env::var("NVIM_GTK_RUNTIME_PATH") {
cmd.arg("--cmd") cmd.arg("--cmd")
.arg(format!("let &rtp.=',{}'", runtime_path)); .arg(format!("let &rtp.=',{}'", runtime_path));
} } else if let Some(prefix) = option_env!("PREFIX") {
else if let Some(prefix) = option_env!("PREFIX") {
cmd.arg("--cmd") cmd.arg("--cmd")
.arg(format!("let &rtp.=',{}/share/nvim-gtk/runtime'", prefix)); .arg(format!("let &rtp.=',{}/share/nvim-gtk/runtime'", prefix));
} else { } else {
@ -113,7 +111,7 @@ pub fn initialize(shell: Arc<UiMutex<shell::State>>,
nvim.session nvim.session
.start_event_loop_handler(NvimHandler::new(shell)); .start_event_loop_handler(NvimHandler::new(shell));
let mut opts = UiAttachOptions::new(); let mut opts = UiAttachOptions::new();
opts.set_popupmenu_external(external_popup); opts.set_popupmenu_external(false);
nvim.ui_attach(80, 24, opts) nvim.ui_attach(80, 24, opts)
.map_err(|e| Error::new(ErrorKind::Other, e))?; .map_err(|e| Error::new(ErrorKind::Other, e))?;
nvim.command("runtime! ginit.vim") nvim.command("runtime! ginit.vim")
@ -208,6 +206,16 @@ fn call_gui_event(ui: &mut shell::State,
-> result::Result<(), String> { -> result::Result<(), String> {
match method { match method {
"Font" => ui.set_font(try_str!(args[0])), "Font" => ui.set_font(try_str!(args[0])),
"Option" => {
match try_str!(args[0]) {
"Popupmenu" => {
ui.nvim()
.set_option(UiOption::ExtPopupmenu(try_uint!(args[1]) == 1))
.map_err(|e| e.to_string())?
}
opt => error!("Unknown option {}", opt),
}
}
_ => return Err(format!("Unsupported event {}({:?})", method, args)), _ => return Err(format!("Unsupported event {}({:?})", method, args)),
} }
Ok(()) Ok(())

View File

@ -313,9 +313,9 @@ impl Shell {
state.cursor.as_mut().unwrap().start(); state.cursor.as_mut().unwrap().start();
} }
pub fn init_nvim(&mut self, nvim_bin_path: Option<&String>, external_popup: bool) { pub fn init_nvim(&mut self, nvim_bin_path: Option<&String>) {
let nvim = let nvim =
nvim::initialize(self.state.clone(), nvim_bin_path, external_popup).expect("Can't start nvim instance"); nvim::initialize(self.state.clone(), nvim_bin_path).expect("Can't start nvim instance");
let mut state = self.state.borrow_mut(); let mut state = self.state.borrow_mut();
state.nvim = Some(Rc::new(RefCell::new(nvim))); state.nvim = Some(Rc::new(RefCell::new(nvim)));
} }

View File

@ -71,7 +71,6 @@ impl Ui {
pub fn init(&mut self, pub fn init(&mut self,
app: &gtk::Application, app: &gtk::Application,
nvim_bin_path: Option<&String>, nvim_bin_path: Option<&String>,
external_popup: bool,
open_path: Option<&String>) { open_path: Option<&String>) {
if self.initialized { if self.initialized {
return; return;
@ -125,7 +124,7 @@ impl Ui {
window.connect_delete_event(move |_, _| gtk_delete(&*comps_ref, &*shell_ref)); window.connect_delete_event(move |_, _| gtk_delete(&*comps_ref, &*shell_ref));
shell.add_configure_event(); shell.add_configure_event();
shell.init_nvim(nvim_bin_path, external_popup); shell.init_nvim(nvim_bin_path);
if open_path.is_some() { if open_path.is_some() {
shell.open_file(open_path.unwrap()); shell.open_file(open_path.unwrap());