├── .gitignore ├── .no-sublime-package ├── Csound ├── .DS_Store ├── Comments (Csound).tmPreferences ├── Context.sublime-menu ├── Csound.sublime-build ├── Csound.sublime-completions ├── Csound.tmLanguage ├── ReadMe.txt ├── opcodes.xml ├── open_in_csound_qt.py ├── popup_hint.py ├── search_in_manual.py └── statusbar_hint.py ├── LICENSE ├── Main.sublime-menu ├── README 2.md ├── README.md ├── createCsoundDb.py ├── css ├── dark.css ├── default.css └── light.css ├── db ├── Javascript.json ├── PHP.json ├── Python.json ├── csound.json └── updatedb.py ├── intellitip.py ├── intellitip.sublime-settings ├── opcodes.txt └── screenshot.png /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[cod] 2 | 3 | # C extensions 4 | *.so 5 | 6 | # Packages 7 | *.egg 8 | *.egg-info 9 | dist 10 | build 11 | eggs 12 | parts 13 | bin 14 | var 15 | sdist 16 | develop-eggs 17 | .installed.cfg 18 | lib 19 | lib64 20 | __pycache__ 21 | 22 | # Installer logs 23 | pip-log.txt 24 | 25 | # Unit test / coverage reports 26 | .coverage 27 | .tox 28 | nosetests.xml 29 | 30 | # Translations 31 | *.mo 32 | 33 | # Mr Developer 34 | .mr.developer.cfg 35 | .project 36 | .pydevproject 37 | -------------------------------------------------------------------------------- /.no-sublime-package: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rorywalsh/csoundSublime/41c2a6304bad4d93432ea7c185744e8aae211593/.no-sublime-package -------------------------------------------------------------------------------- /Csound/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rorywalsh/csoundSublime/41c2a6304bad4d93432ea7c185744e8aae211593/Csound/.DS_Store -------------------------------------------------------------------------------- /Csound/Comments (Csound).tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Comments 7 | scope 8 | source.csd 9 | settings 10 | 11 | shellVariables 12 | 13 | 14 | name 15 | TM_COMMENT_START 16 | value 17 | ; 18 | 19 | 20 | name 21 | TM_COMMENT_START_2 22 | value 23 | /* 24 | 25 | 26 | 27 | name 28 | TM_COMMENT_END_2 29 | value 30 | 31 | */ 32 | 33 | 34 | name 35 | TM_COMMENT_DISABLE_INDENT_2 36 | value 37 | yes 38 | 39 | 40 | 41 | uuid 42 | c5026cfc-974d-443d-8859-7e7a07970d9c 43 | 44 | 45 | -------------------------------------------------------------------------------- /Csound/Context.sublime-menu: -------------------------------------------------------------------------------- 1 | [ 2 | { "command": "search_in_manual" }, 3 | { "command": "popup_hint" }, 4 | { "command": "open_in_csound_qt" } 5 | ] 6 | -------------------------------------------------------------------------------- /Csound/Csound.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "windows": { 3 | "cmd": [ 4 | "csound.exe", 5 | "-odac", 6 | "--nodisplays", 7 | "$file"], 8 | "selector": "source.csd" 9 | }, 10 | 11 | "linux": { 12 | "cmd": [ 13 | "/usr/local/bin/csound", 14 | "-odac", 15 | "--nodisplays", 16 | "$file"], 17 | "selector": "source.csd" 18 | }, 19 | 20 | "osx": { 21 | "cmd": [ 22 | "/usr/local/bin/csound", 23 | "-odac", 24 | "--nodisplays", 25 | "$file"], 26 | "selector": "source.csd" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Csound/Csound.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.csd", 3 | 4 | "completions": 5 | [ 6 | "#define", 7 | "#ifdef", 8 | "#ifndef", 9 | "#include", 10 | "#undef", 11 | "0dbfs", 12 | "ATSadd", 13 | "ATSaddnz", 14 | "ATSbufread", 15 | "ATScross", 16 | "ATSinfo", 17 | "ATSinterpread", 18 | "ATSpartialtap", 19 | "ATSread", 20 | "ATSreadnz", 21 | "ATSsinnoi", 22 | "FLbox", 23 | "FLbutBank", 24 | "FLbutton", 25 | "FLcloseButton", 26 | "FLcolor", 27 | "FLcolor2", 28 | "FLcount", 29 | "FLexecButton", 30 | "FLgetsnap", 31 | "FLgroup", 32 | "FLgroupEnd", 33 | "FLgroup_end", 34 | "FLhide", 35 | "FLhvsBox", 36 | "FLhvsBoxSetValue", 37 | "FLjoy", 38 | "FLkeyIn", 39 | "FLknob", 40 | "FLlabel", 41 | "FLloadsnap", 42 | "FLmouse", 43 | "FLpack", 44 | "FLpackEnd", 45 | "FLpack_end", 46 | "FLpanel", 47 | "FLpanelEnd", 48 | "FLpanel_end", 49 | "FLprintk", 50 | "FLprintk2", 51 | "FLroller", 52 | "FLrun", 53 | "FLsavesnap", 54 | "FLscroll", 55 | "FLscrollEnd", 56 | "FLscroll_end", 57 | "FLsetAlign", 58 | "FLsetBox", 59 | "FLsetColor", 60 | "FLsetColor2", 61 | "FLsetFont", 62 | "FLsetPosition", 63 | "FLsetSize", 64 | "FLsetSnapGroup", 65 | "FLsetText", 66 | "FLsetTextColor", 67 | "FLsetTextSize", 68 | "FLsetTextType", 69 | "FLsetVal", 70 | "FLsetVal_i", 71 | "FLsetsnap", 72 | "FLshow", 73 | "FLslidBnk", 74 | "FLslidBnk2", 75 | "FLslidBnk2Set", 76 | "FLslidBnk2Setk", 77 | "FLslidBnkGetHandle", 78 | "FLslidBnkSet", 79 | "FLslidBnkSetk", 80 | "FLslider", 81 | "FLtabs", 82 | "FLtabsEnd", 83 | "FLtabs_end", 84 | "FLtext", 85 | "FLupdate", 86 | "FLvalue", 87 | "FLvkeybd", 88 | "FLvslidBnk", 89 | "FLvslidBnk2", 90 | "FLxyin", 91 | "JackoAudioIn", 92 | "JackoAudioInConnect", 93 | "JackoAudioOut", 94 | "JackoAudioOutConnect", 95 | "JackoFreewheel", 96 | "JackoInfo", 97 | "JackoInit", 98 | "JackoMidiInConnect", 99 | "JackoMidiOut", 100 | "JackoMidiOutConnect", 101 | "JackoNoteOut", 102 | "JackoOn", 103 | "JackoTransport", 104 | "MixerClear", 105 | "MixerGetLevel", 106 | "MixerReceive", 107 | "MixerSend", 108 | "MixerSetLevel", 109 | "MixerSetLevel_i", 110 | "OSCinit", 111 | "OSClisten", 112 | "OSCsend", 113 | "STKBandedWG", 114 | "STKBeeThree", 115 | "STKBlowBotl", 116 | "STKBlowHole", 117 | "STKBowed", 118 | "STKBrass", 119 | "STKClarinet", 120 | "STKDrummer", 121 | "STKFMVoices", 122 | "STKFlute", 123 | "STKHevyMetl", 124 | "STKMandolin", 125 | "STKModalBar", 126 | "STKMoog", 127 | "STKPercFlut", 128 | "STKPlucked", 129 | "STKResonate", 130 | "STKRhodey", 131 | "STKSaxofony", 132 | "STKShakers", 133 | "STKSimple", 134 | "STKSitar", 135 | "STKStifKarp", 136 | "STKTubeBell", 137 | "STKVoicForm", 138 | "STKWhistle", 139 | "STKWurley", 140 | "a", 141 | "abetarand", 142 | "abexprnd", 143 | "abs", 144 | "acauchy", 145 | "active", 146 | "adsr", 147 | "adsyn", 148 | "adsynt", 149 | "adsynt2", 150 | "aexprand", 151 | "aftouch", 152 | "agauss", 153 | "agogobel", 154 | "alinrand", 155 | "alpass", 156 | "alwayson", 157 | "ampdb", 158 | "ampdbfs", 159 | "ampmidi", 160 | "ampmidid", 161 | "apcauchy", 162 | "apoisson", 163 | "apow", 164 | "areson", 165 | "aresonk", 166 | "array", 167 | "atone", 168 | "atonek", 169 | "atonex", 170 | "atrirand", 171 | "aunirand", 172 | "aweibull", 173 | "babo", 174 | "balance", 175 | "bamboo", 176 | "barmodel", 177 | "bbcutm", 178 | "bbcuts", 179 | "betarand", 180 | "bexprnd", 181 | "bformdec", 182 | "bformdec1", 183 | "bformenc", 184 | "bformenc1", 185 | "binit", 186 | "biquad", 187 | "biquada", 188 | "birnd", 189 | "bqrez", 190 | "buchla", 191 | "butbp", 192 | "butbr", 193 | "buthp", 194 | "butlp", 195 | "butterbp", 196 | "butterbr", 197 | "butterhp", 198 | "butterlp", 199 | "button", 200 | "buzz", 201 | "c2r", 202 | "cabasa", 203 | "cauchy", 204 | "cauchyi", 205 | "ceil", 206 | "cell", 207 | "cent", 208 | "centroid", 209 | "ceps", 210 | "cggoto", 211 | "chanctrl", 212 | "changed", 213 | "chani", 214 | "chano", 215 | "chebyshevpoly", 216 | "checkbox", 217 | "chn_S", 218 | "chn_a", 219 | "chn_k", 220 | "chnclear", 221 | "chnexport", 222 | "chnget", 223 | "chnmix", 224 | "chnparams", 225 | "chnrecv", 226 | "chnsend", 227 | "chnset", 228 | "chuap", 229 | "cigoto", 230 | "cingoto", 231 | "ckgoto", 232 | "clear", 233 | "clfilt", 234 | "clip", 235 | "clock", 236 | "clockoff", 237 | "clockon", 238 | "cmplxprod", 239 | "cngoto", 240 | "comb", 241 | "combinv", 242 | "compilecsd", 243 | "compileorc", 244 | "compilestr", 245 | "compress", 246 | "connect", 247 | "control", 248 | "convle", 249 | "convolve", 250 | "copy2ftab", 251 | "copy2ttab", 252 | "copya2ftab", 253 | "copyf2array", 254 | "cos", 255 | "cosh", 256 | "cosinv", 257 | "cosseg", 258 | "cossegb", 259 | "cossegr", 260 | "cps2pch", 261 | "cpsmidi", 262 | "cpsmidib", 263 | "cpsmidinn", 264 | "cpsoct", 265 | "cpspch", 266 | "cpstmid", 267 | "cpstun", 268 | "cpstuni", 269 | "cpsxpch", 270 | "cpumeter", 271 | "cpuprc", 272 | "cross2", 273 | "crossfm", 274 | "crossfmi", 275 | "crossfmpm", 276 | "crossfmpmi", 277 | "crosspm", 278 | "crosspmi", 279 | "crunch", 280 | "ctlchn", 281 | "ctrl14", 282 | "ctrl21", 283 | "ctrl7", 284 | "ctrlinit", 285 | "cuserrnd", 286 | "dam", 287 | "date", 288 | "dates", 289 | "db", 290 | "dbamp", 291 | "dbfsamp", 292 | "dcblock", 293 | "dcblock2", 294 | "dconv", 295 | "delay", 296 | "delay1", 297 | "delayk", 298 | "delayr", 299 | "delayw", 300 | "deltap", 301 | "deltap3", 302 | "deltapi", 303 | "deltapn", 304 | "deltapx", 305 | "deltapxw", 306 | "denorm", 307 | "diff", 308 | "diskgrain", 309 | "diskin", 310 | "diskin2", 311 | "dispfft", 312 | "display", 313 | "distort", 314 | "distort1", 315 | "divz", 316 | "doppler", 317 | "downsamp", 318 | "dripwater", 319 | "dssiactivate", 320 | "dssiaudio", 321 | "dssictls", 322 | "dssiinit", 323 | "dssilist", 324 | "dumpk", 325 | "dumpk2", 326 | "dumpk3", 327 | "dumpk4", 328 | "duserrnd", 329 | "dust", 330 | "dust2", 331 | "else", 332 | "elseif", 333 | "endif", 334 | "endin", 335 | "endop", 336 | "envlpx", 337 | "envlpxr", 338 | "ephasor", 339 | "eqfil", 340 | "evalstr", 341 | "event", 342 | "event_i", 343 | "exciter", 344 | "exitnow", 345 | "exp", 346 | "expcurve", 347 | "expon", 348 | "exprand", 349 | "exprandi", 350 | "expseg", 351 | "expsega", 352 | "expsegb", 353 | "expsegba", 354 | "expsegr", 355 | "fareylen", 356 | "fareyleni", 357 | "faustaudio", 358 | "faustcompile", 359 | "faustctl", 360 | "faustgen", 361 | "fft", 362 | "fftinv", 363 | "ficlose", 364 | "filebit", 365 | "filelen", 366 | "filenchnls", 367 | "filepeak", 368 | "filesr", 369 | "filevalid", 370 | "fillarray", 371 | "filter2", 372 | "fin", 373 | "fini", 374 | "fink", 375 | "fiopen", 376 | "flanger", 377 | "flashtxt", 378 | "flooper", 379 | "flooper2", 380 | "floor", 381 | "fluidAllOut", 382 | "fluidCCi", 383 | "fluidCCk", 384 | "fluidControl", 385 | "fluidEngine", 386 | "fluidLoad", 387 | "fluidNote", 388 | "fluidOut", 389 | "fluidProgramSelect", 390 | "fluidSetInterpMethod", 391 | "fmb3", 392 | "fmbell", 393 | "fmmetal", 394 | "fmpercfl", 395 | "fmrhode", 396 | "fmvoice", 397 | "fmwurlie", 398 | "fof", 399 | "fof2", 400 | "fofilter", 401 | "fog", 402 | "fold", 403 | "follow", 404 | "follow2", 405 | "foscil", 406 | "foscili", 407 | "fout", 408 | "fouti", 409 | "foutir", 410 | "foutk", 411 | "fprintks", 412 | "fprints", 413 | "frac", 414 | "fractalnoise", 415 | "framebuffer", 416 | "freeverb", 417 | "ftchnls", 418 | "ftconv", 419 | "ftcps", 420 | "ftfree", 421 | "ftgen", 422 | "ftgenonce", 423 | "ftgentmp", 424 | "ftlen", 425 | "ftload", 426 | "ftloadk", 427 | "ftlptim", 428 | "ftmorf", 429 | "ftresize", 430 | "ftresizei", 431 | "ftsave", 432 | "ftsavek", 433 | "ftsr", 434 | "gain", 435 | "gainslider", 436 | "gauss", 437 | "gaussi", 438 | "gausstrig", 439 | "gbuzz", 440 | "genarray", 441 | "genarray_i", 442 | "gendy", 443 | "gendyc", 444 | "gendyx", 445 | "getcfg", 446 | "getcol", 447 | "getrow", 448 | "getseed", 449 | "gogobel", 450 | "goto", 451 | "grain", 452 | "grain2", 453 | "grain3", 454 | "granule", 455 | "guiro", 456 | "harmon", 457 | "harmon2", 458 | "harmon3", 459 | "harmon4", 460 | "hdf5read", 461 | "hdf5write", 462 | "hilbert", 463 | "hrtfearly", 464 | "hrtfer", 465 | "hrtfmove", 466 | "hrtfmove2", 467 | "hrtfreverb", 468 | "hrtfstat", 469 | "hsboscil", 470 | "hvs1", 471 | "hvs2", 472 | "hvs3", 473 | "i", 474 | "ibetarand", 475 | "ibexprnd", 476 | "icauchy", 477 | "iceps", 478 | "ictrl14", 479 | "ictrl21", 480 | "ictrl7", 481 | "iexprand", 482 | "if", 483 | "igauss", 484 | "igoto", 485 | "ihold", 486 | "ilinrand", 487 | "imagecreate", 488 | "imagefree", 489 | "imagegetpixel", 490 | "imageload", 491 | "imagesave", 492 | "imagesetpixel", 493 | "imagesize", 494 | "imidic14", 495 | "imidic21", 496 | "imidic7", 497 | "in", 498 | "in32", 499 | "inch", 500 | "inh", 501 | "init", 502 | "initc14", 503 | "initc21", 504 | "initc7", 505 | "inleta", 506 | "inletf", 507 | "inletk", 508 | "inletkid", 509 | "inletv", 510 | "ino", 511 | "inq", 512 | "inrg", 513 | "ins", 514 | "insglobal", 515 | "insremot", 516 | "instimek", 517 | "instimes", 518 | "instr", 519 | "int", 520 | "integ", 521 | "interp", 522 | "invalue", 523 | "inx", 524 | "inz", 525 | "ioff", 526 | "ion", 527 | "iondur", 528 | "iondur2", 529 | "ioutat", 530 | "ioutc", 531 | "ioutc14", 532 | "ioutpat", 533 | "ioutpb", 534 | "ioutpc", 535 | "ipcauchy", 536 | "ipoisson", 537 | "ipow", 538 | "is16b14", 539 | "is32b14", 540 | "islider16", 541 | "islider32", 542 | "islider64", 543 | "islider8", 544 | "itablecopy", 545 | "itablegpw", 546 | "itablemix", 547 | "itablew", 548 | "itrirand", 549 | "iunirand", 550 | "iweibull", 551 | "jacktransport", 552 | "jitter", 553 | "jitter2", 554 | "jspline", 555 | "k", 556 | "kbetarand", 557 | "kbexprnd", 558 | "kcauchy", 559 | "kdump", 560 | "kdump2", 561 | "kdump3", 562 | "kdump4", 563 | "kexprand", 564 | "kfilter2", 565 | "kgauss", 566 | "kgoto", 567 | "klinrand", 568 | "kon", 569 | "koutat", 570 | "koutc", 571 | "koutc14", 572 | "koutpat", 573 | "koutpb", 574 | "koutpc", 575 | "kpcauchy", 576 | "kpoisson", 577 | "kpow", 578 | "kr", 579 | "kread", 580 | "kread2", 581 | "kread3", 582 | "kread4", 583 | "ksmps", 584 | "ktableseg", 585 | "ktrirand", 586 | "kunirand", 587 | "kweibull", 588 | "lenarray", 589 | "lentab", 590 | "lfo", 591 | "limit", 592 | "line", 593 | "linen", 594 | "linenr", 595 | "lineto", 596 | "linrand", 597 | "linseg", 598 | "linsegb", 599 | "linsegr", 600 | "locsend", 601 | "locsig", 602 | "log", 603 | "log10", 604 | "log2", 605 | "logbtwo", 606 | "logcurve", 607 | "loop_ge", 608 | "loop_gt", 609 | "loop_le", 610 | "loop_lt", 611 | "loopseg", 612 | "loopsegp", 613 | "looptseg", 614 | "loopxseg", 615 | "lorenz", 616 | "lorismorph", 617 | "lorisplay", 618 | "lorisread", 619 | "loscil", 620 | "loscil3", 621 | "loscilx", 622 | "lowpass2", 623 | "lowres", 624 | "lowresx", 625 | "lpf18", 626 | "lpform", 627 | "lpfreson", 628 | "lphasor", 629 | "lpinterp", 630 | "lposcil", 631 | "lposcil3", 632 | "lposcila", 633 | "lposcilsa", 634 | "lposcilsa2", 635 | "lpread", 636 | "lpreson", 637 | "lpshold", 638 | "lpsholdp", 639 | "lpslot", 640 | "lua_exec", 641 | "lua_opcall", 642 | "lua_opdef", 643 | "mac", 644 | "maca", 645 | "madsr", 646 | "mags", 647 | "mandel", 648 | "mandol", 649 | "maparray", 650 | "maparray_i", 651 | "marimba", 652 | "massign", 653 | "max", 654 | "max_k", 655 | "maxabs", 656 | "maxabsaccum", 657 | "maxaccum", 658 | "maxalloc", 659 | "maxarray", 660 | "maxtab", 661 | "mclock", 662 | "mdelay", 663 | "median", 664 | "mediank", 665 | "metro", 666 | "midglobal", 667 | "midic14", 668 | "midic21", 669 | "midic7", 670 | "midichannelaftertouch", 671 | "midichn", 672 | "midicontrolchange", 673 | "midictrl", 674 | "mididefault", 675 | "midifilestatus", 676 | "midiin", 677 | "midinoteoff", 678 | "midinoteoncps", 679 | "midinoteonkey", 680 | "midinoteonoct", 681 | "midinoteonpch", 682 | "midion", 683 | "midion2", 684 | "midiout", 685 | "midipgm", 686 | "midipitchbend", 687 | "midipolyaftertouch", 688 | "midiprogramchange", 689 | "miditempo", 690 | "midremot", 691 | "min", 692 | "minabs", 693 | "minabsaccum", 694 | "minaccum", 695 | "minarray", 696 | "mincer", 697 | "mintab", 698 | "mirror", 699 | "mode", 700 | "modmatrix", 701 | "monitor", 702 | "moog", 703 | "moogladder", 704 | "moogvcf", 705 | "moogvcf2", 706 | "moscil", 707 | "mp3bitrate", 708 | "mp3in", 709 | "mp3len", 710 | "mp3nchnls", 711 | "mp3sr", 712 | "mpulse", 713 | "mrtmsg", 714 | "multitap", 715 | "multtab", 716 | "mute", 717 | "mxadsr", 718 | "nchnls", 719 | "nchnls_i", 720 | "nestedap", 721 | "nlalp", 722 | "nlfilt", 723 | "nlfilt2", 724 | "noise", 725 | "noteoff", 726 | "noteon", 727 | "noteondur", 728 | "noteondur2", 729 | "notnum", 730 | "nreverb", 731 | "nrpn", 732 | "nsamp", 733 | "nstance", 734 | "nstrnum", 735 | "ntrpol", 736 | "octave", 737 | "octcps", 738 | "octmidi", 739 | "octmidib", 740 | "octmidinn", 741 | "octpch", 742 | "olabuffer", 743 | "opcode", 744 | "oscbnk", 745 | "oscil", 746 | "oscil1", 747 | "oscil1i", 748 | "oscil3", 749 | "oscili", 750 | "oscilikt", 751 | "osciliktp", 752 | "oscilikts", 753 | "osciln", 754 | "oscils", 755 | "oscilx", 756 | "out", 757 | "out32", 758 | "outc", 759 | "outch", 760 | "outh", 761 | "outiat", 762 | "outic", 763 | "outic14", 764 | "outipat", 765 | "outipb", 766 | "outipc", 767 | "outkat", 768 | "outkc", 769 | "outkc14", 770 | "outkpat", 771 | "outkpb", 772 | "outkpc", 773 | "outleta", 774 | "outletf", 775 | "outletk", 776 | "outletkid", 777 | "outletv", 778 | "outo", 779 | "outq", 780 | "outq1", 781 | "outq2", 782 | "outq3", 783 | "outq4", 784 | "outrg", 785 | "outs", 786 | "outs1", 787 | "outs2", 788 | "outvalue", 789 | "outx", 790 | "outz", 791 | "p", 792 | "p5gconnect", 793 | "p5gdata", 794 | "pan", 795 | "pan2", 796 | "pareq", 797 | "part2txt", 798 | "partials", 799 | "partikkel", 800 | "partikkelget", 801 | "partikkelset", 802 | "partikkelsync", 803 | "passign", 804 | "pcauchy", 805 | "pchbend", 806 | "pchmidi", 807 | "pchmidib", 808 | "pchmidinn", 809 | "pchoct", 810 | "pconvolve", 811 | "pcount", 812 | "pdclip", 813 | "pdhalf", 814 | "pdhalfy", 815 | "peak", 816 | "peakk", 817 | "pgmassign", 818 | "pgmchn", 819 | "phaser1", 820 | "phaser2", 821 | "phasor", 822 | "phasorbnk", 823 | "phs", 824 | "pindex", 825 | "pinker", 826 | "pinkish", 827 | "pitch", 828 | "pitchac", 829 | "pitchamdf", 830 | "planet", 831 | "platerev", 832 | "plltrack", 833 | "pluck", 834 | "plustab", 835 | "plyexect", 836 | "poisson", 837 | "pol2rect", 838 | "polyaft", 839 | "polynomial", 840 | "pop", 841 | "pop_f", 842 | "port", 843 | "portk", 844 | "poscil", 845 | "poscil3", 846 | "pow", 847 | "powershape", 848 | "powoftwo", 849 | "prealloc", 850 | "prepiano", 851 | "print", 852 | "print_type", 853 | "printf", 854 | "printf_i", 855 | "printk", 856 | "printk2", 857 | "printks", 858 | "printks2", 859 | "prints", 860 | "product", 861 | "pset", 862 | "ptable", 863 | "ptable3", 864 | "ptablei", 865 | "ptableiw", 866 | "ptablew", 867 | "ptrack", 868 | "push", 869 | "push_f", 870 | "puts", 871 | "pvadd", 872 | "pvbufread", 873 | "pvcross", 874 | "pvinterp", 875 | "pvoc", 876 | "pvread", 877 | "pvs2array", 878 | "pvs2tab", 879 | "pvsadsyn", 880 | "pvsanal", 881 | "pvsarp", 882 | "pvsbandp", 883 | "pvsbandr", 884 | "pvsbin", 885 | "pvsblur", 886 | "pvsbuffer", 887 | "pvsbufread", 888 | "pvsbufread2", 889 | "pvscale", 890 | "pvscent", 891 | "pvsceps", 892 | "pvscross", 893 | "pvsdemix", 894 | "pvsdiskin", 895 | "pvsdisp", 896 | "pvsenvftw", 897 | "pvsfilter", 898 | "pvsfread", 899 | "pvsfreeze", 900 | "pvsfromarray", 901 | "pvsftr", 902 | "pvsftw", 903 | "pvsfwrite", 904 | "pvsgain", 905 | "pvsgendy", 906 | "pvshift", 907 | "pvsifd", 908 | "pvsin", 909 | "pvsinfo", 910 | "pvsinit", 911 | "pvslock", 912 | "pvsmaska", 913 | "pvsmix", 914 | "pvsmooth", 915 | "pvsmorph", 916 | "pvsosc", 917 | "pvsout", 918 | "pvspitch", 919 | "pvstanal", 920 | "pvstencil", 921 | "pvsvoc", 922 | "pvswarp", 923 | "pvsynth", 924 | "pwd", 925 | "pyassign", 926 | "pyassigni", 927 | "pyassignt", 928 | "pycall", 929 | "pycall1", 930 | "pycall1i", 931 | "pycall1t", 932 | "pycall2", 933 | "pycall2i", 934 | "pycall2t", 935 | "pycall3", 936 | "pycall3i", 937 | "pycall3t", 938 | "pycall4", 939 | "pycall4i", 940 | "pycall4t", 941 | "pycall5", 942 | "pycall5i", 943 | "pycall5t", 944 | "pycall6", 945 | "pycall6i", 946 | "pycall6t", 947 | "pycall7", 948 | "pycall7i", 949 | "pycall7t", 950 | "pycall8", 951 | "pycall8i", 952 | "pycall8t", 953 | "pycalli", 954 | "pycalln", 955 | "pycallni", 956 | "pycallt", 957 | "pyeval", 958 | "pyevali", 959 | "pyevalt", 960 | "pyexec", 961 | "pyexeci", 962 | "pyexect", 963 | "pyinit", 964 | "pylassign", 965 | "pylassigni", 966 | "pylassignt", 967 | "pylcall", 968 | "pylcall1", 969 | "pylcall1i", 970 | "pylcall1t", 971 | "pylcall2", 972 | "pylcall2i", 973 | "pylcall2t", 974 | "pylcall3", 975 | "pylcall3i", 976 | "pylcall3t", 977 | "pylcall4", 978 | "pylcall4i", 979 | "pylcall4t", 980 | "pylcall5", 981 | "pylcall5i", 982 | "pylcall5t", 983 | "pylcall6", 984 | "pylcall6i", 985 | "pylcall6t", 986 | "pylcall7", 987 | "pylcall7i", 988 | "pylcall7t", 989 | "pylcall8", 990 | "pylcall8i", 991 | "pylcall8t", 992 | "pylcalli", 993 | "pylcalln", 994 | "pylcallni", 995 | "pylcallt", 996 | "pyleval", 997 | "pylevali", 998 | "pylevalt", 999 | "pylexec", 1000 | "pylexeci", 1001 | "pylexect", 1002 | "pylrun", 1003 | "pylruni", 1004 | "pylrunt", 1005 | "pyrun", 1006 | "pyruni", 1007 | "pyrunt", 1008 | "qinf", 1009 | "qnan", 1010 | "r2c", 1011 | "rand", 1012 | "randh", 1013 | "randi", 1014 | "random", 1015 | "randomh", 1016 | "randomi", 1017 | "rbjeq", 1018 | "readclock", 1019 | "readf", 1020 | "readfi", 1021 | "readk", 1022 | "readk2", 1023 | "readk3", 1024 | "readk4", 1025 | "readks", 1026 | "readscore", 1027 | "readscratch", 1028 | "rect2pol", 1029 | "reinit", 1030 | "release", 1031 | "remoteport", 1032 | "remove", 1033 | "repluck", 1034 | "reson", 1035 | "resonk", 1036 | "resonr", 1037 | "resonx", 1038 | "resonxk", 1039 | "resony", 1040 | "resonz", 1041 | "resyn", 1042 | "return", 1043 | "reverb", 1044 | "reverb2", 1045 | "reverbsc", 1046 | "rewindscore", 1047 | "rezzy", 1048 | "rfft", 1049 | "rifft", 1050 | "rigoto", 1051 | "rireturn", 1052 | "rms", 1053 | "rnd", 1054 | "rnd31", 1055 | "round", 1056 | "rspline", 1057 | "rtclock", 1058 | "s16b14", 1059 | "s32b14", 1060 | "samphold", 1061 | "sandpaper", 1062 | "scale", 1063 | "scalearray", 1064 | "scalet", 1065 | "scanhammer", 1066 | "scans", 1067 | "scantable", 1068 | "scanu", 1069 | "schedkwhen", 1070 | "schedkwhennamed", 1071 | "schedule", 1072 | "schedwhen", 1073 | "scoreline", 1074 | "scoreline_i", 1075 | "seed", 1076 | "sekere", 1077 | "semitone", 1078 | "sense", 1079 | "sensekey", 1080 | "seqtime", 1081 | "seqtime2", 1082 | "serialBegin", 1083 | "serialEnd", 1084 | "serialFlush", 1085 | "serialPrint", 1086 | "serialRead", 1087 | "serialWrite", 1088 | "serialWrite_i", 1089 | "setcol", 1090 | "setctrl", 1091 | "setksmps", 1092 | "setrow", 1093 | "setscorepos", 1094 | "sfilist", 1095 | "sfinstr", 1096 | "sfinstr3", 1097 | "sfinstr3m", 1098 | "sfinstrm", 1099 | "sfload", 1100 | "sflooper", 1101 | "sfpassign", 1102 | "sfplay", 1103 | "sfplay3", 1104 | "sfplay3m", 1105 | "sfplaym", 1106 | "sfplist", 1107 | "sfpreset", 1108 | "shaker", 1109 | "shiftin", 1110 | "shiftout", 1111 | "signalflowgraph", 1112 | "signum", 1113 | "sin", 1114 | "sinh", 1115 | "sininv", 1116 | "sinsyn", 1117 | "sleighbells", 1118 | "slicearray", 1119 | "slider16", 1120 | "slider16f", 1121 | "slider16table", 1122 | "slider16tablef", 1123 | "slider32", 1124 | "slider32f", 1125 | "slider32table", 1126 | "slider32tablef", 1127 | "slider64", 1128 | "slider64f", 1129 | "slider64table", 1130 | "slider64tablef", 1131 | "slider8", 1132 | "slider8f", 1133 | "slider8table", 1134 | "slider8tablef", 1135 | "sliderKawai", 1136 | "sndload", 1137 | "sndloop", 1138 | "sndwarp", 1139 | "sndwarpst", 1140 | "sockrecv", 1141 | "sockrecvs", 1142 | "socksend", 1143 | "socksends", 1144 | "soundin", 1145 | "soundout", 1146 | "soundouts", 1147 | "space", 1148 | "spat3d", 1149 | "spat3di", 1150 | "spat3dt", 1151 | "spdist", 1152 | "specaddm", 1153 | "specdiff", 1154 | "specdisp", 1155 | "specfilt", 1156 | "spechist", 1157 | "specptrk", 1158 | "specscal", 1159 | "specsum", 1160 | "spectrum", 1161 | "splitrig", 1162 | "sprintf", 1163 | "sprintfk", 1164 | "spsend", 1165 | "sqrt", 1166 | "sr", 1167 | "stack", 1168 | "statevar", 1169 | "stix", 1170 | "strcat", 1171 | "strcatk", 1172 | "strchar", 1173 | "strchark", 1174 | "strcmp", 1175 | "strcmpk", 1176 | "strcpy", 1177 | "strcpyk", 1178 | "strecv", 1179 | "streson", 1180 | "strfromurl", 1181 | "strget", 1182 | "strindex", 1183 | "strindexk", 1184 | "strlen", 1185 | "strlenk", 1186 | "strlower", 1187 | "strlowerk", 1188 | "strrindex", 1189 | "strrindexk", 1190 | "strset", 1191 | "strsub", 1192 | "strsubk", 1193 | "strtod", 1194 | "strtodk", 1195 | "strtol", 1196 | "strtolk", 1197 | "strupper", 1198 | "strupperk", 1199 | "stsend", 1200 | "subinstr", 1201 | "subinstrinit", 1202 | "sum", 1203 | "sumarray", 1204 | "sumtab", 1205 | "svfilter", 1206 | "syncgrain", 1207 | "syncloop", 1208 | "syncphasor", 1209 | "system", 1210 | "system_i", 1211 | "tab", 1212 | "tab2pvs", 1213 | "tab_i", 1214 | "tabgen", 1215 | "tabifd", 1216 | "table", 1217 | "table3", 1218 | "table3kt", 1219 | "tablecopy", 1220 | "tablefilter", 1221 | "tablefilteri", 1222 | "tablegpw", 1223 | "tablei", 1224 | "tableicopy", 1225 | "tableigpw", 1226 | "tableikt", 1227 | "tableimix", 1228 | "tableiw", 1229 | "tablekt", 1230 | "tablemix", 1231 | "tableng", 1232 | "tablera", 1233 | "tableseg", 1234 | "tableshuffle", 1235 | "tableshufflei", 1236 | "tablew", 1237 | "tablewa", 1238 | "tablewkt", 1239 | "tablexkt", 1240 | "tablexseg", 1241 | "tabmap", 1242 | "tabmap_i", 1243 | "tabmorph", 1244 | "tabmorpha", 1245 | "tabmorphak", 1246 | "tabmorphi", 1247 | "tabplay", 1248 | "tabrec", 1249 | "tabslice", 1250 | "tabsum", 1251 | "tabw", 1252 | "tabw_i", 1253 | "tambourine", 1254 | "tan", 1255 | "tanh", 1256 | "taninv", 1257 | "taninv2", 1258 | "tb", 1259 | "tb0", 1260 | "tb0_init", 1261 | "tb1", 1262 | "tb10", 1263 | "tb10_init", 1264 | "tb11", 1265 | "tb11_init", 1266 | "tb12", 1267 | "tb12_init", 1268 | "tb13", 1269 | "tb13_init", 1270 | "tb14", 1271 | "tb14_init", 1272 | "tb15", 1273 | "tb15_init", 1274 | "tb1_init", 1275 | "tb2", 1276 | "tb2_init", 1277 | "tb3", 1278 | "tb3_init", 1279 | "tb4", 1280 | "tb4_init", 1281 | "tb5", 1282 | "tb5_init", 1283 | "tb6", 1284 | "tb6_init", 1285 | "tb7", 1286 | "tb7_init", 1287 | "tb8", 1288 | "tb8_init", 1289 | "tb9", 1290 | "tb9_init", 1291 | "tbvcf", 1292 | "tempest", 1293 | "tempo", 1294 | "temposcal", 1295 | "tempoval", 1296 | "then", 1297 | "tigoto", 1298 | "timedseq", 1299 | "timeinstk", 1300 | "timeinsts", 1301 | "timek", 1302 | "times", 1303 | "timout", 1304 | "tival", 1305 | "tlineto", 1306 | "tone", 1307 | "tonek", 1308 | "tonex", 1309 | "tradsyn", 1310 | "trandom", 1311 | "transeg", 1312 | "transegb", 1313 | "transegr", 1314 | "trcross", 1315 | "trfilter", 1316 | "trhighest", 1317 | "trigger", 1318 | "trigseq", 1319 | "trirand", 1320 | "trlowest", 1321 | "trmix", 1322 | "trscale", 1323 | "trshift", 1324 | "trsplit", 1325 | "turnoff", 1326 | "turnoff2", 1327 | "turnon", 1328 | "unirand", 1329 | "until", 1330 | "unwrap", 1331 | "upsamp", 1332 | "urandom", 1333 | "urd", 1334 | "vactrol", 1335 | "vadd", 1336 | "vadd_i", 1337 | "vaddv", 1338 | "vaddv_i", 1339 | "vaget", 1340 | "valpass", 1341 | "vaset", 1342 | "vbap", 1343 | "vbap16", 1344 | "vbap16move", 1345 | "vbap4", 1346 | "vbap4move", 1347 | "vbap8", 1348 | "vbap8move", 1349 | "vbapg", 1350 | "vbapgmove", 1351 | "vbaplsinit", 1352 | "vbapmove", 1353 | "vbapz", 1354 | "vbapzmove", 1355 | "vcella", 1356 | "vco", 1357 | "vco2", 1358 | "vco2ft", 1359 | "vco2ift", 1360 | "vco2init", 1361 | "vcomb", 1362 | "vcopy", 1363 | "vcopy_i", 1364 | "vdel_k", 1365 | "vdelay", 1366 | "vdelay3", 1367 | "vdelayk", 1368 | "vdelayx", 1369 | "vdelayxq", 1370 | "vdelayxs", 1371 | "vdelayxw", 1372 | "vdelayxwq", 1373 | "vdelayxws", 1374 | "vdivv", 1375 | "vdivv_i", 1376 | "vecdelay", 1377 | "veloc", 1378 | "vexp", 1379 | "vexp_i", 1380 | "vexpseg", 1381 | "vexpv", 1382 | "vexpv_i", 1383 | "vibes", 1384 | "vibr", 1385 | "vibrato", 1386 | "vincr", 1387 | "vlimit", 1388 | "vlinseg", 1389 | "vlowres", 1390 | "vmap", 1391 | "vmirror", 1392 | "vmult", 1393 | "vmult_i", 1394 | "vmultv", 1395 | "vmultv_i", 1396 | "voice", 1397 | "vosim", 1398 | "vphaseseg", 1399 | "vport", 1400 | "vpow", 1401 | "vpow_i", 1402 | "vpowv", 1403 | "vpowv_i", 1404 | "vpvoc", 1405 | "vrandh", 1406 | "vrandi", 1407 | "vstaudio", 1408 | "vstaudiog", 1409 | "vstbankload", 1410 | "vstedit", 1411 | "vstinfo", 1412 | "vstinit", 1413 | "vstmidiout", 1414 | "vstnote", 1415 | "vstparamget", 1416 | "vstparamset", 1417 | "vstprogset", 1418 | "vsubv", 1419 | "vsubv_i", 1420 | "vtaba", 1421 | "vtabi", 1422 | "vtabk", 1423 | "vtable1k", 1424 | "vtablea", 1425 | "vtablei", 1426 | "vtablek", 1427 | "vtablewa", 1428 | "vtablewi", 1429 | "vtablewk", 1430 | "vtabwa", 1431 | "vtabwi", 1432 | "vtabwk", 1433 | "vwrap", 1434 | "waveset", 1435 | "weibull", 1436 | "wgbow", 1437 | "wgbowedbar", 1438 | "wgbrass", 1439 | "wgclar", 1440 | "wgflute", 1441 | "wgpluck", 1442 | "wgpluck2", 1443 | "wguide1", 1444 | "wguide2", 1445 | "wiiconnect", 1446 | "wiidata", 1447 | "wiirange", 1448 | "wiisend", 1449 | "window", 1450 | "wrap", 1451 | "writescratch", 1452 | "wterrain", 1453 | "xadsr", 1454 | "xin", 1455 | "xout", 1456 | "xscanmap", 1457 | "xscans", 1458 | "xscansmap", 1459 | "xscanu", 1460 | "xtratim", 1461 | "xyin", 1462 | "zacl", 1463 | "zakinit", 1464 | "zamod", 1465 | "zar", 1466 | "zarg", 1467 | "zaw", 1468 | "zawm", 1469 | "zfilter2", 1470 | "zir", 1471 | "ziw", 1472 | "ziwm", 1473 | "zkcl", 1474 | "zkmod", 1475 | "zkr", 1476 | "zkw", 1477 | "zkwm" 1478 | ] 1479 | } 1480 | -------------------------------------------------------------------------------- /Csound/Csound.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | csd 8 | 9 | name 10 | Csound 11 | patterns 12 | 13 | 14 | comment 15 | macro 16 | match 17 | ((#|\$)[A-Za-z0-9_]+\b|#) 18 | name 19 | entity.name.function.csd 20 | 21 | 22 | comment 23 | p-field 24 | match 25 | \bp[0-9_]+\b 26 | name 27 | constant.character.csd 28 | 29 | 30 | comment 31 | xml tags 32 | match 33 | (\<(/?[^\>]+)\>) 34 | name 35 | entity.name.tag.csd 36 | 37 | 38 | comment 39 | header opcodes 40 | match 41 | \b(sr|kr|ksmps|nchnls|0dbfs)\b 42 | name 43 | constant.language.csd 44 | 45 | 46 | comment 47 | single line comment 48 | match 49 | (;).*$\n? 50 | name 51 | comment.line.double-slash.csd 52 | 53 | 54 | begin 55 | /\* 56 | captures 57 | 58 | 0 59 | 60 | name 61 | punctuation.definition.comment.csd 62 | 63 | 64 | comment 65 | multi line comment 66 | end 67 | \*/ 68 | name 69 | comment.block.csd 70 | 71 | 72 | begin 73 | " 74 | comment 75 | string 76 | end 77 | " 78 | name 79 | string.quoted.double.csd 80 | 81 | 82 | comment 83 | instr & UDO 84 | match 85 | \b(instr|endin|opcode|endop)\b 86 | name 87 | entity.name.tag.csd 88 | 89 | 90 | comment 91 | opcodes 92 | match 93 | \b(ATSadd|ATSaddnz|ATSbufread|ATScross|ATSinfo|ATSinterpread|ATSpartialtap|ATSread|ATSreadnz|ATSsinnoi|FLbox|FLbutBank|FLbutton|FLcloseButton|FLcolor|FLcolor2|FLcount|FLexecButton|FLgetsnap|FLgroup|FLgroupEnd|FLgroup_end|FLhide|FLhvsBox|FLhvsBoxSetValue|FLjoy|FLkeyIn|FLknob|FLlabel|FLloadsnap|FLmouse|FLpack|FLpackEnd|FLpack_end|FLpanel|FLpanelEnd|FLpanel_end|FLprintk|FLprintk2|FLroller|FLrun|FLsavesnap|FLscroll|FLscrollEnd|FLscroll_end|FLsetAlign|FLsetBox|FLsetColor|FLsetColor2|FLsetFont|FLsetPosition|FLsetSize|FLsetSnapGroup|FLsetText|FLsetTextColor|FLsetTextSize|FLsetTextType|FLsetVal|FLsetVal_i|FLsetsnap|FLshow|FLslidBnk|FLslidBnk2|FLslidBnk2Set|FLslidBnk2Setk|FLslidBnkGetHandle|FLslidBnkSet|FLslidBnkSetk|FLslider|FLtabs|FLtabsEnd|FLtabs_end|FLtext|FLupdate|FLvalue|FLvkeybd|FLvslidBnk|FLvslidBnk2|FLxyin|JackoAudioIn|JackoAudioInConnect|JackoAudioOut|JackoAudioOutConnect|JackoFreewheel|JackoInfo|JackoInit|JackoMidiInConnect|JackoMidiOut|JackoMidiOutConnect|JackoNoteOut|JackoOn|JackoTransport|MixerClear|MixerGetLevel|MixerReceive|MixerSend|MixerSetLevel|MixerSetLevel_i|OSCinit|OSClisten|OSCsend|STKBandedWG|STKBeeThree|STKBlowBotl|STKBlowHole|STKBowed|STKBrass|STKClarinet|STKDrummer|STKFMVoices|STKFlute|STKHevyMetl|STKMandolin|STKModalBar|STKMoog|STKPercFlut|STKPlucked|STKResonate|STKRhodey|STKSaxofony|STKShakers|STKSimple|STKSitar|STKStifKarp|STKTubeBell|STKVoicForm|STKWhistle|STKWurley|a|abetarand|abexprnd|abs|acauchy|active|adsr|adsyn|adsynt|adsynt2|aexprand|aftouch|agauss|agogobel|alinrand|alpass|alwayson|ampdb|ampdbfs|ampmidi|ampmidid|apcauchy|apoisson|apow|areson|aresonk|array|atone|atonek|atonex|atrirand|aunirand|aweibull|babo|balance|bamboo|barmodel|bbcutm|bbcuts|betarand|bexprnd|bformdec|bformdec1|bformenc|bformenc1|binit|biquad|biquada|birnd|bqrez|buchla|butbp|butbr|buthp|butlp|butterbp|butterbr|butterhp|butterlp|button|buzz|c2r|cabasa|cauchy|cauchyi|ceil|cell|cent|centroid|ceps|cggoto|chanctrl|changed|chani|chano|chebyshevpoly|checkbox|chn_S|chn_a|chn_k|chnclear|chnexport|chnget|chnmix|chnparams|chnrecv|chnsend|chnset|chuap|cigoto|cingoto|ckgoto|clear|clfilt|clip|clock|clockoff|clockon|cmplxprod|cngoto|comb|combinv|compilecsd|compileorc|compilestr|compress|connect|control|convle|convolve|copy2ftab|copy2ttab|copya2ftab|copyf2array|cos|cosh|cosinv|cosseg|cossegb|cossegr|cps2pch|cpsmidi|cpsmidib|cpsmidinn|cpsoct|cpspch|cpstmid|cpstun|cpstuni|cpsxpch|cpumeter|cpuprc|cross2|crossfm|crossfmi|crossfmpm|crossfmpmi|crosspm|crosspmi|crunch|ctlchn|ctrl14|ctrl21|ctrl7|ctrlinit|cuserrnd|dam|date|dates|db|dbamp|dbfsamp|dcblock|dcblock2|dconv|delay|delay1|delayk|delayr|delayw|deltap|deltap3|deltapi|deltapn|deltapx|deltapxw|denorm|diff|diskgrain|diskin|diskin2|dispfft|display|distort|distort1|divz|doppler|downsamp|dripwater|dssiactivate|dssiaudio|dssictls|dssiinit|dssilist|dumpk|dumpk2|dumpk3|dumpk4|duserrnd|dust|dust2|else|elseif|endif|envlpx|envlpxr|ephasor|eqfil|evalstr|event|event_i|exciter|exitnow|exp|expcurve|expon|exprand|exprandi|expseg|expsega|expsegb|expsegba|expsegr|fareylen|fareyleni|faustaudio|faustcompile|faustctl|faustgen|fft|fftinv|ficlose|filebit|filelen|filenchnls|filepeak|filesr|filevalid|fillarray|filter2|fin|fini|fink|fiopen|flanger|flashtxt|flooper|flooper2|floor|fluidAllOut|fluidCCi|fluidCCk|fluidControl|fluidEngine|fluidLoad|fluidNote|fluidOut|fluidProgramSelect|fluidSetInterpMethod|fmb3|fmbell|fmmetal|fmpercfl|fmrhode|fmvoice|fmwurlie|fof|fof2|fofilter|fog|fold|follow|follow2|foscil|foscili|fout|fouti|foutir|foutk|fprintks|fprints|frac|fractalnoise|framebuffer|freeverb|ftchnls|ftconv|ftcps|ftfree|ftgen|ftgenonce|ftgentmp|ftlen|ftload|ftloadk|ftlptim|ftmorf|ftresize|ftresizei|ftsave|ftsavek|ftsr|gain|gainslider|gauss|gaussi|gausstrig|gbuzz|genarray|genarray_i|gendy|gendyc|gendyx|getcfg|getcol|getrow|getseed|gogobel|goto|grain|grain2|grain3|granule|guiro|harmon|harmon2|harmon3|harmon4|hdf5read|hdf5write|hilbert|hrtfearly|hrtfer|hrtfmove|hrtfmove2|hrtfreverb|hrtfstat|hsboscil|hvs1|hvs2|hvs3|i|ibetarand|ibexprnd|icauchy|iceps|ictrl14|ictrl21|ictrl7|iexprand|if|igauss|igoto|ihold|ilinrand|imagecreate|imagefree|imagegetpixel|imageload|imagesave|imagesetpixel|imagesize|imidic14|imidic21|imidic7|in|in32|inch|inh|init|initc14|initc21|initc7|inleta|inletf|inletk|inletkid|inletv|ino|inq|inrg|ins|insglobal|insremot|instimek|instimes|int|integ|interp|invalue|inx|inz|ioff|ion|iondur|iondur2|ioutat|ioutc|ioutc14|ioutpat|ioutpb|ioutpc|ipcauchy|ipoisson|ipow|is16b14|is32b14|islider16|islider32|islider64|islider8|itablecopy|itablegpw|itablemix|itablew|itrirand|iunirand|iweibull|jacktransport|jitter|jitter2|jspline|k|kbetarand|kbexprnd|kcauchy|kdump|kdump2|kdump3|kdump4|kexprand|kfilter2|kgauss|kgoto|klinrand|kon|koutat|koutc|koutc14|koutpat|koutpb|koutpc|kpcauchy|kpoisson|kpow|kr|kread|kread2|kread3|kread4|ksmps|ktableseg|ktrirand|kunirand|kweibull|lenarray|lentab|lfo|limit|line|linen|linenr|lineto|linrand|linseg|linsegb|linsegr|locsend|locsig|log|log10|log2|logbtwo|logcurve|loop_ge|loop_gt|loop_le|loop_lt|loopseg|loopsegp|looptseg|loopxseg|lorenz|lorismorph|lorisplay|lorisread|loscil|loscil3|loscilx|lowpass2|lowres|lowresx|lpf18|lpform|lpfreson|lphasor|lpinterp|lposcil|lposcil3|lposcila|lposcilsa|lposcilsa2|lpread|lpreson|lpshold|lpsholdp|lpslot|lua_exec|lua_opcall|lua_opdef|mac|maca|madsr|mags|mandel|mandol|maparray|maparray_i|marimba|massign|max|max_k|maxabs|maxabsaccum|maxaccum|maxalloc|maxarray|maxtab|mclock|mdelay|median|mediank|metro|midglobal|midic14|midic21|midic7|midichannelaftertouch|midichn|midicontrolchange|midictrl|mididefault|midifilestatus|midiin|midinoteoff|midinoteoncps|midinoteonkey|midinoteonoct|midinoteonpch|midion|midion2|midiout|midipgm|midipitchbend|midipolyaftertouch|midiprogramchange|miditempo|midremot|min|minabs|minabsaccum|minaccum|minarray|mincer|mintab|mirror|mode|modmatrix|monitor|moog|moogladder|moogvcf|moogvcf2|moscil|mp3bitrate|mp3in|mp3len|mp3nchnls|mp3sr|mpulse|mrtmsg|multitap|multtab|mute|mxadsr|nchnls|nchnls_i|nestedap|nlalp|nlfilt|nlfilt2|noise|noteoff|noteon|noteondur|noteondur2|notnum|nreverb|nrpn|nsamp|nstance|nstrnum|ntrpol|octave|octcps|octmidi|octmidib|octmidinn|octpch|olabuffer|oscbnk|oscil|oscil1|oscil1i|oscil3|oscili|oscilikt|osciliktp|oscilikts|osciln|oscils|oscilx|out|out32|outc|outch|outh|outiat|outic|outic14|outipat|outipb|outipc|outkat|outkc|outkc14|outkpat|outkpb|outkpc|outleta|outletf|outletk|outletkid|outletv|outo|outq|outq1|outq2|outq3|outq4|outrg|outs|outs1|outs2|outvalue|outx|outz|p|p5gconnect|p5gdata|pan|pan2|pareq|part2txt|partials|partikkel|partikkelget|partikkelset|partikkelsync|passign|pcauchy|pchbend|pchmidi|pchmidib|pchmidinn|pchoct|pconvolve|pcount|pdclip|pdhalf|pdhalfy|peak|peakk|pgmassign|pgmchn|phaser1|phaser2|phasor|phasorbnk|phs|pindex|pinker|pinkish|pitch|pitchac|pitchamdf|planet|platerev|plltrack|pluck|plustab|plyexect|poisson|pol2rect|polyaft|polynomial|pop|pop_f|port|portk|poscil|poscil3|pow|powershape|powoftwo|prealloc|prepiano|print|print_type|printf|printf_i|printk|printk2|printks|printks2|prints|product|pset|ptable|ptable3|ptablei|ptableiw|ptablew|ptrack|push|push_f|puts|pvadd|pvbufread|pvcross|pvinterp|pvoc|pvread|pvs2array|pvs2tab|pvsadsyn|pvsanal|pvsarp|pvsbandp|pvsbandr|pvsbin|pvsblur|pvsbuffer|pvsbufread|pvsbufread2|pvscale|pvscent|pvsceps|pvscross|pvsdemix|pvsdiskin|pvsdisp|pvsenvftw|pvsfilter|pvsfread|pvsfreeze|pvsfromarray|pvsftr|pvsftw|pvsfwrite|pvsgain|pvsgendy|pvshift|pvsifd|pvsin|pvsinfo|pvsinit|pvslock|pvsmaska|pvsmix|pvsmooth|pvsmorph|pvsosc|pvsout|pvspitch|pvstanal|pvstencil|pvsvoc|pvswarp|pvsynth|pwd|pyassign|pyassigni|pyassignt|pycall|pycall1|pycall1i|pycall1t|pycall2|pycall2i|pycall2t|pycall3|pycall3i|pycall3t|pycall4|pycall4i|pycall4t|pycall5|pycall5i|pycall5t|pycall6|pycall6i|pycall6t|pycall7|pycall7i|pycall7t|pycall8|pycall8i|pycall8t|pycalli|pycalln|pycallni|pycallt|pyeval|pyevali|pyevalt|pyexec|pyexeci|pyexect|pyinit|pylassign|pylassigni|pylassignt|pylcall|pylcall1|pylcall1i|pylcall1t|pylcall2|pylcall2i|pylcall2t|pylcall3|pylcall3i|pylcall3t|pylcall4|pylcall4i|pylcall4t|pylcall5|pylcall5i|pylcall5t|pylcall6|pylcall6i|pylcall6t|pylcall7|pylcall7i|pylcall7t|pylcall8|pylcall8i|pylcall8t|pylcalli|pylcalln|pylcallni|pylcallt|pyleval|pylevali|pylevalt|pylexec|pylexeci|pylexect|pylrun|pylruni|pylrunt|pyrun|pyruni|pyrunt|qinf|qnan|r2c|rand|randh|randi|random|randomh|randomi|rbjeq|readclock|readf|readfi|readk|readk2|readk3|readk4|readks|readscore|readscratch|rect2pol|reinit|release|remoteport|remove|repluck|reson|resonk|resonr|resonx|resonxk|resony|resonz|resyn|return|reverb|reverb2|reverbsc|rewindscore|rezzy|rfft|rifft|rigoto|rireturn|rms|rnd|rnd31|round|rspline|rtclock|s16b14|s32b14|samphold|sandpaper|scale|scalearray|scalet|scanhammer|scans|scantable|scanu|schedkwhen|schedkwhennamed|schedule|schedwhen|scoreline|scoreline_i|seed|sekere|semitone|sense|sensekey|seqtime|seqtime2|serialBegin|serialEnd|serialFlush|serialPrint|serialRead|serialWrite|serialWrite_i|setcol|setctrl|setksmps|setrow|setscorepos|sfilist|sfinstr|sfinstr3|sfinstr3m|sfinstrm|sfload|sflooper|sfpassign|sfplay|sfplay3|sfplay3m|sfplaym|sfplist|sfpreset|shaker|shiftin|shiftout|signalflowgraph|signum|sin|sinh|sininv|sinsyn|sleighbells|slicearray|slider16|slider16f|slider16table|slider16tablef|slider32|slider32f|slider32table|slider32tablef|slider64|slider64f|slider64table|slider64tablef|slider8|slider8f|slider8table|slider8tablef|sliderKawai|sndload|sndloop|sndwarp|sndwarpst|sockrecv|sockrecvs|socksend|socksends|soundin|soundout|soundouts|space|spat3d|spat3di|spat3dt|spdist|specaddm|specdiff|specdisp|specfilt|spechist|specptrk|specscal|specsum|spectrum|splitrig|sprintf|sprintfk|spsend|sqrt|sr|stack|statevar|stix|strcat|strcatk|strchar|strchark|strcmp|strcmpk|strcpy|strcpyk|strecv|streson|strfromurl|strget|strindex|strindexk|strlen|strlenk|strlower|strlowerk|strrindex|strrindexk|strset|strsub|strsubk|strtod|strtodk|strtol|strtolk|strupper|strupperk|stsend|subinstr|subinstrinit|sum|sumarray|sumtab|svfilter|syncgrain|syncloop|syncphasor|system|system_i|tab|tab2pvs|tab_i|tabgen|tabifd|table|table3|table3kt|tablecopy|tablefilter|tablefilteri|tablegpw|tablei|tableicopy|tableigpw|tableikt|tableimix|tableiw|tablekt|tablemix|tableng|tablera|tableseg|tableshuffle|tableshufflei|tablew|tablewa|tablewkt|tablexkt|tablexseg|tabmap|tabmap_i|tabmorph|tabmorpha|tabmorphak|tabmorphi|tabplay|tabrec|tabslice|tabsum|tabw|tabw_i|tambourine|tan|tanh|taninv|taninv2|tb|tb0|tb0_init|tb1|tb10|tb10_init|tb11|tb11_init|tb12|tb12_init|tb13|tb13_init|tb14|tb14_init|tb15|tb15_init|tb1_init|tb2|tb2_init|tb3|tb3_init|tb4|tb4_init|tb5|tb5_init|tb6|tb6_init|tb7|tb7_init|tb8|tb8_init|tb9|tb9_init|tbvcf|tempest|tempo|temposcal|tempoval|then|tigoto|timedseq|timeinstk|timeinsts|timek|times|timout|tival|tlineto|tone|tonek|tonex|tradsyn|trandom|transeg|transegb|transegr|trcross|trfilter|trhighest|trigger|trigseq|trirand|trlowest|trmix|trscale|trshift|trsplit|turnoff|turnoff2|turnon|unirand|until|unwrap|upsamp|urandom|urd|vactrol|vadd|vadd_i|vaddv|vaddv_i|vaget|valpass|vaset|vbap|vbap16|vbap16move|vbap4|vbap4move|vbap8|vbap8move|vbapg|vbapgmove|vbaplsinit|vbapmove|vbapz|vbapzmove|vcella|vco|vco2|vco2ft|vco2ift|vco2init|vcomb|vcopy|vcopy_i|vdel_k|vdelay|vdelay3|vdelayk|vdelayx|vdelayxq|vdelayxs|vdelayxw|vdelayxwq|vdelayxws|vdivv|vdivv_i|vecdelay|veloc|vexp|vexp_i|vexpseg|vexpv|vexpv_i|vibes|vibr|vibrato|vincr|vlimit|vlinseg|vlowres|vmap|vmirror|vmult|vmult_i|vmultv|vmultv_i|voice|vosim|vphaseseg|vport|vpow|vpow_i|vpowv|vpowv_i|vpvoc|vrandh|vrandi|vstaudio|vstaudiog|vstbankload|vstedit|vstinfo|vstinit|vstmidiout|vstnote|vstparamget|vstparamset|vstprogset|vsubv|vsubv_i|vtaba|vtabi|vtabk|vtable1k|vtablea|vtablei|vtablek|vtablewa|vtablewi|vtablewk|vtabwa|vtabwi|vtabwk|vwrap|waveset|weibull|wgbow|wgbowedbar|wgbrass|wgclar|wgflute|wgpluck|wgpluck2|wguide1|wguide2|wiiconnect|wiidata|wiirange|wiisend|window|wrap|writescratch|wterrain|xadsr|xin|xout|xscanmap|xscans|xscansmap|xscanu|xtratim|xyin|zacl|zakinit|zamod|zar|zarg|zaw|zawm|zfilter2|zir|ziw|ziwm|zkcl|zkmod|zkr|zkw|zkwm)\b 94 | name 95 | support.function.csd 96 | 97 | 98 | comment 99 | variable names 100 | match 101 | \b(a|k|i|g|S|f)[A-Za-z0-9_]+\b 102 | name 103 | variable.parameter.csd 104 | 105 | 106 | comment 107 | operators 108 | match 109 | (\+|\-|\*|\/|\%|\=) 110 | name 111 | entity.name.tag.csd 112 | 113 | 114 | scopeName 115 | source.csd 116 | uuid 117 | d8778262-63b0-4a49-a7ff-afc2280eb708 118 | 119 | 120 | -------------------------------------------------------------------------------- /Csound/ReadMe.txt: -------------------------------------------------------------------------------- 1 | v0.03 (Jan 07, 2013) 2 | Takahiko Tsuchiya 3 | 4 | This is a quick-made package for .csd in Sublime Text 2, with syntax highlighting, auto completion, opcode hint, and build system. It's only tested on Mac OSX. I'll prepare a public version on GitHub some time later, but feel free to modify these and repost. 5 | 6 | To use, copy the folder /Csound into ST2's /Packages folder (on Mac, menu item Sublime Text 2 -> Preferences -> Browse Packages), and move the contents of another folder into /Packages/User folder. 7 | 8 | 9 | // plugins 10 | popup_hint.py: 11 | Shows the hint for the opcode at current cursor position in dialog window. Run it from context menu or set a shortcut key with "popup_hint" command. 12 | 13 | statusbar_hint.py: 14 | Shows the hint in the status bar. Copy the .sublime-mousemap file to User folder, so the hint is shown automatically at mouse click. 15 | 16 | search_in_manual.py: 17 | Shows the opcode entry in online manual in browser. Open in brwoser is kind of buggy in ST2 in general. 18 | 19 | open_in_csound_qt.py: 20 | Opens the current .csd file in CsoundQT (v0.7 Mac) 21 | 22 | 23 | // build system (Mac) 24 | Be careful not to run it twice. If the csd is set to run infinitely, it might not be able to stop. 25 | -------------------------------------------------------------------------------- /Csound/open_in_csound_qt.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sublime, sublime_plugin 3 | 4 | class OpenInCsoundQtCommand(sublime_plugin.TextCommand): 5 | 6 | def run(self, edit): 7 | 8 | view = sublime.Window.active_view(sublime.active_window()) 9 | file = view.file_name() 10 | os.system("/Applications/CsoundQt-d-py-0.7.0.app/Contents/MacOS/CsoundQt-d-py " + file) 11 | 12 | def is_visible(self): 13 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" 14 | 15 | def is_enabled(self): 16 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" -------------------------------------------------------------------------------- /Csound/popup_hint.py: -------------------------------------------------------------------------------- 1 | import sublime, sublime_plugin 2 | import xml.etree.ElementTree as et 3 | 4 | tree = et.parse('opcodes.xml') 5 | root = tree.getroot() 6 | 7 | def search(term): 8 | for catIndx, catEt in enumerate(root): 9 | for opcIndx, opcEt in enumerate(root[catIndx]): 10 | if len(opcEt) > 1: 11 | if opcEt[1][0].text == term: 12 | return catIndx, opcIndx 13 | 14 | def showHint(cat, opc): 15 | front = root[cat][opc][1].text 16 | if front == None: 17 | front = "" 18 | opcode = root[cat][opc][1][0].text 19 | tail = root[cat][opc][1][0].tail 20 | if tail == None: 21 | tail = "" 22 | desc = root[cat][opc][0].text 23 | opcodeName = "{0:^50}".format(opcode) 24 | return "%s\n\n%s<%s>%s\n\n%s" % (opcodeName, front, opcode, tail, desc) 25 | 26 | class PopupHintCommand(sublime_plugin.TextCommand): 27 | def run(self, edit): 28 | word = self.view.substr(self.view.word((self.view.sel()[0].b))) 29 | cat = search(word)[0] 30 | opc = search(word)[1] 31 | sublime.message_dialog(showHint(cat, opc)) 32 | 33 | def is_visible(self): 34 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" 35 | 36 | def is_enabled(self): 37 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" 38 | -------------------------------------------------------------------------------- /Csound/search_in_manual.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | import sublime, sublime_plugin 3 | 4 | class SearchInManualCommand(sublime_plugin.TextCommand): 5 | 6 | def run(self, edit): 7 | word = self.view.substr(self.view.word((self.view.sel()[0].b))) 8 | webbrowser.open_new_tab("http://www.csounds.com/manual/html/%s" % word) 9 | 10 | def is_visible(self): 11 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" 12 | 13 | def is_enabled(self): 14 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" 15 | -------------------------------------------------------------------------------- /Csound/statusbar_hint.py: -------------------------------------------------------------------------------- 1 | import sublime, sublime_plugin 2 | import xml.etree.ElementTree as et 3 | 4 | tree = et.parse('opcodes.xml') 5 | root = tree.getroot() 6 | 7 | def search(term): 8 | for catIndx, catEt in enumerate(root): 9 | for opcIndx, opcEt in enumerate(root[catIndx]): 10 | if len(opcEt) > 1: 11 | if opcEt[1][0].text == term: 12 | return catIndx, opcIndx 13 | 14 | def showHint(cat, opc): 15 | front = root[cat][opc][1].text 16 | if front == None: 17 | front = "" 18 | opcode = root[cat][opc][1][0].text 19 | tail = root[cat][opc][1][0].tail 20 | if tail == None: 21 | tail = "" 22 | desc = root[cat][opc][0].text 23 | return "%s<%s>%s [%s]" % (front, opcode, tail, desc) 24 | 25 | class StatusbarHintCommand(sublime_plugin.TextCommand): 26 | def run(self, edit): 27 | word = self.view.substr(self.view.word((self.view.sel()[0].b))) 28 | cat = search(word)[0] 29 | opc = search(word)[1] 30 | display = "{0:^200}".format(showHint(cat, opc)) 31 | sublime.status_message(display) 32 | 33 | def is_visible(self): 34 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" 35 | 36 | def is_enabled(self): 37 | return self.view.file_name() and self.view.file_name()[-4:] == ".csd" 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Main.sublime-menu: -------------------------------------------------------------------------------- 1 | [{ 2 | "caption": "Preferences", 3 | "mnemonic": "n", 4 | "id": "preferences", 5 | "children": [ { 6 | "caption": "Package Settings", 7 | "mnemonic": "P", 8 | "id": "package-settings", 9 | "children": [ { 10 | "caption": "Intellitip", 11 | "children":[ 12 | { 13 | "command": "open_file", 14 | "args": {"file": "${packages}/Intellitip/intellitip.sublime-settings"}, 15 | "caption": "Settings – Default" 16 | }, 17 | { 18 | "command": "open_file", 19 | "args": {"file": "${packages}/User/intellitip.sublime-settings"}, 20 | "caption": "Settings – User" 21 | }, 22 | ] 23 | } ] 24 | } ] 25 | }] 26 | -------------------------------------------------------------------------------- /README 2.md: -------------------------------------------------------------------------------- 1 | # Intellitip 2 | 3 | Lovingly forked from [Sublime-Intellidocs](https://github.com/shortcutme/Sublime-IntelliDocs). 4 | 5 | **IMPORTANT: ONLY COMPATIBLE WITH SUBLIME TEXT 3 DEV 3070!** 6 | 7 | Supported languages: 8 | 9 | - PHP 10 | - JavaScript 11 | - Python 12 | 13 | ## Usage 14 | 15 | Move your cursor over a function name and you'll see a tooltip. 16 | 17 | ![Screenshot](/screenshot.png) 18 | 19 | # License 20 | 21 | [MIT](/LICENSE) 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Csound syntax highlighter, build system and opcode popup support for Sublime Text 3/ 2 | 3 | ![Screenshot](/screenshot.png) 4 | 5 | This is an amalgamation and modification of two Sublime projects. The first is a Csound syntax highlighter and build system posted to the Csound list by Takahiko Tsuchiya. The second project is IntelliDocs: 6 | https://github.com/shortcutme/Sublime-IntelliDocs) 7 | and later a forked version of that repo at: 8 | https://github.com/jbrooksuk/Intellitip 9 | 10 | ## Installation ## 11 | 12 | Download the zip and unpack it to the Sublime packages folder: 13 | - Windows: %APPDATA%\Sublime Text 3\Packages 14 | - OSX: ~/Library/Application Support/Sublime Text 3/Pacakges 15 | - Linux: ~/.Sublime Text 3/Packages 16 | 17 | ## Usage ## 18 | 19 | - Select the Csound build system if it is not auto-selected. Press Ctrl(cmd)+b to run Csound, and press Ctrl+alt+c to stop Csound. 20 | 21 | 22 | ## Thanks to ## 23 | Takahiko Tsuchiya for creating the Csound syntax highlighter, and https://github.com/shortcutme for creating the wonderful IntelliDocs system for Sublime Editor. 24 | -------------------------------------------------------------------------------- /createCsoundDb.py: -------------------------------------------------------------------------------- 1 | inputFile = open("opcodes.txt") 2 | outputFile = open("db/csound.json", 'w') 3 | outputFile.write("{\n") 4 | 5 | for line in inputFile: 6 | tokens = line.split(";") 7 | #entry name 8 | entry = "\t"+tokens[0] + ": {\n" 9 | #descr 10 | entry = entry+"\t\t\"descr\": \""+tokens[2][1:-1].translate(None, "\"")+"\",\n" 11 | #name 12 | entry = entry+"\t\t\"name\": "+tokens[0]+",\n" 13 | #params 14 | entry = entry+"\t\t\"params\": [],\n" 15 | #path 16 | entry = entry+"\t\t\"path\": \"csound/"+tokens[0][1:-1]+".html\",\n" 17 | #syntax 18 | entry = entry+"\t\t\"syntax\": \""+tokens[3][1:-1].translate(None, "\"")+"\",\n" 19 | #type 20 | entry = entry+"\t\t\"type\": "+tokens[1]+"\n" 21 | entry = entry+"\t},\n" 22 | outputFile.write(entry) 23 | 24 | 25 | outputFile.write("}") 26 | outputFile.close() 27 | #now sort out trailing , 28 | inputFile = open("db/csound.json") 29 | dbFile = inputFile.readlines() 30 | numberOfLines = len(dbFile) 31 | 32 | dbFile[numberOfLines-2] = "\t}\n" 33 | 34 | outputFile = open("db/csound.json", 'w') 35 | 36 | for lines in dbFile: 37 | outputFile.write("%s" % lines) 38 | 39 | outputFile.close() 40 | inputFile.close() 41 | 42 | -------------------------------------------------------------------------------- /css/dark.css: -------------------------------------------------------------------------------- 1 | html { 2 | background-color: #232628; 3 | color: #CCCCCC; 4 | } 5 | 6 | body { 7 | font-size: 12px; 8 | } 9 | 10 | a { 11 | color: #6699cc; 12 | } 13 | 14 | b { 15 | color: #cc99cc; 16 | } 17 | 18 | h1 { 19 | color: #99cc99; 20 | font-size: 14px; 21 | } 22 | -------------------------------------------------------------------------------- /css/default.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 12px; 3 | } 4 | 5 | h1 { 6 | font-size: 14px; 7 | } 8 | -------------------------------------------------------------------------------- /css/light.css: -------------------------------------------------------------------------------- 1 | html { 2 | background-color: #FAFDFF; 3 | color: #4d4d4c; 4 | } 5 | 6 | body { 7 | font-size: 12px; 8 | } 9 | 10 | a { 11 | color: #3e999f; 12 | } 13 | 14 | b { 15 | color: #8959a8; 16 | } 17 | 18 | h1 { 19 | color: #718c00; 20 | font-size: 14px; 21 | } 22 | -------------------------------------------------------------------------------- /db/updatedb.py: -------------------------------------------------------------------------------- 1 | import os, re, json 2 | 3 | # Update DB from local devdocs.io dump: https://github.com/Thibaut/devdocs 4 | # (Tested on Python 2.7 win7) 5 | 6 | path_devdocs = "/Users/james.brooks/Downloads/devdocs-master" 7 | path_db = "." 8 | docs = { 9 | "php": "PHP", 10 | # "python": "Python", 11 | "javascript": "Javascript", 12 | "dom": "Javascript", 13 | "jquery": "Javascript" 14 | } 15 | 16 | patterns = { 17 | "PHP": { 18 | # "skip" : '.*::', 19 | "syntax": ".*?methodsynopsis.*?>(.*?)", 20 | "descr" : ".*rdfs-comment.*?>(.*?)

", 21 | "params": "
(.*?)
(.*?)
" 22 | }, 23 | "Python": { 24 | "doc" : '.*(.*?)', 25 | "alias" : '^(str|dict|int|float|list|bytes|bytearray|array.array|array|re.match)\.', 26 | "syntax": "(.*?)", 27 | "descr" : ".*?

(.*?)

", 28 | }, 29 | "Javascript": { 30 | "alias" : '^(Array|String|Date|Function|Object|RegExp|Number|window)\.', 31 | "syntax": ".*?(?:[sS]yntax|section).*?<(?:code|pre|span).*?>(.*?\).*?)", 32 | "descr" : ".*?h1.*?

(.*?)

", 33 | "params": "(?:
(.*?)
(.*?)
|
  • .{5,30}(.*?)(.*?)
  • )" 34 | } 35 | } 36 | 37 | def stripTags(s): 38 | s = re.sub("<[a-zA-Z/]+.*?>", "", s) 39 | s = s.replace("&", "&") 40 | s = s.replace(">", ">") 41 | s = s.replace("<", "<") 42 | s = s.replace("\n", "") 43 | s = s.strip() 44 | return s 45 | 46 | class Parser: 47 | def __init__(self, directory, name): 48 | self.name = name 49 | self.directory = directory 50 | self.patterns = patterns[name] 51 | path = path_devdocs+"/public/docs/"+directory+"/" 52 | self.updateDoc(path) 53 | 54 | 55 | def getPattern(self, pattern_name): 56 | self.patterns[pattern_name].format(name = entry["name"]) 57 | 58 | 59 | def getDescr(self, doc): 60 | match_descr = re.match(self.patterns["descr"], doc, re.DOTALL) 61 | if match_descr: 62 | descr = match_descr.group(1) 63 | else: 64 | descr = "" 65 | return stripTags(descr) 66 | 67 | 68 | def getParams(self, doc): 69 | params = [] 70 | if "params" not in self.patterns: return params 71 | for match in re.findall(self.patterns["params"], doc, re.DOTALL): 72 | name, descr = [group for group in match if group] 73 | descr = re.sub("^(.{30,200}?)(\. |$).*", "\\1\\2", stripTags(descr)) 74 | params.append({"name": stripTags(name), "descr": descr}) 75 | return params 76 | 77 | 78 | def updateDoc(self, path): 79 | index = json.load(open(path+"/index.json")) 80 | db = json.load(open(path_db+"/"+self.name+".json")) 81 | no_match = [] 82 | for entry in index["entries"]: 83 | # Open doc file 84 | entry["name"] = entry["name"].replace(" (class)", "").strip("().") 85 | if "skip" in self.patterns and re.match(self.patterns["skip"], entry["name"]): 86 | print("S", end="") 87 | continue 88 | 89 | path_doc = path+re.sub("#.*$", "", entry["path"])+".html" 90 | try: 91 | doc = open(path_doc).read() 92 | except Exception, err: 93 | print(err) 94 | 95 | #if entry["name"] != "removeClass": continue # DEBUG 96 | 97 | if "doc" in self.patterns: # Prefilter doc 98 | match = re.match(self.patterns["doc"] % entry, doc, re.DOTALL) 99 | if match: 100 | doc = match.group(1) 101 | else: 102 | doc = "" 103 | 104 | # Match sytax 105 | match = re.match(self.patterns["syntax"], doc, re.DOTALL) 106 | 107 | # Add to db 108 | if match: 109 | syntax = stripTags(match.group(1)) 110 | syntax = syntax.replace(")Returns:", ") Returns:") # jQuery doc returns fix 111 | 112 | #multiple syntax possible 113 | if ");" in syntax: 114 | parts = syntax.split(");") 115 | syntax = ");\n or ".join( [part for part in parts if part.strip()] )+");" 116 | 117 | db[entry["name"]] = { 118 | "name" : entry["name"], 119 | "path" : self.directory+"/"+entry["path"], 120 | "type" : entry["type"], 121 | "syntax": syntax, 122 | "descr" : self.getDescr(doc), 123 | "params": self.getParams(doc) 124 | } 125 | print(".", end="") 126 | 127 | # Create alias like str.replace -> replace 128 | if "alias" in self.patterns: 129 | name_alias = re.sub(self.patterns["alias"], "", entry["name"]) 130 | if name_alias != entry["name"]: 131 | db[name_alias] = db[entry["name"]] 132 | print("A", end="") 133 | 134 | # jQuery.* -> $.* alias 135 | if entry["name"].startswith("jQuery"): 136 | name_alias = entry["name"].replace("jQuery.", "$.") 137 | db[name_alias] = db[entry["name"]] 138 | 139 | else: 140 | print("-", end="") 141 | no_match.append(entry["name"]) 142 | open(path_db+"/"+self.name+".json", "w").write(json.dumps(db, sort_keys=True, indent=4)) 143 | print("No match:", no_match) 144 | print("Done!") 145 | 146 | # Create empty files 147 | for directory, name in docs.items(): 148 | open(path_db+"/"+name+".json", "w").write("{}") 149 | 150 | 151 | # Fill db 152 | for directory, name in docs.items(): 153 | print(" * Updating", directory, "->", name) 154 | Parser(directory, name) 155 | -------------------------------------------------------------------------------- /intellitip.py: -------------------------------------------------------------------------------- 1 | import sublime_plugin, sublime, json, webbrowser 2 | import re, os 3 | from time import time 4 | 5 | settings = {} 6 | 7 | class IntellitipCommand(sublime_plugin.EventListener): 8 | 9 | cache = {} 10 | region_row = [] 11 | lang = None 12 | 13 | def on_activated(self, view): 14 | Pref.time = time() 15 | sublime.set_timeout(lambda:self.run(view, 'activated'), 0) 16 | 17 | def on_modified(self, view): 18 | Pref.time = time() 19 | 20 | def on_selection_modified(self, view): 21 | now = time() 22 | sublime.set_timeout(lambda:self.run(view, 'selection_modified'), 0) 23 | Pref.time = now 24 | 25 | def run(self, view, where): 26 | global region_row, lang 27 | 28 | view_settings = view.settings() 29 | if view_settings.get('is_widget'): 30 | return 31 | 32 | for region in view.sel(): 33 | region_row, region_col = view.rowcol(region.begin()) 34 | 35 | if region_row != view_settings.get('intellitip_row', -1): 36 | view_settings.set('intellip_row', region_row) 37 | else: 38 | return 39 | 40 | # Find db for lang 41 | lang = self.getLang(view) 42 | if lang not in self.cache: #DEBUG disable cache: or 1 == 1 43 | path_db = os.path.dirname(os.path.abspath(__file__))+"/db/%s.json" % lang 44 | self.debug("Loaded intelliDocs db:", path_db) 45 | 46 | if os.path.exists(path_db): 47 | self.cache[lang] = json.load(open(path_db)) 48 | else: 49 | self.cache[lang] = {} 50 | 51 | completions = self.cache[lang] 52 | 53 | # Find in completions 54 | if completions: 55 | function_names = self.getFunctionNames(view, completions) 56 | found = False 57 | for function_name in function_names: 58 | completion = completions.get(function_name) 59 | if completion: 60 | found = completion 61 | break 62 | 63 | if found: 64 | menus = ['' % Pref.css] 65 | # Syntax 66 | menus.append("

    %s

    " % found["syntax"]) 67 | 68 | for descr in re.sub("(.{100,120}[\.]) ", "\\1||", found["descr"]).split("||"): #Spit long description lines 69 | menus.append("
    "+descr+"
    ") 70 | 71 | #Parameters 72 | if found["params"]: 73 | menus.append("

    Parameters:

    ") 74 | 75 | for parameter in found["params"]: 76 | menus.append("- "+parameter["name"]+": "+parameter["descr"]+"
    ") 77 | 78 | self.appendLinks(menus, found) 79 | 80 | view.show_popup(''.join(menus), location=-1, max_width=600, on_navigate=self.on_navigate) 81 | else: 82 | view.hide_popup() 83 | 84 | def appendLinks(self, menus, found): 85 | for pattern, link in sorted(Pref.help_links.items()): 86 | if re.match(pattern, found["path"]): 87 | host = re.match(".*?//(.*?)/", link).group(1) 88 | menus.append('
    Open docs: Docs' % found["name"]) 89 | break 90 | return menus 91 | 92 | def getLang(self, view): 93 | scope = view.scope_name(view.sel()[0].b) #try to match against the current scope 94 | for match, lang in Pref.docs.items(): 95 | if re.match(".*"+match, scope): return lang 96 | self.debug(scope) 97 | return re.match(".*/(.*?).tmLanguage", view.settings().get("syntax")).group(1) #no match in predefined docs, return from syntax filename 98 | 99 | def getFunctionNames(self, view, completions): 100 | global region_row 101 | return [view.substr(view.word(view.sel()[0]))] 102 | 103 | def on_navigate(self, link): 104 | global lang 105 | webbrowser.open_new_tab(Pref.help_links[lang.lower()] % link) 106 | 107 | def debug(self, *text): 108 | if Pref.debug: 109 | print(*text) 110 | 111 | def init_css(): 112 | css_file = 'Packages/' + Pref.css_file 113 | 114 | try: 115 | Pref.css = sublime.load_resource(css_file).replace('\r', '') 116 | except: 117 | Pref.css = None 118 | 119 | settings.clear_on_change('reload') 120 | settings.add_on_change('reload', 'init_css') 121 | 122 | def plugin_loaded(): 123 | global Pref, settings 124 | 125 | class Pref: 126 | def load(self): 127 | Pref.wait_time = 0.12 128 | Pref.time = time() 129 | Pref.css_file = settings.get('css_file', "Intellitip/css/default.css") 130 | Pref.help_links = settings.get('help_links', []) 131 | Pref.docs = settings.get('docs', None) 132 | Pref.debug = settings.get('debug', False) 133 | Pref.css = None 134 | 135 | settings = sublime.load_settings("intellitip.sublime-settings") 136 | Pref = Pref() 137 | Pref.load() 138 | init_css() 139 | 140 | settings.add_on_change('reload', lambda:Pref.load()) 141 | -------------------------------------------------------------------------------- /intellitip.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "help_links": { 3 | ".*": "http://devdocs.io/%s", 4 | "php": "http://php.net/manual-lookup.php?pattern=%s", 5 | "python": "http://docs.python.org/3/search.html?q=%s", 6 | "jquery": "http://api.jquery.com/%s", 7 | "csound": "http://csound.github.io/docs/manual/%s", 8 | "javascript|dom": "https://developer.mozilla.org/en-US/search?topic=js&topic=html&topic=api&q=%s", 9 | }, 10 | "docs": { 11 | "source.php" : "PHP", 12 | "source.js" : "Javascript", 13 | "source.coffee" : "Javascript", 14 | "source.python" : "Python", 15 | "source.csound" : "Csound" 16 | }, 17 | "css_file": "Intellitip/css/default.css" 18 | } 19 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rorywalsh/csoundSublime/41c2a6304bad4d93432ea7c185744e8aae211593/screenshot.png --------------------------------------------------------------------------------