Community discussions

MikroTik App
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Syntax highlighting and completions for Sublime Text

Fri Feb 14, 2014 12:22 pm

I'm happy to introduce the missing support for syntax highlighting and completions in the Sublime Text editor.

Features:
- Highlight comments, strings, parameters, variable storage modifiers and commands
- Highlight errors like trailing symbols before the comment sign
- Completions for most parameters and commands
- Snippets for all loops and control statements

ToDo:
- Add proper support for line continuation
- Provide completions depending on the parameter

The package is available via Package Control or you can download it from github.
You do not have the required permissions to view the files attached to this post.
 
efaden
Forum Guru
Forum Guru
Posts: 1708
Joined: Sat Mar 30, 2013 1:55 am
Location: New York, USA

Re: Syntax highlighting and completions for Sublime Text

Fri Feb 14, 2014 2:55 pm

Awesome!

Sent from my SCH-I545 using Tapatalk
 
User avatar
normis
MikroTik Support
MikroTik Support
Posts: 26291
Joined: Fri May 28, 2004 11:04 am
Location: Riga, Latvia

Re: Syntax highlighting and completions for Sublime Text

Fri Feb 14, 2014 3:02 pm

wow this is great! thanks
 
efaden
Forum Guru
Forum Guru
Posts: 1708
Joined: Sat Mar 30, 2013 1:55 am
Location: New York, USA

Re: Syntax highlighting and completions for Sublime Text

Fri Feb 14, 2014 3:05 pm

wow this is great! thanks
Now all we need is debugging... :-)
 
User avatar
boen_robot
Forum Guru
Forum Guru
Posts: 2400
Joined: Thu Aug 31, 2006 4:43 pm
Location: europe://Bulgaria/Plovdiv

Re: Syntax highlighting and completions for Sublime Text

Fri Feb 14, 2014 6:33 pm

Sweet! 8)

Does Sublime Text allow dynamic generation of completion suggestions? If so, it would be pretty cool if you also connect to a user defined RouterOS and parse all commands/menus/values from the output of "?".
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Sat Feb 15, 2014 9:46 am

Sweet! 8)

Does Sublime Text allow dynamic generation of completion suggestions? If so, it would be pretty cool if you also connect to a user defined RouterOS and parse all commands/menus/values from the output of "?".
I'm not very experienced with the Mikrotik language itself. Could you point me to description of the feature you're talking about?
 
User avatar
boen_robot
Forum Guru
Forum Guru
Posts: 2400
Joined: Thu Aug 31, 2006 4:43 pm
Location: europe://Bulgaria/Plovdiv

Re: Syntax highlighting and completions for Sublime Text

Thu Feb 27, 2014 7:35 pm

When you are at a terminal (including SSH), at any point you can type "?" to see the possible menus and commands from that context.

If you've just logged in, and type "?", you see the commands and menus from the root menu, then if you type "/export ?", you'll see the arguments from the root menu's export command, etc. If the terminal supports colors, you can differentiate between commands and menus via their color.

If you can connect via SSH, write "?" as input, and parse the output, you'll essentially be getting a list that you can then base suggestions on. But again, this assumes Sublime Text allows you to construct such lists dynamically, as opposed to from static files (as currently seen in your GitHub repo).

This feature is briefly described in the list of global commands, and at the top when you start a terminal session.
 
efaden
Forum Guru
Forum Guru
Posts: 1708
Joined: Sat Mar 30, 2013 1:55 am
Location: New York, USA

Re: Syntax highlighting and completions for Sublime Text

Thu Feb 27, 2014 8:04 pm

At some point it would be cool to add the new switch chip menu from the crs.

Sent from my SCH-I545 using Tapatalk
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 8:56 am

At some point it would be cool to add the new switch chip menu from the crs.
If you give me a tree of all commands available via that menu, I'll add them to the package.
`export verbose` outputs most of the available commands and parameters.
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 8:59 am

One of the goals is to highlight most common syntax errors like spaces after the equation symbol.
Feel free to request such features.
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 9:05 am

When you are at a terminal (including SSH), at any point you can type "?" to see the possible menus and commands from that context.

If you've just logged in, and type "?", you see the commands and menus from the root menu, then if you type "/export ?", you'll see the arguments from the root menu's export command, etc. If the terminal supports colors, you can differentiate between commands and menus via their color.

If you can connect via SSH, write "?" as input, and parse the output, you'll essentially be getting a list that you can then base suggestions on. But again, this assumes Sublime Text allows you to construct such lists dynamically, as opposed to from static files (as currently seen in your GitHub repo).

This feature is briefly described in the list of global commands, and at the top when you start a terminal session.
Sublime Text know nothing about how Mikrtoik interprets its scripts. Instead it sees your scripts as a bunch of words and it will provide completions for the words you already have in file. If you want to have these words in other files, you need something like the SublimeAllAutoComplete package.

As far as I understand the feature you're asking about needs a standalone interpreter of Mikrotik scripts inside a Sublime Text package.
 
User avatar
boen_robot
Forum Guru
Forum Guru
Posts: 2400
Joined: Thu Aug 31, 2006 4:43 pm
Location: europe://Bulgaria/Plovdiv

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 2:40 pm

As far as I understand the feature you're asking about needs a standalone interpreter of Mikrotik scripts inside a Sublime Text package.
No, it doesn't.

It does however require a programming code (as opposed to the current declarative code) that will connect to the router via SSH, and parse the SSH output to generate completion files. That's not the same as having an interpreter (since a "?" doesn't tell you how the command will be executed or the result of it - it just tells you its syntax), but indeed requires a different approach from the current one.
 
efaden
Forum Guru
Forum Guru
Posts: 1708
Joined: Sat Mar 30, 2013 1:55 am
Location: New York, USA

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 2:45 pm

Here is the CRS Switch stuff. Thanks for adding it.

The commands are from the wiki page at:
http://wiki.mikrotik.com/wiki/Manual:CRS_features


Here is the export from /interface ethernet switch:

ros code

/interface ethernet switch
set bridge-type=service-vlan-bridge bypass-l2-security-check-filter-for="" \
    bypass-vlan-ingress-filter-for="" \
    drop-if-invalid-or-src-port-not-member-of-vlan-on-ports="" \
    drop-if-no-vlan-assignment-on-ports="" egress-mirror-ratio=1/1 \
    egress-mirror0-enable=yes egress-mirror0-format=modified \
    egress-mirror0-port=switch1-cpu egress-mirror0-port=switch1-cpu \
    egress-mirror1-enable=yes egress-mirror1-format=modified \
    egress-sampling-ratio=1/1 fdb-uses=mirror0 forward-invalid-vlan=yes \
    ingress-mirror-ratio=1/1 ingress-mirror0-enable=yes \
    ingress-mirror0-format=modified ingress-mirror0-port=switch1-cpu \
    ingress-mirror1-enable=yes ingress-mirror1-format=modified \
    ingress-mirror1-port=switch1-cpu invalid-vlan-lookup-mode=ivl \
    ipv4-multicast-lookup-mode=dst-mac-and-vid-always mac-level-isolation=no \
    mirror-egress-if-ingress-mirrored=no mirror-tx-on-mirror-port=no \
    mirrored-packet-drop-precedence=green mirrored-packet-qos-priority=0 \
    name=switch1 override-existing-when-ufdb-full=no unicast-fdb-timeout=5m \
    use-cvid-in-one2one-vlan-lookup=yes use-svid-in-one2one-vlan-lookup=no \
    vlan-level-isolation=no vlan-uses=mirror0
/interface ethernet switch dscp-qos-map
set 0 dei=0 drop-precedence=green pcp=0 priority=1
set 1 dei=0 drop-precedence=green pcp=0 priority=0
set 2 dei=0 drop-precedence=green pcp=0 priority=0
set 3 dei=0 drop-precedence=green pcp=0 priority=0
set 4 dei=0 drop-precedence=green pcp=0 priority=0
set 5 dei=0 drop-precedence=green pcp=0 priority=0
set 6 dei=0 drop-precedence=green pcp=0 priority=0
set 7 dei=0 drop-precedence=green pcp=0 priority=0
set 8 dei=0 drop-precedence=green pcp=0 priority=1
set 9 dei=0 drop-precedence=green pcp=0 priority=0
set 10 dei=0 drop-precedence=green pcp=0 priority=0
set 11 dei=0 drop-precedence=green pcp=0 priority=0
set 12 dei=0 drop-precedence=yellow pcp=0 priority=0
set 13 dei=0 drop-precedence=green pcp=0 priority=0
set 14 dei=0 drop-precedence=red pcp=0 priority=0
set 15 dei=0 drop-precedence=green pcp=0 priority=0
set 16 dei=0 drop-precedence=green pcp=0 priority=2
set 17 dei=0 drop-precedence=green pcp=0 priority=0
set 18 dei=0 drop-precedence=green pcp=0 priority=2
set 19 dei=0 drop-precedence=green pcp=0 priority=0
set 20 dei=0 drop-precedence=yellow pcp=0 priority=2
set 21 dei=0 drop-precedence=green pcp=0 priority=0
set 22 dei=0 drop-precedence=red pcp=0 priority=2
set 23 dei=0 drop-precedence=green pcp=0 priority=0
set 24 dei=0 drop-precedence=green pcp=0 priority=2
set 25 dei=0 drop-precedence=green pcp=0 priority=0
set 26 dei=0 drop-precedence=green pcp=0 priority=2
set 27 dei=0 drop-precedence=green pcp=0 priority=0
set 28 dei=0 drop-precedence=yellow pcp=0 priority=2
set 29 dei=0 drop-precedence=green pcp=0 priority=0
set 30 dei=0 drop-precedence=red pcp=0 priority=2
set 31 dei=0 drop-precedence=green pcp=0 priority=0
set 32 dei=0 drop-precedence=green pcp=0 priority=2
set 33 dei=0 drop-precedence=green pcp=0 priority=0
set 34 dei=0 drop-precedence=green pcp=0 priority=2
set 35 dei=0 drop-precedence=green pcp=0 priority=0
set 36 dei=0 drop-precedence=yellow pcp=0 priority=2
set 37 dei=0 drop-precedence=green pcp=0 priority=0
set 38 dei=0 drop-precedence=red pcp=0 priority=2
set 39 dei=0 drop-precedence=green pcp=0 priority=0
set 40 dei=0 drop-precedence=green pcp=0 priority=2
set 41 dei=0 drop-precedence=green pcp=0 priority=0
set 42 dei=0 drop-precedence=green pcp=0 priority=0
set 43 dei=0 drop-precedence=green pcp=0 priority=0
set 44 dei=0 drop-precedence=green pcp=0 priority=0
set 45 dei=0 drop-precedence=green pcp=0 priority=0
set 46 dei=0 drop-precedence=green pcp=0 priority=3
set 47 dei=0 drop-precedence=green pcp=0 priority=0
set 48 dei=0 drop-precedence=green pcp=0 priority=2
set 49 dei=0 drop-precedence=green pcp=0 priority=0
set 50 dei=0 drop-precedence=green pcp=0 priority=0
set 51 dei=0 drop-precedence=green pcp=0 priority=0
set 52 dei=0 drop-precedence=green pcp=0 priority=0
set 53 dei=0 drop-precedence=green pcp=0 priority=0
set 54 dei=0 drop-precedence=green pcp=0 priority=0
set 55 dei=0 drop-precedence=green pcp=0 priority=0
set 56 dei=0 drop-precedence=green pcp=0 priority=2
set 57 dei=0 drop-precedence=green pcp=0 priority=0
set 58 dei=0 drop-precedence=green pcp=0 priority=0
set 59 dei=0 drop-precedence=green pcp=0 priority=0
set 60 dei=0 drop-precedence=green pcp=0 priority=0
set 61 dei=0 drop-precedence=green pcp=0 priority=0
set 62 dei=0 drop-precedence=green pcp=0 priority=0
set 63 dei=0 drop-precedence=green pcp=0 priority=0
/interface ethernet switch port
set 0 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 1 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 2 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 3 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 4 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 5 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 6 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 7 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 8 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 9 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 10 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 11 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 12 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 13 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 14 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 15 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 16 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 17 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 18 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 19 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 20 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 21 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 22 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 23 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 24 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=30 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
set 25 action-on-restricted-unknown-sa=forward action-on-static-station-move=\
    forward allow-multicast-loopback=no allow-unicast-loopback=no \
    default-customer-pcp=0 default-service-pcp=0 drop-counter-config="" \
    drop-when-ufdb-entry-sa-drop=no \
    dynamic-mac-move-is-restricted-unknown-sa=no egress-customer-tpid=0x8100 \
    egress-mirror-to=mirror0 egress-mirroring=no egress-pcp-propagation=no \
    egress-sampling=no egress-service-tpid=0x88A8 egress-vlan-lookup=\
    according-to-egress-vlan-type egress-vlan-mode=unmodified \
    egress-vlan-type=edge-port filter-priority-tagged-frame=no \
    filter-tagged-frame=no filter-untagged-frame=no ingress-customer-tpid=\
    0x8100 ingress-mirror-to=mirror0 ingress-mirroring=no \
    ingress-mirroring-according-to-vlan=no ingress-sampling=no \
    ingress-sampling-mode=all-frames-without-mac-error \
    ingress-sampling-ratio=1/1 ingress-service-tpid=0x88A8 ingress-vlan-type=\
    edge-port isolation-profile=31 !learn-limit learn-restricted-unknown-sa=\
    yes mac-based-customer-vlan-for=none mac-based-service-vlan-for=none \
    mac-based-vlan-translate=no mac-vlan-type=edge-port \
    pcp-propagation-for-initial-pcp=no per-queue-scheduling="wrr-group1:1,wrr-\
    group1:2,wrr-group1:4,strict-priority:0,wrr-group0:0,wrr-group0:0,wrr-grou\
    p0:0,wrr-group0:0" policy-drop-counter-includes="" priority-to-queue=\
    0-15:0,1:1,2:2,3:3 qos-change-dei=no qos-change-dscp=no qos-change-pcp=no \
    qos-dscp-to-dscp-mapping=no qos-pcp-dei-map-dei=0-15:0 \
    qos-pcp-dei-map-drop-precedence=0-15:green qos-pcp-dei-map-dscp=0-15:0 \
    qos-pcp-dei-map-pcp=0-15:0 qos-pcp-dei-map-priority=0-15:0 \
    qos-scheme-precedence=pcp-based queue-custom-drop-counter0-includes="" \
    queue-custom-drop-counter1-includes="" \
    secure-static-mac-move-is-restricted-unknown-sa=no
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 2:48 pm

It does however require a programming code (as opposed to the current declarative code) that will connect to the router via SSH, and parse the SSH output to generate completion files. That's not the same as having an interpreter (since a "?" doesn't tell you how the command will be executed or the result of it - it just tells you its syntax), but indeed requires a different approach from the current one.
This is interesting, but I don't think this functionality needs to be integrated in Sublime Text. Instead, one should have a shell script that connects to a given router, reads commands via "?" and then create/modify tmLanguage and sublime-completions files.
 
efaden
Forum Guru
Forum Guru
Posts: 1708
Joined: Sat Mar 30, 2013 1:55 am
Location: New York, USA

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 2:53 pm

It does however require a programming code (as opposed to the current declarative code) that will connect to the router via SSH, and parse the SSH output to generate completion files. That's not the same as having an interpreter (since a "?" doesn't tell you how the command will be executed or the result of it - it just tells you its syntax), but indeed requires a different approach from the current one.
This is interesting, but I don't think this functionality needs to be integrated in Sublime Text. Instead, one should have a shell script that connects to a given router, reads commands via "?" and then create/modify tmLanguage and sublime-completions files.
That would be cool.
 
User avatar
boen_robot
Forum Guru
Forum Guru
Posts: 2400
Joined: Thu Aug 31, 2006 4:43 pm
Location: europe://Bulgaria/Plovdiv

Re: Syntax highlighting and completions for Sublime Text

Sat Mar 01, 2014 3:05 pm

It does however require a programming code (as opposed to the current declarative code) that will connect to the router via SSH, and parse the SSH output to generate completion files. That's not the same as having an interpreter (since a "?" doesn't tell you how the command will be executed or the result of it - it just tells you its syntax), but indeed requires a different approach from the current one.
This is interesting, but I don't think this functionality needs to be integrated in Sublime Text. Instead, one should have a shell script that connects to a given router, reads commands via "?" and then create/modify tmLanguage and sublime-completions files.
That alone would be cool too. I mean, IMHO, it would be more convenient to have it right in the editor (especially if you have multiple routers, and want to switch them on the fly), but even if it's a stand alone program, it would still be better than any "static" syntax highlighter (read: the current one and every other highlighter before it).
 
marrold
Member
Member
Posts: 427
Joined: Wed Sep 04, 2013 10:45 am

Re: Syntax highlighting and completions for Sublime Text

Tue Mar 04, 2014 11:31 am

Wow this is awesome, just what I was looking for. - Do you accept donations? It would be nice if this stayed maintained and looked after.
 
User avatar
boen_robot
Forum Guru
Forum Guru
Posts: 2400
Joined: Thu Aug 31, 2006 4:43 pm
Location: europe://Bulgaria/Plovdiv

Re: Syntax highlighting and completions for Sublime Text

Fri Jun 27, 2014 5:10 pm

It does however require a programming code (as opposed to the current declarative code) that will connect to the router via SSH, and parse the SSH output to generate completion files. That's not the same as having an interpreter (since a "?" doesn't tell you how the command will be executed or the result of it - it just tells you its syntax), but indeed requires a different approach from the current one.
This is interesting, but I don't think this functionality needs to be integrated in Sublime Text. Instead, one should have a shell script that connects to a given router, reads commands via "?" and then create/modify tmLanguage and sublime-completions files.
That alone would be cool too. I mean, IMHO, it would be more convenient to have it right in the editor (especially if you have multiple routers, and want to switch them on the fly), but even if it's a stand alone program, it would still be better than any "static" syntax highlighter (read: the current one and every other highlighter before it).
Just FYI...

A while after I had posted that last message, I taught a course on networks that included MikroTik basics, and I gave students an (optional) assignment to make such an application... And because we're talking 3rd year computer science bachelors here, guess what - one of them actually did it! Well... to be more precise, as assigned, he made an SSH-to-JSON translator.

Check it out:
https://github.com/boenrobot/ROSMenuLister
You could take the generated JSON, and transform it into hints for Sublime Text and/or other IDEs. Doing so should (at least in theory) be far easier than if you had to also do the SSH parsing.

I'll be taking over that project, so if you have means to make it more user/developer friendly (as it surely needs to be...), feel free to send pull requests.
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Mon Nov 24, 2014 1:51 am

@ boen_robot Would be awesome if you run this script against every release of ROS and publish it e.g. as Github Release. I'll then turn it into syntax highlighting for Sublime Text!
 
User avatar
boen_robot
Forum Guru
Forum Guru
Posts: 2400
Joined: Thu Aug 31, 2006 4:43 pm
Location: europe://Bulgaria/Plovdiv

Re: Syntax highlighting and completions for Sublime Text

Tue Dec 02, 2014 4:59 pm

@ boen_robot Would be awesome if you run this script against every release of ROS and publish it e.g. as Github Release. I'll then turn it into syntax highlighting for Sublime Text!
That's not a good idea...

In developing this further to include hints for argument values, I've noticed RouterOS offers not only completions for "standard" values, but in many places, also for current state strings, such as queue names, hotspot usernames, interface names and the like... And it's impossible to programmatically (and without heuristics) tell whether a string is a standard value or not (except the places where the values "yes" and "no" are green; That's unambiguously standard values, compatible with a Boolean variable value).

If I pre-generate the JSON against my own (empty) VM, users would not get such string completions as part of their hints. Furthermore, they'll see "ether1", even if they use another name for their first Ethernet adapter... And I think using "ether1" in such cases might cause errors.

If you publish a "one click" generator for Sublime hints (which automatically invokes the SSH-to-JSON converter, and then converts the JSON to Sublime hints), users could just invoke it once against their router, and perhaps regenerate as needed.


I'm trying to refactor the convertor to be a more "on-the-fly" application, as opposed to pre-generating hints, as generating the entire JSON file takes quite a few minutes (like, around half an hour last I tested...), and most users use only a fraction of RouterOS' features. This is a little harder then it might sound at first though, because it's not just about invoking an arbitrary check, but "caching" the generated stuff, and making it searchable in a more efficient fashion (by making the names of menus/commands/arguments be object keys, as opposed to the current object values).

When this refactoring is done, it would become possible to create plugins for editors that generate hints on-the-fly, rather than pre-generating them, and the JSON file will simply be used as a "long term cache". Again, I don't know if SublimeText in particular has plugin facilities, but if it does, this would be the key to making such a plug in work. Said hypothetical plugin would tokenize each line, and lookup suggestions token by token (using the last hints to know what kind of token to lookup next), in the end generating only hints for stuff that the user actually "touches" with their scripts (and would of course also generate hints for the current cursor position), and show warnings when a token is not parsable (e.g. using a command that's not available in the current version). The full generator would still be an option of course, so that should not deter you from making a JSON-to-SublimeText convertor "now".
 
nissandata
newbie
Posts: 37
Joined: Fri Dec 03, 2010 7:20 pm

Re: Syntax highlighting and completions for Sublime Text

Fri Mar 27, 2015 12:14 pm

Awesome!

Thanks
 
jp1981
just joined
Posts: 6
Joined: Tue Apr 21, 2015 9:54 am

Syntax highlighting and completions for Sublime Text

Tue Apr 21, 2015 5:53 pm

Thanks. This comes in very handy


Sent from my iPhone using Tapatalk
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Wed Dec 21, 2016 12:11 am

Is anyone interested in updating language definition for the most current version of RouterOS?
 
Yuna
just joined
Posts: 11
Joined: Fri Dec 16, 2016 8:12 am

Re: Syntax highlighting and completions for Sublime Text

Fri Jan 13, 2017 1:08 am

Is anyone interested in updating language definition for the most current version of RouterOS?
Yes Please, that would be great.


Gesendet von iPhone mit Tapatalk Pro
 
User avatar
pukkita
Trainer
Trainer
Posts: 3051
Joined: Wed Dec 04, 2013 11:09 am
Location: Spain

Re: Syntax highlighting and completions for Sublime Text

Fri Jan 13, 2017 11:39 am

Sure...
 
ulysses
Frequent Visitor
Frequent Visitor
Posts: 95
Joined: Fri Sep 25, 2015 1:26 pm

Re: Syntax highlighting and completions for Sublime Text

Mon May 01, 2017 10:43 am

Great! please keep up!
 
JimmyNyholm
Member Candidate
Member Candidate
Posts: 248
Joined: Mon Apr 25, 2016 2:16 am
Location: Sweden

Re: Syntax highlighting and completions for Sublime Text

Mon Jul 10, 2017 2:02 am

I'm happy to introduce the missing support for syntax highlighting and completions in the Sublime Text editor.
Just tried it.... Sweet exactly what the doctor ordered....

Thanks!
 
CerpinTaxt
just joined
Posts: 5
Joined: Wed Mar 01, 2017 3:12 am

Re: Syntax highlighting and completions for Sublime Text

Thu Sep 07, 2017 2:09 am

This is an awesome package, much appreciated.

Is it possible to have line and block-comment keyboard shortcut support?
i.e. Pressing [Ctrl + /] or [Ctrl + Shift + /] will add '# ' to any lines selected?
 
ninjai
just joined
Posts: 1
Joined: Sun Sep 10, 2017 6:05 pm

Re: Syntax highlighting and completions for Sublime Text

Sun Sep 10, 2017 6:32 pm

Very Much Appreciated.
 
User avatar
jspool
Member
Member
Posts: 468
Joined: Sun Oct 04, 2009 4:06 am
Location: Oregon

Re: Syntax highlighting and completions for Sublime Text

Thu Sep 21, 2017 6:41 am

Its my go to now for scripting. Thanks for the Mikrotik support. It's so much easier with highlighting.
 
facubertran
just joined
Posts: 19
Joined: Sat Sep 24, 2016 4:18 pm
Location: Argentina
Contact:

Re: Syntax highlighting and completions for Sublime Text

Fri Sep 22, 2017 6:00 pm

Great !!
 
randomwalk
just joined
Posts: 10
Joined: Sun Apr 21, 2013 3:40 am
Location: Canada

Re: Syntax highlighting and completions for Sublime Text

Thu Nov 23, 2017 7:45 am

Hi,
Just found that MikrotikScript have disappeared from the available syntax options in my instance of Sublime Text
What is more interesting, is that after I add the MikrotikScript package, Sublime Text will forcefully delete it, and this occurs only within few seconds after launch...
Purchasing a license is not justified as I'm not a programmer, so I just installed a demo downloaded from sublime, used somewhat extensively for a short period before abandoning the editor.
Now, six to 12 months later since I last used Sublime, I'm seeing this behaviour. Can't tell exactly when this editor started acting this way...

Has anyone seen this?
 
User avatar
jspool
Member
Member
Posts: 468
Joined: Sun Oct 04, 2009 4:06 am
Location: Oregon

Re: Syntax highlighting and completions for Sublime Text

Thu Nov 23, 2017 7:49 am

Hi,
Just found that MikrotikScript have disappeared from the available syntax options in my instance of Sublime Text
What is more interesting, is that after I add the MikrotikScript package, Sublime Text will forcefully delete it, and this occurs only within few seconds after launch...
Purchasing a license is not justified as I'm not a programmer, so I just installed a demo downloaded from sublime, used somewhat extensively for a short period before abandoning the editor.
Now, six to 12 months later since I last used Sublime, I'm seeing this behaviour. Can't tell exactly when this editor started acting this way...

Has anyone seen this?

I have a licensed version of Sublime Text Version 3.0 Build 3143 and I have no issues with the MikrotikScript.sublime-package.
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Wed Jan 17, 2018 12:12 am

Call for contributors

I'm happy to review and accept Pull Requests with support for new keywords introduced by RouterOS.
 
User avatar
bobr
just joined
Posts: 14
Joined: Fri Feb 13, 2015 4:27 pm

Re: Syntax highlighting and completions for Sublime Text

Wed Feb 07, 2018 10:09 am

Hello, @Kentzo
Here https://packagecontrol.io/packages/MikrotikScript the last version is 1.3.6 and same mentioned on github https://github.com/Kentzo/MikrotikScript/releases
But you've made changes later, on 30 Jan 2016 for example. The question is: if all of the last changes are in the compiled package?
'Cause, e.g. ":return" or ":typeof" keyword highlighting won't work for me, but ":totime:typeof" - works - and that is, as far as I remember, one of the last fixes on github.

I've installed your highlight theme via package installer in Sublime 3. Maybe not all of the recent changes are in that package? If so - how do I compile the sources from github for Sublime Text? Or, what will be much better - maybe you will kindly agree to do that for us?
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Tue Feb 13, 2018 4:17 am

Pushed a new tag that includes all changes, should be propagated to PackageControl soon.
 
User avatar
bobr
just joined
Posts: 14
Joined: Fri Feb 13, 2015 4:27 pm

Re: Syntax highlighting and completions for Sublime Text

Tue Feb 13, 2018 3:42 pm

Thanks alot!
 
User avatar
r0berts
newbie
Posts: 49
Joined: Mon Jul 30, 2018 3:29 pm

Re: Syntax highlighting and completions for Sublime Text

Thu Aug 02, 2018 3:03 pm

Thanks, this is great!
 
rxmd
just joined
Posts: 22
Joined: Thu Mar 02, 2017 8:39 am

Re: Syntax highlighting and completions for Sublime Text

Tue Aug 07, 2018 11:48 am

Now if only someone made the same for emacs... :D
 
sopyan0807
newbie
Posts: 39
Joined: Wed Jan 22, 2020 5:21 pm
Location: Indonesia
Contact:

Re: Syntax highlighting and completions for Sublime Text

Mon Feb 17, 2020 1:39 pm

woow very beautiful
 
ukliao
just joined
Posts: 3
Joined: Fri Oct 12, 2018 5:36 pm

Re: Syntax highlighting and completions for Sublime Text

Thu Jan 28, 2021 8:29 am

Now if only someone made the same for emacs... :D
Mikrotik Script looks very like Tcl.
So I successfully use tcl-mode:
(add-to-list 'auto-mode-alist '("\\.rsc\\'" . tcl-mode))
 
User avatar
Kentzo
Long time Member
Long time Member
Topic Author
Posts: 512
Joined: Mon Jan 27, 2014 3:35 pm
Location: California

Re: Syntax highlighting and completions for Sublime Text

Wed Jun 02, 2021 7:30 pm

I'm looking to significantly improve the syntax definition for ST4 to provide context-aware completions and wonder if someone from the MikroTik team could reach out to me and provide a full list of commands w/ parameters. As I understand some packages are only available on certain hardware and I only have home/small office devices.

Who is online

Users browsing this forum: loloski, massinia and 16 guests