#[allow(unused_imports)]
#[allow(unused_imports)]
use crate::ported::zle::zle_main::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_misc::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_hist::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_move::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_word::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_params::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_vi::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_utils::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_refresh::*;
#[allow(unused_imports)]
use crate::ported::zle::zle_tricky::*;
#[allow(unused_imports)]
use crate::ported::zle::textobjects::*;
#[allow(unused_imports)]
use crate::ported::zle::deltochar::*;
pub const CGF_NOSORT: i32 = 1; pub const CGF_LINES: i32 = 2; pub const CGF_HASDL: i32 = 4; pub const CGF_UNIQALL: i32 = 8; pub const CGF_UNIQCON: i32 = 16; pub const CGF_PACKED: i32 = 32; pub const CGF_ROWS: i32 = 64; pub const CGF_FILES: i32 = 128; pub const CGF_MATSORT: i32 = 256; pub const CGF_NUMSORT: i32 = 512; pub const CGF_REVSORT: i32 = 1024;
pub const CMF_FILE: i32 = 1 << 0; pub const CMF_REMOVE: i32 = 1 << 1; pub const CMF_ISPAR: i32 = 1 << 2; pub const CMF_PARBR: i32 = 1 << 3; pub const CMF_PARNEST: i32 = 1 << 4; pub const CMF_NOLIST: i32 = 1 << 5; pub const CMF_DISPLINE: i32 = 1 << 6; pub const CMF_HIDE: i32 = 1 << 7; pub const CMF_NOSPACE: i32 = 1 << 8; pub const CMF_PACKED: i32 = 1 << 9; pub const CMF_ROWS: i32 = 1 << 10; pub const CMF_MULT: i32 = 1 << 11; pub const CMF_FMULT: i32 = 1 << 12; pub const CMF_ALL: i32 = 1 << 13; pub const CMF_DUMMY: i32 = 1 << 14; pub const CMF_MORDER: i32 = 1 << 15; pub const CMF_DELETE: i32 = 1 << 16;
pub const CMF_LINE: i32 = 1; pub const CMF_LEFT: i32 = 2; pub const CMF_RIGHT: i32 = 4; pub const CMF_INTER: i32 = 8;
pub const CPAT_CCLASS: i32 = 0; pub const CPAT_NCLASS: i32 = 1; pub const CPAT_EQUIV: i32 = 2; pub const CPAT_ANY: i32 = 3; pub const CPAT_CHAR: i32 = 4;
pub const CLF_MISS: i32 = 1; pub const CLF_DIFF: i32 = 2; pub const CLF_SUF: i32 = 4; pub const CLF_MID: i32 = 8; pub const CLF_NEW: i32 = 16; pub const CLF_LINE: i32 = 32; pub const CLF_JOIN: i32 = 64; pub const CLF_MATCHED: i32 = 128; pub const CLF_SKIP: i32 = 256;
pub const CAF_QUOTE: i32 = 1; pub const CAF_NOSORT: i32 = 2; pub const CAF_MATCH: i32 = 4; pub const CAF_UNIQCON: i32 = 8; pub const CAF_UNIQALL: i32 = 16; pub const CAF_ARRAYS: i32 = 32; pub const CAF_KEYS: i32 = 64; pub const CAF_ALL: i32 = 128; pub const CAF_MATSORT: i32 = 256; pub const CAF_NUMSORT: i32 = 512; pub const CAF_REVSORT: i32 = 1024;
pub const FC_LINE: i32 = 1; pub const FC_INWORD: i32 = 2;
pub const CPN_WORDS: i32 = 0; pub const CP_WORDS: u32 = 1 << CPN_WORDS; pub const CPN_REDIRS: i32 = 1; pub const CP_REDIRS: u32 = 1 << CPN_REDIRS; pub const CPN_CURRENT: i32 = 2; pub const CP_CURRENT: u32 = 1 << CPN_CURRENT; pub const CPN_PREFIX: i32 = 3; pub const CP_PREFIX: u32 = 1 << CPN_PREFIX; pub const CPN_SUFFIX: i32 = 4; pub const CP_SUFFIX: u32 = 1 << CPN_SUFFIX; pub const CPN_IPREFIX: i32 = 5; pub const CP_IPREFIX: u32 = 1 << CPN_IPREFIX; pub const CPN_ISUFFIX: i32 = 6; pub const CP_ISUFFIX: u32 = 1 << CPN_ISUFFIX; pub const CPN_QIPREFIX: i32 = 7; pub const CP_QIPREFIX: u32 = 1 << CPN_QIPREFIX; pub const CPN_QISUFFIX: i32 = 8; pub const CP_QISUFFIX: u32 = 1 << CPN_QISUFFIX; pub const CPN_COMPSTATE: i32 = 9; pub const CP_COMPSTATE: u32 = 1 << CPN_COMPSTATE;
pub const CP_REALPARAMS: i32 = 10;
pub const CP_ALLREALS: u32 = 0x3ff;
pub const CPN_NMATCHES: i32 = 0; pub const CP_NMATCHES: u32 = 1 << CPN_NMATCHES; pub const CPN_CONTEXT: i32 = 1; pub const CP_CONTEXT: u32 = 1 << CPN_CONTEXT; pub const CPN_PARAMETER: i32 = 2; pub const CP_PARAMETER: u32 = 1 << CPN_PARAMETER; pub const CPN_REDIRECT: i32 = 3; pub const CP_REDIRECT: u32 = 1 << CPN_REDIRECT; pub const CPN_QUOTE: i32 = 4; pub const CP_QUOTE: u32 = 1 << CPN_QUOTE; pub const CPN_QUOTING: i32 = 5; pub const CP_QUOTING: u32 = 1 << CPN_QUOTING; pub const CPN_RESTORE: i32 = 6; pub const CP_RESTORE: u32 = 1 << CPN_RESTORE; pub const CPN_LIST: i32 = 7; pub const CP_LIST: u32 = 1 << CPN_LIST; pub const CPN_INSERT: i32 = 8; pub const CP_INSERT: u32 = 1 << CPN_INSERT; pub const CPN_EXACT: i32 = 9; pub const CP_EXACT: u32 = 1 << CPN_EXACT; pub const CPN_EXACTSTR: i32 = 10; pub const CP_EXACTSTR: u32 = 1 << CPN_EXACTSTR; pub const CPN_PATMATCH: i32 = 11; pub const CP_PATMATCH: u32 = 1 << CPN_PATMATCH; pub const CPN_PATINSERT: i32 = 12; pub const CP_PATINSERT: u32 = 1 << CPN_PATINSERT; pub const CPN_UNAMBIG: i32 = 13; pub const CP_UNAMBIG: u32 = 1 << CPN_UNAMBIG; pub const CPN_UNAMBIGC: i32 = 14; pub const CP_UNAMBIGC: u32 = 1 << CPN_UNAMBIGC; pub const CPN_UNAMBIGP: i32 = 15; pub const CP_UNAMBIGP: u32 = 1 << CPN_UNAMBIGP; pub const CPN_INSERTP: i32 = 16; pub const CP_INSERTP: u32 = 1 << CPN_INSERTP; pub const CPN_LISTMAX: i32 = 17; pub const CP_LISTMAX: u32 = 1 << CPN_LISTMAX; pub const CPN_LASTPROMPT: i32 = 18; pub const CP_LASTPROMPT: u32 = 1 << CPN_LASTPROMPT; pub const CPN_TOEND: i32 = 19; pub const CP_TOEND: u32 = 1 << CPN_TOEND; pub const CPN_OLDLIST: i32 = 20; pub const CP_OLDLIST: u32 = 1 << CPN_OLDLIST; pub const CPN_OLDINS: i32 = 21; pub const CP_OLDINS: u32 = 1 << CPN_OLDINS; pub const CPN_VARED: i32 = 22; pub const CP_VARED: u32 = 1 << CPN_VARED; pub const CPN_LISTLINES: i32 = 23; pub const CP_LISTLINES: u32 = 1 << CPN_LISTLINES; pub const CPN_QUOTES: i32 = 24; pub const CP_QUOTES: u32 = 1 << CPN_QUOTES; pub const CPN_IGNORED: i32 = 25; pub const CP_IGNORED: u32 = 1 << CPN_IGNORED;
pub const CP_KEYPARAMS: i32 = 26;
pub const CP_ALLKEYS: u32 = 0x3ffffff;
pub const INSERTMATCHHOOK_OFFSET: usize = 0; pub const MENUSTARTHOOK_OFFSET: usize = 1; pub const COMPCTLMAKEHOOK_OFFSET: usize = 2; pub const COMPCTLCLEANUPHOOK_OFFSET: usize = 3; pub const COMPLISTMATCHESHOOK_OFFSET: usize = 4;
pub const CM_SPACE: i32 = 2;
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cexpl { pub always: i32, pub str: Option<String>, pub count: i32, pub fcount: i32, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cmgroup { pub name: Option<String>, pub prev: Option<Box<Cmgroup>>, pub next: Option<Box<Cmgroup>>, pub flags: i32, pub mcount: i32, pub matches: Vec<Cmatch>, pub lcount: i32, pub llcount: i32, pub ylist: Vec<String>, pub ecount: i32, pub expls: Vec<Cexpl>, pub ccount: i32, pub lexpls: Vec<Cexpl>, pub lmatches: Vec<Cmatch>, pub lfmatches: Vec<Cmatch>, pub lallccs: Vec<String>, pub num: i32, pub nbrbeg: i32, pub nbrend: i32, pub new_: i32, pub dcount: i32, pub cols: i32, pub lins: i32, pub width: i32, pub widths: Vec<i32>, pub totl: i32, pub shortest: i32, pub perm: Option<Box<Cmgroup>>, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cmatch { pub str: Option<String>, pub orig: Option<String>, pub ipre: Option<String>, pub ripre: Option<String>, pub isuf: Option<String>, pub ppre: Option<String>, pub psuf: Option<String>, pub prpre: Option<String>, pub pre: Option<String>, pub suf: Option<String>, pub disp: Option<String>, pub autoq: Option<String>, pub flags: i32, pub brpl: Vec<i32>, pub brsl: Vec<i32>, pub rems: Option<String>, pub remf: Option<String>, pub qipl: i32, pub qisl: i32, pub rnum: i32, pub gnum: i32, pub mode: u32, pub modec: char, pub fmode: u32, pub fmodec: char, }
#[derive(Debug, Clone)]
#[allow(non_camel_case_types)]
pub struct Cmlist { pub next: Option<Box<Cmlist>>, pub matcher: Box<Cmatcher>, pub str: String, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cmatcher { pub refc: i32, pub next: Option<Box<Cmatcher>>, pub flags: i32, pub line: Option<Box<Cpattern>>, pub llen: i32, pub word: Option<Box<Cpattern>>, pub wlen: i32, pub left: Option<Box<Cpattern>>, pub lalen: i32, pub right: Option<Box<Cpattern>>, pub ralen: i32, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cpattern { pub next: Option<Box<Cpattern>>, pub tp: i32, pub str: Option<String>, pub chr: u32, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cline { pub next: Option<Box<Cline>>, pub flags: i32, pub line: Option<String>, pub llen: i32, pub word: Option<String>, pub wlen: i32, pub orig: Option<String>, pub olen: i32, pub slen: i32, pub prefix: Option<Box<Cline>>, pub suffix: Option<Box<Cline>>, pub min: i32, pub max: i32, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Aminfo { pub firstm: Option<Box<Cmatch>>, pub exact: i32, pub exactm: Option<Box<Cmatch>>, pub count: i32, pub line: Option<Box<Cline>>, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Menuinfo { pub group: Option<Box<Cmgroup>>, pub cur: Option<Box<Cmatch>>, pub pos: i32, pub len: i32, pub end: i32, pub we: i32, pub insc: i32, pub asked: i32, pub prebr: Option<String>, pub postbr: Option<String>, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Ccmakedat { pub str: Option<String>, pub incmd: i32, pub lst: i32, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Chdata { pub matches: Option<Box<Cmgroup>>, pub num: i32, pub nmesg: i32, pub cur: Option<Box<Cmatch>>, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cadata { pub ipre: Option<String>, pub isuf: Option<String>, pub ppre: Option<String>, pub psuf: Option<String>, pub prpre: Option<String>, pub pre: Option<String>, pub suf: Option<String>, pub group: Option<String>, pub rems: Option<String>, pub remf: Option<String>, pub ign: Option<String>, pub flags: i32, pub aflags: i32, pub match_: Option<Box<Cmatcher>>, pub exp: Option<String>, pub apar: Option<String>, pub opar: Option<String>, pub dpar: Vec<String>, pub disp: Option<String>, pub mesg: Option<String>, pub dummies: i32, }
#[derive(Debug, Clone, Default)]
#[allow(non_camel_case_types)]
pub struct Cldata { pub zterm_columns: i32, pub zterm_lines: i32, pub menuacc: i32, pub valid: i32, pub nlist: i32, pub nlines: i32, pub hidden: i32, pub onlyexpl: i32, pub showall: i32, }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn cgf_flags_correct() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(CGF_NOSORT, 1);
assert_eq!(CGF_LINES, 2);
assert_eq!(CGF_HASDL, 4);
assert_eq!(CGF_REVSORT, 1024);
}
#[test]
fn cmf_match_flags_distinct() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
let all = CMF_FILE | CMF_REMOVE | CMF_ISPAR | CMF_PARBR
| CMF_PARNEST | CMF_NOLIST | CMF_DISPLINE | CMF_HIDE
| CMF_NOSPACE | CMF_PACKED | CMF_ROWS | CMF_MULT
| CMF_FMULT | CMF_ALL | CMF_DUMMY | CMF_MORDER
| CMF_DELETE;
assert_eq!(all.count_ones(), 17);
}
#[test]
fn cmf_matcher_flags_correct() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(CMF_LINE, 1);
assert_eq!(CMF_LEFT, 2);
assert_eq!(CMF_RIGHT, 4);
assert_eq!(CMF_INTER, 8);
}
#[test]
fn cpat_enum_values_correct() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(CPAT_CCLASS, 0);
assert_eq!(CPAT_NCLASS, 1);
assert_eq!(CPAT_EQUIV, 2);
assert_eq!(CPAT_ANY, 3);
assert_eq!(CPAT_CHAR, 4);
}
#[test]
fn cp_realparams_mask_covers_10_bits() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(CP_REALPARAMS, 10);
assert_eq!(CP_ALLREALS, 0x3ff);
assert_eq!(CP_ALLREALS.count_ones(), 10);
assert_eq!(CP_WORDS | CP_REDIRS | CP_CURRENT | CP_PREFIX
| CP_SUFFIX | CP_IPREFIX | CP_ISUFFIX
| CP_QIPREFIX | CP_QISUFFIX | CP_COMPSTATE,
CP_ALLREALS);
}
#[test]
fn cp_keyparams_mask_covers_26_bits() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(CP_KEYPARAMS, 26);
assert_eq!(CP_ALLKEYS, 0x3ffffff);
assert_eq!(CP_ALLKEYS.count_ones(), 26);
}
#[test]
fn caf_flags_correct() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(CAF_QUOTE, 1);
assert_eq!(CAF_NOSORT, 2);
assert_eq!(CAF_REVSORT, 1024);
}
#[test]
fn hook_offsets_sequential() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(INSERTMATCHHOOK_OFFSET, 0);
assert_eq!(MENUSTARTHOOK_OFFSET, 1);
assert_eq!(COMPCTLMAKEHOOK_OFFSET, 2);
assert_eq!(COMPCTLCLEANUPHOOK_OFFSET, 3);
assert_eq!(COMPLISTMATCHESHOOK_OFFSET, 4);
}
#[test]
fn cm_space_is_2() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
assert_eq!(CM_SPACE, 2);
}
#[test]
fn structs_default_construct() {
let _g = crate::ported::zle::zle_main::zle_test_setup();
let _ = Cexpl::default();
let _ = Cmgroup::default();
let _ = Cmatch::default();
let _ = Cmatcher::default();
let _ = Cpattern::default();
let _ = Cline::default();
let _ = Aminfo::default();
let _ = Menuinfo::default();
let _ = Ccmakedat::default();
let _ = Chdata::default();
let _ = Cadata::default();
let _ = Cldata::default();
}
}