diff -pruN 1:3.8.0~repack-2/.appveyor.yml 1:3.10.0+repack-0.1/.appveyor.yml --- 1:3.8.0~repack-2/.appveyor.yml 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/.appveyor.yml 2018-11-19 21:36:53.000000000 +0000 @@ -0,0 +1,155 @@ +# Appveyor config file for SuperCollider +# Author: Brian Heim +# Created on 2017-12-31 +# See http://www.appveyor.com/docs/appveyor-yml + +version: '{build}' # incremented with each build + +# shallow_clone doesn't clone, repository is not git so can't get submodules +clone_depth: 10 + +# https://www.appveyor.com/docs/build-environment/#build-worker-images +image: Visual Studio 2017 + +# disable automatic tests +test: off + +environment: + CMAKE_CONFIGURATION: Release + ASIO_URL: "http://www.steinberg.net/sdk_downloads/asiosdk2.3.zip" + ASIO_ZIP: asiosdk2.3.zip + + matrix: + - QT_DIR: "C:/Qt/5.9/msvc2015" + CMAKE_GENERATOR: "Visual Studio 15 2017" + FFTW_URL: ftp://ftp.fftw.org/pub/fftw/fftw-3.3.5-dll32.zip + ARCH: "x86" + S3_BUILDS_LOCATION: "builds/supercollider/supercollider/win32" + # https://www.appveyor.com/docs/lang/cpp/ + VCVARS_SCRIPT: "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvars32.bat" + + - QT_DIR: "C:/Qt/5.11/msvc2017_64" + CMAKE_GENERATOR: "Visual Studio 15 2017 Win64" + FFTW_URL: ftp://ftp.fftw.org/pub/fftw/fftw-3.3.5-dll64.zip + ARCH: "x64" + S3_BUILDS_LOCATION: "builds/supercollider/supercollider/win64" + VCVARS_SCRIPT: "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvars64.bat" + +install: +- ps: echo "Install phase start" + +- ps: $env:PROGFILES = if ($env:ARCH -eq "x64") { 'Program Files' } else { 'Program Files (x86)' } + +# Load command-line tools (lib.exe) +- cmd: call "%VCVARS_SCRIPT%" + +- cmd: echo "Get submodules" +- cmd: git submodule update --init --recursive + +# Install libsndfile, FFTW, and ASIO SDK. Note that DirectX SDK, Windows SDK are already installed. +- cmd: echo "Install 3rd-party tools" +- cmd: mkdir 3rdparty && cd 3rdparty + +# libsndfile using hosted repository. Couldn't find a way to get the installer to work silently. +- cmd: echo "Install libsndfile" +- cmd: mkdir libsndfile && cd libsndfile +- cmd: git clone https://github.com/brianlheim/libsndfile-windows-%ARCH% libsndfile +- cmd: set MEGANERD_DIR=C:/%PROGFILES%/Mega-Nerd +- cmd: mkdir "%MEGANERD_DIR%" +- cmd: move libsndfile "%MEGANERD_DIR%/libsndfile" +- cmd: cd .. && echo "Done installing libsndfile" + +# FFTW3, including lib prep +- cmd: echo "Install fftw" +- cmd: mkdir fftw && cd fftw +# can't use appveyor DownloadFile because it's FTP +- ps: Invoke-WebRequest $env:FFTW_URL -OutFile fftw.zip +- ps: 7z x fftw.zip -y +- cmd: lib.exe /machine:%ARCH% /def:libfftw3f-3.def +- cmd: cd .. +- cmd: move fftw "C:/%PROGFILES%/fftw" +- cmd: echo "Done installing fftw" + +# ASIO SDK +- cmd: echo "Install asio_sdk" +- cmd: mkdir asio_sdk && cd asio_sdk +- appveyor DownloadFile %ASIO_URL% +- ps: 7z x $env:ASIO_ZIP -y +- cmd: move ASIOSDK2.3 "%APPVEYOR_BUILD_FOLDER%\external_libraries\asiosdk" +- cmd: cd .. && echo "Done installing asio_sdk" + +- cmd: cd .. && echo "Done installing 3rd-party tools" + +- cmd: echo "Install phase end" + +before_build: +- set PATH=%QT_DIR%\bin;%PATH% +- mkdir build +- cd build + +build_script: +- cmake -G "%CMAKE_GENERATOR%" -D CMAKE_PREFIX_PATH=%QT_DIR% .. +- cmake --build . --target install --config %CMAKE_CONFIGURATION% + +# after_build instead of before_deploy so artifacts are collected at the right time +after_build: +- ps: $env:ARCHIVE_NAME="SC-Windows-$env:ARCH-$env:APPVEYOR_REPO_COMMIT.zip" +- ps: $env:S3_URL="https://supercollider.s3.amazonaws.com/$env:S3_BUILDS_LOCATION/$env:ARCHIVE_NAME" +- ps: $env:FWD_HTML="" +- ps: $env:BRANCH_ESC=$env:APPVEYOR_REPO_BRANCH -replace '/', '' +- ps: cd $env:APPVEYOR_BUILD_FOLDER + +- echo "Making artifacts" +- ps: mkdir artifacts +- ps: cd artifacts +- ps: echo $env:FWD_HTML > $env:BRANCH_ESC-latest.html +- ps: Copy-Item -Path $env:APPVEYOR_BUILD_FOLDER/build/Install/SuperCollider . -Recurse +- ps: 7z a $env:ARCHIVE_NAME -tzip SuperCollider +- ps: rmdir -Recurse -Force SuperCollider +- ps: >- + If (Test-Path env:APPVEYOR_REPO_TAG_NAME) { + # required for github releases + # -q because otherwise PS reads output from stderr and thinks there's a problem + git fetch --tags -q + $env:TAG_ESC=$env:APPVEYOR_REPO_TAG_NAME -replace '/', '' + echo $env:FWD_HTML > $env:TAG_ESC.html + cd ../build + # to get NSIS in path for installer generation + $env:PATH="C:\Program Files (x86)\NSIS;$env:PATH" + cmake --build . --target installer --config Release + } +- ps: cd .. + +after_deploy: +- ps: echo "S3 Build Location = $env:S3_URL" + +artifacts: + - path: artifacts + name: art_folder + - path: build\Install\*.exe + name: installer + type: File + +deploy: +# s3 upload - every commit +- provider: S3 + access_key_id: + secure: cUwCIb/EtpG3uAP48WylcMNxAh3yEbPNcQGPZDnh6go= + secret_access_key: + secure: 9n0lOPh/3hpwSEf1l0QySYngrgWYqplZozQ9ZJMxtDARIV5DIBn/NXttTfkh1Z3k + bucket: supercollider + region: us-west-2 + folder: $(S3_BUILDS_LOCATION) + artifact: art_folder + unzip: true + set_public: true + +# github releases - only tags +- provider: GitHub + description: appveyor_$(APPVEYOR_REPO_TAG_NAME) + artifact: installer + auth_token: + secure: 6m5+IiGj/pLhiUJvZPqs7yOlSe0ttH3pklaM7w1i8ca4YRUrIKddsGTZAZo86qLx + prerelease: true + on: + appveyor_repo_tag: true diff -pruN 1:3.8.0~repack-2/build_sclang.cfg.in 1:3.10.0+repack-0.1/build_sclang.cfg.in --- 1:3.8.0~repack-2/build_sclang.cfg.in 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/build_sclang.cfg.in 2018-08-28 01:12:47.000000000 +0000 @@ -1 +1,2 @@ +includePaths: @BUILD_CLASSLIBRARYPATH@ diff -pruN 1:3.8.0~repack-2/ChangeLog 1:3.10.0+repack-0.1/ChangeLog --- 1:3.8.0~repack-2/ChangeLog 2016-08-22 08:12:20.000000000 +0000 +++ 1:3.10.0+repack-0.1/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,1217 +0,0 @@ - -See the full CHANGELOG.md for recent releases - -SuperCollider v3.6.5, released 2013-04 -====================================== - -Jakob Leben (10): - sc class library: fix regression in Server:-scope - scide: add "reset font size" action to post window and help browser - scide: autocompletion: order methods by class hierarchy when class is - known - documentation: improve info on logical time, clocks and threads - documentation: more info on threads, clocks and time - sclang: PyrThread: ensure slot type safety - documentation: clarify the functioning of Thread and Routine - streamline README.txt - documentation: improve thisFunction and thisFunctionDef - -Julian Rohrhuber (3): - sc class library: replacing the source of a node proxy led to hanging - patterns - sc class library: NodeProxy:cleanNodeMapnow works even if no settings are - present - fix typo / removing the implication that ansi-C isn't appropriate - -Michael Zacherl (5): - In.schelp: replaced AudioIn w/ SoundIn in reference, added loudness - warning in example section - Knob.schelp: repositioned text in mouseOverAction example - Klang.schelp: changed 'filter' to 'oscillator' in methods section - DynKlang.schelp: changed 'filter' to 'oscillator' in methods section - README.txt: reworked and simplified with focus on SC IDE and version 3.6 - -vividsnow (2): - scdoc: Pseg: duration pattern in beats not seconds - scdoc: add thisFunctionDef/thisFunction - - -SuperCollider v3.6.4, released 2013-04 -====================================== - -Dan Stowell (1): - SinOsc and Osc: note phase issue beyond +-8pi. Fixes #815 - -Jakob Leben (34): - sclang: fix Char:-isUpper/isLower - qtcollider: add QListView:-selectionAction - qtcollider: add QListView:-selection setter - scide: remove credits for kiberpipa - help: GUI - improve documentation of alignment options - help: add guide on creating standalone applications - sc ide: show impl/ref lookup dialogs even when no text under cursor - sc class library: ClassBrowser: fix search with empty query string - sc ide: interpreter: post notification on quit or crash - qtcollider: pass exit code up to SC_TerminalClient - sc ide: fix and improve region detection - sc ide: sc editor: add action to select pair of brackets enclosing cursor - sc ide: sc editor: update bracket match highlight after applying settings - qtcollider: QTextView: increase 'selectedString' compatibility, fix docs - qtcollider: envelope view: fix drawing of quadratic and cubic curves - sc ide: help browser: delegate docklet focus to webpage view - sc ide: docklet: when focusing, also activate window - sc ide: fix auto-indenting closing brackets on certain locales - sc ide: ensure dock widgets within screen bounds when first undocked - qtcollider: QTextView: set 'enterInterpretsSelection' to true by default - scide: config dialog: preserve font when toggling "show only monospaced" - scide: select line in code on triple click - scide: ensure last active window activated after open/save file dialog - scide: on startup, remove invalid file paths from "recent documents" list - scide: improve default paths in open/save dialogs - scide: save document dialog: always allow saving with any extension - scide: editor: highlight unmatched brackets just like mismatched ones - qtcollider: StackLayout: fix crash when removing contained widget - qtcollider: do not allow reparenting layouts, to avoid crashing - scide: fix closing tool panels on Escape - scide: impl/ref lookup: close dialog when opening documentation for class - Revert "Revert "scide: on Mac, make one global menu to share by all - windows"" - scide: prevent erroneous overriding of shortcuts on Mac OS - -James Harkins (2): - Library: Bugfix for PmonoArtic inside other patterns w/cleanup - Library: Fix Pfset passing child cleanups up to its parent(s) - -Tim Blechmann (10): - Help: fix rlpf help file - plugins: DemandEnv - fix shape polling - plugins: GrainBuf - catch both inf and NaN phase arguments - scsynth: prevent possible buffer overflow - cmake build system: fix x11 include paths - class library: Bus - fix get method for multi-channel busses - class library: Server.scope - remove limitation to 16 channels - plugins: LocalOut - don't crash server if LocalIn is missing - sclang: prevent buffer overflow - scide: link with librt - -Victor Bombi (1): - supernova: CMakeLists.txt must set include dirs for fftw3f - -attejensen (1): - Update MIDI.schelp - - -SuperCollider v3.6.3, released 2013-02 -====================================== - -Dan Stowell (2): - Add cmake option NO_GPL3 to simplify building of GPL2 binaries - SCDoc: generalise licensing from GPL3+ to GPL2+ - -Graeme Urquhart (2): - Issue #702 fix: sendSelection receives NSString - String:Help of split method matches implementation - -Jakob Leben (24): - qtcollider: relicense to GPL version 2 - sclang: terminal client - fix and simplify request handling - qtcollider: support String:-speak when Speech class is - available - cmake: set LIBSCSYNTH=ON by default on Windows - qtcollider: QView - do not block beginDrag if currentDrag is - already set - qtcollider: QKnob - let 'background' affect knob color - sc ide: improve server boot/quit actions - sc ide: improve interpreter start/stop actions - sc ide: improve default server booting shortcuts - qtcollider: sf view: fix loading non-power-of-two floating - point files - sc ide: disable zooming by mouse wheel (scrolling) - sc ide: editor - set Qt::WA_MacNoClickThrough on viewport - help: improve the SC IDE guide - qtcollider: implement QtGUI:*cursorPosition - class library: Platform - redirect getMouseCoords to GUI - sc ide: post window - disable click-through on Mac OS X - sc ide: add Help menu action to open the SuperCollider IDE - guide - help: SC IDE guide - show scaled screenshot, with a link to - unscaled one - sc ide: docklets - fix geometry after undocking - sc ide: change default shortcuts for Go To Next/Previous Region - sc ide: make cmd-period silent - sc ide: improve status box context menu interaction - sc ide: add context menu to interpreter status box - -James Harkins (4): - Fix title:: tags in the practical guide: user-friendly titles - vs. filenames - Add Practical Guide Cookbook entry on swing rhythms - PG_Cookbook_08: Fix an omitted copy/paste - Fix typo in analysis example: BufWr.ar on a kr signal is bad - -Tim Blechmann (22): - supernova: fix crash on /quit with portaudio - class library: PlusFreqScope - survive server actions - scide: remove ctrl-b shortcut - class library: FreqScope - fix for starting scope after booting - common: introduce new autogenerated SC_Version.hpp header - class library: fix Array-unlace - supernova: plugin interface - guard access to rt-pool - plugins: IOUgens - prevent buffer overflow - Help: BrownNoise - use a convention of -20db - supernova: sized array - assert boundaries - supernova: sndfile backend - correctly use correct blocksize - for temp buffer - supernova: jack backend - avoid uninitialized value - supernova: nrt engine - nicer formatting of message log - plugins: ui ugens - initialize libx11 for threading - supernova: start dsp threads from run methods - sclang: library config - correcty handle library config command - line argument - server plugins: RecordBuf - fix multichannel corruption and - buffer overrun - fftlib: for now we avoid intptr_t - server plugins: fix div_ka - plugins: osc ugens - fix GET_TABLE macro - plugins: OscUGens - ensure buffer initialization - scide: add menu item to open the user application support - directory - -Victor Bombi (2): - common: win32 - avoid integer truncation - supernova: correctly print synthdef path - - -SuperCollider v3.6.2, released 2012-12 -====================================== - -BS Collist (1): - qtcollider: QEnvelopeView - add method to return all selected - indexes - -Jakob Leben (32): - common (windows): unify access to known folder paths - sclang (windows): add primitive to access "My Documents" dir - cmake: expand the search for libsndfile and libfftw3f - cmake (Windows): use CMAKE_LIBRARY_PATH for fixup_bundle() - search dirs - scide: let cmd-period have an application-wide shortcut context - scide: DocumentManager - refresh cached file info before - storing save time - scide: help browser - support doc/impl/ref lookup for selected - text - scide: search widget hierarchy upwards for first handler of - lookup actions - scide: GenericLookupDialog - no need for subclassing QTreeView - anymore - scide: make doc/impl/ref lookup shortcuts work on detached - docklets - scide: always pop up lookup dialogs with the active window as - the parent - scide: update translation sources, add italian - qtcollider: start drag within mouse event handler - qtcollider: QStethoscope2 - reverse operation of horizontal - zoom slider - scide: GenericCodeEditor - set Qt::WA_MacNoClickThrough widget - attribute - scide: SyntaxHighlighter - swap QChar::toAscii() for toLatin1() - scide: Document - swap QString::toAscii() for - QString::toLatin1() - scide: MainWindow - substitute deprecated - QFileDialog::setFilter(QString) - scide: MainWindow - include QMimeData - scide: PostWindow - include QMimeData - scide: GenericCodeEditor - include QMimeData - qtcollider: QWidgetProxy - include QDrag - sclang: SCIpcClient - fix includes - cmake: sclang - fix building when SC_IDE=ON and SC_QT=OFF - cmake: scide - add QtNetwork to required Qt modules - qtcollider: QStethoscope2 - refactor for robustness - qtcollider: QListView - add 'selection' method to get all - selected indexes - help: document new 'selection' methods of EnvelopeView and - ListView - help: View - improve documentation, fix links - help: fix a large amount of broken links due to changes in - SCDoc - cmake: FindPortmidi - actually implement auto-finding portmidi - -James Harkins (1): - Fix bug introduced by 7f29d322: Don't free the same alloc'ed - index twice - -Tim Blechmann (18): - scide: DocumentManager - read files via QTextStream to decode - characters - supernova: osc handler - fix completion message and done - message for /b_close - supernova: asynchronous log - fix string splitting - supernova: compile fix - supernova: send /fail messages on /notify commands - supernova: send /fail on buffer commands - supernova: fix sndfile error handling - win32: ensure stack alignment - plugins: fix GrainBuf cleanup - Help: SymbolicNotations - replace SCSlider with Slider - supernova: plugin interface - protect against multiple done - actions - Help: remove memStore - class library: Buffer - freeMsg should clear all cached - information - supernova: osc interface - fix bug with node reordering - supernova: buffer_read - don't check samplerate when queueing - soundfiles - class library: fix Function.plot - plugins: RecordBuf - fix recordbuf overrun & fix done action - handling - Help: RecordBuf - RecordBuf is recording, not playing - - -SuperCollider v3.6.1, released 2012-11 -====================================== - -Dan Stowell (1): - SpecFlatness: prevent NaN output for silence (thanks nick - collins) - -Glen Fraser (1): - scide: code editor / post window - copy using plain text - -Jakob Leben (13): - update README_WINDOWS.txt for changed application data - locations - fix compilation with MinGW (broken static initialization) - scide: find/replace - use Qt translation system to handle - singular/plural - cmake: scide - improve handling translations - scide: load translations from app resource directory - scide: update translation source files - scide: change english translation file name to serve as - fallback - sclang: (Windows) change app support dir from roaming to local - scide: load fallback translation in addition to locale - translation - sclang: add primitive to allow Platform to access user home - directory - class library: WindowsPlatform - set a user-friendly default - recordingsDir - readme (windows): add instructions on moving application data - -Tim Blechmann (1): - class library: SynthDef - writeDefFile should use default - SynthDef path - - -SuperCollider v3.6.0, released 2012-11 -====================================== - -Major release with many new features - please see the help doc -"News in 3.6" for more information. -http://doc.sccode.org/Guides/News-3_6.html - - -SuperCollider v3.5.7, released 2012-11 -====================================== - -Jakob Leben (6): - sclang: (Windows) fix String:-getenv to return variables set - with -setenv - class library: ServerMeter - fix closing window when server has - never run - sclang: fix 'gcd' and 'lcm' methods - qtcollider: QStethoscope2 - fix width of number boxes - qtcollider: fix SoundFileView:-selectAll and -selectNone - qtcollider: fix QPen:*matrix setter - combine instead of - replace matrix - -Julian Rohrhuber (1): - class library: jitlib - Avoiding sync problems with free/play - -Tim Blechmann (9): - plugins: filters - fix initialization of filter parameters - external libraries: nova-simd update - external libraries: move nova-simd submodule to github - plugins: DelayN - fix initialization code - Revert "plugins: DelayN - fix initialization code" - common: fftlib - increase size limit for ffts - sclang: server shm interface - fix setting of multiple values - plugin interface: provide wrapper class for c++-style unit - generators - - -SuperCollider v3.5.6, released 2012-10 -====================================== - -Dan Stowell (2): - Improve error messages when cmake can't find optional things - Compile fix for Qt widget on arm. Upstreamed from - debian-multimedia (thanks Felipe Sateler) - -James Harkins (1): - Fix Spawner bug: cleanup.update is mandatory, including rest - events - -Jonatan Liljedahl (7): - Quarks: fix typo and also open old-style helpfiles ending with - .htm - Include old non-converted helpfiles in SCDoc document index - HelpBrowser: also open RTF files with whatever is available - Even more support for old help files - scdoc: use JS hasOwnProperty instead of testing the property - directly - HelpBrowser: post javascript errors - SCDoc: properly escape keys in generated docmap.js - -Joshua Parmenter (1): - Fix ServerOptions instance var ordering, etc., to make internal - server booting use correct number of audio bus channels. - -Tim Blechmann (4): - cmake: provide explicit option to use system-installed boost - libraries - external libraries - revert submodule updates - lang: SerialPort - fix invocation of done action - - -SuperCollider v3.5.5, released 2012-09 -====================================== - -Dan Stowell (1): - Fix bug in Complex:exp - -James Harkins (1): - Convert misleading and confusing OSC-style example into - object-style - -Joshua Parmenter (2): - fix IEnvGen kr UGen - fix cocoa window alpha setting - -Tim Blechmann (12): - sclang: fix Array:extendWrap for negative size argument - sclang: array primitivies - protect all array extend primitives - against negative sizes - scdoc: fix string comparison in parser - supernova: sized_array - don't allocate memory for zero-sized - array - plugins: GrainBuf - fix crash when using nan as position - control - scsynth: ensure alignment of wire buffers - supernova: catch exceptions when reading synthdefs - supernova: free_aligned - fix fallback implementation for null - pointers - cmake build system: dont compile shared library with - -fwhole-program - plugins: GrainBuf - allocate grain after reading window - plugins: GrainBuf - fix access to default hann window - -Victor Bombi (1): - cpu usage for portaudio_backend.hpp - - -SuperCollider v3.5.4, released 2012-08 -====================================== - -Dan Stowell (5): - Fix typo that causes build fail on big-endian archs, thanks - Felipe Sateler - fix build on ARM (where qreal==float); thanks Felipe Sateler - Strip gremlin characters from JITLib wrapForNodeProxy.sc - choose clipping rather than wraparound for writing - integer-format audio files (libsndfile setting) - arm build fix: another double->qreal in QcMultiSlider - -James Harkins (1): - Improve documentation of GUI kits and kit switching - -Jonatan Liljedahl (2): - SCDoc: Use proper static string constants instead of comparing - string literals. - Revert "reinstate Mix.arFill and Mix.krFill for backward - compatibility reasons" - -Julian Rohrhuber (2): - reinstate Mix.arFill and Mix.krFill for backward compatibility - reasons - improve string helpfile - -Tim Blechmann (10): - plugins: GrainUGens - handle unallocated window buffers - plugins: GrainBuf - reject multi-channel buffers - plugins: grain ugens - treat empty window buffers correctly - server: provide memory alignment wrappers for msvc - server: scsynth - ensure correct deallocation of SndBuffer - memory - server/language/supernova: automatically clip integer audio - files - scsynth: correctly free aligned buffers - Help: fix OSC function in SendPeakRMS help file - package: use alternative implementation of git-archive-all - -Victor Bombi (1): - MSVC fix - - -SuperCollider v3.5.3, released 2012-06 -====================================== - -Dan Stowell (6): - LocalIn helpfile fix, thanks Bruno Ruviaro - Fix scvim regsitry file for updated filename (thanks Carlo Capocasa) - version number to 3.5.3 - Server helpfile: see-also reference docs - SCVim.sc should not be executable - cmake build system: use system boost libraries if available - -Jakob Leben (1): - cmake: fix Boost Thread linking on Windows - -James Harkins (10): - EnvGen_next_ak_nova: Hardcoded blocksize=64, change to - inNumSamples - Per Scott W., initSiblings is not needed - Reinstate Mix.ar and Mix.kr, with rate checks - Fix crossplatform fail: Scale.directory shouldn’t always depend - on Document - ListPatterns: offset.value omitted (inval) as an argument - Fix PbindProxy:storeArgs - should NOT call “source” on keys in - the array! - Scale:degreeToRatio should handle degrees outside of one - octave’s range - More meaningful error message for too many selectors - Explain the limitation on the number of selectors in one - FunctionDef - Correct spelling error - -Jonatan Liljedahl (3): - Methods.html: auto-redirect to Search if method not found - SCDoc: fix detection of old format class docs - Mix.ar was un-deprecated, so remove the deprecated method - -Joshua Parmenter (2): - fix scroll view problem for OS X 10.7.4 - update SC_DirUtils to look at the name of the app bundle on osx - -Julian Rohrhuber (14): - fix bugs due to wrong usage of partial application - PV_BinShift helpfile improved - PV_Diffuser helpfile improved - reformat statement for readability (no change of functionality) - helpfile improvements - improve array helpfile - add note to the loop argument of DiskIn (thanks Stefan). - improve helpfile - some helpfile improvements - improve helpfile - improve helpfile - improve and simplify FFT overview helpfile: fix some errors in - examples. - improve and simplify IFFT helpfile. - improve and simplify FFT helpfile, mention that hopsize must be - larger than 0.0 - -Tim Blechmann (11): - external libraries: update nova-tt (gcc 4.7 fix) - supernova: correctly implement replace semantics for /s_new - Help: Function.scope is not limited to OSX anymore - cmake build system: locate server plugins on freebsd - server: add support for RF64 - cmake build system: ensure boost include path for scsynth - cmake build system: set boost library path - cmake build system: link scapp with correct version of - libboost_thread - cmake build system: minor cleanup - supernova: fix asynchronous commands for empty reply address - common: fix non-apple builds - - -SuperCollider v3.5.2, released 201 -====================================== - -Dan Stowell (3): - Remove outdated Japanese menus - Cannot use indentation for CMAKE example - on mac it is rendered - as   which then breaks cmake compilation - Fix bug in FFT library if winsize != audiosize - -Jakob Leben (21): - qtcollider: fix QTextView:-background and - QSoundFileView:-background - cmake: improve message if Qt4 or one of its components not found - qtcollider: QKnob: fix mouse response when mouseOverAction is set - qtcollider: implement missing QPopUpMenu:-background - qtcollider: QTextView fixes and improvements - help: add missing GUI examples - qtcollider: support use of UTF-8 encoded strings - qtcollider: QTextView: improve -enterInterpretsSelection - qtcollider: QTextField: never propagate Enter to parent - qtcollider: QEnvelopeView: improve node selection API and UI - help: update EnvelopeView documentation - help: fix incorrect info in EnvelopeView documentation - qtcollider: QObject:-getProperty: turn an error into a debug - warning - qtcollider: implement drag-and-drop for data outside SC - qtcollider: improve key propagation in QListView and QTreeView - qtcollider: optimize view instantiation (take 2) - qtcollider: fix mouse wheel event being forwarded to SC for no - reason - qtcollider: fix potential null pointer dereference - qtcollider: optimization - partially revert event handling - changes - qtcollider: optimization - avoid a signal connection at QObject - construction - qtcollider: optimization - avoid connecting signals with - unnormalized signatures - -James Harkins (2): - Fix Pcollect/select/reject:embedInStream to pass inval to the - function - setTheme: Inherit colors from parent theme if the user didn't - specify - -Jonatan Liljedahl (41): - scdoc: MathJax: don't use fonts installed on users computer - New SCDoc parser and renderer. Faster, more stable, less buggy. - fix some helpfiles for new scdoc - scdoc.css update - scdoc: scapp compile fix - scdoc: defer indexAllDocuments until first use - HelpBrowser tweaks - scdoc: warn on additions for non-existent help doc - scdoc: fill in argument names for argument:: with no name given - SCDocRenderer: warn on broken links - scdoc: fix classtree:: rendering bug - scdoc: only warn on grouped methods argnames mismatch if - argument:: tag is used - scdoc: avoid GC error in primitive - scdoc: collect metadata also from *.ext.schelp (doc additions) - scdoc: warn if argument:: name does not match real method arg - scdoc: updated SCDoc related docs - scdoc: warn if classdoc title and filename mismatch - scdoc: fix varargs name match warning - scdoc: render getter/setter combinations as two different methods - scdoc: warn if setter methods (trailing underscore) is documented - explicitly - scdoc: more helpfile fixes - scdoc: fix some bugs, handle class docs with missing classes - scdoc Search.html: match also on filename for 'title' - schelp: fix some broken links - scdoc: add clearCache arg to indexAllDocuments, and don't render - undocumented classes more than once per session - scdoc: updated SCDoc related helpfiles - schelp: more doc error fixes - scdoc: improve argument:: auto-fill and checks - String-warn and -error: don't print newline after WARNING: and - ERROR: - scdoc: tweak warnings - scdoc: fix escaping of :: in metadata parsing and block verbatim - schelp: add keywords for scdoc tags in SCDocSyntax.schelp - scdoc: allow end-of-file as newline terminator, and improve error - messages - scdoc: use setter_() syntax if more than one argument - scdoc: render method arg defaults as "foo: val" instead of "foo = - val" - mention new scdoc implementation in News-3_5.schelp - scdoc parser: allow empty lines before headertags - SCDoc: fix escaping of & < and > - SCDoc: fix inf loop at missing :: end-tag in code blocks - SCDoc: allow EOF as terminator for private:: and similar tags - SCDoc: don't warn on missing trailing mul & add args - -Miguel Negrão (1): - [Class Libray] Quarks GUI - sort quarks by name - -Tim Blechmann (10): - plugins: fix Clip.kr - class library: archive TempoClock as compile string - cmake build system: restrict win32-specific cflags to win32 - external libraries: nova-simd update - external libraries: nova-simd compile fix - plugins: fix StereoConvolution2L constructor - scsynth: use aligned memory allocation functions from supernova - external libraries: nova-simd update - scsynth: provide zalloc as symbol - -redFrik (1): - scdoc: fixed a bunch of helpfile errors - - -SuperCollider v3.5.1, released 2012-04 -====================================== - -Jakob Leben (13): - windows: properly pass the SC version to NSIS - qtcollider: QPopUpMenu: fix action triggering - qtcollider: get rid of "X is not implemented" message - class library: make Server:-plotTree resilient to GUI kit - switching - help: improve Stethoscope documentation - class library: QStethoscope2: add missing class methods - class library: fix UGen scoping on out-of-process servers - class library: PlusFreqScope: simplify server checking - class library: fix and improve various 'scope' and 'freqscope' - methods - help: fix Stethoscope:*isValidServer documentation - class library: ServerMeter: fix synth startup and cleanup - update README_WINDOWS.txt - windows: improve building and installation - -Jonatan Liljedahl (6): - lang11d: Fix parse tree generation of expr.(key:value, ...) - SC.app: allow saving plain text .schelp files - SCDoc: copymethod:: also search *.ext.schelp files - Update News for 3.5 doc - Fix typo in News-3_5.schelp and improve StartupFile.schelp - Update WritingPrimitives.schelp regarding GC safety - -Joshua Parmenter (1): - prevent HID crashes on OS X. Devices still aren't added to the - queue though (longs for the locID aren't correctly set up) - -Scott Wilson (1): - Make Unpack1FFT a subclass of UGen, rather than of PV_ChainUGen - -Tim Blechmann (4): - class library: SynthDef - fix uploading of large synthdefs - sclang: block evaluation typesafety - sclang: signal primitives - fix Signal-fft - - -SuperCollider v3.5.0, released 2012-03 -====================================== - -Major release with many new features - please see the help doc -"News in 3.5" for more information. -http://doc.sccode.org/Guides/News-3_5.html - - -SuperCollider v3.4.5, released 2012-01 -====================================== - -Tim Blechmann (7): - class library: FreqScope fix - sclang: fix crash of scpacket overflow by using exception handling - sclang: pad PyrMethodRaw struct - sclang: force size of PyrSlot to 16 byte and fix PyrMethodRaw size - server plugins: fix div_ai_nova - plugins: Resonz - fix initialization - plugins: disable simd-optimization for tanh - -James Harkins (3): - Explicitly show the command to uninstall (for scons idiots like me). - (3.4) PathName now sets tmp directory using Platform - SimpleController:update would throw error if no actions had been 'put' in - -Dan Stowell (1): - Remove waf file from 3.4.x - was never used, and contains binary code, causing linux packaging problems. See ubuntu bug #529154 for details, and debian bug #529154 for sc-specific - -Mathieu Trudel-Lapierre (1): - Fixup environment variables used for linking against readline, libicu, curl, cwiid. - -Nick Collins (1): - Fix bug in MFCC ugen - -Noe Rubinstein (1): - Fix PMOsc doc: index -> pmindex - -dmotd (1): - Include altivec.h on linux powerpc, fixing FTBFS - - -SuperCollider v3.4.4, released 2011-06 -====================================== - -Dan Stowell (4): - Improve format of copyright/GPL notices (issue raised in debian pkging) - Clarify Fontana copyright in MoogFF (and don't use keyword 'copyright' in files where he doesn't have copyright) - Update AUTHORS file - Remove unneeded PDF (debian raised query over copyright) - -Nick Collins (1): - Initial fix for headphones problem where plugging in or out headphones while using Built-in Output leads to loss of audio on OS X. Aggregate Devices not tackled at this point - -Tim Blechmann (15): - sclang: mathematical operators - clip2 fix - plugins: LPF - fix control-rate initialization - sclang: wii - don't use address of temporary - SCClassLibrary: ScoreStreamPlayer - do not add instances to server list - scsynth: apple - set denormal handling flags, if __SSE__ is defined - sclang: slotString - crash fix - plugins: XLine - correct handling of done actions - sclang: gc - introduce LazyCollect to avoid leak of frames and argument lists - plugins: Pitch.ar - fix crash for high execution period - changelog: fix version number - update changelog - sclang: parser - support message send syntax for unary operators - plugins: delay ugens - rt memory allocation may fail - sclang: compile fix - - -SuperCollider v3.4.3 -====================================== - -Dan Stowell (2): - SC 3.4 set correct SOVERSION 1.0.0 for libs, and install more properly. (Changes ported from downstream debian packaging.) - lib SOVERSIONs back from 1.0.0 to 1, following debian-multimedia advice - -James Harkins (8): - Fix nowExecutingPath bug in scel (never backported?) - fix two bugs in NotificationCenter registerOneShot: - fix corner case in ClassBrowser - Fix asPseg bug for short curves array (which should wrap, not kill the stream) - Clear dataptr when closing a file (so that isClosed answers correctly) - Incorrectly used dataptr instead of fileptr in previous commit on this file - replace old, unsafe Dictionary test with a safer (but less OOPy) test - rats... I missed two others of the same - -Joshua Parmenter (1): - update version number - -Tim Blechmann (3): - scsynth: set ftz flag on osx - two commits: (1) simplify access to the superclass tree in Class. (2) when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of havin - scons build system: libsclang build fix - - -SuperCollider v3.4.2, released 2011-03 -====================================== - -Bugfixes: ---------- - -* 2010-06-05 fix Latch first sample output bug: if trigger > 0 initially, latch should not output 0 - jh -* 2010-09-04 fix firstArg behavior in BinaryOpUGen by a list-approved hack - jh -* 2010-10-01 fix SConstruct so that libscsynth and libsclang get SONAME entries - ds -* 2010-11-13 grainBuf: audio-rate trigger fix - tb -* 2010-11-15 generate libsclang and libscsynth with .so.1 extension (and soname) on linux - ds -* 2010-11-15 scons create symlinks from libX.so to libX.so.1 on linux, and install them - ds -* 2010-11-16 added .htm files to SConstruct as approved help file extension - mb -* 2010-11-28 compile fix for curl support - tb -* 2010-11-28 prevent asBus from breaking when called with no numChannels - jh -* 2010-12-03 grain ugens: demand ugen input fix - tb -* 2010-12-05 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place. backported from master - tb -* 2010-12-08 prString_FindRegexp fix: match char array was too short to hold null termination - jli -* 2010-12-11 fix classbrowser colors bugs. backported from master - tb -* 2010-12-12 fixes the bug where installed quark help files would not be detected - tb/ar -* 2010-12-13 mark inherited methods in class browser by background colour. backported from master - tb -* 2010-12-30 Pipe does not remove closed pipes from openFiles - jh -* 2010-12-30 fix String:rotate - pb -* 2011-01-02 unit generators: LagControl - fix initialization order - jh -* 2011-01-02 unit generators: LagControl - dynamically allocate buffer for filter states - tb -* 2011-01-07 fixed iOS compilation and backported changes from master branch - ab -* 2011-01-06 array primitives: fix allTuples and unlace - pb -* 2011-01-07 sclang: makeIntrinsicClass - correct bounds for memcpy - tb -* 2011-01-08 sclang: prString_FindRegexp - fill array after allocating objects - tb -* 2011-01-14 sclang: prString_FindRegexp ensure correct size of results array during gc calls - tb -* 2011-02-27 sclang: ensure minimum stack size - tb -* 2011-03-09 SCVim: avoid generating scvim help cache if not currently in scvim - ds -* 2011-03-11 fix the Event type 'note' (fixes rendering patterns to audio files) - rk - - -SuperCollider v3.4.1, released 2010-11 -====================================== - -* 2010-07-12 remove accidental debug messages from SCView (on mac, posted a lot of info to Console, could affect performance) - ds -* 2010-07-11 Collections should behave as reasonably as possible when empty - some fixes to better this - jr -* 2010-07-11 SynthDef:add now sends to all running servers if no libname is given. SynthDescs are still added to the global SynthDescLib. If you want to handle multiple SynthDesc libs, you have to add the servers to each of them explicitly - jr -* 2010-07-12 PanAz: added support for audio-rate pos arg - lfsaw -* 2010-07-18 improved the sclang syntax highlighting parses - Patrick Borgeat -* 2010-07-30 Dreset UGen allows to reset the child UGens on its input - jr -* 2010-08-05 storeOn / asCompileString now simplifies its output. Default arguments that are given in the *new method anyhow are omitted - jr -* 2010-08-06 Dictionary merge and blend methods - jr -* 2010-08-09 method overwrite messages not posted by default, rather a message inviting people to run Main:overwriteMsg for the info - ds -* 2010-08-13 MethodOverride class to encapsule information on overridden messages, inviting people to run MethodOverride.printAll - jr -* 2010-08-13 add size arg to Signal:zeroPad - jr and jh -* 2010-08-18 Pevent now uses default event if no event is passed in - jr -* 2010-08-18 added a shortcut to the rather tedious .asCompileString method. In analogy to object.postcs, object.cs returns the compile string - jr -* 2010-08-20 audio driver for scsynth running on Android (through JNI) - ds -* 2010-08-24 un-deprecate scsynth's ability to use internal "green" FFT lib, for embedded devices etc - ds -* 2010-08-28 no 'record' button for remote server GUIs, since path not generally known - ds -* 2010-09-02 token threading for sclang interpreter - tb -* 2010-09-07 when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of having to select both words around the colon - jr -* 2010-09-07 added methods for better navigation in the class tree (findOverriddenMethod) - jr -* 2010-09-10 add method: Complex:abs to fit common usage - jr -* 2010-09-12 added Dwrand UGen - jr -* 2010-09-15 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place - jr -* 2010-10-07 change the mac HID error-handler code to output errors to sc post window rather than to mac log; removes a pascal-string issue - ds -* 2010-10-19 Ndef now releses its bus when server was quit or just booted - jr -* 2010-10-20 retain the path to the file in which an error has occurred and post it - jr - - -Bugfixes: ---------- -* 2010-07-10 protecting the server against malformatted SynthDef names - jr -* 2010-06-28 syntaxColorize fix for double-backslashes, thanks Patrick Borgeat for the patch - ds -* 2010-07-24 catch crash in the case that one tries to define a unique method using a return value directly - jr -* 2010-09-07 UGen:clip, :wrap, :fold now apply correctly to scalar-rate signals; also methodSelectorForRate tweak for which class is asked - ds -* 2010-09-09 fix a bug for trigger signals in Demand.kr that hold longer than one control period - jr -* 2010-09-11 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr -* 2010-09-12 fix bug: 2994009. LFPar and LFCub audio rate modulation frequency argument work now - jr -* 2010-09-19 fix to JITGui, when numItems is not supplied - jr -* 2010-10-10 remove more crufty NSLog debug messages - ds -* 2010-10-13 fix SCUserView:receiveDrag to receive mouse co-ordinates; thanks Daniel van den Eijkel - ds -* 2010-10-19 debian-style scvim-check-if-plugin-is-active, brought upstream - ds -* 2010-10-19 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr -* 2010-10-19 partial fix for bugs item #2994009 - seems to fix LFPar but not LFCub. More work needed - ds -* 2010-10-19 DC: fix multichannel expansion - tb -* 2010-10-19 fix to demand rate unary op ugens, thanks james harkins - tb -* 2010-10-19 Ugens: LinLin/LinExp fixes - tb -* 2010-10-19 only /clearSched if RT - to fix tracker item #3033454 - tb -* 2010-10-19 UGens: binary operators - fix scalar/signal division - tb -* 2010-10-19 fix bug 2988525: SynthDef:writeDefFile appends path correctly - tb -* 2010-10-19 ProcessOSCPacket: fix possible deadlock - tb -* 2010-10-19 fix network address handling - albert graef -* 2010-11-05 fix memory issues in regular expressions: correct memory management in prString_FindRegexp - tb -* 2010-11-07 sclang: correct symlink handling - tb, ar - -SuperCollider v3.4, released 2010-07 -==================================== - -Headlines: ----------- - -* 2009-09-03 add support for Mac OS 10.5 and greater 64-bit builds of plugins and scsynth -* 2009-07-xx iphone support by Axel Balley added - ab -* 2009-07-21 EnvirGui added, a gui for livecoding/editing environments - adc -* 2009-07-24 Server.plotTree method for visualising the groups and synths on the server - sw -* 2009-07-31 mac osx text-completion feature now includes sclang objects - ds -* 2009-08-01 sclang now has a flag (Platform.ideName) for which IDE is in use (scapp, scvim, scel, sced, jsceclipse...) so that the same class-library can be used with different IDEs, enabling IDE-specific code as necessary - ds -* 2009-08-16 add emergency escape route: if sclang is caught in an infinite loop, send it a USR1 signal to break out of it - ds -* 2009-09-12 String:findRegexp and other regular expressions now available on linux as well as mac - mb,ds -* 2009-09-18 n_order and Server:reorder allow one to specify chains of nodes - sw -* 2009-09-20 simplify the Server recording interface. prepareForRecord is now optional (will be automatically invoked if you don't), and the server gui button is now just two-state "record" "stop" - ds -* 2009-10-04 support multichannel indices for Env:at - jr -* 2009-10-29 improve OSC message correctness: for convenience, sclang allows command names as symbols with no leading slash e.g. \g_new. To improve compliance with the OSC standard, the leading slash is now added to those symbols before dispatch - ds -* 2009-11-07 use nova-simd framework for performance improvements of unit generators - tb -* 2009-11-21 Event type \note supports polyphonic sustain, lag and timingOffset, and responds correctly to free and release. Add \grain event type. - jr -* 2009-11-28 windows: system "application support path", previously hardcoded as C:\SuperCollider, now settable by environment variable SC_SYSAPPSUP_PATH. Default setting for that env var (when using official wix bundle) will be [SC3INSTALLLOCATION] - ds -* 2009-12-15 sclang: 64-bit safety - tb -* 2009-12-15 sclang: performance improvement of math ops - tb -* 2010-01-02 scsynth: use osc-compilant address patterns for server/lang communication - tb -* 2010-01-24 add readline interface to sclang command-line. This is used by default when invoking "sclang" (to use the non-readline interface set the "-i" option to something other than "none") - ds -* 2010-01-24 enable GPL3 code by default - this 'upgrades' the overall binary license from GPL2+ to GPL3+, and allows supercollider to benefit from GPL3+ libraries such as libsimdmath and gnu readline - ds -* 2010-02-04 Improvements to SC.app editor: Split pane documents, AutoInOutdent - sw -* 2010-02-18 scvim: now compatible with gnu screen, opens post window using screen, making it compatible with a pure-CLI environment - ds -* 2010-02-xx add the Deployment32-64 build style for building on OS X (10.5 and greater) - jp -* 2010-03-10 SynthDef:memStore deprecated in favour of the more coherent and typeable SynthDef:add - jr -* 2010-04-11 Moved some more experimental JITLib classes to "JITLib extensions" Quark - jr - - -Bugfixes: ---------- - -* 2009-06-12 fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw -* 2009-06-18 fix for mouse coordinates bug - sw -* 2009-06-22 fix for negative bounds issue in SCUserView - sw -* 2009-06-23 avoid memory corruption when unknown OSC type tags are received. Instead forward them to sclang - jr -* 2009-06-23 Fix server crash with negative buffer numbers. - jr -* 2009-07-20 factors(): no prime factors exist below the first prime - jr -* 2009-07-21 Loudness ugen now supports LocalBuf - nc -* 2009-07-23 Fix very nasty bug in Pbindf: if a key is an array, new values were written into the incoming event, instead of the outgoing event - jh -* 2009-07-28 catch unintialised value in sc_GetUserHomeDirectory(), fixing potential memory corruption if HOME not set - ds -* 2009-08-01 SpecCentroid, fix its reaction to silence (output zero instead of NaN) - ds -* 2009-08-01 NamedControl: single default value now returns instance, not array, default values are obtained in a consistent way - jr -* 2009-08-04 fix the CPU-usage issue when calling plain "./sclang" from the terminal on OSX (seems it was caused by a bug in how OSX handles poll() calls) - ds -* 2009-08-15 LinPan2: fix initialisation issue - panning was not correctly applied during the first calc block - ds -* 2009-09-28 Workaround for faded colours in HTML docs - sw -* 2009-09-13 fix PV_MagShift argument handling, so that the defaults mean no-change, matching the behaviour of PV_BinShift - ds -* 2009-09-20 warn about weirdness of Float:switch - ds -* 2009-09-30 prevent NaN output from SpecFlatness when input is silence - ds -* 2009-10-16 fix cropping issue in printing SuperCollider.app documents - cq -* 2009-10-17 many phase-vocoder (PV_) ugens previously didn't handle the DC/nyquist bins as expected. fixed most of these (PV_MagAbove, PV_MagBelow, PV_MagClip, PV_LocalMax, PV_BrickWall, PV_MagSquared, PV_BinWipe, PV_CopyPhase, PV_Max, PV_RandComb) - ds -* 2009-11-01 fix audio rate arg problem in PlayBuf - jp -* 2009-11-02 fix amplitude-convergence issue in Pan2, Balance2, LinPan2, XFade2, which could sometimes result in sound despite zero amp, as discovered by jh - ds -* 2009-11-03 fix unsafe implementation of methods that allow sending collections to buffers - jr -* 2009-11-04 fix signalRange for MouseX, MouseY and KeyState, so that the range message works now - jr -* 2009-11-19 Fix for PV chains and LocalBuf - sw -* 2009-12-14 fix uninitialised variable in Pulse (could sometimes cause small glitch on init), thanks to rhian lloyd - ds -* 2010-01-10 Demand ugens can now handle more than 32 channels, thanks Patrick Borgeat for the patch - ds -* 2010-02-05 scsynth now respects the -D commandline option when running in NRT mode - ds -* 2010-02-11 Fix for nowExecutingPath with Routines - sw -* 2010-02-23 Performance fixes for SCUserView - sw -* 2010-02-25 Fix interpolation / indexing problem in VDiskIn that caused slight pitch fluctuations - jp -* 2010-03-11 SequenceableCollection:reduce no longer returns nil if the collection has only 1 element - ds -* 2010-03-28 fix memory leak of empty command line, for interactive sclang mode - tb -* 2010-03-29 main menu for Mac lang editor app: correction to key for evaluate selection, used to be return, now return+shift - nc -* 2010-04-19 fix missing font issue in Plotter -jr - -Other additions/improvements: ------------------------------ - -* 2009-06-11 Evaluate Selection menu command - sw -* 2009-06-23 allow remote apps to send type chars - jr -* 2009-06-27 build 32bit sclang on x86_64 - tb -* 2009-07-xx efficiency improvements on some UGens - tb -* 2009-07-xx improve Quarks use of svn for smoother user experience - ds -* 2009-07-22 catch the case when a user tries to compile into a synthdef, a unary/binary operator that the server can't apply - jh -* 2009-08-29 String:toUpper and String:toLower - ds -* 2009-09-06 Boolean:while now throws an informative error, since Boolean:while has no particular use but is often used in error by beginners in code where Function:while is intended - ds -* 2009-09-12 method FunctionDef:makeEnvirFromArgs allows to create template events from a function - jr -* 2009-09-30 Error is now posted if maxSynthDefs exceeded -sw -* 2009-11-03 TwoWayIdentityDictionary has a removeAt method now - jr -* 2009-11-04 update of deferredTaskInterval from 0.038 to 0.01667 - fo -* 2009-11-07 improved PyrSlot typesafety - tb -* 2009-11-23 menu system improvements in Windows IDE - mv -* 2009-12-13 tidyups for "sclang when on osx but not in sc.app" - ds -* 2009-12-13 added lincurve and curvelin methods for numbers and UGens - jr -* 2010-01-01 OSCresponder and OSCresponderNode respond equally to messages with or without preceding slash - jr -* 2010-01-04 sclang: deprecated Proutine - switch back to the original Prout -* 2010-01-06 UnitTest Quark improved, added script support - jr -* 2010-01-23 Improved NodeProxy and ProxySpace helpfiles. Added proxy composition syntax to NodeProxy - jr -* 2010-01-30 Make multichannel plotting easier. If no numChannels is given, find out automatically - jr -* 2010-01-31 add new LOOP1 macro - tb -* 2010-01-31 use c99 log2 functions for sc_log2 - tb -* 2010-02-09 rearrangement of supercollider source code tree - ds -* 2010-02-11 Server:default_ now assigns to s by default. Settable with flag - sw -* 2010-02-27 removed SCAnimationView and added SCUserView:animate_ - fo -* 2010-03-10 SCPen:setSmoothing changed to SCPen:smoothing_, harmonised change with swingosc - ds -* 2010-03-23 exponentiation for Complex numbers - jr -* 2010-xx-xx many helpfiles improved - various authors -* 2010-03-30 Image class added, a redirect for SCImage or JSCImage - hr -* 2010-03-30 Pitch ugen ability to output clarity measure (by default not activated, for backwards compat) - ds - -SuperCollider v3.3.1, released 2009-06-19 -========================================= - -Headlines: ----------- - -* 2009-05-11 SCWindow additions for visible, visible_, unminimize - cq -* 2009-05-17 server guis (on osx) now indicate which one is currently default - adc -* 2009-05-18 enabled control rate versions of Ball, TBall and Spring - mb -* 2009-05-18 LID support for setting "MSC" state as well as "LED" on devices - ds -* 2009-06-19 patched for compatibility with Safari 4, fixing a lockup issue when opening help docs - ar - -Bugfixes: ---------- - -* 2009-05-11 fix keyword addressing for the order: argument - jmc -* 2009-05-15 update libsndfile to 1.0.20 to fix security issues (overflow vulnerabilities) in libsndfile - ds -* 2009-05-20 fix bug #2790649, "very large SimpleNumber:series can crash sclang" - ds -* 2009-05-25 mac icons for document types .quark .scd .rtfd were omitted from the app bundle, now fixed - ds -* 2009-06-02 EnvGen: fix off by one block latency in envelope attacks and releases - jr -* 2009-06-12 bug fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw -* 2009-06-12 mouse coordinates fix, deprecate SCUserView:mousePosition - sw -* 2009-06-17 some issues fixed in SCUserView - cq -* 2009-06-20 fix redirect for Stethoscope - adc - -Other additions/improvements: ------------------------------ - -* 2009-05-05 fixes/improvements to cocoabridge primitives - cq -* 2009-05-06 SCImage various minor improvements - cq -* 2009-05-16 optimisation for scrollview drawing, remove VIEWHACK - sw -* 2009-05-xx various documentation updates - various -* 2009-05-xx various improvements to ubuntu-debian packaging scripts - ds, am -* 2009-05-20 SynthDef:writeOnce now available as an instance method as well as a class method - ds -* 2009-06-11 sc.app gets a menu command for "Evaluate selection" - sw -* 2009-06-17 adjusted SCKnob to use relative mouse coordinates - jm -* 2009-06-17 small fix to SConstruct to allow for new Debian X11 location when compiling on linux - mb -* 2009-06-19 Blip ugen: prevent sound blowup by never letting numharm be less than 1 - fo -* 2009-06-20 SCPen: fillStroke changed default from draw(4) to draw(3) - fo -* 2009-06-21 Fold, Clip and Wrap can now modulate the low and high inputs. - -SuperCollider v3.3, released 2009-04-30 -======================================= - -Headlines: ----------- -* 2008-04-08 scvim is now part of the distro - ds -* 2008-04-20 improvements to MIDI sysex handling - added sysex parsing directly in source - thanks to charles picasso -* 2008-07-12 scsynth on Mac can now use separate devices for audio input vs audio output. Thanks to Axel Balley for much of the work on this, also a bit by ds. -* 2008-07-12 PlayBuf, RecordBuf, BufWr, BufRd, ScopeOut - used to be limited to 16-channel audio maximum. Now can handle massively multichannel audio - ds -* 2008-07-19 Buffer:normalize method added - ds -* 2008-07-23 FFT and IFFT added option for zero-padding, by optional "framesize" argument - ds -* 2008-09-03 new VDiskIn ugen - jp -* 2008-10-08 SCImage for manipulating bitmap image objects (mac only) - ch -* 2008-10-09 LocalBuf system to allow synths to manage their own purely-local buffers - jr -* 2008-10-17 Added "-P" option to scsynth (accessible as s.options.restrictedPath) to allow restricting which paths scsynth is allowed to read/write - ds -* 2008-10-18 new PartConv ugen, performs efficient frequency-domain convolution - nc -* 2008-10-26 support on mac for "modal windows/sheets" (for user dialogs etc) - sw -* 2008-xx-xx various behind-the-scenes efficiency improvements, for a sleeker audio server that can do more on a given machine - various contributors -* 2008-11-01 add BEQSuite filter UGens (blackrain, jp) -* 2008-11-11 add Pfxb pattern - jr -* 2008-11-25 new EZPopUpMenu - jm -* 2008-11-29 Pitch ugen can now also track the pitch of control-rate signals - mb -* 2008-11-30 Drag and drop paths from Finder to Documents and SCViews - sw -* 2008-12-03 added PV_Div ugen for complex division - ds -* 2008-12-07 added PV_Conj ugen for complex conjugate - ds -* 2008-12-15 new ViewRedirect for easier cross-platform gui syntax. e.g. Window now redirects to SCWindow or JWindow. ds & jm -* 2008-12-15 revised and updated all SC Gui documentation. New gui introduction. New SCUserView subclassing tutorial. - jm -* 2008-12-15 the /done message for Buffer allocation/free/etc now also includes the buffer index - jt -* 2008-12-15 added methods to SCFreqScope for "special" SynthDef, and for visualising frequency responses - ds -* 2008-12-18 the main windows version of sc is now called "SuperCollider" rather than "PsyCollider" (although psycollider is the name of the code editor). SuperCollider on windows now has a different (better? who knows) installer, uses the main sc3 icon, and has some other tweaks that make it different from version 3.2 - ds -* 2008-12-19 new EZListView - jm -* 2009-01-02 sced (the gedit sc plugin) is now part of the distro - mb/artem -* 2009-01-06 SendReply UGen - jr -* 2009-01-06 VDiskIn sends file position to client - jr -* 2009-01-12 map audio to SynthDef controls. new OSC messages n_mapa and n_mapan. - jp, jr, rk -* 2009-01-13 relativeOrigin=true. SC's coordinate system in container views and user views are now by default relative. -* 2009-01-15 SCLevelIndicator view added - sw -* 2009-01-16 Scale and Tuning classes added - tw -* 2009-01-17 SuperColliderAU (scsynth as a Mac OSX "Audio Unit") added to main distribution - gr -* 2009-02-03 EZKnob revised and now part of distro - br, jm -* 2009-02-23 SystemActions refactored - jr -* 2009-02-23 SCMenuItem, SCMenuGroup, and SCMenuSeparator for user customisable menus - sw -* 2009-02-23 LFGauss UGen added - jr -* 2009-03-14 Added GeneralHID based patterns PhidKey and PhidSlot - mb - -Bugfixes: ---------- -* 2008-05-20 fix for the special case when 0.2.asFraction beachballs the lang (bug id 1856972) - jr -* 2008-05-20 fix slight mistake in the defaults printed by scsynth on command-line (bug id 1953392) - ds -* 2008-07-24 Routine / AppClock fix setting the clock of the thread (bug id 2023852) - jr -* 2008-09-16 stability fixes to FFT and IFFT - ds -* 2008-09-27 fix TExpRand.ar - ds -* 2008-11-11 SystemSynthDefs.numChannels can now be set from the startup file - jr -* 2008-11-24 avoid FFT failure when buffer not allocated - jr -* 2008-11-29 resolved inconsistency in Server:waitForBoot - function is always executed in a Routine, whether or not the server is booted - ds -* 2008-12-07 FlowView setting inital margin and gap fixed (bug id 1986059) - jh -* 2008-12-07 OSCpathResponder fixed (bug id 2021481) - jh -* 2009-01-08 b_readChannel fixed (bug id 1938480) - mb -* 2009-01-08 MIDIIn.connect on Linux fixed (bug id 1986850) - mb -* 2009-01-09 Tabbing in SCTextView - sw -* 2008-08-23 fix for sclang crashing sometimes when compiling erroneous code (bug id 2022297) - rb -* 2009-01-18 SCScrollView relativeOrigin glitch fixed (bug id 2508451) - jr, sw -* 2009-01-28 Fixed QuartzComposer view bounds bug - sw -* 2009-02-21 NodeProxy handles groups more consistently - jr -* 2009-04-16 asFraction fix by JMcC - jr - -Other additions/improvements: ------------------------------ -* 2008-03-22 added open Method and link handling to SCTextView - sw -* 2008-04-04 SoundFile:toCSV - ds -* 2008-04-29 buffer UGens now post a warning (rather than failing silently) if buffer channels doesn't match num ins/outs - ds -* 2008-07-14 Deprecated rendezvous in favour of zeroConf - sw -* 2008-09-xx various code improvements, including compiling for 64-bit linux - tb -* 2008-10-03 improvements to standalone build - jp -* 2008-10-03 SCEnvelopeView remembers drawing order. - sw -* 2008-10-05 Maintain initial offset when dragging on an Envelope View node. This avoids nodes jumping to a new position on mouse down. - sw -* 2008-10-05 Enabled gridOn, gridResolution, gridColor, timeCursorOn, timeCursorPosition, and timeCursorColor for SCSoundFileViews. - sw -* 2008-10-31 thisProcess.pid - sclang now can know what its process id is - ds -* 2008-11-21 support for LocalBuf in FFT UGens - jr -* 2008-11-27 SC3 will ignore ugens/class-files in folders named "ignore". Previously the name has been "test" - ignoring folders named "test" is now deprecated and will be removed - ds -* 2008-12-06 Added Main:recompile to allow recompiling from code (SC.app only so far) - sw -* 2008-12-08 Added custom drag label for SCView - sw -* 2008-12-15 Buffer's done osc reply now includes the bufnum - jt -* 2008-12-20 Help tree in help menu (OSX) - sw -* 2008-12-24 EZSLider and EZNumber now have an enclosing containers, as well labelPosition =\left, \right, or \stack modes - jm -* 2009-01-03 Help browser text is editable/executable (CocoaGUI) - sw -* 2009-01-04 Escape exits modal and fullscreen states (OSX) - sw -* 2009-01-08 interface change to ProxySpace.stop (now stops all proxies, just like free/end/clear) - jr -* 2009-01-08 improved Ndef implementation, stores values in an internal ProxySpace, Ndef takes server names for multiple servers. - jr -* 2009-01-08 improved ProxyMixer implementation, added NdefMixer. - adc -* 2009-01-11 Added class browser to help menu (OSX) - sw -* 2009-01-20 New Cocoa based SCTextField - sw -* 2009-01-28 More helpful error string for operation cannot be called from this Process - sw -* 2009-02-23 CocoaDialog takes allowsMultiple arg rather than maxItems - sw - - -SuperCollider v3.2, released 2008-02-21 -======================================= - -Headlines: ----------- -* 2007-11-xx new suite of machine listening ugens - Loudness, BeatTrack, Onsets, KeyTrack, SpecCentroid, SpecPcile, SpecFlatness - nc, ds -* 2008-01-06 FreeBSD compatibility - hb -* 2008-01-10 Quarks updating on OSX should now be easier for first-time users; commands are run in a separate terminal window - ds -* 2008-01-15 "Advanced find" in Mac interface - jt -* 2008-01-20 Buffer.copy changed to match other .copy methods - now copies language-side object rather than server buffer. Buffer.copyData can be used to copy data from one server buffer to another - jh -* 2008-01-20 - add volume controls to the Server and Server guis - jp -* 2008-01-xx Pattern library implementation changes, Pfx, Pbus, Pgroup etc. - rk, jr, jh -* 2008-01-26 TDuty outputs trigger first, not level. for backwards compatibility TDuty_old - jr -* 2008-02-03 moved the search location for "startup.rtf" on Mac - now searches in system, then user, "Application Support/SuperCollider" folders - ds - -Bugfixes: ---------- -* 2007-11-16 bug fixes for MIDIIn in connect/disconnect methods. split MIDIOut.sysex into user method and primitive (breaks with previous implementation). default value for uid arg in MIDIOut.new. - mb -* 2007-11-18 fixed a bug in prTry / protect - jr -* 2007-11-27 lock avoided in nextTimeOnGrid -* 2007-12-12 Node-setn fixed when using integers as control indices - jr -* 2008-01-16 fixed Pen: bug with fillRect, fillOval and fillColor (bugtracker id 1837775) - jt -* 2008-01-20 CheckBadValues rate-checking was too restrictive - ds -* 2008-01-20 fix for Saw and Pulse's offset noise on first instantiation, thanks to hisao takagi - ds -* 2008-01-26 TDuty / Duty does not drift anymore - jr -* 2008-02-07 Fixed hang and incorrect background drawing in Cocoa scrollviews - sw - -Other additions/improvements: ------------------------------ -* 2007-11-16 MIDIOut.connect and disconnect - mb -* 2007-11-18 added T2A UGen - jr -* 2007-11-18 Refactoring of Document class, including new CocoaDocument class to handle the Cocoa-specific (SuperCollider.app) document management - ds -* 2007-11-18 More macros available in the plugin API for UGen programmers: GET_BUF, SIMPLE_GET_BUF, FULLRATE, RGET, RPUT - ds -* 2007-11-20 UnixPlatform:arch method - jp -* 2007-11-20 FFTTrigger UGen - a ugen to create "fake" (empty) FFT chains - jp -* 2007-11-21 StartUp protects its added functions from each other - if one fails this no longer prevents others from running - ds -* 2007-11-25 added Pclutch and moved StreamClutch to common - jr -* 2007-11-27 Function:inEnvir added - jh -* 2007-12-12 added Collection.flatIf - jr -* 2007-12-15 added control rate functionality to NumRunningSynths - jr -* 2008-01-08 martin rumori's DiskIn bugfix and loop enhancement - jp -* 2008-01-10 String:runInTerminal method - ds -* 2008-01-11 poll now works for scalar ugens - jr -* 2008-01-15 Collection:maxIndex and Collection:minIndex - nc -* 2008-01-24 Server.options.rendezvous to (de)activate Rendezvous if desired - ds -* 2008-01-24 demand ugens accept audio rate inputs correctly - jr -* 2008-01-26 added Dbufwr ugen, for writing to buffers from a demand ugen chain - jr -* 2008-01-27 Main:version and associated methods for programmatically determining which version SC is - ds -* 2008-02-03 Server:defaultRecDir class variable, to allow user to specify default rec location - ds -* 2008-02-07 SCScrollView and SCScrollTopView no longer fire their action when scrolled programatically - sw - - -SuperCollider v3.1.1, released 2007-11-16 -========================================= -Bugfixes: ---------- -* 2007-11-09 re-organized the main help file - rb -* 2007-11-14 fix for .asStringPrec, to avoid crashes on intel systems for large precision values - jt - -Other additions/improvements: ------------------------------ -* 2007-11-14 added a preprocessor to the interpreter - jr -* 2007-11-14 added a startup message specifying how to get help - rk - - -SuperCollider v3.1, released 2007-10-31 -======================================= -(changes below are since 2007-09-22, for first ever point release) - -Headlines: ----------- -* 2007-09-27 SparseArray class added - jr -* 2007-09-28 Help.gui added - ds -* 2007-10-01 FFT and IFFT rewrite - now using more efficient libs, also allows user to vary the overlap and the window type, also large-sized FFTs are possible - ds -* 2007-10-02 UnpackFFT and PackFFT added - these allow for flexible frequency-domain manipulations inside synths - ds -* 2007-10-04 Pkey and Pif added - hjh -* 2007-10-05 reformed Patterns - all patterns accept patterns as arguments - jr -* 2007-10-08 change to UGen plugin loading fixes the audio dropout issue that various users have experienced - rb -* 2007-10-08 GeneralHID crossplatform HID wrapper - mb -* 2007-xx-xx many improvements to Quarks package-management system. gui improvements, dependency-handling improvements, etc - various -* 2007-10-20 added a Glossary file - sw -* 2007-10-xx various new help files added, and many help files improved - various -* 2007-10-26 changed Cmd-? to Cmd-D in lieu of the default help menu shortcut in Leopard. Also changed Cmd-Shift-K (clear post window) to Cmd-Shift-C to avoid accidental recompiles. - rb - -Other additions/improvements: ---------------------------- -* 2007-09-22 change log added, much rejoicing -* 2007-09-25 added packagesource.sh script to produce source code bundles - ds -* 2007-09-28 IdentityDictionary:doesNotUnderstand now warns if adding a pseudo-method which overrides a real method - jr -* 2007-09-28 String:openHTMLFile added - ds -* 2007-10-04 Integer:collect and Integer:collectAs methods added - ds/jr -* 2007-10-05 Dwhite:new and Dbrown:new have default values for lo and hi - jr -* 2007-10-10 SC no longer automatically writes data (synthdefs, archive.scxtar) to the application folder - instead writes to "app support". This fixes problems with running SC using an unprivileged user account - ds -* 2007-10-16 SequenceableCollection:median speed improvement, approx ten times faster in many cases - ds -* 2007-10-20 Object:deprecated and DeprecatedError added to allow for method deprecation - sw -* 2007-10-21 Amplitude : attackTime and releaseTime can be modulated now - jr -* 2007-10-25 Collection : histo method improved and moved from mathLib to common - jr -* 2007-10-30 improvements to cocoa Gui, including SCUserView improved to support layering and own draw hook - jt, sciss -* 2007-10-31 refactored Pbrown, added Pgbrown - jr - -Bugfixes: ---------- -* 2007-09-29 takekos bug fixed (obscure issue with garbage collection in arrays) - jm -* 2007-10-01 fixed off by one bug in Dswitch and Dswitch1 that caused a server crash - jr -* 2007-10-09 fixed deadlock and other problems in NSAttributedStringAdditions.m - rb -* 2007-10-11 fixed inaccurate automatic determination of whether SC is running as standalone - ds -* 2007-10-14 .quark files now saved correctly as plain-text, not RTF - ds -* 2007-10-24 fixed a bug in Pbeta - jp diff -pruN 1:3.8.0~repack-2/CHANGELOG_archive.md 1:3.10.0+repack-0.1/CHANGELOG_archive.md --- 1:3.8.0~repack-2/CHANGELOG_archive.md 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/CHANGELOG_archive.md 2018-08-28 01:12:47.000000000 +0000 @@ -0,0 +1,3389 @@ +See CHANGELOG.md for recent releases. + + +## [Version-3.6.6](https://github.com/supercollider/supercollider/tree/Version-3.6.6) (2013-11-27) +[Full Changelog](https://github.com/supercollider/supercollider/compare/Version-3.6.5...Version-3.6.6) + +**Enhancements** + +- Enhance OSX readme for 3.6.6 [\#1001](https://github.com/supercollider/supercollider/issues/1001) +- "Exception when parsing synthdef: corrupted synthdef" - report which synthdef caused the error. [\#904](https://github.com/supercollider/supercollider/issues/904) +- "start coding" window title [\#898](https://github.com/supercollider/supercollider/issues/898) +- default file extension missing [\#838](https://github.com/supercollider/supercollider/issues/838) + +**Fixed bugs:** + +- scide: Object::connect: No such slot ScIDE::DocumentManager::updateCurrentDocContents\(int, int, int\) in ../editors/sc-ide/core/doc\_manager.cpp:907 [\#985](https://github.com/supercollider/supercollider/issues/985) +- sclang consumes high CPU when opening a session with multiple files [\#980](https://github.com/supercollider/supercollider/issues/980) +- \[ide\] help-\>"how to use the supercollider ide" detaches help browser [\#976](https://github.com/supercollider/supercollider/issues/976) +- NdefGUI and related don't show vol labels in IDE [\#965](https://github.com/supercollider/supercollider/issues/965) +- Primitive error in \_ScIDE\_SetDocTextMirror called from openDocument [\#964](https://github.com/supercollider/supercollider/issues/964) +- ide document: errors when closing document windows during language init [\#961](https://github.com/supercollider/supercollider/issues/961) +- SC\_QT=OFF build flag still needs QT on OSX [\#959](https://github.com/supercollider/supercollider/issues/959) +- Sending to a NetAddr with broadcast IP fails [\#930](https://github.com/supercollider/supercollider/issues/930) +- supernova: setting an array onto a control that doesn't exist will set value that does exist [\#916](https://github.com/supercollider/supercollider/issues/916) +- BinaryOpUGen 'div' operator: off-by-one and not integer division [\#907](https://github.com/supercollider/supercollider/issues/907) +- SimpleNumber-curvelin broken for negative numbers [\#902](https://github.com/supercollider/supercollider/issues/902) +- switching session: cancel loses unsaved documents and dialog blocks reviewing them [\#899](https://github.com/supercollider/supercollider/issues/899) +- Ramp UGen fails in LTI test [\#888](https://github.com/supercollider/supercollider/issues/888) +- prSimpleNumberSeries throws incomprehensible error for bad inputs [\#882](https://github.com/supercollider/supercollider/issues/882) +- uiugens: osx uses deprecated API [\#880](https://github.com/supercollider/supercollider/issues/880) +- A few UGens failing the unit tests [\#879](https://github.com/supercollider/supercollider/issues/879) +- Alias Manager depreated: sc\_ResolveIfAlias will have to be rewritten [\#875](https://github.com/supercollider/supercollider/issues/875) +- NodeProxy: multi-channel expansion broken for SynthDefs [\#872](https://github.com/supercollider/supercollider/issues/872) +- git clone --recursive is broken [\#866](https://github.com/supercollider/supercollider/issues/866) +- Windows: No SCIDE-icon [\#854](https://github.com/supercollider/supercollider/issues/854) +- Linux FFT/IFFT: Hann window with hop size 0.25 sounds wrong [\#851](https://github.com/supercollider/supercollider/issues/851) +- SendReply kills server [\#850](https://github.com/supercollider/supercollider/issues/850) +- SendReply.ar crashes the server [\#841](https://github.com/supercollider/supercollider/issues/841) + +**Closed issues:** + +- Error in Help - Getting Started Tutorial Series - Section 2 [\#981](https://github.com/supercollider/supercollider/issues/981) +- Crash in creating SynthDef [\#957](https://github.com/supercollider/supercollider/issues/957) +- supernova compilation error [\#951](https://github.com/supercollider/supercollider/issues/951) +- supercollider-gedit plugin not loading [\#950](https://github.com/supercollider/supercollider/issues/950) +- OSCFunc addr.hostname returns nil [\#933](https://github.com/supercollider/supercollider/issues/933) +- iOS build, doesn't. [\#927](https://github.com/supercollider/supercollider/issues/927) +- Disable mathjax - an unused feature that can cause problems [\#909](https://github.com/supercollider/supercollider/issues/909) +- DiskIn channel limitation [\#901](https://github.com/supercollider/supercollider/issues/901) +- sclang \(readline\) cannot quit [\#897](https://github.com/supercollider/supercollider/issues/897) +- PV\_Copy breaks edge model [\#896](https://github.com/supercollider/supercollider/issues/896) +- linux \(debian x64\) compilation error [\#894](https://github.com/supercollider/supercollider/issues/894) +- osx/wii uses deprecated/removed API [\#876](https://github.com/supercollider/supercollider/issues/876) +- drawFunc drawingEnabled\_\(false\) not respected by refresh [\#869](https://github.com/supercollider/supercollider/issues/869) +- file browser lacks default [\#868](https://github.com/supercollider/supercollider/issues/868) +- Issue Tracker: user can't enter categories/lables [\#860](https://github.com/supercollider/supercollider/issues/860) +- Windows \(installer\): no program shortcuts [\#857](https://github.com/supercollider/supercollider/issues/857) +- Windows: installer does not register in system [\#856](https://github.com/supercollider/supercollider/issues/856) +- Windows: no file associations [\#855](https://github.com/supercollider/supercollider/issues/855) +- Server load percentage on Windows off by factor 100 [\#849](https://github.com/supercollider/supercollider/issues/849) +- scsynth sound stops in 3.5 not in 3.4 [\#343](https://github.com/supercollider/supercollider/issues/343) + +**Merged pull requests:** + +- class library: pbind midi type - fix for sending sysex [\#947](https://github.com/supercollider/supercollider/pull/947) ([redFrik](https://github.com/redFrik)) +- supernova: TCP support [\#757](https://github.com/supercollider/supercollider/issues/757) +- sclang crashes when 'connect'ing a NetAddr for TCP [\#755](https://github.com/supercollider/supercollider/issues/755) +- EnvGen's gate argument can crash the server [\#753](https://github.com/supercollider/supercollider/issues/753) +- s.sync returns too soon after buffer load [\#750](https://github.com/supercollider/supercollider/issues/750) +- Broken color dialog [\#749](https://github.com/supercollider/supercollider/issues/749) +- Triple-click line selection only works when clicking on strings \[mac\] [\#748](https://github.com/supercollider/supercollider/issues/748) +- When undocked, docklets may appear off screen, impossible to move [\#730](https://github.com/supercollider/supercollider/issues/730) +- malformed YAML crashes interpreter [\#728](https://github.com/supercollider/supercollider/issues/728) +- SequenceableCollection resamp0/1 broken \(e.g. SplayAz\) [\#727](https://github.com/supercollider/supercollider/issues/727) +- Shaper should guard against negative buffer numbers [\#722](https://github.com/supercollider/supercollider/issues/722) +- wavetable oscillators broken for large wavetables [\#720](https://github.com/supercollider/supercollider/issues/720) +- prevent buffer overrun in IO UGens [\#716](https://github.com/supercollider/supercollider/issues/716) +- crash report Exception Type: EXC\_BAD\_ACCESS \(SIGSEGV\) [\#715](https://github.com/supercollider/supercollider/issues/715) +- Dialog.openPanel hangs on Windows XP [\#707](https://github.com/supercollider/supercollider/issues/707) +- SCTextView cmd-d crash [\#702](https://github.com/supercollider/supercollider/issues/702) +- cmd+B quite server as default is really unsafe for performance [\#699](https://github.com/supercollider/supercollider/issues/699) +- Knob does not allow change of background color [\#697](https://github.com/supercollider/supercollider/issues/697) +- Platform.getMouseCoords does not work [\#696](https://github.com/supercollider/supercollider/issues/696) +- scope issues: dies with CmdPeriod, not old behaviour [\#695](https://github.com/supercollider/supercollider/issues/695) +- Spawner:suspend doesn't execute EventStreamCleanup actions [\#681](https://github.com/supercollider/supercollider/issues/681) +- IDE window looses focus when subwindow is closed without action \(OS X\) [\#678](https://github.com/supercollider/supercollider/issues/678) +- selected text gets deselected when IDE editor window gets clicked on to get it to front [\#677](https://github.com/supercollider/supercollider/issues/677) +- "External-file-change" dialog pops up when saving file in IDE [\#673](https://github.com/supercollider/supercollider/issues/673) +- Problems with DragSource [\#671](https://github.com/supercollider/supercollider/issues/671) +- Key commands like STOP \(cmd + . \) don't work in Help window when it's detached [\#668](https://github.com/supercollider/supercollider/issues/668) +- ndef play producing click when evaluated [\#664](https://github.com/supercollider/supercollider/issues/664) +- Ndef channel wrapping broken for many channels [\#658](https://github.com/supercollider/supercollider/issues/658) +- Window's "detached" state is not persisted if it was closed before quit [\#655](https://github.com/supercollider/supercollider/issues/655) +- Crash when re-opening undocked help window [\#650](https://github.com/supercollider/supercollider/issues/650) +- crash on recompile if OSCFunc receiving messages on non-sclang port [\#649](https://github.com/supercollider/supercollider/issues/649) +- Array:slide bug [\#645](https://github.com/supercollider/supercollider/issues/645) +- got NotYetImplementedError with 3.6beta2 [\#641](https://github.com/supercollider/supercollider/issues/641) +- jitlib guis hardly readable [\#637](https://github.com/supercollider/supercollider/issues/637) +- Server -O and -I options causes seg fault and crashes sclang [\#636](https://github.com/supercollider/supercollider/issues/636) +- crash when closing tab [\#635](https://github.com/supercollider/supercollider/issues/635) +- \[SC-IDE\]\[MAC\] cmd+f \(resp. cmd+r\) doesn't work in the IDE [\#634](https://github.com/supercollider/supercollider/issues/634) +- Invoking Help does not bring it to front if: \(1\) it is in a hidden tab AND \(2\) the query string is empty [\#631](https://github.com/supercollider/supercollider/issues/631) +- command FIFO Full again [\#613](https://github.com/supercollider/supercollider/issues/613) +- Scale with scale name doesn't work as described [\#611](https://github.com/supercollider/supercollider/issues/611) +- Drag text from document to GUI deletes the text [\#610](https://github.com/supercollider/supercollider/issues/610) +- Auto-indent doesn't respect string and symbol literals [\#609](https://github.com/supercollider/supercollider/issues/609) +- SoundFileView selectNone and selectAll does not work [\#607](https://github.com/supercollider/supercollider/issues/607) +- QWindow, QView background color alpha broken on 3.6beta? [\#606](https://github.com/supercollider/supercollider/issues/606) +- Crash when evaluating code in non-code files [\#605](https://github.com/supercollider/supercollider/issues/605) +- 3.5.6 with sc3-plugins: SCDoc.renderAll\(true\) fails [\#604](https://github.com/supercollider/supercollider/issues/604) +- Evaluate line doesn't work if text wraps [\#601](https://github.com/supercollider/supercollider/issues/601) +- crash in autocompleter [\#600](https://github.com/supercollider/supercollider/issues/600) +- inconsistent behavior of Env.duration\_ [\#598](https://github.com/supercollider/supercollider/issues/598) +- multichannel Envelope.plot broken [\#592](https://github.com/supercollider/supercollider/issues/592) +- Cmd-I doesn't work from the Command line pane [\#588](https://github.com/supercollider/supercollider/issues/588) +- The post window seems to use double the tab size of documents [\#586](https://github.com/supercollider/supercollider/issues/586) +- Freqscope and Scope can't be used at the same time [\#580](https://github.com/supercollider/supercollider/issues/580) +- Shift-up/down at start/end of file cancels the selection [\#579](https://github.com/supercollider/supercollider/issues/579) +- Close brace } put at the wrong indent level in new SC IDE editor [\#578](https://github.com/supercollider/supercollider/issues/578) +- Can't type \[ \(open bracket\) character with Spanish keyboard [\#577](https://github.com/supercollider/supercollider/issues/577) +- Regexp with "^" makes sc-ide hang [\#576](https://github.com/supercollider/supercollider/issues/576) +- File extension warning when saving a new file [\#575](https://github.com/supercollider/supercollider/issues/575) +- There are problems with copying text from the post window [\#574](https://github.com/supercollider/supercollider/issues/574) +- Do not open HelpBrowser on application start if it was closed in the restored window state [\#572](https://github.com/supercollider/supercollider/issues/572) +- IDE help browser incorrectly shows "old help" warning [\#571](https://github.com/supercollider/supercollider/issues/571) +- Hitting Cmd/Ctrl while inertial scrolling causes rapid zoom in / out [\#568](https://github.com/supercollider/supercollider/issues/568) +- Deleting a session will lose unsaved documents w/o warning [\#565](https://github.com/supercollider/supercollider/issues/565) +- Save All is useless with one or more read only documents open [\#564](https://github.com/supercollider/supercollider/issues/564) +- Inline help: example code cannot be executed with regular keyboard shortcut [\#563](https://github.com/supercollider/supercollider/issues/563) +- Document tabs can become unusably small [\#562](https://github.com/supercollider/supercollider/issues/562) +- Cmd+Period doesn't work in Qt GUI windows [\#561](https://github.com/supercollider/supercollider/issues/561) +- Inaccurate wording in language configuration message box [\#559](https://github.com/supercollider/supercollider/issues/559) +- Aggressive method call aid within class method arg lists [\#557](https://github.com/supercollider/supercollider/issues/557) +- Mouse pointer vanishes when modifier keys are pressed [\#554](https://github.com/supercollider/supercollider/issues/554) +- changing file type should update/reload CodeEditor [\#551](https://github.com/supercollider/supercollider/issues/551) +- Win XP only: TempoClock scheduling crashes sclang [\#547](https://github.com/supercollider/supercollider/issues/547) +- Help browser: progress indicator stuck when opening links in code editor [\#546](https://github.com/supercollider/supercollider/issues/546) +- Help browser: can not evaluate a single line in code examples [\#545](https://github.com/supercollider/supercollider/issues/545) +- Help browser: code examples not syntax highlighted [\#544](https://github.com/supercollider/supercollider/issues/544) +- Cmd-Period doesn't work with help focussed. [\#541](https://github.com/supercollider/supercollider/issues/541) +- Cmd-Return / Shift-Return inconsistency in IDE and lang. [\#540](https://github.com/supercollider/supercollider/issues/540) +- IDE hides when another application becomes front [\#539](https://github.com/supercollider/supercollider/issues/539) +- Cmd+Alt+\ shortcuts not saved correctly [\#538](https://github.com/supercollider/supercollider/issues/538) +- IDE hides when another application becomes front [\#537](https://github.com/supercollider/supercollider/issues/537) +- Line numbers don't match lines [\#536](https://github.com/supercollider/supercollider/issues/536) +- scapp: library menu crash [\#534](https://github.com/supercollider/supercollider/issues/534) +- Superfluous blank lines between postln lines [\#533](https://github.com/supercollider/supercollider/issues/533) +- "Save" action for read-only files should trigger "Save as" [\#532](https://github.com/supercollider/supercollider/issues/532) +- Ctrl-shift-C doesn't clear the post window in winxp [\#531](https://github.com/supercollider/supercollider/issues/531) +- call hints don't scroll [\#529](https://github.com/supercollider/supercollider/issues/529) +- wrong font spacing in QT [\#527](https://github.com/supercollider/supercollider/issues/527) +- some color configuration items don't show default values [\#526](https://github.com/supercollider/supercollider/issues/526) +- nowExecutingPath in a newly saved document [\#523](https://github.com/supercollider/supercollider/issues/523) +- Saving as .sc saves as .scd instead [\#518](https://github.com/supercollider/supercollider/issues/518) +- Shortcuts reset after quiting [\#517](https://github.com/supercollider/supercollider/issues/517) +- server does not boot [\#512](https://github.com/supercollider/supercollider/issues/512) +- Wacom Bamboo Pen & Touch crashes [\#509](https://github.com/supercollider/supercollider/issues/509) +- "maxval" ignored by Buffer.plot [\#507](https://github.com/supercollider/supercollider/issues/507) +- Autocomplete sometimes pops up when I type open-bracket [\#505](https://github.com/supercollider/supercollider/issues/505) +- drag/drop a WAV onto scide should not attempt to open it [\#502](https://github.com/supercollider/supercollider/issues/502) +- Plugging in headphones crashes scsynth [\#499](https://github.com/supercollider/supercollider/issues/499) +- Save All doesn't update all document tabs [\#497](https://github.com/supercollider/supercollider/issues/497) +- general text colors are applied everywhere [\#496](https://github.com/supercollider/supercollider/issues/496) +- \[supernova\] fix g\_dumpTree [\#494](https://github.com/supercollider/supercollider/issues/494) +- "Step forward": Cursor doesn't move if line starts with "\(" and cursor is inside [\#493](https://github.com/supercollider/supercollider/issues/493) +- Method Call Assist: infer the class of literal values as receivers [\#490](https://github.com/supercollider/supercollider/issues/490) +- Method Call Assist: Alt+Space doesn't trigger [\#489](https://github.com/supercollider/supercollider/issues/489) +- \[CRITICAL\] IDE crashes when autocompleting methods of an integer literal [\#488](https://github.com/supercollider/supercollider/issues/488) +- Sessions: Document tabs out of order sometimes [\#485](https://github.com/supercollider/supercollider/issues/485) +- QEnvelopeView does not support quadratic/cubic shapes [\#483](https://github.com/supercollider/supercollider/issues/483) +- SCDoc document browser & search broken [\#482](https://github.com/supercollider/supercollider/issues/482) +- Autocompletion box pops up when pasting text -- shouldn't [\#481](https://github.com/supercollider/supercollider/issues/481) +- Server control state problem [\#477](https://github.com/supercollider/supercollider/issues/477) +- Server-meter window errors [\#476](https://github.com/supercollider/supercollider/issues/476) +- evaluate regions when being at opening bracket [\#474](https://github.com/supercollider/supercollider/issues/474) +- Up-arrow after RET does not move the insertion point straight up [\#472](https://github.com/supercollider/supercollider/issues/472) +- Multichannel Function:plot is broken in master [\#470](https://github.com/supercollider/supercollider/issues/470) +- new lines do not scroll anymore [\#467](https://github.com/supercollider/supercollider/issues/467) +- line numbers when opening files [\#466](https://github.com/supercollider/supercollider/issues/466) +- goto next block broken [\#465](https://github.com/supercollider/supercollider/issues/465) +- \[QWebView Windows 2\] Handling of file:// in \ [\#463](https://github.com/supercollider/supercollider/issues/463) +- \[QWebView Windows 1\] Handling of file:// links [\#462](https://github.com/supercollider/supercollider/issues/462) +- session: save-as glitch [\#458](https://github.com/supercollider/supercollider/issues/458) +- Method Call Assist: fix for functional notation [\#457](https://github.com/supercollider/supercollider/issues/457) +- "Step forward": Put the cursor at the beginning of the next line [\#454](https://github.com/supercollider/supercollider/issues/454) +- ide: ctrl-enter adds strange invisible line breaks [\#451](https://github.com/supercollider/supercollider/issues/451) +- Interactive find behavior is... hyperactive [\#437](https://github.com/supercollider/supercollider/issues/437) +- Line breaks in the post window, not generated by sc code [\#436](https://github.com/supercollider/supercollider/issues/436) +- Cannot dismiss the method signature popup for a "new" class method [\#435](https://github.com/supercollider/supercollider/issues/435) +- SerialPort doneAction never called & port not properly closed? [\#434](https://github.com/supercollider/supercollider/issues/434) +- SC-ide runs its own server status thread? [\#433](https://github.com/supercollider/supercollider/issues/433) +- Questionable, but common, auto indent case [\#432](https://github.com/supercollider/supercollider/issues/432) +- Highlighting flash of just-executed code sometimes gets stuck [\#431](https://github.com/supercollider/supercollider/issues/431) +- Interpreter \*is\* running but "Interpreter is not running!" [\#425](https://github.com/supercollider/supercollider/issues/425) +- SC 3.5.4 crashes with buffers on windows 7 [\#423](https://github.com/supercollider/supercollider/issues/423) +- stack smashing crash on certain code [\#422](https://github.com/supercollider/supercollider/issues/422) +- set nowExecutingPath from scide [\#418](https://github.com/supercollider/supercollider/issues/418) +- running sclang script does not set nowExecutingPath [\#417](https://github.com/supercollider/supercollider/issues/417) +- \[SC-IDE\] Ctrl-R replace panel: Replace button doesn't replace [\#416](https://github.com/supercollider/supercollider/issues/416) +- \[SC 3.5.4\] GrainBuf SynthDef causes SC to crash [\#415](https://github.com/supercollider/supercollider/issues/415) +- Preference pane does not select default font [\#414](https://github.com/supercollider/supercollider/issues/414) +- indentation bug [\#409](https://github.com/supercollider/supercollider/issues/409) +- ctrl+c after selecting text in post window does not copy [\#408](https://github.com/supercollider/supercollider/issues/408) +- Keyboard shortcut for Shrink font in post window says 'Shink' [\#406](https://github.com/supercollider/supercollider/issues/406) +- make install fails on verify app sclang.app, and it's not fixed-up correctly [\#401](https://github.com/supercollider/supercollider/issues/401) +- Tabs don't overflow correctly [\#395](https://github.com/supercollider/supercollider/issues/395) +- Volume initialization bug [\#393](https://github.com/supercollider/supercollider/issues/393) +- Multiple clocks after fullscreen [\#390](https://github.com/supercollider/supercollider/issues/390) +- double-click behavior [\#388](https://github.com/supercollider/supercollider/issues/388) +- Syntax color settings are not saved [\#385](https://github.com/supercollider/supercollider/issues/385) +- scide: "Auto Scroll" looks like a button but it can't be clicked off [\#378](https://github.com/supercollider/supercollider/issues/378) +- Drag'n'drop in QtGui makes Sc-Client crahs [\#375](https://github.com/supercollider/supercollider/issues/375) +- Method call aid popup stays shown when main window minimized/deactivated [\#369](https://github.com/supercollider/supercollider/issues/369) +- Language Configuration broken for osx command line sclang [\#366](https://github.com/supercollider/supercollider/issues/366) +- Missing boundary check in prArrayWrapExtend [\#360](https://github.com/supercollider/supercollider/issues/360) +- MIDI listEndPoints crash [\#353](https://github.com/supercollider/supercollider/issues/353) +- GrainBuf crashes server when position = NaN [\#352](https://github.com/supercollider/supercollider/issues/352) +- GrainBuf does not check buffer inputs to see if they exist [\#341](https://github.com/supercollider/supercollider/issues/341) +- \[SC-IDE\] Preferences -\> Keyboard shortcuts & font issues [\#339](https://github.com/supercollider/supercollider/issues/339) +- \[SC-IDE\] Region Detection [\#338](https://github.com/supercollider/supercollider/issues/338) +- \[SC-IDE\] Cannot save new file [\#337](https://github.com/supercollider/supercollider/issues/337) +- \[SC-IDE\] Open class definition + file already open [\#335](https://github.com/supercollider/supercollider/issues/335) +- \[SC-IDE\] Don't open same file twice [\#328](https://github.com/supercollider/supercollider/issues/328) +- \[SC-IDE\] Can't copy text from post window [\#322](https://github.com/supercollider/supercollider/issues/322) +- \[SC-IDE\] Add .scd file extension [\#320](https://github.com/supercollider/supercollider/issues/320) +- SCDoc.rendelAll broken in 3.5 branch [\#265](https://github.com/supercollider/supercollider/issues/265) +- Plotter domainSpecs bug [\#264](https://github.com/supercollider/supercollider/issues/264) +- \[Qt\] UserView doesn't pass click count for control clicks [\#263](https://github.com/supercollider/supercollider/issues/263) +- Sending sysex is broken [\#262](https://github.com/supercollider/supercollider/issues/262) +- sc3-plugins [\#261](https://github.com/supercollider/supercollider/issues/261) +- WARNING: server 'localhost' not running. nil [\#260](https://github.com/supercollider/supercollider/issues/260) +- Server crash on polling phase of DelTapWr [\#258](https://github.com/supercollider/supercollider/issues/258) +- opening this file crashes sc.app [\#257](https://github.com/supercollider/supercollider/issues/257) +- .add fails with SynthDefs containing \> 255 controls [\#256](https://github.com/supercollider/supercollider/issues/256) +- .freqscope not working on OS X 3.5 RC2 and RC3 [\#255](https://github.com/supercollider/supercollider/issues/255) +- HrEnvelopeView Crash in Cocoa [\#254](https://github.com/supercollider/supercollider/issues/254) +- KeyTrack not working with LocalBuf [\#253](https://github.com/supercollider/supercollider/issues/253) +- SCNSObject broken under osx 64bit [\#252](https://github.com/supercollider/supercollider/issues/252) +- 3.5.rc1 - -getControlBusValue only supports local servers [\#250](https://github.com/supercollider/supercollider/issues/250) +- 0 \> Signal\[0\] causes infinite loop and memory hogging [\#249](https://github.com/supercollider/supercollider/issues/249) +- 3.5 beta 3 crash on startup after forced quit [\#247](https://github.com/supercollider/supercollider/issues/247) +- same font looks different in qt/cocoa [\#245](https://github.com/supercollider/supercollider/issues/245) +- Segault:while loops with Routine in condition + empty bodies [\#244](https://github.com/supercollider/supercollider/issues/244) +- draw methods for String [\#242](https://github.com/supercollider/supercollider/issues/242) +- Some views does not work inside a Layout [\#240](https://github.com/supercollider/supercollider/issues/240) +- escapeWindow crashes app [\#239](https://github.com/supercollider/supercollider/issues/239) +- compiling error [\#238](https://github.com/supercollider/supercollider/issues/238) +- mouseOverActions trigger normal `action' [\#237](https://github.com/supercollider/supercollider/issues/237) +- alsa midi deadlock [\#236](https://github.com/supercollider/supercollider/issues/236) +- lib fixup for scsynth and sclang [\#235](https://github.com/supercollider/supercollider/issues/235) +- Outdated About dialog [\#234](https://github.com/supercollider/supercollider/issues/234) +- Pbind makes no sound when utilized in ProxySpace environment [\#233](https://github.com/supercollider/supercollider/issues/233) +- \[win\] UnixFILE GetInt primitives return unsigned [\#231](https://github.com/supercollider/supercollider/issues/231) +- Quarks GUI info button doesn't work [\#230](https://github.com/supercollider/supercollider/issues/230) +- SCEnvelopeView broken [\#229](https://github.com/supercollider/supercollider/issues/229) +- Internal server fails to quit on reboot [\#228](https://github.com/supercollider/supercollider/issues/228) +- Segmentation fault \(no X\) [\#227](https://github.com/supercollider/supercollider/issues/227) +- scvim: crash on startup [\#226](https://github.com/supercollider/supercollider/issues/226) +- DetectSilence initialization [\#225](https://github.com/supercollider/supercollider/issues/225) +- scel + qt: Document.open from qt doesn't run the callback [\#224](https://github.com/supercollider/supercollider/issues/224) +- QButton doesn't pass in modifier keycode to button action [\#223](https://github.com/supercollider/supercollider/issues/223) +- OSX does not resolve symlinks [\#222](https://github.com/supercollider/supercollider/issues/222) +- CmdPeriod + Task + AppClock = fail [\#221](https://github.com/supercollider/supercollider/issues/221) +- Broken: A sequence of multiple Pfxs with 'isolate' [\#220](https://github.com/supercollider/supercollider/issues/220) +- CmdPeriod broken [\#219](https://github.com/supercollider/supercollider/issues/219) +- UserView graphics on linux is \*very\* slow [\#218](https://github.com/supercollider/supercollider/issues/218) +- \[plot\] superposing envelopes [\#217](https://github.com/supercollider/supercollider/issues/217) +- SCDoc search results appear in arbitrary order [\#216](https://github.com/supercollider/supercollider/issues/216) +- FreeVerb/2 does not check if inputs are audio rate. [\#214](https://github.com/supercollider/supercollider/issues/214) +- randSeed doesn't effect Drand [\#212](https://github.com/supercollider/supercollider/issues/212) +- Subsection highlighting css bug [\#211](https://github.com/supercollider/supercollider/issues/211) +- cocoa window alpha\_ [\#210](https://github.com/supercollider/supercollider/issues/210) +- Minor colorizing bug in scdoc rendering [\#209](https://github.com/supercollider/supercollider/issues/209) +- SynthDef add fails silently [\#207](https://github.com/supercollider/supercollider/issues/207) +- cmd-f should work on OSX to search in helpbrowser [\#206](https://github.com/supercollider/supercollider/issues/206) +- cmd-d should open links in new Window if selected [\#205](https://github.com/supercollider/supercollider/issues/205) +- Proposal for Helpbrowser layout [\#204](https://github.com/supercollider/supercollider/issues/204) +- a nonpositive number in a Dser ends the server: [\#203](https://github.com/supercollider/supercollider/issues/203) +- b\_allocReadChannel reads only 1024 samples [\#202](https://github.com/supercollider/supercollider/issues/202) +- \[linux\] internal server doesn't receive OSC - unresponsive [\#201](https://github.com/supercollider/supercollider/issues/201) +- Internal server \(sometimes?\) fails to connect to CoreAudio [\#200](https://github.com/supercollider/supercollider/issues/200) +- Peak broken on OS X 64-bit [\#199](https://github.com/supercollider/supercollider/issues/199) +- b\_allocReadChannel crashes supernova [\#198](https://github.com/supercollider/supercollider/issues/198) +- LFPar and LFCub return silence with ar rate as input [\#197](https://github.com/supercollider/supercollider/issues/197) +- pow wierdness [\#196](https://github.com/supercollider/supercollider/issues/196) +- DragSink [\#194](https://github.com/supercollider/supercollider/issues/194) +- GEdit plugin doesn't work in GEdit 3 [\#193](https://github.com/supercollider/supercollider/issues/193) +- Inappropriate writing inside "Program Files" causes problems [\#192](https://github.com/supercollider/supercollider/issues/192) +- Strange behaviour with Demand ugen at kr [\#191](https://github.com/supercollider/supercollider/issues/191) +- Dswitch repeats source patterns' ending values [\#190](https://github.com/supercollider/supercollider/issues/190) +- \[SC.app\] DeferredDelete events are not processed [\#188](https://github.com/supercollider/supercollider/issues/188) +- Error with help system using Gedit \(help doc cache issue\) [\#187](https://github.com/supercollider/supercollider/issues/187) +- yNjV79 \midjepicgais\, [\#185](https://github.com/supercollider/supercollider/issues/185) +- QSoundFileView read family: missing arguments [\#184](https://github.com/supercollider/supercollider/issues/184) +- Class browser crashes sc [\#183](https://github.com/supercollider/supercollider/issues/183) +- \[OS X\] QView, QWindow: .remove resp. .close don't work [\#182](https://github.com/supercollider/supercollider/issues/182) +- HelpBrowser find-box does not work correctly [\#180](https://github.com/supercollider/supercollider/issues/180) +- Help browser line execution doesn't always work [\#179](https://github.com/supercollider/supercollider/issues/179) +- Find field is misleading [\#178](https://github.com/supercollider/supercollider/issues/178) +- s.meter is broken after reboot [\#177](https://github.com/supercollider/supercollider/issues/177) +- QFont size does not allow floats [\#176](https://github.com/supercollider/supercollider/issues/176) +- \[OS X\] setting QtGUI.style does not work first time [\#175](https://github.com/supercollider/supercollider/issues/175) +- Selection of code within brackets [\#174](https://github.com/supercollider/supercollider/issues/174) +- QWebView - process selection before eval [\#173](https://github.com/supercollider/supercollider/issues/173) +- SCWebView - process selection before eval [\#172](https://github.com/supercollider/supercollider/issues/172) +- SCDoc - convert remaining helpfiles [\#171](https://github.com/supercollider/supercollider/issues/171) +- SCWebView copy plain text [\#170](https://github.com/supercollider/supercollider/issues/170) +- some shortcuts does not work in SCWebView [\#169](https://github.com/supercollider/supercollider/issues/169) +- Qt linking [\#168](https://github.com/supercollider/supercollider/issues/168) +- \[OS X\] HelpBrowser with Qt doesn't display text [\#167](https://github.com/supercollider/supercollider/issues/167) +- SC.app: Qt vs Cocoa windows Z order [\#166](https://github.com/supercollider/supercollider/issues/166) +- SC.app: class-lib recompilation leaves unresponsive windows [\#165](https://github.com/supercollider/supercollider/issues/165) +- SC.app: QWebView bug on false URL [\#164](https://github.com/supercollider/supercollider/issues/164) +- Dictionary putPairs [\#163](https://github.com/supercollider/supercollider/issues/163) +- right-click in Qt-help-browser crashes SC.app \(OSX only?\) [\#162](https://github.com/supercollider/supercollider/issues/162) +- GeneralHID is still broken on osx 10.6.7 [\#161](https://github.com/supercollider/supercollider/issues/161) +- Resonz after DiskOut = big BIG distortion [\#160](https://github.com/supercollider/supercollider/issues/160) +- SC.app crash when scrolling QListView [\#159](https://github.com/supercollider/supercollider/issues/159) +- PopUpMenu problems in QtCollider under OSX [\#158](https://github.com/supercollider/supercollider/issues/158) +- QWebView a:hover underlined [\#157](https://github.com/supercollider/supercollider/issues/157) +- sclang does not start without X [\#156](https://github.com/supercollider/supercollider/issues/156) +- .wrap2 behavior [\#155](https://github.com/supercollider/supercollider/issues/155) +- SC.app hang in drawHook or drawFunc [\#154](https://github.com/supercollider/supercollider/issues/154) +- SC.app hangs when closing a Dialog [\#153](https://github.com/supercollider/supercollider/issues/153) +- \[Mac OS\] Button hit are too small [\#152](https://github.com/supercollider/supercollider/issues/152) +- SC.app crashes due to cmake's fixup\_bundle [\#151](https://github.com/supercollider/supercollider/issues/151) +- Strange display behavior in Help.gui [\#150](https://github.com/supercollider/supercollider/issues/150) +- Float error with QtCollider [\#149](https://github.com/supercollider/supercollider/issues/149) +- Semaphore does not work propery [\#148](https://github.com/supercollider/supercollider/issues/148) +- Help files not found with prefix=/usr [\#145](https://github.com/supercollider/supercollider/issues/145) +- String.powerset dosent throw error and causes SC to crash [\#144](https://github.com/supercollider/supercollider/issues/144) +- Review patterns for old early termination [\#143](https://github.com/supercollider/supercollider/issues/143) +- DetectSilence may never detect silence [\#142](https://github.com/supercollider/supercollider/issues/142) +- Patch for minor 'links' bug in scvim\_make\_help [\#141](https://github.com/supercollider/supercollider/issues/141) +- scheduling infinite duration freezes SClang [\#140](https://github.com/supercollider/supercollider/issues/140) +- sc3-plugins-src archive is out of date on the website [\#139](https://github.com/supercollider/supercollider/issues/139) +- Demand ugens broken [\#138](https://github.com/supercollider/supercollider/issues/138) +- Demand broken for infinite-length input sequences [\#137](https://github.com/supercollider/supercollider/issues/137) +- /clearSched causes NRT Crash [\#136](https://github.com/supercollider/supercollider/issues/136) +- DemandEnvGen curve=0 is wrong [\#135](https://github.com/supercollider/supercollider/issues/135) +- Cocoa SCEnvelopeView crashes SC app. [\#134](https://github.com/supercollider/supercollider/issues/134) +- On the new 3.4RC [\#133](https://github.com/supercollider/supercollider/issues/133) +- loadRelative breaks on linux [\#131](https://github.com/supercollider/supercollider/issues/131) +- sclang parsing does not take bracket sematics into account [\#130](https://github.com/supercollider/supercollider/issues/130) +- sclang crashes routinely in prGetBackTrace -\> MakeDebugFrame [\#129](https://github.com/supercollider/supercollider/issues/129) +- Demand plugins built by scons on osx: bad repeats/le [\#128](https://github.com/supercollider/supercollider/issues/128) +- LFPar and LFCub audio rate modulation frequency argument bug [\#127](https://github.com/supercollider/supercollider/issues/127) +- Error in method .set 's "initAction" of EZSlider [\#126](https://github.com/supercollider/supercollider/issues/126) +- SimpleNumber:frac wrong for negative numbers [\#125](https://github.com/supercollider/supercollider/issues/125) +- SynthDef:writeDefFile dir-name trailing slash [\#124](https://github.com/supercollider/supercollider/issues/124) +- SoundFile.cue cuts off low-sample-rate sounds early [\#123](https://github.com/supercollider/supercollider/issues/123) +- Scroll View with Drawhook drawing errors [\#122](https://github.com/supercollider/supercollider/issues/122) +- Signal fft crash [\#121](https://github.com/supercollider/supercollider/issues/121) +- WaveTerrain Crash [\#120](https://github.com/supercollider/supercollider/issues/120) +- drawAtPoint primitive fails if Font not installed [\#119](https://github.com/supercollider/supercollider/issues/119) +- Some methods SimpleNumber now fail with floats [\#118](https://github.com/supercollider/supercollider/issues/118) +- BeatTrack2 unsafety [\#117](https://github.com/supercollider/supercollider/issues/117) +- SCUserView relativeOrigin = true is inefficient [\#116](https://github.com/supercollider/supercollider/issues/116) +- SCPen.fillRadialGradient is faulty [\#115](https://github.com/supercollider/supercollider/issues/115) +- Compilation failure on PPC/Linux [\#114](https://github.com/supercollider/supercollider/issues/114) +- OSCpathResponder broken, needs fix like OSCresponderNode [\#113](https://github.com/supercollider/supercollider/issues/113) +- TCP broken in sclang \(rev 9591 onwards?\) [\#112](https://github.com/supercollider/supercollider/issues/112) +- Buffer cueSoundFile does not update path var [\#111](https://github.com/supercollider/supercollider/issues/111) +- Incoming OSC messages are dropped when VM is busy [\#110](https://github.com/supercollider/supercollider/issues/110) +- Setting Document default font causes crashes [\#109](https://github.com/supercollider/supercollider/issues/109) +- SCUserView relativeOrigin=true outputs bitmap [\#108](https://github.com/supercollider/supercollider/issues/108) +- Stuck synths using Pdef and Pmono [\#107](https://github.com/supercollider/supercollider/issues/107) +- SuperCollider.app v3.3.1 crashes on launch \(OS X 10.6.2\) [\#106](https://github.com/supercollider/supercollider/issues/106) +- is /b\_gen asynchronous? [\#105](https://github.com/supercollider/supercollider/issues/105) +- /b\_zero crashes for illegal bufnum [\#104](https://github.com/supercollider/supercollider/issues/104) +- BufDelayN produces "clicks" if buffer size is not power of 2 [\#103](https://github.com/supercollider/supercollider/issues/103) +- Buffer docs:bad par. name for asWavetable \[3.3.1\] [\#102](https://github.com/supercollider/supercollider/issues/102) +- Bug o f SuperCollider 3.3 on windows [\#100](https://github.com/supercollider/supercollider/issues/100) +- Bug o f SupperCollider 3.3 on windows [\#99](https://github.com/supercollider/supercollider/issues/99) +- Printing Bug [\#98](https://github.com/supercollider/supercollider/issues/98) +- SuperCollider 3.3 win alpha6 sur Windows XP [\#97](https://github.com/supercollider/supercollider/issues/97) +- SuperCollider 3.3 win alpha6 sur Windows XP [\#96](https://github.com/supercollider/supercollider/issues/96) +- Memory leak in Convolution2 [\#95](https://github.com/supercollider/supercollider/issues/95) +- bug on Max os X tiger intel [\#94](https://github.com/supercollider/supercollider/issues/94) +- source-with-extras bundle: instructions don't work [\#93](https://github.com/supercollider/supercollider/issues/93) +- fullscreen windows draw in front of PopUpMenu [\#92](https://github.com/supercollider/supercollider/issues/92) +- Loudness doesn't understand LocalBuf [\#91](https://github.com/supercollider/supercollider/issues/91) +- Build fails [\#89](https://github.com/supercollider/supercollider/issues/89) +- scvim tries to install in absolute path [\#88](https://github.com/supercollider/supercollider/issues/88) +- SuperCollider Crash with Safari4 [\#87](https://github.com/supercollider/supercollider/issues/87) +- very large SimpleNumber:series can crash sclang [\#86](https://github.com/supercollider/supercollider/issues/86) +- OSCresponderNode SCUserView refresh crashes [\#85](https://github.com/supercollider/supercollider/issues/85) +- Cmd-R does not update the cmdLine before interpreting [\#83](https://github.com/supercollider/supercollider/issues/83) +- doneAction in RecordBuf doesn't work [\#82](https://github.com/supercollider/supercollider/issues/82) +- findHelpFile sometimes returns an empty string on Linux [\#81](https://github.com/supercollider/supercollider/issues/81) +- ServerBoot and ServerQuit are called at wrong time [\#80](https://github.com/supercollider/supercollider/issues/80) +- 3.3beta: MFCC fails to init outputs in ctor \(fix attached\) [\#79](https://github.com/supercollider/supercollider/issues/79) +- LocalBuf and {}.plot are incompatible \(3.3.beta\) [\#78](https://github.com/supercollider/supercollider/issues/78) +- OSC-dumping crashes sound [\#76](https://github.com/supercollider/supercollider/issues/76) +- SCScrollView relativeOrigin glitch [\#75](https://github.com/supercollider/supercollider/issues/75) +- allTuple returns out of bounds memory results sometimes [\#74](https://github.com/supercollider/supercollider/issues/74) +- SCRangeSlider bg draws wrong in relative origin parent [\#72](https://github.com/supercollider/supercollider/issues/72) +- Pen clipping bug [\#71](https://github.com/supercollider/supercollider/issues/71) +- Document.listener.alwaysOnTop\_\(true\) survives recompilation [\#70](https://github.com/supercollider/supercollider/issues/70) +- Routine / AppClock broken [\#68](https://github.com/supercollider/supercollider/issues/68) +- sclang crashes when compiling errorneous code [\#67](https://github.com/supercollider/supercollider/issues/67) +- OSCpathResponder is broken [\#66](https://github.com/supercollider/supercollider/issues/66) +- test [\#65](https://github.com/supercollider/supercollider/issues/65) +- MIDIIn.connect no longer works on Linux [\#64](https://github.com/supercollider/supercollider/issues/64) +- FlowView setting inital margin and gap broken [\#63](https://github.com/supercollider/supercollider/issues/63) +- findRegExp sometimes crashes SC - probable GC corruption [\#62](https://github.com/supercollider/supercollider/issues/62) +- Condition.wait breaks any AppClock routine [\#60](https://github.com/supercollider/supercollider/issues/60) +- Reproducable unmotivated sclang crash [\#59](https://github.com/supercollider/supercollider/issues/59) +- view.remove only works one at a time [\#58](https://github.com/supercollider/supercollider/issues/58) +- scsynth terminal printout rendezvous default [\#57](https://github.com/supercollider/supercollider/issues/57) +- b\_readChannel broken [\#56](https://github.com/supercollider/supercollider/issues/56) +- infinities sometimes render compilestrings wrong in Windows [\#55](https://github.com/supercollider/supercollider/issues/55) +- clip2 on Signal [\#54](https://github.com/supercollider/supercollider/issues/54) +- Advanced Find/Replace Syntax Highlight Issue [\#53](https://github.com/supercollider/supercollider/issues/53) +- OSX double-click bracket matching fails in Windows files [\#51](https://github.com/supercollider/supercollider/issues/51) +- Collection:removeAll does not catch repeated items [\#50](https://github.com/supercollider/supercollider/issues/50) +- \_BasicClipPut primitive doesn't work [\#49](https://github.com/supercollider/supercollider/issues/49) +- Fix takeAt documentation [\#48](https://github.com/supercollider/supercollider/issues/48) +- \[post-3.2\] Incomplete compilation warning posted [\#47](https://github.com/supercollider/supercollider/issues/47) +- String literals in functiondefs can get corrupted [\#46](https://github.com/supercollider/supercollider/issues/46) +- Midi SysEx Message Bug [\#45](https://github.com/supercollider/supercollider/issues/45) +- Timestamped OSC messages don't work in Psycollider 3.2b1 [\#44](https://github.com/supercollider/supercollider/issues/44) +- GrainBuf bug [\#43](https://github.com/supercollider/supercollider/issues/43) +- SC2DSlider problem in an absolute-bound compositeview [\#42](https://github.com/supercollider/supercollider/issues/42) +- Make non-timestamped messages execute on control block bound [\#41](https://github.com/supercollider/supercollider/issues/41) +- Document.new returns nil if SC is not the active application [\#40](https://github.com/supercollider/supercollider/issues/40) +- \[windows\] SoundFile info is wrong after openRead'ing a file [\#39](https://github.com/supercollider/supercollider/issues/39) +- \[windows\] buffer reading seems not to work in win2k [\#38](https://github.com/supercollider/supercollider/issues/38) +- SC\_SYNTHDEF\_DIR environment variable incorrectly read, win32 [\#37](https://github.com/supercollider/supercollider/issues/37) +- Pen: strokeOval ignores pen width [\#34](https://github.com/supercollider/supercollider/issues/34) +- fixing deprecated use of string constants [\#33](https://github.com/supercollider/supercollider/issues/33) +- scsynth.exe crashes upon quit after timestamped messages [\#32](https://github.com/supercollider/supercollider/issues/32) +- Pitch crashes with too high a median length [\#31](https://github.com/supercollider/supercollider/issues/31) +- Some array primitives crash the VM if fed an empty array [\#30](https://github.com/supercollider/supercollider/issues/30) +- 0.2.asFraction beachballs the lang [\#29](https://github.com/supercollider/supercollider/issues/29) +- Server.bootSync optional argument [\#28](https://github.com/supercollider/supercollider/issues/28) +- sclang crash on invalid code [\#27](https://github.com/supercollider/supercollider/issues/27) +- Pen: bug with fillRect, fillOval and fillColor [\#26](https://github.com/supercollider/supercollider/issues/26) +- n\_free can crash the server [\#25](https://github.com/supercollider/supercollider/issues/25) +- SCTestView editable\_ [\#24](https://github.com/supercollider/supercollider/issues/24) +- Instr path variable is not populated [\#23](https://github.com/supercollider/supercollider/issues/23) +- Incorrect input/output device display on bootup [\#22](https://github.com/supercollider/supercollider/issues/22) +- .quark files saved as RTF? [\#21](https://github.com/supercollider/supercollider/issues/21) +- sclang memory usage [\#20](https://github.com/supercollider/supercollider/issues/20) +- Please ignore \(test 2\) [\#19](https://github.com/supercollider/supercollider/issues/19) +- Please ignore \(test item\) [\#18](https://github.com/supercollider/supercollider/issues/18) +- Audio dropout if starting UGens not used yet in session\(OSX\) [\#17](https://github.com/supercollider/supercollider/issues/17) +- Trouble finding libs when using PREFIX [\#16](https://github.com/supercollider/supercollider/issues/16) +- tiny doc bug [\#15](https://github.com/supercollider/supercollider/issues/15) +- server will not boot [\#14](https://github.com/supercollider/supercollider/issues/14) +- s\_new and synthdef names with hyphen under linux not working [\#13](https://github.com/supercollider/supercollider/issues/13) +- LPF fails due to NaN error when cutoff==0 [\#12](https://github.com/supercollider/supercollider/issues/12) +- exponentiation bug [\#11](https://github.com/supercollider/supercollider/issues/11) +- permission problem in synthdef [\#10](https://github.com/supercollider/supercollider/issues/10) +- SC folder rename introspection errors [\#9](https://github.com/supercollider/supercollider/issues/9) +- linux build error [\#8](https://github.com/supercollider/supercollider/issues/8) +- cannot build sc3 on linux [\#7](https://github.com/supercollider/supercollider/issues/7) +- cmd-line build fails \(needs -faltivec?\) [\#6](https://github.com/supercollider/supercollider/issues/6) +- views invisible on refresh if window too small [\#5](https://github.com/supercollider/supercollider/issues/5) +- SCSliderBase, knobColor bug [\#4](https://github.com/supercollider/supercollider/issues/4) +- SCRangeSlider dragging bug [\#3](https://github.com/supercollider/supercollider/issues/3) +- SCView.sc [\#2](https://github.com/supercollider/supercollider/issues/2) +- SCRangeSlider [\#1](https://github.com/supercollider/supercollider/issues/1) +- ide: fix issue with large documents [\#1849](https://github.com/supercollider/supercollider/pull/1849) ([miguel-negrao](https://github.com/miguel-negrao)) +- Classlib: Update PauseStream stream's clock upon play [\#1711](https://github.com/supercollider/supercollider/pull/1711) ([jamshark70](https://github.com/jamshark70)) +- Plugins: Clip NOVA functions should update unit-\> variables [\#1702](https://github.com/supercollider/supercollider/pull/1702) ([jamshark70](https://github.com/jamshark70)) + +**Closed issues:** + +- copyRange vs. bracket ranges [\#1876](https://github.com/supercollider/supercollider/issues/1876) +- FloatArray prevents rounding [\#1873](https://github.com/supercollider/supercollider/issues/1873) +- Quark not properly checked-out and/or updated [\#1864](https://github.com/supercollider/supercollider/issues/1864) +- ScopeView broken in SuperCollider 3.7.0-beta1? [\#1862](https://github.com/supercollider/supercollider/issues/1862) +- sclang in master freezes on arm \(due to PR \#1677 / commit d0f475d\) [\#1842](https://github.com/supercollider/supercollider/issues/1842) +- Multiple schelp syntax errors [\#1837](https://github.com/supercollider/supercollider/issues/1837) +- scsynth: verbosity -1 & -2 not recognised - scsynth won't start [\#1825](https://github.com/supercollider/supercollider/issues/1825) +- Building master with gcc 4.7 fails due to 'is\_trivially\_destructible' in SC\_PlugIn.hpp [\#1820](https://github.com/supercollider/supercollider/issues/1820) +- compilation error on slackware linux [\#1814](https://github.com/supercollider/supercollider/issues/1814) +- The Font help file has a syntax error [\#1811](https://github.com/supercollider/supercollider/issues/1811) +- Github's source code bundles are unhelpful for SuperCollider because submodules missing [\#1807](https://github.com/supercollider/supercollider/issues/1807) +- Error when saving with 3.7.0 beta1 [\#1806](https://github.com/supercollider/supercollider/issues/1806) +- cmake: if on ARM, automatically disable SSE and SSE2 flags [\#1802](https://github.com/supercollider/supercollider/issues/1802) +- sclang compilation error in Linux [\#1797](https://github.com/supercollider/supercollider/issues/1797) +- Confusing terminology in "02. First Steps" of Tutorial "Getting Started With SuperCollider" [\#1781](https://github.com/supercollider/supercollider/issues/1781) +- if duplicate quark folders exist in extensions ... [\#1767](https://github.com/supercollider/supercollider/issues/1767) +- Need updated Windows build instructions [\#1763](https://github.com/supercollider/supercollider/issues/1763) +- build: LFUGens.cpp requires nova\_simd code even if NOVA\_SIMD=off [\#1751](https://github.com/supercollider/supercollider/issues/1751) +- StkInst overloaded new and delete waiting supernova [\#1747](https://github.com/supercollider/supercollider/issues/1747) +- install instructions for ubuntu are out of date [\#1723](https://github.com/supercollider/supercollider/issues/1723) +- NodeProxy fails to detect containing audiorate \(irregularly\) [\#1672](https://github.com/supercollider/supercollider/issues/1672) +- Issues running with Portaudio \(without jack\) on linux [\#1658](https://github.com/supercollider/supercollider/issues/1658) +- OSCFunc with special recvPort can't be freed [\#1654](https://github.com/supercollider/supercollider/issues/1654) +- Pipe breaks if it receives lines longer than 1024 characters [\#1593](https://github.com/supercollider/supercollider/issues/1593) +- Multichannel recording does not work in Windows 7 [\#1560](https://github.com/supercollider/supercollider/issues/1560) +- concatenating large strings causes memory corruption [\#1543](https://github.com/supercollider/supercollider/issues/1543) +- Seems like interpreter \(or servers\) are not tracking osc messages to server correctly [\#1524](https://github.com/supercollider/supercollider/issues/1524) +- help: TempoClock set beats example is incorrect [\#1518](https://github.com/supercollider/supercollider/issues/1518) +- supernova was left out of the -v -V transition [\#1468](https://github.com/supercollider/supercollider/issues/1468) +- findRegexp does not compile escaped character sequences correctly [\#1411](https://github.com/supercollider/supercollider/issues/1411) +- blocksize and latency in scsynth and supernova [\#1314](https://github.com/supercollider/supercollider/issues/1314) +- EnvelopeView gridOn\_ doesn't work \(in Qt on MS Windows anyway\) [\#1284](https://github.com/supercollider/supercollider/issues/1284) +- minor bug in an IEnvGen example [\#1276](https://github.com/supercollider/supercollider/issues/1276) +- Signal.waveFill function parameters \(3\) don't match documentation \(2\) [\#1259](https://github.com/supercollider/supercollider/issues/1259) +- Env.step example is confusing [\#1143](https://github.com/supercollider/supercollider/issues/1143) +- \(unnecessary?\) warning "The HID scheme 'nil' is not installed" [\#1120](https://github.com/supercollider/supercollider/issues/1120) +- AudioStreamAddPropertyListener deprecated warning [\#1117](https://github.com/supercollider/supercollider/issues/1117) +- counter intuitive behaviour when embedding events/dictionaries in streams directly [\#1107](https://github.com/supercollider/supercollider/issues/1107) +- No implementation of "Preferences" in Cocoa application [\#1098](https://github.com/supercollider/supercollider/issues/1098) +- SplayAz behaviour doesn't match documentation [\#1059](https://github.com/supercollider/supercollider/issues/1059) +- Error in Help - Getting Started Tutorial Series - Section 2 [\#981](https://github.com/supercollider/supercollider/issues/981) +- SuperCollider won't build with Xcode 5 [\#958](https://github.com/supercollider/supercollider/issues/958) +- Crash in creating SynthDef [\#957](https://github.com/supercollider/supercollider/issues/957) +- supernova compilation error [\#951](https://github.com/supercollider/supercollider/issues/951) +- supercollider-gedit plugin not loading [\#950](https://github.com/supercollider/supercollider/issues/950) +- OSCFunc addr.hostname returns nil [\#933](https://github.com/supercollider/supercollider/issues/933) +- iOS build, doesn't. [\#927](https://github.com/supercollider/supercollider/issues/927) +- Disable mathjax - an unused feature that can cause problems [\#909](https://github.com/supercollider/supercollider/issues/909) +- DiskIn channel limitation [\#901](https://github.com/supercollider/supercollider/issues/901) +- sclang \(readline\) cannot quit [\#897](https://github.com/supercollider/supercollider/issues/897) +- PV\_Copy breaks edge model [\#896](https://github.com/supercollider/supercollider/issues/896) +- linux \(debian x64\) compilation error [\#894](https://github.com/supercollider/supercollider/issues/894) +- osx/wii uses deprecated/removed API [\#876](https://github.com/supercollider/supercollider/issues/876) +- drawFunc drawingEnabled\_\(false\) not respected by refresh [\#869](https://github.com/supercollider/supercollider/issues/869) +- file browser lacks default [\#868](https://github.com/supercollider/supercollider/issues/868) +- SerialPort Cleanup error [\#862](https://github.com/supercollider/supercollider/issues/862) +- Windows: preferably use native file selector on document open etc. [\#861](https://github.com/supercollider/supercollider/issues/861) +- Issue Tracker: user can't enter categories/lables [\#860](https://github.com/supercollider/supercollider/issues/860) +- Windows: curl support doesn't work and no alternative available [\#859](https://github.com/supercollider/supercollider/issues/859) +- Windows \(installer\): no program shortcuts [\#857](https://github.com/supercollider/supercollider/issues/857) +- Windows: installer does not register in system [\#856](https://github.com/supercollider/supercollider/issues/856) +- Windows: no file associations [\#855](https://github.com/supercollider/supercollider/issues/855) +- Server load percentage on Windows off by factor 100 [\#849](https://github.com/supercollider/supercollider/issues/849) +- SC IDE: Custom Shortcut ctrl-alt-\ for Move Line Up/Down gets lost after quitting SC [\#836](https://github.com/supercollider/supercollider/issues/836) +- searched word is highlighted even after edit [\#833](https://github.com/supercollider/supercollider/issues/833) +- server-scope: zoom default value not set on SC 3.6.4 [\#825](https://github.com/supercollider/supercollider/issues/825) +- build error [\#816](https://github.com/supercollider/supercollider/issues/816) +- Missing "\)" in HelpSource / Guides / MIDI.schelp [\#802](https://github.com/supercollider/supercollider/issues/802) +- Up-arrow after hitting return wrongly goes to the end of the previous line [\#800](https://github.com/supercollider/supercollider/issues/800) +- \[linux, gnome\] Tab-navigation in find/replace panel is invisible [\#797](https://github.com/supercollider/supercollider/issues/797) +- EnvelopeView and exponential, cubed and squared curves. [\#784](https://github.com/supercollider/supercollider/issues/784) +- Bug in Bus:get when using multichannel busses [\#778](https://github.com/supercollider/supercollider/issues/778) +- Scope won't show a channel count higher than 16 upon initialization [\#769](https://github.com/supercollider/supercollider/issues/769) +- FreqScope not updating correctly [\#764](https://github.com/supercollider/supercollider/issues/764) +- Supernova does not load UGens from ~/.local [\#763](https://github.com/supercollider/supercollider/issues/763) +- Convolution2: frameSize = 2\*\*15 \(32768\) fails [\#738](https://github.com/supercollider/supercollider/issues/738) +- Convolution2: kernel size is truncated to fftsize [\#737](https://github.com/supercollider/supercollider/issues/737) +- Convolution2: failure if frameSize \> numFrames, in some cases! [\#736](https://github.com/supercollider/supercollider/issues/736) +- sclang crash on quit - assertion failure [\#726](https://github.com/supercollider/supercollider/issues/726) +- Wrong results from something.kr / something.ar [\#721](https://github.com/supercollider/supercollider/issues/721) +- TreeView.clear works in IDE, but doesn't work in Standalone [\#719](https://github.com/supercollider/supercollider/issues/719) +- X11 crashes: \[xcb\] Unknown request in queue while dequeuing [\#717](https://github.com/supercollider/supercollider/issues/717) +- sclang -l configuration fails \(no warnings, no errors\) [\#713](https://github.com/supercollider/supercollider/issues/713) +- scsynth stops when running with RME Fireface UCX [\#701](https://github.com/supercollider/supercollider/issues/701) +- plot on a signal does not work \(3.6.1\) [\#698](https://github.com/supercollider/supercollider/issues/698) +- Document browser's "Tutorial" subsection should list all tutorials [\#693](https://github.com/supercollider/supercollider/issues/693) +- OpenBSD, runtime error: gNumClasses 'discrepancy' [\#684](https://github.com/supercollider/supercollider/issues/684) +- cmd-d in help document does not work [\#667](https://github.com/supercollider/supercollider/issues/667) +- SC 3.6beta3 - help docs don't compile [\#666](https://github.com/supercollider/supercollider/issues/666) +- 3.6.3 STANDARD plugin API mismatch [\#660](https://github.com/supercollider/supercollider/issues/660) +- Copy/paste from SC IDE to Mail loses formatting & tabs \(OS X\) [\#657](https://github.com/supercollider/supercollider/issues/657) +- scide: Ctrl+P does not focus Post Window [\#654](https://github.com/supercollider/supercollider/issues/654) +- Single channel NamedControl returns default values as one-item-array [\#652](https://github.com/supercollider/supercollider/issues/652) +- Cannot create new .sc class definition file from SC IDE [\#651](https://github.com/supercollider/supercollider/issues/651) +- \[SCIDE 3.6 beta 2\] Help pane browser pops up annoyingly on load [\#643](https://github.com/supercollider/supercollider/issues/643) +- Env/event documentation error [\#638](https://github.com/supercollider/supercollider/issues/638) +- crash when evaluating exprand [\#632](https://github.com/supercollider/supercollider/issues/632) +- \[SC-IDE\] save/save as dialog extensions [\#615](https://github.com/supercollider/supercollider/issues/615) +- \[SC-IDE\] hang when trying to stop sclang [\#614](https://github.com/supercollider/supercollider/issues/614) +- Ndef clear/play sequence problem [\#612](https://github.com/supercollider/supercollider/issues/612) +- File-changed behavior is triggered while file is opened \(and closed\) in other applications [\#595](https://github.com/supercollider/supercollider/issues/595) +- Tab widths are radically different between post window and [\#594](https://github.com/supercollider/supercollider/issues/594) +- Number views on Stethoscope are too narrow to be readable on OSX [\#583](https://github.com/supercollider/supercollider/issues/583) +- Line numbers do not sync for some fonts [\#567](https://github.com/supercollider/supercollider/issues/567) +- Duplicate keyboard shortcuts can be set, causing undefined behavior [\#566](https://github.com/supercollider/supercollider/issues/566) +- indent line or region sometimes doesn't work [\#528](https://github.com/supercollider/supercollider/issues/528) +- server meter menu option always localhost [\#525](https://github.com/supercollider/supercollider/issues/525) +- No sound after stopping and running Main again [\#520](https://github.com/supercollider/supercollider/issues/520) +- \[sc-ide\] Saving as .sc saves as .scd instead [\#519](https://github.com/supercollider/supercollider/issues/519) +- ~tildestuff is not treated as a unit for selection [\#508](https://github.com/supercollider/supercollider/issues/508) +- SCDoc: right-click on a link offers non-working "Open in new window" [\#504](https://github.com/supercollider/supercollider/issues/504) +- pressing ctrl+D with cursor just before bracket in "Latch\)" searches for bracket not Latch [\#503](https://github.com/supercollider/supercollider/issues/503) +- Cmd-Delete to have similar functionality to other OSX windows [\#501](https://github.com/supercollider/supercollider/issues/501) +- Ctrl-shift-I/U should not be separated from Ctrl-I/U in the menus [\#498](https://github.com/supercollider/supercollider/issues/498) +- Can't connect to and play sounds on already running scsynth [\#487](https://github.com/supercollider/supercollider/issues/487) +- Ctrl+. in helpfile doesn't stop it [\#480](https://github.com/supercollider/supercollider/issues/480) +- SC-IDE under Mac OSX: Open Class/Method Definition not working [\#479](https://github.com/supercollider/supercollider/issues/479) +- SC-IDE under Mac OSX: Open Class/Method Definition not working [\#478](https://github.com/supercollider/supercollider/issues/478) +- SuperCollider is renamed SuperColliderCocoa [\#473](https://github.com/supercollider/supercollider/issues/473) +- ide: simplifying find/replace? [\#468](https://github.com/supercollider/supercollider/issues/468) +- Copying from post window widget [\#460](https://github.com/supercollider/supercollider/issues/460) +- Enable word wrap in the post window [\#459](https://github.com/supercollider/supercollider/issues/459) +- keyboard shortcut for copy is disabled in post window [\#452](https://github.com/supercollider/supercollider/issues/452) +- Switching applications [\#449](https://github.com/supercollider/supercollider/issues/449) +- serialPort doneAction never called & port not properly closed? [\#438](https://github.com/supercollider/supercollider/issues/438) +- SC 3.5.4 crashes with buffers on windows 7 [\#424](https://github.com/supercollider/supercollider/issues/424) +- default for freqscope [\#421](https://github.com/supercollider/supercollider/issues/421) +- \[SC-IDE\] Evaluate a line within a region \(with the same shortcut\) [\#403](https://github.com/supercollider/supercollider/issues/403) +- Introspection thread safety [\#394](https://github.com/supercollider/supercollider/issues/394) +- Import RTF files [\#392](https://github.com/supercollider/supercollider/issues/392) +- Custom OSC Message processing section in OSC Communication doc's is incorrect [\#389](https://github.com/supercollider/supercollider/issues/389) +- font scaling behavior [\#379](https://github.com/supercollider/supercollider/issues/379) +- scide: arg tooltip for floats, display 1 not 1.000000 [\#377](https://github.com/supercollider/supercollider/issues/377) +- \[Qt IDE\] Tab not working [\#374](https://github.com/supercollider/supercollider/issues/374) +- sclang menu bar vs ide [\#367](https://github.com/supercollider/supercollider/issues/367) +- Buffer.free on 3.5.3 crash scsynth [\#359](https://github.com/supercollider/supercollider/issues/359) +- \[SC-IDE\] server status bar [\#348](https://github.com/supercollider/supercollider/issues/348) +- Can SFC\_SET\_CLIPPING fix the wrapped vs. clipped int-format recording problem? [\#345](https://github.com/supercollider/supercollider/issues/345) +- SynthDef compiler in Lua [\#344](https://github.com/supercollider/supercollider/issues/344) +- scsynth sound stops in 3.5 not in 3.4 [\#343](https://github.com/supercollider/supercollider/issues/343) +- Pseg duration in secs or beats? [\#340](https://github.com/supercollider/supercollider/issues/340) +- MIDIFunc.noteOn does not work with floats [\#325](https://github.com/supercollider/supercollider/issues/325) + +**Merged pull requests:** + +- fix: typo in CHANGELOG.md [\#1888](https://github.com/supercollider/supercollider/pull/1888) ([crucialfelix](https://github.com/crucialfelix)) +- build: copy CHANGELOG.md not the old ChangeLog [\#1887](https://github.com/supercollider/supercollider/pull/1887) ([crucialfelix](https://github.com/crucialfelix)) +- class library: poll treats numbers as signals [\#1885](https://github.com/supercollider/supercollider/pull/1885) ([telephon](https://github.com/telephon)) +- class library display path in quark gui [\#1882](https://github.com/supercollider/supercollider/pull/1882) ([telephon](https://github.com/telephon)) +- Topic/osx move scsynth [\#1881](https://github.com/supercollider/supercollider/pull/1881) ([crucialfelix](https://github.com/crucialfelix)) +- fix \#1864 Quarks Git not detecting latest she correctly [\#1880](https://github.com/supercollider/supercollider/pull/1880) ([crucialfelix](https://github.com/crucialfelix)) +- build: use direct test to decide if SSE available [\#1879](https://github.com/supercollider/supercollider/pull/1879) ([danstowell](https://github.com/danstowell)) +- Improved documentation for copyRange and copySeries [\#1877](https://github.com/supercollider/supercollider/pull/1877) ([snappizz](https://github.com/snappizz)) +- sclang: add explanation of standalone mode. [\#1872](https://github.com/supercollider/supercollider/pull/1872) ([miguel-negrao](https://github.com/miguel-negrao)) +- Avoid misleading message for Xcode and Visual Studio [\#1871](https://github.com/supercollider/supercollider/pull/1871) ([bagong](https://github.com/bagong)) +- ide: menu option "Show Quarks" [\#1867](https://github.com/supercollider/supercollider/pull/1867) ([miguel-negrao](https://github.com/miguel-negrao)) +- ide: Add standalone option in settings. [\#1863](https://github.com/supercollider/supercollider/pull/1863) ([miguel-negrao](https://github.com/miguel-negrao)) +- ide: fix memory leak [\#1859](https://github.com/supercollider/supercollider/pull/1859) ([miguel-negrao](https://github.com/miguel-negrao)) +- plugins: allow Vibrato to be triggered [\#1858](https://github.com/supercollider/supercollider/pull/1858) ([sonoro1234](https://github.com/sonoro1234)) +- 3.7win without IPC fix [\#1852](https://github.com/supercollider/supercollider/pull/1852) ([bagong](https://github.com/bagong)) +- Topic fix allocations [\#1845](https://github.com/supercollider/supercollider/pull/1845) ([telephon](https://github.com/telephon)) +- Fixes/for master [\#1844](https://github.com/supercollider/supercollider/pull/1844) ([timblechmann](https://github.com/timblechmann)) +- build: bump GCC version requirement up from 4.7 to 4.8 [\#1839](https://github.com/supercollider/supercollider/pull/1839) ([danstowell](https://github.com/danstowell)) +- Help source syntax fix [\#1838](https://github.com/supercollider/supercollider/pull/1838) ([gusano](https://github.com/gusano)) +- build: fix PanUGens to build when NOVA\_SIMD=OFF [\#1834](https://github.com/supercollider/supercollider/pull/1834) ([danstowell](https://github.com/danstowell)) +- Fix error message [\#1828](https://github.com/supercollider/supercollider/pull/1828) ([carlocapocasa](https://github.com/carlocapocasa)) +- Server.sc: option for scsynth's verbosity now is "V" not "v". [\#1826](https://github.com/supercollider/supercollider/pull/1826) ([miczac](https://github.com/miczac)) +- build: fix non-SSE2 compile of SC\_SndBuf.h \(Fixes \#1819\) [\#1821](https://github.com/supercollider/supercollider/pull/1821) ([danstowell](https://github.com/danstowell)) +- cmake: disable SSE on ARM [\#1817](https://github.com/supercollider/supercollider/pull/1817) ([danstowell](https://github.com/danstowell)) +- QView.sc: removes residue OS X Space after closing a fullscreen window. [\#1816](https://github.com/supercollider/supercollider/pull/1816) ([miczac](https://github.com/miczac)) +- build: fix an integer type mismatch that caused build fail for some [\#1815](https://github.com/supercollider/supercollider/pull/1815) ([danstowell](https://github.com/danstowell)) +- fixes \#1811, also, allowing for more space for the last two examples [\#1813](https://github.com/supercollider/supercollider/pull/1813) ([miczac](https://github.com/miczac)) +- cmake: avoid confusing "FATAL" messages if not a git checkout [\#1809](https://github.com/supercollider/supercollider/pull/1809) ([crucialfelix](https://github.com/crucialfelix)) +- cmake: disable SSE on ARM [\#1803](https://github.com/supercollider/supercollider/pull/1803) ([danstowell](https://github.com/danstowell)) +- plugins: fix plugin registration for sum3/sum4 [\#1799](https://github.com/supercollider/supercollider/pull/1799) ([timblechmann](https://github.com/timblechmann)) +- Revert "subproject commit" which mistakenly downgraded nova dependencies [\#1795](https://github.com/supercollider/supercollider/pull/1795) ([danstowell](https://github.com/danstowell)) +- class library: moved Model.sc out of GUI directory [\#1792](https://github.com/supercollider/supercollider/pull/1792) ([redFrik](https://github.com/redFrik)) +- help guides: fix typo [\#1790](https://github.com/supercollider/supercollider/pull/1790) ([gusano](https://github.com/gusano)) +- Incorporate these tutorial corrections [\#1787](https://github.com/supercollider/supercollider/pull/1787) ([afischli](https://github.com/afischli)) +- FIx typo in tutorial on shortcut explanation to clear the post window [\#1784](https://github.com/supercollider/supercollider/pull/1784) ([afischli](https://github.com/afischli)) +- scide: don't sync documents if language was not compiled [\#1780](https://github.com/supercollider/supercollider/pull/1780) ([gusano](https://github.com/gusano)) +- Novacollider/cleanups [\#1779](https://github.com/supercollider/supercollider/pull/1779) ([timblechmann](https://github.com/timblechmann)) +- supernova: tests - use thread and chrono [\#1778](https://github.com/supercollider/supercollider/pull/1778) ([timblechmann](https://github.com/timblechmann)) +- Correcting a spelling of "Buffer" in Getting Started 13 [\#1777](https://github.com/supercollider/supercollider/pull/1777) ([meatballhat](https://github.com/meatballhat)) +- plugin interface: avoid dependency on nova-tt [\#1776](https://github.com/supercollider/supercollider/pull/1776) ([timblechmann](https://github.com/timblechmann)) +- Novacollider/cleanups [\#1775](https://github.com/supercollider/supercollider/pull/1775) ([timblechmann](https://github.com/timblechmann)) +- nova-simd: fix lower boundary of exp approximation [\#1774](https://github.com/supercollider/supercollider/pull/1774) ([timblechmann](https://github.com/timblechmann)) +- cmake: refuse to build if unrecognised AUDIOAPI [\#1773](https://github.com/supercollider/supercollider/pull/1773) ([danstowell](https://github.com/danstowell)) +- jack audio driver: remove old unused codepath for jack\<0.100 [\#1772](https://github.com/supercollider/supercollider/pull/1772) ([danstowell](https://github.com/danstowell)) +- Topic/boost 1.60 [\#1770](https://github.com/supercollider/supercollider/pull/1770) ([timblechmann](https://github.com/timblechmann)) +- Novacollider/supernova refactoring [\#1769](https://github.com/supercollider/supercollider/pull/1769) ([timblechmann](https://github.com/timblechmann)) +- external libraries: nova-simd [\#1768](https://github.com/supercollider/supercollider/pull/1768) ([timblechmann](https://github.com/timblechmann)) +- supernova: tcp - catch exceptions when sending replies via tcp [\#1765](https://github.com/supercollider/supercollider/pull/1765) ([timblechmann](https://github.com/timblechmann)) +- Refactor EnvirGui [\#1761](https://github.com/supercollider/supercollider/pull/1761) ([adcxyz](https://github.com/adcxyz)) +- Fix string find [\#1759](https://github.com/supercollider/supercollider/pull/1759) ([muellmusik](https://github.com/muellmusik)) +- scdoc: typo in Working\_with\_HID.schelp [\#1756](https://github.com/supercollider/supercollider/pull/1756) ([redFrik](https://github.com/redFrik)) +- scdoc: typo in LID\_permissions.schelp [\#1755](https://github.com/supercollider/supercollider/pull/1755) ([redFrik](https://github.com/redFrik)) +- scdoc: typo in HID\_permissions.schelp [\#1754](https://github.com/supercollider/supercollider/pull/1754) ([redFrik](https://github.com/redFrik)) +- c++ interface: introduce templated registerUnit [\#1753](https://github.com/supercollider/supercollider/pull/1753) ([timblechmann](https://github.com/timblechmann)) +- Topic/quarks git fixes [\#1752](https://github.com/supercollider/supercollider/pull/1752) ([crucialfelix](https://github.com/crucialfelix)) +- Fixes/supernova unload plugins [\#1748](https://github.com/supercollider/supercollider/pull/1748) ([timblechmann](https://github.com/timblechmann)) +- Novacollider/supernova refactoring [\#1745](https://github.com/supercollider/supercollider/pull/1745) ([timblechmann](https://github.com/timblechmann)) +- Novacollider/prevent bad optimization [\#1744](https://github.com/supercollider/supercollider/pull/1744) ([timblechmann](https://github.com/timblechmann)) +- plugin interface: provide numInputs/numOutputs as interface functions [\#1743](https://github.com/supercollider/supercollider/pull/1743) ([timblechmann](https://github.com/timblechmann)) +- cleanup: detect apple via \_\_APPLE\_\_ [\#1741](https://github.com/supercollider/supercollider/pull/1741) ([timblechmann](https://github.com/timblechmann)) +- build: modify trunc\(\) calls to compile on gcc 4.8.4 [\#1740](https://github.com/supercollider/supercollider/pull/1740) ([danstowell](https://github.com/danstowell)) +- supernova: received\_packet - make implementation more robust [\#1739](https://github.com/supercollider/supercollider/pull/1739) ([timblechmann](https://github.com/timblechmann)) +- Fixes/supernova handle out of memory [\#1733](https://github.com/supercollider/supercollider/pull/1733) ([timblechmann](https://github.com/timblechmann)) +- Fix avoid calling nonexisting cleanup event type [\#1731](https://github.com/supercollider/supercollider/pull/1731) ([blacksound](https://github.com/blacksound)) +- Fix obsolete server method call [\#1730](https://github.com/supercollider/supercollider/pull/1730) ([blacksound](https://github.com/blacksound)) +- Consistent use of Event in example. [\#1729](https://github.com/supercollider/supercollider/pull/1729) ([blacksound](https://github.com/blacksound)) +- example & help files: cleanup and streamlining of server handling [\#1728](https://github.com/supercollider/supercollider/pull/1728) ([miczac](https://github.com/miczac)) +- example & help files: fix reference to default server [\#1727](https://github.com/supercollider/supercollider/pull/1727) ([miczac](https://github.com/miczac)) +- Simplify pspawner example [\#1726](https://github.com/supercollider/supercollider/pull/1726) ([blacksound](https://github.com/blacksound)) +- typofix - make description match example code [\#1725](https://github.com/supercollider/supercollider/pull/1725) ([blacksound](https://github.com/blacksound)) +- UGen-scope.sc: fixes method to determine default server [\#1724](https://github.com/supercollider/supercollider/pull/1724) ([miczac](https://github.com/miczac)) +- Fix typo in NodeProxy roles help file [\#1722](https://github.com/supercollider/supercollider/pull/1722) ([blacksound](https://github.com/blacksound)) +- ass Filters: warning in help-docs about filter frequencies close to zero [\#1721](https://github.com/supercollider/supercollider/pull/1721) ([miczac](https://github.com/miczac)) +- Clean up classlib: consistent tabs and Egyptian braces [\#1714](https://github.com/supercollider/supercollider/pull/1714) ([crucialfelix](https://github.com/crucialfelix)) +- fix \#1668 - make existsCaseSensitive work for directories [\#1713](https://github.com/supercollider/supercollider/pull/1713) ([crucialfelix](https://github.com/crucialfelix)) +- fix \#1670 isPath and isAbsolutePath regexp for windows [\#1712](https://github.com/supercollider/supercollider/pull/1712) ([crucialfelix](https://github.com/crucialfelix)) +- fixes for master [\#1710](https://github.com/supercollider/supercollider/pull/1710) ([timblechmann](https://github.com/timblechmann)) +- supernova: silence clang warning [\#1709](https://github.com/supercollider/supercollider/pull/1709) ([timblechmann](https://github.com/timblechmann)) +- sclang: file prim - remove unused carbon code [\#1708](https://github.com/supercollider/supercollider/pull/1708) ([timblechmann](https://github.com/timblechmann)) +- fix issues found by clang's static analyzer [\#1707](https://github.com/supercollider/supercollider/pull/1707) ([timblechmann](https://github.com/timblechmann)) +- class library: store floats with full precision [\#1701](https://github.com/supercollider/supercollider/pull/1701) ([telephon](https://github.com/telephon)) +- docs: minor typo adjustment in Getting Started 11 [\#1698](https://github.com/supercollider/supercollider/pull/1698) ([meatballhat](https://github.com/meatballhat)) +- modernize supernova [\#1697](https://github.com/supercollider/supercollider/pull/1697) ([timblechmann](https://github.com/timblechmann)) +- docs: minor typo correction in Getting Started 10 [\#1694](https://github.com/supercollider/supercollider/pull/1694) ([meatballhat](https://github.com/meatballhat)) +- sclang: slot - improve architecture detection [\#1693](https://github.com/supercollider/supercollider/pull/1693) ([timblechmann](https://github.com/timblechmann)) +- scdoc/sclang lexers: use intptr\_t tof compatibility with LLP64 archtectures [\#1692](https://github.com/supercollider/supercollider/pull/1692) ([timblechmann](https://github.com/timblechmann)) +- refactoring [\#1691](https://github.com/supercollider/supercollider/pull/1691) ([timblechmann](https://github.com/timblechmann)) +- fix lost keyevents [\#1690](https://github.com/supercollider/supercollider/pull/1690) ([timblechmann](https://github.com/timblechmann)) +- install help sources on linux [\#1689](https://github.com/supercollider/supercollider/pull/1689) ([timblechmann](https://github.com/timblechmann)) +- cmake fixes [\#1688](https://github.com/supercollider/supercollider/pull/1688) ([timblechmann](https://github.com/timblechmann)) +- class library: make control set atomic [\#1687](https://github.com/supercollider/supercollider/pull/1687) ([LFSaw](https://github.com/LFSaw)) +- Primitive related cleanups [\#1683](https://github.com/supercollider/supercollider/pull/1683) ([muellmusik](https://github.com/muellmusik)) +- fixed one broken link [\#1680](https://github.com/supercollider/supercollider/pull/1680) ([redFrik](https://github.com/redFrik)) +- fixed two broken links [\#1679](https://github.com/supercollider/supercollider/pull/1679) ([redFrik](https://github.com/redFrik)) +- scel: Fix mode-line update [\#1678](https://github.com/supercollider/supercollider/pull/1678) ([ptrv](https://github.com/ptrv)) +- use c++17-style executors to compile class library [\#1677](https://github.com/supercollider/supercollider/pull/1677) ([timblechmann](https://github.com/timblechmann)) +- supernova: guard gcc version check [\#1675](https://github.com/supercollider/supercollider/pull/1675) ([timblechmann](https://github.com/timblechmann)) +- fixed two broken links [\#1673](https://github.com/supercollider/supercollider/pull/1673) ([redFrik](https://github.com/redFrik)) +- Update 03-Start-Your-Engines.schelp [\#1667](https://github.com/supercollider/supercollider/pull/1667) ([danielmkarlsson](https://github.com/danielmkarlsson)) +- Update 02-First-Steps.schelp [\#1666](https://github.com/supercollider/supercollider/pull/1666) ([danielmkarlsson](https://github.com/danielmkarlsson)) +- Update 01-Introductory-Remarks.schelp [\#1665](https://github.com/supercollider/supercollider/pull/1665) ([danielmkarlsson](https://github.com/danielmkarlsson)) +- Subclass searches [\#1663](https://github.com/supercollider/supercollider/pull/1663) ([jamshark70](https://github.com/jamshark70)) +- scsynth: sends d\_removed from the right thread [\#1662](https://github.com/supercollider/supercollider/pull/1662) ([sonoro1234](https://github.com/sonoro1234)) +- class library: defer calls to ide [\#1661](https://github.com/supercollider/supercollider/pull/1661) ([telephon](https://github.com/telephon)) +- EnvGen: fix cub nans [\#1660](https://github.com/supercollider/supercollider/pull/1660) ([sonoro1234](https://github.com/sonoro1234)) +- scsynth: denormal handling in PortAudio and Jack [\#1659](https://github.com/supercollider/supercollider/pull/1659) ([sonoro1234](https://github.com/sonoro1234)) +- QtCollider: TextView: Get code for enterInterpretsSelection from block\(\) [\#1652](https://github.com/supercollider/supercollider/pull/1652) ([jamshark70](https://github.com/jamshark70)) +- some buildsystem fixes [\#1649](https://github.com/supercollider/supercollider/pull/1649) ([timblechmann](https://github.com/timblechmann)) +- supernova: cpu\_time\_info compile fix [\#1647](https://github.com/supercollider/supercollider/pull/1647) ([timblechmann](https://github.com/timblechmann)) +- scsynth:SC\_GraphDef.cpp correct d\_removed packet definition [\#1646](https://github.com/supercollider/supercollider/pull/1646) ([sonoro1234](https://github.com/sonoro1234)) +- lang: prevent Signal.chebyFill from returning nan [\#1645](https://github.com/supercollider/supercollider/pull/1645) ([totalgee](https://github.com/totalgee)) +- SequenceableCollection help: fix some erroneous links [\#1641](https://github.com/supercollider/supercollider/pull/1641) ([nuss](https://github.com/nuss)) +- disallow newCopyArgs in Boolean [\#1638](https://github.com/supercollider/supercollider/pull/1638) ([miguel-negrao](https://github.com/miguel-negrao)) +- Novacollider/freelist updates [\#1636](https://github.com/supercollider/supercollider/pull/1636) ([timblechmann](https://github.com/timblechmann)) +- Non-characters pass ASCII code 0 to key actions [\#1632](https://github.com/supercollider/supercollider/pull/1632) ([jamshark70](https://github.com/jamshark70)) +- plugin interface: fix compile failure with gcc-4.9 [\#1628](https://github.com/supercollider/supercollider/pull/1628) ([timblechmann](https://github.com/timblechmann)) +- Classlib: SystemSynthDefs: Clean up temp defs properly on all platforms [\#1627](https://github.com/supercollider/supercollider/pull/1627) ([jamshark70](https://github.com/jamshark70)) +- Gc fixes and doc final [\#1624](https://github.com/supercollider/supercollider/pull/1624) ([muellmusik](https://github.com/muellmusik)) +- common: oscutils - correct printf format specifier for \(u\)int64\_t [\#1620](https://github.com/supercollider/supercollider/pull/1620) ([timblechmann](https://github.com/timblechmann)) +- scide: fix float regexp [\#1619](https://github.com/supercollider/supercollider/pull/1619) ([timblechmann](https://github.com/timblechmann)) +- supernova: some refactoring [\#1614](https://github.com/supercollider/supercollider/pull/1614) ([timblechmann](https://github.com/timblechmann)) +- server: Assume requested SR was successfully set [\#1612](https://github.com/supercollider/supercollider/pull/1612) ([scztt](https://github.com/scztt)) +- cmake: copy targets to ide app bundle in post-build steps [\#1608](https://github.com/supercollider/supercollider/pull/1608) ([timblechmann](https://github.com/timblechmann)) +- Misc Quarks fixes [\#1606](https://github.com/supercollider/supercollider/pull/1606) ([crucialfelix](https://github.com/crucialfelix)) +- sclang: fix gc-related bug [\#1605](https://github.com/supercollider/supercollider/pull/1605) ([timblechmann](https://github.com/timblechmann)) +- Quarks: avoid a stack overflow from LanguageConfig.includePaths [\#1603](https://github.com/supercollider/supercollider/pull/1603) ([crucialfelix](https://github.com/crucialfelix)) +- fix: Quarks.load quark set [\#1602](https://github.com/supercollider/supercollider/pull/1602) ([crucialfelix](https://github.com/crucialfelix)) +- Topic/ide fixes for master [\#1601](https://github.com/supercollider/supercollider/pull/1601) ([timblechmann](https://github.com/timblechmann)) +- Topic/ide keyevent fixes [\#1598](https://github.com/supercollider/supercollider/pull/1598) ([timblechmann](https://github.com/timblechmann)) +- scide: preferences dialog - fix width of icon list widget [\#1597](https://github.com/supercollider/supercollider/pull/1597) ([timblechmann](https://github.com/timblechmann)) +- Topic/fixes for master [\#1595](https://github.com/supercollider/supercollider/pull/1595) ([timblechmann](https://github.com/timblechmann)) +- qtcollider/sc-ide: make use of QStringLiteral [\#1594](https://github.com/supercollider/supercollider/pull/1594) ([timblechmann](https://github.com/timblechmann)) +- Topic/fixes for master [\#1592](https://github.com/supercollider/supercollider/pull/1592) ([timblechmann](https://github.com/timblechmann)) +- Fix: \#1475 absolute path detection and conversion for windows [\#1590](https://github.com/supercollider/supercollider/pull/1590) ([crucialfelix](https://github.com/crucialfelix)) +- Adding a note about W64, CAF and WAV support as proposed by @scztt [\#1584](https://github.com/supercollider/supercollider/pull/1584) ([gogobd](https://github.com/gogobd)) +- Topic/fixes for master [\#1583](https://github.com/supercollider/supercollider/pull/1583) ([timblechmann](https://github.com/timblechmann)) +- Classlib: Event: Add missing ~latency into ~schedBundleArray calls [\#1582](https://github.com/supercollider/supercollider/pull/1582) ([jamshark70](https://github.com/jamshark70)) +- OSX: Allow cmake install prefix to be overridden [\#1576](https://github.com/supercollider/supercollider/pull/1576) ([bagong](https://github.com/bagong)) +- HID final cleanup, and LID adaption to use similar API [\#1573](https://github.com/supercollider/supercollider/pull/1573) ([sensestage](https://github.com/sensestage)) +- Midi connect all [\#1571](https://github.com/supercollider/supercollider/pull/1571) ([sensestage](https://github.com/sensestage)) +- OSX: return to old default cmake install location ./Install [\#1569](https://github.com/supercollider/supercollider/pull/1569) ([bagong](https://github.com/bagong)) +- class library: HID: fix else statement in findAvailable [\#1567](https://github.com/supercollider/supercollider/pull/1567) ([sensestage](https://github.com/sensestage)) +- fix scope on internal, solves \#1527 [\#1552](https://github.com/supercollider/supercollider/pull/1552) ([adcxyz](https://github.com/adcxyz)) +- add valueActionIfChanged to fix issue\#1460 [\#1551](https://github.com/supercollider/supercollider/pull/1551) ([adcxyz](https://github.com/adcxyz)) +- scsynth: alow using malloc, realloc, free [\#1549](https://github.com/supercollider/supercollider/pull/1549) ([sonoro1234](https://github.com/sonoro1234)) +- fix \#1476 stack corruption triggered by calling a git unixCmd [\#1542](https://github.com/supercollider/supercollider/pull/1542) ([crucialfelix](https://github.com/crucialfelix)) +- quarks: protect during eval of isCompatible fix \#1463 [\#1541](https://github.com/supercollider/supercollider/pull/1541) ([crucialfelix](https://github.com/crucialfelix)) +- validate that a refspec refers to an existing tag [\#1540](https://github.com/supercollider/supercollider/pull/1540) ([crucialfelix](https://github.com/crucialfelix)) +- ide: Switch focus to help docklet on help request [\#1529](https://github.com/supercollider/supercollider/pull/1529) ([scztt](https://github.com/scztt)) +- import boost-1.58 [\#1528](https://github.com/supercollider/supercollider/pull/1528) ([timblechmann](https://github.com/timblechmann)) +- build: switch to alpha1 [\#1525](https://github.com/supercollider/supercollider/pull/1525) ([scztt](https://github.com/scztt)) +- Topic/fix scrollbar hiding osx [\#1523](https://github.com/supercollider/supercollider/pull/1523) ([scztt](https://github.com/scztt)) +- sclang: fix default fonts [\#1522](https://github.com/supercollider/supercollider/pull/1522) ([scztt](https://github.com/scztt)) +- Chebyshev: zero-offset default change plus documentation updates [\#1520](https://github.com/supercollider/supercollider/pull/1520) ([totalgee](https://github.com/totalgee)) +- Fix MIDIIn.connectAll on Linux to only connect to external sources and not internal ones [\#1517](https://github.com/supercollider/supercollider/pull/1517) ([sensestage](https://github.com/sensestage)) +- sclang: Fix incorrect modifiers [\#1513](https://github.com/supercollider/supercollider/pull/1513) ([scztt](https://github.com/scztt)) +- Update Ringz.schelp [\#1511](https://github.com/supercollider/supercollider/pull/1511) ([porres](https://github.com/porres)) +- Update LFPar.schelp [\#1510](https://github.com/supercollider/supercollider/pull/1510) ([porres](https://github.com/porres)) +- Update Resonz.schelp [\#1509](https://github.com/supercollider/supercollider/pull/1509) ([porres](https://github.com/porres)) +- Update Ringz.schelp [\#1508](https://github.com/supercollider/supercollider/pull/1508) ([porres](https://github.com/porres)) +- Update LFPar.schelp [\#1507](https://github.com/supercollider/supercollider/pull/1507) ([porres](https://github.com/porres)) +- Chebyshev polynomials: various fixes \(issue \#1500\) [\#1504](https://github.com/supercollider/supercollider/pull/1504) ([totalgee](https://github.com/totalgee)) +- plugins/LFUGens: generate symmetrical waveforms in LFPulse [\#1503](https://github.com/supercollider/supercollider/pull/1503) ([totalgee](https://github.com/totalgee)) +- Timedll for supernova [\#1497](https://github.com/supercollider/supercollider/pull/1497) ([sonoro1234](https://github.com/sonoro1234)) +- ide: Workaround for completion help view crash [\#1495](https://github.com/supercollider/supercollider/pull/1495) ([scztt](https://github.com/scztt)) +- sclang: fix crash during SerialPort cleanup [\#1494](https://github.com/supercollider/supercollider/pull/1494) ([scztt](https://github.com/scztt)) +- sclang: workaround webkit scrollbar hiding bug [\#1493](https://github.com/supercollider/supercollider/pull/1493) ([scztt](https://github.com/scztt)) +- classlib: Don't pass unprintables in key events [\#1492](https://github.com/supercollider/supercollider/pull/1492) ([scztt](https://github.com/scztt)) +- sclang: set max scroll according to req'd value [\#1491](https://github.com/supercollider/supercollider/pull/1491) ([scztt](https://github.com/scztt)) +- ide: better newline behavior within brackets [\#1490](https://github.com/supercollider/supercollider/pull/1490) ([scztt](https://github.com/scztt)) +- MIDI: make interpreting noteOnZeroAsNoteOff an option rather than a h… [\#1488](https://github.com/supercollider/supercollider/pull/1488) ([sensestage](https://github.com/sensestage)) +- classlib: Use correct spec for x coord of edits [\#1486](https://github.com/supercollider/supercollider/pull/1486) ([scztt](https://github.com/scztt)) +- Add two qt5 packages to dependencies list [\#1481](https://github.com/supercollider/supercollider/pull/1481) ([bagong](https://github.com/bagong)) +- supernova: print version with -v and use -V for verbose [\#1470](https://github.com/supercollider/supercollider/pull/1470) ([sonoro1234](https://github.com/sonoro1234)) +- Help: WritingClasses: Extension methods are like obj-c categories [\#1469](https://github.com/supercollider/supercollider/pull/1469) ([jamshark70](https://github.com/jamshark70)) +- Pluginsunload2 [\#1467](https://github.com/supercollider/supercollider/pull/1467) ([sonoro1234](https://github.com/sonoro1234)) +- remove obsolete Document autocomplete extensions [\#1461](https://github.com/supercollider/supercollider/pull/1461) ([crucialfelix](https://github.com/crucialfelix)) +- Sclang: print version with -v [\#1459](https://github.com/supercollider/supercollider/pull/1459) ([gusano](https://github.com/gusano)) +- Scsynth: print version with -v [\#1458](https://github.com/supercollider/supercollider/pull/1458) ([gusano](https://github.com/gusano)) +- Topic/quarks window is path [\#1457](https://github.com/supercollider/supercollider/pull/1457) ([crucialfelix](https://github.com/crucialfelix)) +- Classlib: lincurve: Prevent incorrect range clipping when curve ~= 0 [\#1441](https://github.com/supercollider/supercollider/pull/1441) ([jamshark70](https://github.com/jamshark70)) +- lang: NetAddr: correctly disconnect tcp socket [\#1440](https://github.com/supercollider/supercollider/pull/1440) ([miguel-negrao](https://github.com/miguel-negrao)) +- protect NetAddr-disconnectAll from failing during shutdown [\#1439](https://github.com/supercollider/supercollider/pull/1439) ([crucialfelix](https://github.com/crucialfelix)) +- classlib: translate modifier keys on mac [\#1434](https://github.com/supercollider/supercollider/pull/1434) ([scztt](https://github.com/scztt)) +- ide: fix crash on session switch [\#1433](https://github.com/supercollider/supercollider/pull/1433) ([scztt](https://github.com/scztt)) +- classlib: Convert note/cc nums in array case [\#1432](https://github.com/supercollider/supercollider/pull/1432) ([scztt](https://github.com/scztt)) +- qtcollider: defer setPropery if called inside drawFunc [\#1431](https://github.com/supercollider/supercollider/pull/1431) ([scztt](https://github.com/scztt)) +- Fix: Install quark dependencies with refspecs [\#1427](https://github.com/supercollider/supercollider/pull/1427) ([crucialfelix](https://github.com/crucialfelix)) +- classlib: note nums / cc channels must be integers [\#1425](https://github.com/supercollider/supercollider/pull/1425) ([scztt](https://github.com/scztt)) +- FreqScope.sc: adapt to new fill property of scope. [\#1419](https://github.com/supercollider/supercollider/pull/1419) ([miczac](https://github.com/miczac)) +- ide: hide toolbox after changing box focus [\#1418](https://github.com/supercollider/supercollider/pull/1418) ([scztt](https://github.com/scztt)) +- lang: don't drop backslashes [\#1417](https://github.com/supercollider/supercollider/pull/1417) ([scztt](https://github.com/scztt)) +- ide: track files opened in a session switch in the recent documents menu [\#1416](https://github.com/supercollider/supercollider/pull/1416) ([scztt](https://github.com/scztt)) +- ide: do not save format settings for controls that are disabled. [\#1415](https://github.com/supercollider/supercollider/pull/1415) ([scztt](https://github.com/scztt)) +- Quarks GUI tiny improvements [\#1414](https://github.com/supercollider/supercollider/pull/1414) ([gusano](https://github.com/gusano)) +- scide: theme: introducing built-in "dark" theme [\#1410](https://github.com/supercollider/supercollider/pull/1410) ([vdonnefort](https://github.com/vdonnefort)) +- \[Help\] add words "Fast Fourier Transform" to guide [\#1407](https://github.com/supercollider/supercollider/pull/1407) ([patrickdupuis](https://github.com/patrickdupuis)) +- Topic/quarks gui enhancements [\#1394](https://github.com/supercollider/supercollider/pull/1394) ([crucialfelix](https://github.com/crucialfelix)) +- Pattern.record method doesn't stop recording [\#1392](https://github.com/supercollider/supercollider/pull/1392) ([gurk](https://github.com/gurk)) +- fixes \#1369 LanguageConfig.current returns "", should return nil [\#1388](https://github.com/supercollider/supercollider/pull/1388) ([crucialfelix](https://github.com/crucialfelix)) +- class library: GridLayout - fix position when using spanning [\#1384](https://github.com/supercollider/supercollider/pull/1384) ([gusano](https://github.com/gusano)) +- fix-DiskOut [\#1382](https://github.com/supercollider/supercollider/pull/1382) ([muellmusik](https://github.com/muellmusik)) +- server GUI: fix initial volume button value [\#1372](https://github.com/supercollider/supercollider/pull/1372) ([gusano](https://github.com/gusano)) +- ide: Fix triggering of doc modified signal [\#1371](https://github.com/supercollider/supercollider/pull/1371) ([scztt](https://github.com/scztt)) +- Date.schelp: corrected peculiar format example [\#1368](https://github.com/supercollider/supercollider/pull/1368) ([miczac](https://github.com/miczac)) +- Fix broken link in Ndef help file [\#1366](https://github.com/supercollider/supercollider/pull/1366) ([albertojgomez](https://github.com/albertojgomez)) +- class library: collectCopy method implementation [\#1357](https://github.com/supercollider/supercollider/pull/1357) ([telephon](https://github.com/telephon)) +- Revert "scide: DocumentSelectPopUp - convert to Popup to fix lost KeyRel... [\#1354](https://github.com/supercollider/supercollider/pull/1354) ([telephon](https://github.com/telephon)) +- scide: DocumentSelectPopUp - convert to Popup to fix lost KeyRelease event [\#1352](https://github.com/supercollider/supercollider/pull/1352) ([timblechmann](https://github.com/timblechmann)) +- cmake: use bundled yaml-cpp by default [\#1351](https://github.com/supercollider/supercollider/pull/1351) ([timblechmann](https://github.com/timblechmann)) +- Topic/improve doc readability [\#1349](https://github.com/supercollider/supercollider/pull/1349) ([telephon](https://github.com/telephon)) +- Classlib: Complex: Fix bugs in 'pow' method [\#1348](https://github.com/supercollider/supercollider/pull/1348) ([jamshark70](https://github.com/jamshark70)) +- Topic/simplify gui documentation [\#1345](https://github.com/supercollider/supercollider/pull/1345) ([telephon](https://github.com/telephon)) +- Tiny enhancements to README\_OSX.md [\#1344](https://github.com/supercollider/supercollider/pull/1344) ([bagong](https://github.com/bagong)) +- Topic nodeproxy gui for numbers [\#1343](https://github.com/supercollider/supercollider/pull/1343) ([telephon](https://github.com/telephon)) +- class library: FunctionList copies before iterating. [\#1341](https://github.com/supercollider/supercollider/pull/1341) ([telephon](https://github.com/telephon)) +- Topic/level indicator [\#1338](https://github.com/supercollider/supercollider/pull/1338) ([scztt](https://github.com/scztt)) +- Topic/ogl filled scope [\#1337](https://github.com/supercollider/supercollider/pull/1337) ([scztt](https://github.com/scztt)) +- Topic/source preview [\#1336](https://github.com/supercollider/supercollider/pull/1336) ([scztt](https://github.com/scztt)) +- Topic/qt5 tim all and cosmetics [\#1334](https://github.com/supercollider/supercollider/pull/1334) ([scztt](https://github.com/scztt)) +- Scide/autocomplete help [\#1333](https://github.com/supercollider/supercollider/pull/1333) ([vdonnefort](https://github.com/vdonnefort)) +- Topic language config current path [\#1327](https://github.com/supercollider/supercollider/pull/1327) ([telephon](https://github.com/telephon)) +- supernova: fix endpoint handling for asynchronous commands [\#1326](https://github.com/supercollider/supercollider/pull/1326) ([timblechmann](https://github.com/timblechmann)) +- qtcollider: avoid un-safe printf by using qWarning\(\) instead [\#1325](https://github.com/supercollider/supercollider/pull/1325) ([timblechmann](https://github.com/timblechmann)) +- Sclang/print version [\#1324](https://github.com/supercollider/supercollider/pull/1324) ([blacksound](https://github.com/blacksound)) +- scsynth: print version and exit with option -V [\#1322](https://github.com/supercollider/supercollider/pull/1322) ([blacksound](https://github.com/blacksound)) +- supernova: use -Z in portaudio 0 hight \(negative\) low others desired har... [\#1318](https://github.com/supercollider/supercollider/pull/1318) ([sonoro1234](https://github.com/sonoro1234)) +- server: GraphDef\_ReadVer1 now reads via ParamSpec\_ReadVer1 [\#1317](https://github.com/supercollider/supercollider/pull/1317) ([telephon](https://github.com/telephon)) +- plugins: fix 10 trigger UGens that did not initialize ZOUT correcly [\#1311](https://github.com/supercollider/supercollider/pull/1311) ([jamshark70](https://github.com/jamshark70)) +- Plugins: Demand: Add Dconst UGen, with schelp [\#1305](https://github.com/supercollider/supercollider/pull/1305) ([jamshark70](https://github.com/jamshark70)) +- Scide/line number [\#1302](https://github.com/supercollider/supercollider/pull/1302) ([vdonnefort](https://github.com/vdonnefort)) +- Topic/linxfade fix [\#1301](https://github.com/supercollider/supercollider/pull/1301) ([timblechmann](https://github.com/timblechmann)) +- class library\(GUI\): rename arguments - \*new [\#1288](https://github.com/supercollider/supercollider/pull/1288) ([gurk](https://github.com/gurk)) +- Topic/timing cleanup [\#1286](https://github.com/supercollider/supercollider/pull/1286) ([muellmusik](https://github.com/muellmusik)) +- Topic/operators [\#1282](https://github.com/supercollider/supercollider/pull/1282) ([telephon](https://github.com/telephon)) +- scide: add OSX delete word ctrl+w shortcut [\#1272](https://github.com/supercollider/supercollider/pull/1272) ([vdonnefort](https://github.com/vdonnefort)) +- Topic/bounded controls: cleaned up branch ready. [\#1270](https://github.com/supercollider/supercollider/pull/1270) ([telephon](https://github.com/telephon)) +- string: regex: rename firstRegexp [\#1269](https://github.com/supercollider/supercollider/pull/1269) ([sofakid](https://github.com/sofakid)) +- scide: introducing restore function [\#1267](https://github.com/supercollider/supercollider/pull/1267) ([vdonnefort](https://github.com/vdonnefort)) +- plugins: EnvGen - fix initialization of hold segment [\#1265](https://github.com/supercollider/supercollider/pull/1265) ([timblechmann](https://github.com/timblechmann)) +- scide: add save-as-extension functionality [\#1264](https://github.com/supercollider/supercollider/pull/1264) ([timblechmann](https://github.com/timblechmann)) +- cmake: externals - don't scare users about auto\_ptr [\#1263](https://github.com/supercollider/supercollider/pull/1263) ([timblechmann](https://github.com/timblechmann)) +- Update Tdef.schelp [\#1262](https://github.com/supercollider/supercollider/pull/1262) ([vividsnow](https://github.com/vividsnow)) +- class library: translations between key value pairs, asscociations, and dictionaries [\#1260](https://github.com/supercollider/supercollider/pull/1260) ([telephon](https://github.com/telephon)) +- Apple build: Prevent supernova from being installed twice [\#1256](https://github.com/supercollider/supercollider/pull/1256) ([bagong](https://github.com/bagong)) +- plugins: Linen checks for prehistoric release message [\#1255](https://github.com/supercollider/supercollider/pull/1255) ([telephon](https://github.com/telephon)) +- Topic/boost 1.57 [\#1249](https://github.com/supercollider/supercollider/pull/1249) ([timblechmann](https://github.com/timblechmann)) +- string: Fix regex cache init, implement firstRegex [\#1248](https://github.com/supercollider/supercollider/pull/1248) ([sofakid](https://github.com/sofakid)) +- Orthographical adjustment to win installer script [\#1244](https://github.com/supercollider/supercollider/pull/1244) ([bagong](https://github.com/bagong)) +- IFFT.schelp: fix example [\#1243](https://github.com/supercollider/supercollider/pull/1243) ([miczac](https://github.com/miczac)) +- sclang: hidapi - fix gc corruption bug [\#1242](https://github.com/supercollider/supercollider/pull/1242) ([timblechmann](https://github.com/timblechmann)) +- Classlib: Pstep: Fix unnecessary creation of an array on every iteration [\#1236](https://github.com/supercollider/supercollider/pull/1236) ([jamshark70](https://github.com/jamshark70)) +- Classlib: QPenPrinter: Add 'bounds' method [\#1235](https://github.com/supercollider/supercollider/pull/1235) ([jamshark70](https://github.com/jamshark70)) +- Classlib: Pfuncn: Like Pfunc, this should call processRest before yield [\#1234](https://github.com/supercollider/supercollider/pull/1234) ([jamshark70](https://github.com/jamshark70)) +- Classlib: Rest: Add 'value' method to simplify mixing rests and numbers [\#1233](https://github.com/supercollider/supercollider/pull/1233) ([jamshark70](https://github.com/jamshark70)) +- Topic/qt5 win [\#1229](https://github.com/supercollider/supercollider/pull/1229) ([timblechmann](https://github.com/timblechmann)) +- cmake: fix & clean up xcode project [\#1225](https://github.com/supercollider/supercollider/pull/1225) ([timblechmann](https://github.com/timblechmann)) +- Fix "QNetworkRequest header not found". [\#1223](https://github.com/supercollider/supercollider/pull/1223) ([ventosus](https://github.com/ventosus)) +- fix help installation [\#1222](https://github.com/supercollider/supercollider/pull/1222) ([nuss](https://github.com/nuss)) +- supernova: /notify - return client id [\#1221](https://github.com/supercollider/supercollider/pull/1221) ([timblechmann](https://github.com/timblechmann)) +- tcp server, retry a couple of times until getting a tcp connection [\#1215](https://github.com/supercollider/supercollider/pull/1215) ([miguel-negrao](https://github.com/miguel-negrao)) +- lang: Fix TCP bugs [\#1214](https://github.com/supercollider/supercollider/pull/1214) ([muellmusik](https://github.com/muellmusik)) +- More document stuff [\#1213](https://github.com/supercollider/supercollider/pull/1213) ([muellmusik](https://github.com/muellmusik)) +- rd/tgrains \(& localbuf\) [\#1207](https://github.com/supercollider/supercollider/pull/1207) ([rd--](https://github.com/rd--)) +- Blocksize-\>BlockSize [\#1206](https://github.com/supercollider/supercollider/pull/1206) ([rd--](https://github.com/rd--)) +- scel: highlight uppercase symbols in emacs [\#1205](https://github.com/supercollider/supercollider/pull/1205) ([bion](https://github.com/bion)) +- HID\_API fix: initClass -\> initClassTree [\#1203](https://github.com/supercollider/supercollider/pull/1203) ([andersvi](https://github.com/andersvi)) +- Adding drawImage example to Pen.schelp [\#1197](https://github.com/supercollider/supercollider/pull/1197) ([thormagnusson](https://github.com/thormagnusson)) +- Create Image.schelp [\#1195](https://github.com/supercollider/supercollider/pull/1195) ([thormagnusson](https://github.com/thormagnusson)) +- Update win32\_api.hpp [\#1192](https://github.com/supercollider/supercollider/pull/1192) ([bagong](https://github.com/bagong)) +- Topic/boost updates [\#1191](https://github.com/supercollider/supercollider/pull/1191) ([timblechmann](https://github.com/timblechmann)) +- cmake/apple: compile targets directly into the app bundle [\#1189](https://github.com/supercollider/supercollider/pull/1189) ([timblechmann](https://github.com/timblechmann)) +- supernova: don't scare osx users by consumer-os [\#1187](https://github.com/supercollider/supercollider/pull/1187) ([timblechmann](https://github.com/timblechmann)) +- fix assign path [\#1186](https://github.com/supercollider/supercollider/pull/1186) ([carlocapocasa](https://github.com/carlocapocasa)) +- scide: mark current session in dialogs [\#1184](https://github.com/supercollider/supercollider/pull/1184) ([timblechmann](https://github.com/timblechmann)) +- scide: fix preferences action name shortcut for osx menu placement [\#1183](https://github.com/supercollider/supercollider/pull/1183) ([timblechmann](https://github.com/timblechmann)) +- cmake: fix typo [\#1182](https://github.com/supercollider/supercollider/pull/1182) ([timblechmann](https://github.com/timblechmann)) +- scide: key up after line evaluation should go to original position [\#1178](https://github.com/supercollider/supercollider/pull/1178) ([timblechmann](https://github.com/timblechmann)) +- cmake: link sclang with tlsf [\#1177](https://github.com/supercollider/supercollider/pull/1177) ([timblechmann](https://github.com/timblechmann)) +- cmake: install help on non-apple systems [\#1175](https://github.com/supercollider/supercollider/pull/1175) ([timblechmann](https://github.com/timblechmann)) +- Topic/scide enhancements [\#1172](https://github.com/supercollider/supercollider/pull/1172) ([timblechmann](https://github.com/timblechmann)) +- boost updates & cmake modernization [\#1166](https://github.com/supercollider/supercollider/pull/1166) ([timblechmann](https://github.com/timblechmann)) +- Fix Scale.newFromKey with tuning argument [\#1161](https://github.com/supercollider/supercollider/pull/1161) ([slpopejoy](https://github.com/slpopejoy)) +- Update Date.schelp [\#1151](https://github.com/supercollider/supercollider/pull/1151) ([thormagnusson](https://github.com/thormagnusson)) +- ide: introducing themes management [\#1150](https://github.com/supercollider/supercollider/pull/1150) ([vdonnefort](https://github.com/vdonnefort)) +- help: chaotic generators warnings removed [\#1149](https://github.com/supercollider/supercollider/pull/1149) ([smrg-lm](https://github.com/smrg-lm)) +- Topic/coremidi crash fix [\#1147](https://github.com/supercollider/supercollider/pull/1147) ([scztt](https://github.com/scztt)) +- plugins: TrigControl behaves like Control. Fixes \#1145 [\#1146](https://github.com/supercollider/supercollider/pull/1146) ([telephon](https://github.com/telephon)) +- Classlib: PlotView: Don't post spec in calcSpecs [\#1135](https://github.com/supercollider/supercollider/pull/1135) ([jamshark70](https://github.com/jamshark70)) +- mergeCharFormat instead of setCharFormat, so existing format info isn't ... [\#1134](https://github.com/supercollider/supercollider/pull/1134) ([scztt](https://github.com/scztt)) +- Colorize lines in the post window. [\#1131](https://github.com/supercollider/supercollider/pull/1131) ([scztt](https://github.com/scztt)) +- Allow the addReplace action to replace existing nodes while keeping the ... [\#1130](https://github.com/supercollider/supercollider/pull/1130) ([scztt](https://github.com/scztt)) +- Show line number \(v3\) [\#1129](https://github.com/supercollider/supercollider/pull/1129) ([vdonnefort](https://github.com/vdonnefort)) +- supernova: ensure that daz/ftz are set in all audio threads [\#1127](https://github.com/supercollider/supercollider/pull/1127) ([timblechmann](https://github.com/timblechmann)) +- File.schelp: changed pathnames to fully qualified [\#1126](https://github.com/supercollider/supercollider/pull/1126) ([miczac](https://github.com/miczac)) +- some supernova fixes [\#1123](https://github.com/supercollider/supercollider/pull/1123) ([timblechmann](https://github.com/timblechmann)) +- ide: add show/hide line number feature [\#1121](https://github.com/supercollider/supercollider/pull/1121) ([vdonnefort](https://github.com/vdonnefort)) +- scsynth coreaudio fixes [\#1118](https://github.com/supercollider/supercollider/pull/1118) ([gurk](https://github.com/gurk)) +- Topic/supernova tcp [\#1109](https://github.com/supercollider/supercollider/pull/1109) ([timblechmann](https://github.com/timblechmann)) +- sclang: fix accidental number literal [\#1105](https://github.com/supercollider/supercollider/pull/1105) ([mohayonao](https://github.com/mohayonao)) +- sclang: fix float radix with pi [\#1104](https://github.com/supercollider/supercollider/pull/1104) ([mohayonao](https://github.com/mohayonao)) +- server: mapped audio bus for /g\_queryTree.reply [\#1103](https://github.com/supercollider/supercollider/pull/1103) ([8c6794b6](https://github.com/8c6794b6)) +- Initialize openPorts variable before startup.scd file is executed. [\#1102](https://github.com/supercollider/supercollider/pull/1102) ([marierm](https://github.com/marierm)) +- Fix ctrl-w [\#1101](https://github.com/supercollider/supercollider/pull/1101) ([muellmusik](https://github.com/muellmusik)) +- supernova: protect synth controls [\#1095](https://github.com/supercollider/supercollider/pull/1095) ([timblechmann](https://github.com/timblechmann)) +- update readline version from homebrew in os x readme [\#1093](https://github.com/supercollider/supercollider/pull/1093) ([seansay](https://github.com/seansay)) +- HID fix cleaned up [\#1092](https://github.com/supercollider/supercollider/pull/1092) ([sensestage](https://github.com/sensestage)) +- ClassLib: SimpleNumber: biexp return calculated value [\#1089](https://github.com/supercollider/supercollider/pull/1089) ([mohayonao](https://github.com/mohayonao)) +- Netbsd compatibility [\#1088](https://github.com/supercollider/supercollider/pull/1088) ([danstowell](https://github.com/danstowell)) +- Tiny correction [\#1080](https://github.com/supercollider/supercollider/pull/1080) ([arnaldorusso](https://github.com/arnaldorusso)) +- Classlib: SystemSynthDefs: Remove postln that shouldn't have been committed [\#1076](https://github.com/supercollider/supercollider/pull/1076) ([jamshark70](https://github.com/jamshark70)) +- Classlib: Server.sc: Prevent an inadvertent "non-inlined function" warning [\#1075](https://github.com/supercollider/supercollider/pull/1075) ([jamshark70](https://github.com/jamshark70)) +- cmake: disable some msvc warnings [\#1074](https://github.com/supercollider/supercollider/pull/1074) ([timblechmann](https://github.com/timblechmann)) +- Classlib: GUI: Reinstate proper functioning of ObjectGui system [\#1073](https://github.com/supercollider/supercollider/pull/1073) ([marierm](https://github.com/marierm)) +- lang: include missing header [\#1072](https://github.com/supercollider/supercollider/pull/1072) ([timblechmann](https://github.com/timblechmann)) +- class library: single lag value in NamedControl shouldn't result in an a... [\#1071](https://github.com/supercollider/supercollider/pull/1071) ([miguel-negrao](https://github.com/miguel-negrao)) +- sclang: deepfreeze - do not freeze immutable / permanent objects [\#1069](https://github.com/supercollider/supercollider/pull/1069) ([timblechmann](https://github.com/timblechmann)) +- DreamHouse.scd: replaced code on request by author [\#1067](https://github.com/supercollider/supercollider/pull/1067) ([miczac](https://github.com/miczac)) +- supernova: make apple clang happy [\#1066](https://github.com/supercollider/supercollider/pull/1066) ([timblechmann](https://github.com/timblechmann)) +- Help: Fix envelope handling in a pattern-cookbook example [\#1061](https://github.com/supercollider/supercollider/pull/1061) ([jamshark70](https://github.com/jamshark70)) +- Fix NRT file paths [\#1060](https://github.com/supercollider/supercollider/pull/1060) ([jamshark70](https://github.com/jamshark70)) +- lang: Fix memory corruption bug introduced in commit ac613331d5062bcd1ae... [\#1054](https://github.com/supercollider/supercollider/pull/1054) ([muellmusik](https://github.com/muellmusik)) +- syntax highlight and allow running code from schelp files [\#1052](https://github.com/supercollider/supercollider/pull/1052) ([miguel-negrao](https://github.com/miguel-negrao)) +- Classlib: fixed PatternProxy constrainStream so defaultQuant works [\#1043](https://github.com/supercollider/supercollider/pull/1043) ([d0kt0r0](https://github.com/d0kt0r0)) +- Classlib: Change NetAddr's default port to nil [\#1040](https://github.com/supercollider/supercollider/pull/1040) ([jamshark70](https://github.com/jamshark70)) +- class library: Env\#\*step easier creation of step envelopes [\#1039](https://github.com/supercollider/supercollider/pull/1039) ([miguel-negrao](https://github.com/miguel-negrao)) +- sclang: Fixed bug where osc bundles were being chooped midway [\#1038](https://github.com/supercollider/supercollider/pull/1038) ([miguel-negrao](https://github.com/miguel-negrao)) +- Small tweaks required for building libscsynth for Win 64-bit [\#1035](https://github.com/supercollider/supercollider/pull/1035) ([maedoc](https://github.com/maedoc)) +- lang: capture elapsedTime\(\) when a packet is received, rather than just ... [\#1032](https://github.com/supercollider/supercollider/pull/1032) ([muellmusik](https://github.com/muellmusik)) +- plugins: EnvGen - initialize level of initial \hold segments [\#1028](https://github.com/supercollider/supercollider/pull/1028) ([timblechmann](https://github.com/timblechmann)) +- Update INSTALL [\#1025](https://github.com/supercollider/supercollider/pull/1025) ([jwakely](https://github.com/jwakely)) +- plugins: EnvGen - update number of produced samples on audio-rate gates [\#1024](https://github.com/supercollider/supercollider/pull/1024) ([timblechmann](https://github.com/timblechmann)) +- sclang: add terminal standalone option [\#1021](https://github.com/supercollider/supercollider/pull/1021) ([miguel-negrao](https://github.com/miguel-negrao)) +- Server multi client [\#1019](https://github.com/supercollider/supercollider/pull/1019) ([muellmusik](https://github.com/muellmusik)) +- sc class library: events: allocWrite type [\#1017](https://github.com/supercollider/supercollider/pull/1017) ([vividsnow](https://github.com/vividsnow)) +- fix filepath typo in os x readme file [\#1015](https://github.com/supercollider/supercollider/pull/1015) ([seansay](https://github.com/seansay)) +- sclang/identDictput: test if object is mutable before changing [\#1012](https://github.com/supercollider/supercollider/pull/1012) ([mortuosplango](https://github.com/mortuosplango)) +- Disable AppNap in QtCollider, sclang, and scsynth [\#1011](https://github.com/supercollider/supercollider/pull/1011) ([snickell](https://github.com/snickell)) +- Minor enhancements after first rewrite [\#1003](https://github.com/supercollider/supercollider/pull/1003) ([bagong](https://github.com/bagong)) +- scdoc: minor correction to Dshuf new argument - should be repeats and no... [\#1002](https://github.com/supercollider/supercollider/pull/1002) ([redFrik](https://github.com/redFrik)) +- Rework OSX Readme [\#1000](https://github.com/supercollider/supercollider/pull/1000) ([bagong](https://github.com/bagong)) +- Add matchLangIP method and primitive [\#998](https://github.com/supercollider/supercollider/pull/998) ([muellmusik](https://github.com/muellmusik)) +- Fix open document [\#997](https://github.com/supercollider/supercollider/pull/997) ([muellmusik](https://github.com/muellmusik)) +- Mac OS 10.9 SDK compatibility [\#994](https://github.com/supercollider/supercollider/pull/994) ([mortuosplango](https://github.com/mortuosplango)) +- update to boost-1.55 [\#993](https://github.com/supercollider/supercollider/pull/993) ([timblechmann](https://github.com/timblechmann)) +- scvim: Adding tmux support, fixing screen support, fixing sclang restart/start/kill \(also in terminal multiplexers\) [\#990](https://github.com/supercollider/supercollider/pull/990) ([dvzrv](https://github.com/dvzrv)) +- boost: fix build error with recent versions of glibc [\#988](https://github.com/supercollider/supercollider/pull/988) ([gusano](https://github.com/gusano)) +- cmake: disable SC\_WII by default [\#987](https://github.com/supercollider/supercollider/pull/987) ([gusano](https://github.com/gusano)) +- external libs: bump nova-tt [\#983](https://github.com/supercollider/supercollider/pull/983) ([timblechmann](https://github.com/timblechmann)) +- help: update phasor [\#978](https://github.com/supercollider/supercollider/pull/978) ([miguel-negrao](https://github.com/miguel-negrao)) +- Topic/env step2 [\#975](https://github.com/supercollider/supercollider/pull/975) ([timblechmann](https://github.com/timblechmann)) +- class library: allow NamedControl.new\(\) to return non-arrayed Lag \(fixing issue 973\) [\#974](https://github.com/supercollider/supercollider/pull/974) ([totalgee](https://github.com/totalgee)) +- Topic/for master [\#971](https://github.com/supercollider/supercollider/pull/971) ([timblechmann](https://github.com/timblechmann)) +- Ide editor improvements improvements [\#970](https://github.com/supercollider/supercollider/pull/970) ([muellmusik](https://github.com/muellmusik)) +- lang: Add editable property to QWebView [\#969](https://github.com/supercollider/supercollider/pull/969) ([muellmusik](https://github.com/muellmusik)) +- Topic/for master [\#963](https://github.com/supercollider/supercollider/pull/963) ([timblechmann](https://github.com/timblechmann)) +- class library: speed improvements in a few places where bit operations are used. [\#962](https://github.com/supercollider/supercollider/pull/962) ([redFrik](https://github.com/redFrik)) +- Topic/for master [\#953](https://github.com/supercollider/supercollider/pull/953) ([timblechmann](https://github.com/timblechmann)) +- Scide document rework text mirror [\#948](https://github.com/supercollider/supercollider/pull/948) ([muellmusik](https://github.com/muellmusik)) +- class library: pbind midi type - fix for sending sysex [\#947](https://github.com/supercollider/supercollider/pull/947) ([redFrik](https://github.com/redFrik)) +- help: changed .send\(s\) for .add in SynthDef example [\#946](https://github.com/supercollider/supercollider/pull/946) ([brunoruviaro](https://github.com/brunoruviaro)) +- Classlib: Fix 2 issues regarding Rest and patterns [\#941](https://github.com/supercollider/supercollider/pull/941) ([jamshark70](https://github.com/jamshark70)) +- Topic/asio appclock [\#940](https://github.com/supercollider/supercollider/pull/940) ([timblechmann](https://github.com/timblechmann)) +- class library: NamedControl - avoid lags if possible [\#938](https://github.com/supercollider/supercollider/pull/938) ([timblechmann](https://github.com/timblechmann)) +- Documentation: Escape char in string literals, and thisProcess.nowExecutingPath [\#935](https://github.com/supercollider/supercollider/pull/935) ([jamshark70](https://github.com/jamshark70)) +- Filter Help Docs: Warning about frequencies close to 0 [\#934](https://github.com/supercollider/supercollider/pull/934) ([miczac](https://github.com/miczac)) +- Simplify and enhance Windows installer [\#929](https://github.com/supercollider/supercollider/pull/929) ([bagong](https://github.com/bagong)) +- Library: Prevent inline-function warning in FFTUnpacking.sc [\#922](https://github.com/supercollider/supercollider/pull/922) ([jamshark70](https://github.com/jamshark70)) +- Class Library: Object - performance improvements for Object.dup [\#921](https://github.com/supercollider/supercollider/pull/921) ([thormagnusson](https://github.com/thormagnusson)) +- linux readme: qt5 limitation [\#917](https://github.com/supercollider/supercollider/pull/917) ([miguel-negrao](https://github.com/miguel-negrao)) +- scsynth: support for receiving nested OSC bundles. [\#914](https://github.com/supercollider/supercollider/pull/914) ([ventosus](https://github.com/ventosus)) +- supernova: synthdef corruption - added synthef path to error message [\#912](https://github.com/supercollider/supercollider/pull/912) ([miguel-negrao](https://github.com/miguel-negrao)) +- SCDoc: remove MathJax support [\#910](https://github.com/supercollider/supercollider/pull/910) ([gusano](https://github.com/gusano)) +- implement sclang sockets via boost.asio & move ReplyAddress out of the public interface [\#903](https://github.com/supercollider/supercollider/pull/903) ([timblechmann](https://github.com/timblechmann)) +- HelpSource: MIDIFunc: show how to free a MIDIFunc [\#900](https://github.com/supercollider/supercollider/pull/900) ([gusano](https://github.com/gusano)) +- make sure GUI.skins is not nil in ProxyMixerOld [\#893](https://github.com/supercollider/supercollider/pull/893) ([redFrik](https://github.com/redFrik)) +- scide: sc\_editor: include parenthesis in regionAroundCursor\(\) [\#892](https://github.com/supercollider/supercollider/pull/892) ([gusano](https://github.com/gusano)) +- Pproto minor typo fix [\#891](https://github.com/supercollider/supercollider/pull/891) ([blacksound](https://github.com/blacksound)) +- Topic/markdown for readme files [\#890](https://github.com/supercollider/supercollider/pull/890) ([gusano](https://github.com/gusano)) +- sclang: support for receiving nested OSC bundles. [\#881](https://github.com/supercollider/supercollider/pull/881) ([ventosus](https://github.com/ventosus)) +- sclang: support for more non-standard OSC types [\#878](https://github.com/supercollider/supercollider/pull/878) ([ventosus](https://github.com/ventosus)) +- sclang bugfix: proper handling of Open Sound Control Blob Arguments [\#877](https://github.com/supercollider/supercollider/pull/877) ([ventosus](https://github.com/ventosus)) +- Quarks: use new sf.net repo url [\#873](https://github.com/supercollider/supercollider/pull/873) ([gusano](https://github.com/gusano)) +- classlib \(quarks\): Defer svn path checking until needed; try{} the check [\#865](https://github.com/supercollider/supercollider/pull/865) ([jamshark70](https://github.com/jamshark70)) +- Ndef.schelp, Shaper.schelp, Wavetable.schelp [\#846](https://github.com/supercollider/supercollider/pull/846) ([miczac](https://github.com/miczac)) +- Server : pings before considered dead [\#842](https://github.com/supercollider/supercollider/pull/842) ([miguel-negrao](https://github.com/miguel-negrao)) +- remove bundled elisp library tree-widget.el [\#840](https://github.com/supercollider/supercollider/pull/840) ([tarsius](https://github.com/tarsius)) +- scdoc: Pseg: duration pattern in beats not seconds [\#827](https://github.com/supercollider/supercollider/pull/827) ([vividsnow](https://github.com/vividsnow)) +- new version of README.txt, corrections to help docs [\#822](https://github.com/supercollider/supercollider/pull/822) ([miczac](https://github.com/miczac)) +- examples: ASA - simplify and cleanup [\#819](https://github.com/supercollider/supercollider/pull/819) ([gusano](https://github.com/gusano)) +- updated README.txt [\#818](https://github.com/supercollider/supercollider/pull/818) ([miczac](https://github.com/miczac)) +- thisFunction/thisFunctionDef keywords in help [\#809](https://github.com/supercollider/supercollider/pull/809) ([vividsnow](https://github.com/vividsnow)) +- Update the description of LinPan2. [\#808](https://github.com/supercollider/supercollider/pull/808) ([vanhuman](https://github.com/vanhuman)) +- Updates the description. [\#807](https://github.com/supercollider/supercollider/pull/807) ([vanhuman](https://github.com/vanhuman)) +- Changed the description of Balance2 into something a bit more explanatory. [\#806](https://github.com/supercollider/supercollider/pull/806) ([vanhuman](https://github.com/vanhuman)) +- Added missing closing "\)" in MIDI input example. [\#803](https://github.com/supercollider/supercollider/pull/803) ([attejensen](https://github.com/attejensen)) +- sc ide: settings editor: move insertMatchingTokens setting [\#796](https://github.com/supercollider/supercollider/pull/796) ([gusano](https://github.com/gusano)) +- Update GUI-Layout-Management.schelp [\#795](https://github.com/supercollider/supercollider/pull/795) ([olafklingt](https://github.com/olafklingt)) +- sc ide: sc editor: slight improvement of matching token insertion [\#792](https://github.com/supercollider/supercollider/pull/792) ([gusano](https://github.com/gusano)) +- sc ide: settings editor: move insertMatchingTokens setting [\#791](https://github.com/supercollider/supercollider/pull/791) ([gusano](https://github.com/gusano)) +- class library: UGen - provide bilin [\#781](https://github.com/supercollider/supercollider/pull/781) ([timblechmann](https://github.com/timblechmann)) +- scide: left|right arrow keys disable completion [\#773](https://github.com/supercollider/supercollider/pull/773) ([gusano](https://github.com/gusano)) +- removed superfluous links under related [\#766](https://github.com/supercollider/supercollider/pull/766) ([redFrik](https://github.com/redFrik)) +- added related link to SendReply [\#765](https://github.com/supercollider/supercollider/pull/765) ([redFrik](https://github.com/redFrik)) +- Update Warp1.schelp [\#759](https://github.com/supercollider/supercollider/pull/759) ([redFrik](https://github.com/redFrik)) +- fix git recursive flag command [\#747](https://github.com/supercollider/supercollider/pull/747) ([hems](https://github.com/hems)) +- Adding "Contributing with the documentation" to "Writing Help.schelp" file [\#746](https://github.com/supercollider/supercollider/pull/746) ([hems](https://github.com/hems)) +- cmake: link pthreads libraries [\#742](https://github.com/supercollider/supercollider/pull/742) ([gusano](https://github.com/gusano)) +- Topic/simplify cpu dispatching [\#732](https://github.com/supercollider/supercollider/pull/732) ([timblechmann](https://github.com/timblechmann)) +- Multichannel envelope fixes [\#718](https://github.com/supercollider/supercollider/pull/718) ([timblechmann](https://github.com/timblechmann)) +- Topic/ide cmdline [\#711](https://github.com/supercollider/supercollider/pull/711) ([timblechmann](https://github.com/timblechmann)) +- out-comment s\_tick [\#709](https://github.com/supercollider/supercollider/pull/709) ([2mc](https://github.com/2mc)) +- include: split public and private headers & prototype libsclang interface [\#703](https://github.com/supercollider/supercollider/pull/703) ([timblechmann](https://github.com/timblechmann)) +- in OpenBSD search for classes using cmake configuration [\#685](https://github.com/supercollider/supercollider/pull/685) ([acamari](https://github.com/acamari)) +- ports supercollider to OpenBSD [\#683](https://github.com/supercollider/supercollider/pull/683) ([acamari](https://github.com/acamari)) +- scide: code editor - insert path when dropping unknown files [\#663](https://github.com/supercollider/supercollider/pull/663) ([totalgee](https://github.com/totalgee)) +- asSynthDef and SynthDef.name should return symbols [\#661](https://github.com/supercollider/supercollider/pull/661) ([timblechmann](https://github.com/timblechmann)) +- Fix for \#657; copy/paste to OS X Mail loses tabs [\#659](https://github.com/supercollider/supercollider/pull/659) ([totalgee](https://github.com/totalgee)) +- Main:startup: initialize openPorts before StartUp.run to enable OSCFunc ... [\#647](https://github.com/supercollider/supercollider/pull/647) ([iani](https://github.com/iani)) +- Properly initialize mSaveTime on document open and save. [\#597](https://github.com/supercollider/supercollider/pull/597) ([scztt](https://github.com/scztt)) +- Corrected some typos and errors in the help docs [\#506](https://github.com/supercollider/supercollider/pull/506) ([andrewcsmith](https://github.com/andrewcsmith)) +- Fixed two typos in the update news [\#500](https://github.com/supercollider/supercollider/pull/500) ([andrewcsmith](https://github.com/andrewcsmith)) +- class library: fix server meter initialization [\#484](https://github.com/supercollider/supercollider/pull/484) ([timblechmann](https://github.com/timblechmann)) +- Refer to TChoose from the TIRand help file [\#355](https://github.com/supercollider/supercollider/pull/355) ([rukano](https://github.com/rukano)) +- Typo in PparGroup's help file example [\#351](https://github.com/supercollider/supercollider/pull/351) ([rukano](https://github.com/rukano)) +- corrected pathname for sound file in LevelIndicator.schelp [\#347](https://github.com/supercollider/supercollider/pull/347) ([miczac](https://github.com/miczac)) + +SuperCollider v3.6.5, released 2013-04 +====================================== + +Jakob Leben (10): +- sc class library: fix regression in Server:-scope +- scide: add "reset font size" action to post window and help browser +- scide: autocompletion: order methods by class hierarchy when class is known +- documentation: improve info on logical time, clocks and threads +- documentation: more info on threads, clocks and time +- sclang: PyrThread: ensure slot type safety +- documentation: clarify the functioning of Thread and Routine +- streamline README.txt +- documentation: improve thisFunction and thisFunctionDef + +Julian Rohrhuber (3): +- sc class library: replacing the source of a node proxy led to hanging patterns +- sc class library: NodeProxy:cleanNodeMapnow works even if no settings are present +- fix typo / removing the implication that ansi-C isn't appropriate + +Michael Zacherl (5): +- In.schelp: replaced AudioIn w/ SoundIn in reference, added loudness in example section +- Knob.schelp: repositioned text in mouseOverAction example +- Klang.schelp: changed 'filter' to 'oscillator' in methods section +- DynKlang.schelp: changed 'filter' to 'oscillator' in methods section +- README.txt: reworked and simplified with focus on SC IDE and version 3.6 + +vividsnow (2): +- scdoc: Pseg: duration pattern in beats not seconds +- scdoc: add thisFunctionDef/thisFunction + + +SuperCollider v3.6.4, released 2013-04 +====================================== + +Dan Stowell (1): +- SinOsc and Osc: note phase issue beyond +-8pi. Fixes #815 + +Jakob Leben (34): +- sclang: fix Char:-isUpper/isLower +- qtcollider: add QListView:-selectionAction +- qtcollider: add QListView:-selection setter +- scide: remove credits for kiberpipa +- help: GUI - improve documentation of alignment options +- help: add guide on creating standalone applications +- sc ide: show impl/ref lookup dialogs even when no text under cursor +- sc class library: ClassBrowser: fix search with empty query string +- sc ide: interpreter: post notification on quit or crash +- qtcollider: pass exit code up to SC_TerminalClient +- sc ide: fix and improve region detection +- sc ide: sc editor: add action to select pair of brackets enclosing cursor +- sc ide: sc editor: update bracket match highlight after applying settings +- qtcollider: QTextView: increase 'selectedString' compatibility, fix docs +- qtcollider: envelope view: fix drawing of quadratic and cubic curves +- sc ide: help browser: delegate docklet focus to webpage view +- sc ide: docklet: when focusing, also activate window +- sc ide: fix auto-indenting closing brackets on certain locales +- sc ide: ensure dock widgets within screen bounds when first undocked +- qtcollider: QTextView: set 'enterInterpretsSelection' to true by default +- scide: config dialog: preserve font when toggling "show only monospaced" +- scide: select line in code on triple click +- scide: ensure last active window activated after open/save file dialog +- scide: on startup, remove invalid file paths from "recent documents" list +- scide: improve default paths in open/save dialogs +- scide: save document dialog: always allow saving with any extension +- scide: editor: highlight unmatched brackets just like mismatched ones +- qtcollider: StackLayout: fix crash when removing contained widget +- qtcollider: do not allow reparenting layouts, to avoid crashing +- scide: fix closing tool panels on Escape +- scide: impl/ref lookup: close dialog when opening documentation for class +- Revert "Revert "scide: on Mac, make one global menu to share by all windows"" +- scide: prevent erroneous overriding of shortcuts on Mac OS + +James Harkins (2): +- Library: Bugfix for PmonoArtic inside other patterns w/cleanup +- Library: Fix Pfset passing child cleanups up to its parent(s) + +Tim Blechmann (10): +- Help: fix rlpf help file +- plugins: DemandEnv - fix shape polling +- plugins: GrainBuf - catch both inf and NaN phase arguments +- scsynth: prevent possible buffer overflow +- cmake build system: fix x11 include paths +- class library: Bus - fix get method for multi-channel busses +- class library: Server.scope - remove limitation to 16 channels +- plugins: LocalOut - don't crash server if LocalIn is missing +- sclang: prevent buffer overflow +- scide: link with librt + +Victor Bombi (1): +- supernova: CMakeLists.txt must set include dirs for fftw3f + +attejensen (1): +- Update MIDI.schelp + + +SuperCollider v3.6.3, released 2013-02 +====================================== + +Dan Stowell (2): +- Add cmake option NO_GPL3 to simplify building of GPL2 binaries +- SCDoc: generalise licensing from GPL3+ to GPL2+ + +Graeme Urquhart (2): +- Issue #702 fix: sendSelection receives NSString +- String:Help of split method matches implementation + +Jakob Leben (24): +- qtcollider: relicense to GPL version 2 +- sclang: terminal client - fix and simplify request handling +- qtcollider: support String:-speak when Speech class is available +- cmake: set LIBSCSYNTH=ON by default on Windows +- qtcollider: QView - do not block beginDrag if currentDrag is already set +- qtcollider: QKnob - let 'background' affect knob color +- sc ide: improve server boot/quit actions +- sc ide: improve interpreter start/stop actions +- sc ide: improve default server booting shortcuts +- qtcollider: sf view: fix loading non-power-of-two floating point files +- sc ide: disable zooming by mouse wheel (scrolling) +- sc ide: editor - set Qt::WA_MacNoClickThrough on viewport +- help: improve the SC IDE guide +- qtcollider: implement QtGUI:*cursorPosition +- class library: Platform - redirect getMouseCoords to GUI +- sc ide: post window - disable click-through on Mac OS X +- sc ide: add Help menu action to open the SuperCollider IDE guide +- help: SC IDE guide - show scaled screenshot, with a link to unscaled one +- sc ide: docklets - fix geometry after undocking +- sc ide: change default shortcuts for Go To Next/Previous Region +- sc ide: make cmd-period silent +- sc ide: improve status box context menu interaction +- sc ide: add context menu to interpreter status box + +James Harkins (4): +- Fix title:: tags in the practical guide: user-friendly titles vs. filenames +- Add Practical Guide Cookbook entry on swing rhythms +- PG_Cookbook_08: Fix an omitted copy/paste +- Fix typo in analysis example: BufWr.ar on a kr signal is bad + +Tim Blechmann (22): +- supernova: fix crash on /quit with portaudio +- class library: PlusFreqScope - survive server actions +- scide: remove ctrl-b shortcut +- class library: FreqScope - fix for starting scope after booting +- common: introduce new autogenerated SC_Version.hpp header +- class library: fix Array-unlace +- supernova: plugin interface - guard access to rt-pool +- plugins: IOUgens - prevent buffer overflow +- Help: BrownNoise - use a convention of -20db +- supernova: sized array - assert boundaries +- supernova: sndfile backend - correctly use correct blocksize for temp buffer +- supernova: jack backend - avoid uninitialized value +- supernova: nrt engine - nicer formatting of message log +- plugins: ui ugens - initialize libx11 for threading +- supernova: start dsp threads from run methods +- sclang: library config - correcty handle library config command line argument +- server plugins: RecordBuf - fix multichannel corruption and buffer overrun +- fftlib: for now we avoid intptr_t +- server plugins: fix div_ka +- plugins: osc ugens - fix GET_TABLE macro +- plugins: OscUGens - ensure buffer initialization +- scide: add menu item to open the user application support directory + +Victor Bombi (2): +- common: win32 - avoid integer truncation +- supernova: correctly print synthdef path + + +SuperCollider v3.6.2, released 2012-12 +====================================== + +BS Collist (1): +- qtcollider: QEnvelopeView - add method to return all selected indexes + +Jakob Leben (32): +- common (windows): unify access to known folder paths +- sclang (windows): add primitive to access "My Documents" dir +- cmake: expand the search for libsndfile and libfftw3f +- cmake (Windows): use CMAKE_LIBRARY_PATH for fixup_bundle() search dirs +- scide: let cmd-period have an application-wide shortcut context +- scide: DocumentManager - refresh cached file info before storing save time +- scide: help browser - support doc/impl/ref lookup for selected text +- scide: search widget hierarchy upwards for first handler of lookup actions +- scide: GenericLookupDialog - no need for subclassing QTreeView anymore +- scide: make doc/impl/ref lookup shortcuts work on detached docklets +- scide: always pop up lookup dialogs with the active window as the parent +- scide: update translation sources, add italian +- qtcollider: start drag within mouse event handler +- qtcollider: QStethoscope2 - reverse operation of horizontal zoom slider +- scide: GenericCodeEditor - set Qt::WA_MacNoClickThrough widget attribute +- scide: SyntaxHighlighter - swap QChar::toAscii() for toLatin1() +- scide: Document - swap QString::toAscii() for QString::toLatin1() +- scide: MainWindow - substitute deprecated QFileDialog::setFilter(QString) +- scide: MainWindow - include QMimeData +- scide: PostWindow - include QMimeData +- scide: GenericCodeEditor - include QMimeData +- qtcollider: QWidgetProxy - include QDrag +- sclang: SCIpcClient - fix includes +- cmake: sclang - fix building when SC_IDE=ON and SC_QT=OFF +- cmake: scide - add QtNetwork to required Qt modules +- qtcollider: QStethoscope2 - refactor for robustness +- qtcollider: QListView - add 'selection' method to get all selected indexes +- help: document new 'selection' methods of EnvelopeView and ListView +- help: View - improve documentation, fix links +- help: fix a large amount of broken links due to changes in SCDoc +- cmake: FindPortmidi - actually implement auto-finding portmidi + +James Harkins (1): +- Fix bug introduced by 7f29d322: Don't free the same alloc'ed index twice + +Tim Blechmann (18): +- scide: DocumentManager - read files via QTextStream to decode characters +- supernova: osc handler - fix completion message and done message for /b_close +- supernova: asynchronous log - fix string splitting +- supernova: compile fix +- supernova: send /fail messages on /notify commands +- supernova: send /fail on buffer commands +- supernova: fix sndfile error handling +- win32: ensure stack alignment +- plugins: fix GrainBuf cleanup +- Help: SymbolicNotations - replace SCSlider with Slider +- supernova: plugin interface - protect against multiple done actions +- Help: remove memStore +- class library: Buffer - freeMsg should clear all cached information +- supernova: osc interface - fix bug with node reordering +- supernova: buffer_read - don't check samplerate when queueing soundfiles +- class library: fix Function.plot +- plugins: RecordBuf - fix recordbuf overrun & fix done action handling +- Help: RecordBuf - RecordBuf is recording, not playing + + +SuperCollider v3.6.1, released 2012-11 +====================================== + +Dan Stowell (1): +- SpecFlatness: prevent NaN output for silence (thanks nick collins) + +Glen Fraser (1): +- scide: code editor / post window - copy using plain text + +Jakob Leben (13): +- update README_WINDOWS.txt for changed application data locations +- fix compilation with MinGW (broken static initialization) +- scide: find/replace - use Qt translation system to handle singular/plural +- cmake: scide - improve handling translations +- scide: load translations from app resource directory +- scide: update translation source files +- scide: change english translation file name to serve as fallback +- sclang: (Windows) change app support dir from roaming to local +- scide: load fallback translation in addition to locale translation +- sclang: add primitive to allow Platform to access user home directory +- class library: WindowsPlatform - set a user-friendly default recordingsDir +- readme (windows): add instructions on moving application data + +Tim Blechmann (1): +- class library: SynthDef - writeDefFile should use default SynthDef path + + +SuperCollider v3.6.0, released 2012-11 +====================================== + +Major release with many new features - please see the help doc +"News in 3.6" for more information. +http://doc.sccode.org/Guides/News-3_6.html + + +SuperCollider v3.5.7, released 2012-11 +====================================== + +Jakob Leben (6): +- sclang: (Windows) fix String:-getenv to return variables set with -setenv +- class library: ServerMeter - fix closing window when server has never run +- sclang: fix 'gcd' and 'lcm' methods +- qtcollider: QStethoscope2 - fix width of number boxes +- qtcollider: fix SoundFileView:-selectAll and -selectNone +- qtcollider: fix QPen:*matrix setter - combine instead of replace matrix + +Julian Rohrhuber (1): +- class library: jitlib - Avoiding sync problems with free/play + +Tim Blechmann (9): +- plugins: filters - fix initialization of filter parameters +- external libraries: nova-simd update +- external libraries: move nova-simd submodule to github +- plugins: DelayN - fix initialization code +- Revert "plugins: DelayN - fix initialization code" +- common: fftlib - increase size limit for ffts +- sclang: server shm interface - fix setting of multiple values +- plugin interface: provide wrapper class for c++-style unit generators + + +SuperCollider v3.5.6, released 2012-10 +====================================== + +Dan Stowell (2): +- Improve error messages when cmake can't find optional things +- Compile fix for Qt widget on arm. Upstreamed from debian-multimedia (thanks Felipe Sateler) + +James Harkins (1): +- Fix Spawner bug: cleanup.update is mandatory, including rest events + +Jonatan Liljedahl (7): +- Quarks: fix typo and also open old-style helpfiles ending with .htm +- Include old non-converted helpfiles in SCDoc document index +- HelpBrowser: also open RTF files with whatever is available +- Even more support for old help files +- scdoc: use JS hasOwnProperty instead of testing the property directly +- HelpBrowser: post javascript errors +- SCDoc: properly escape keys in generated docmap.js + +Joshua Parmenter (1): +- Fix ServerOptions instance var ordering, etc., to make internal server booting use correct number of audio bus channels. + +Tim Blechmann (4): +- cmake: provide explicit option to use system-installed boost libraries +- external libraries - revert submodule updates +- lang: SerialPort - fix invocation of done action + + +SuperCollider v3.5.5, released 2012-09 +====================================== + +Dan Stowell (1): +- Fix bug in Complex:exp + +James Harkins (1): +- Convert misleading and confusing OSC-style example into object-style + +Joshua Parmenter (2): +- fix IEnvGen kr UGen +- fix cocoa window alpha setting + +Tim Blechmann (12): +- sclang: fix Array:extendWrap for negative size argument +- sclang: array primitivies - protect all array extend primitives against negative sizes +- scdoc: fix string comparison in parser +- supernova: sized_array - don't allocate memory for zero-sized array +- plugins: GrainBuf - fix crash when using nan as position control +- scsynth: ensure alignment of wire buffers +- supernova: catch exceptions when reading synthdefs +- supernova: free_aligned - fix fallback implementation for null pointers +- cmake build system: dont compile shared library with -fwhole-program +- plugins: GrainBuf - allocate grain after reading window +- plugins: GrainBuf - fix access to default hann window + +Victor Bombi (1): +- cpu usage for portaudio_backend.hpp + + +SuperCollider v3.5.4, released 2012-08 +====================================== + +Dan Stowell (5): +- Fix typo that causes build fail on big-endian archs, thanks Felipe Sateler +- fix build on ARM (where qreal==float); thanks Felipe Sateler +- Strip gremlin characters from JITLib wrapForNodeProxy.sc +- choose clipping rather than wraparound for writing integer-format audio files (libsndfile setting) +- arm build fix: another double->qreal in QcMultiSlider + +James Harkins (1): +- Improve documentation of GUI kits and kit switching + +Jonatan Liljedahl (2): +- SCDoc: Use proper static string constants instead of comparing string literals. +- Revert "reinstate Mix.arFill and Mix.krFill for backward compatibility reasons" + +Julian Rohrhuber (2): +- reinstate Mix.arFill and Mix.krFill for backward compatibility reasons +- improve string helpfile + +Tim Blechmann (10): +- plugins: GrainUGens - handle unallocated window buffers +- plugins: GrainBuf - reject multi-channel buffers +- plugins: grain ugens - treat empty window buffers correctly +- server: provide memory alignment wrappers for msvc +- server: scsynth - ensure correct deallocation of SndBuffer memory +- server/language/supernova: automatically clip integer audio files +- scsynth: correctly free aligned buffers +- Help: fix OSC function in SendPeakRMS help file +- package: use alternative implementation of git-archive-all + +Victor Bombi (1): +- MSVC fix + + +SuperCollider v3.5.3, released 2012-06 +====================================== + +Dan Stowell (6): +- LocalIn helpfile fix, thanks Bruno Ruviaro +- Fix scvim regsitry file for updated filename (thanks Carlo Capocasa) +- version number to 3.5.3 +- Server helpfile: see-also reference docs +- SCVim.sc should not be executable +- cmake build system: use system boost libraries if available + +Jakob Leben (1): +- cmake: fix Boost Thread linking on Windows + +James Harkins (10): +- EnvGen_next_ak_nova: Hardcoded blocksize=64, change to +- inNumSamples +- Per Scott W., initSiblings is not needed +- Reinstate Mix.ar and Mix.kr, with rate checks +- Fix crossplatform fail: Scale.directory shouldn’t always depend +- on Document +- ListPatterns: offset.value omitted (inval) as an argument +- Fix PbindProxy:storeArgs - should NOT call “source” on keys in +- the array! +- Scale:degreeToRatio should handle degrees outside of one +- octave’s range +- More meaningful error message for too many selectors +- Explain the limitation on the number of selectors in one +- FunctionDef +- Correct spelling error + +Jonatan Liljedahl (3): +- Methods.html: auto-redirect to Search if method not found +- SCDoc: fix detection of old format class docs +- Mix.ar was un-deprecated, so remove the deprecated method + +Joshua Parmenter (2): +- fix scroll view problem for OS X 10.7.4 +- update SC_DirUtils to look at the name of the app bundle on osx + +Julian Rohrhuber (14): +- fix bugs due to wrong usage of partial application +- PV_BinShift helpfile improved +- PV_Diffuser helpfile improved +- reformat statement for readability (no change of functionality) +- helpfile improvements +- improve array helpfile +- add note to the loop argument of DiskIn (thanks Stefan). +- improve helpfile +- some helpfile improvements +- improve helpfile +- improve helpfile +- improve and simplify FFT overview helpfile: fix some errors in +- examples. +- improve and simplify IFFT helpfile. +- improve and simplify FFT helpfile, mention that hopsize must be +- larger than 0.0 + +Tim Blechmann (11): +- external libraries: update nova-tt (gcc 4.7 fix) +- supernova: correctly implement replace semantics for /s_new +- Help: Function.scope is not limited to OSX anymore +- cmake build system: locate server plugins on freebsd +- server: add support for RF64 +- cmake build system: ensure boost include path for scsynth +- cmake build system: set boost library path +- cmake build system: link scapp with correct version of +- libboost_thread +- cmake build system: minor cleanup +- supernova: fix asynchronous commands for empty reply address +- common: fix non-apple builds + + +SuperCollider v3.5.2, released 201 +====================================== + +Dan Stowell (3): +- Remove outdated Japanese menus +- Cannot use indentation for CMAKE example - on mac it is rendered as   which then breaks cmake compilation +- Fix bug in FFT library if winsize != audiosize + +Jakob Leben (21): +- qtcollider: fix QTextView:-background and QSoundFileView:-background +- cmake: improve message if Qt4 or one of its components not found +- qtcollider: QKnob: fix mouse response when mouseOverAction is set +- qtcollider: implement missing QPopUpMenu:-background +- qtcollider: QTextView fixes and improvements +- help: add missing GUI examples +- qtcollider: support use of UTF-8 encoded strings +- qtcollider: QTextView: improve -enterInterpretsSelection +- qtcollider: QTextField: never propagate Enter to parent +- qtcollider: QEnvelopeView: improve node selection API and UI +- help: update EnvelopeView documentation +- help: fix incorrect info in EnvelopeView documentation +- qtcollider: QObject:-getProperty: turn an error into a debug warning +- qtcollider: implement drag-and-drop for data outside SC +- qtcollider: improve key propagation in QListView and QTreeView +- qtcollider: optimize view instantiation (take 2) +- qtcollider: fix mouse wheel event being forwarded to SC for no reason +- qtcollider: fix potential null pointer dereference +- qtcollider: optimization - partially revert event handling changes +- qtcollider: optimization - avoid a signal connection at QObject construction +- qtcollider: optimization - avoid connecting signals with unnormalized signatures + +James Harkins (2): +- Fix Pcollect/select/reject:embedInStream to pass inval to the function +- setTheme: Inherit colors from parent theme if the user didn't specify + +Jonatan Liljedahl (41): +- scdoc: MathJax: don't use fonts installed on users computer +- New SCDoc parser and renderer. Faster, more stable, less buggy. +- fix some helpfiles for new scdoc +- scdoc.css update +- scdoc: scapp compile fix +- scdoc: defer indexAllDocuments until first use +- HelpBrowser tweaks +- scdoc: warn on additions for non-existent help doc +- scdoc: fill in argument names for argument:: with no name given +- SCDocRenderer: warn on broken links +- scdoc: fix classtree:: rendering bug +- scdoc: only warn on grouped methods argnames mismatch if argument:: tag is used +- scdoc: avoid GC error in primitive +- scdoc: collect metadata also from *.ext.schelp (doc additions) +- scdoc: warn if argument:: name does not match real method arg +- scdoc: updated SCDoc related docs +- scdoc: warn if classdoc title and filename mismatch +- scdoc: fix varargs name match warning +- scdoc: render getter/setter combinations as two different methods +- scdoc: warn if setter methods (trailing underscore) is documented explicitly +- scdoc: more helpfile fixes +- scdoc: fix some bugs, handle class docs with missing classes +- scdoc Search.html: match also on filename for 'title' +- schelp: fix some broken links +- scdoc: add clearCache arg to indexAllDocuments, and don't render undocumented classes more than once per session +- scdoc: updated SCDoc related helpfiles +- schelp: more doc error fixes +- scdoc: improve argument:: auto-fill and checks +- String-warn and -error: don't print newline after WARNING: and ERROR: +- scdoc: tweak warnings +- scdoc: fix escaping of :: in metadata parsing and block verbatim +- schelp: add keywords for scdoc tags in SCDocSyntax.schelp +- scdoc: allow end-of-file as newline terminator, and improve error messages +- scdoc: use setter_() syntax if more than one argument +- scdoc: render method arg defaults as "foo: val" instead of "foo = val" +- mention new scdoc implementation in News-3_5.schelp +- scdoc parser: allow empty lines before headertags +- SCDoc: fix escaping of & < and > +- SCDoc: fix inf loop at missing :: end-tag in code blocks +- SCDoc: allow EOF as terminator for private:: and similar tags +- SCDoc: don't warn on missing trailing mul & add args + +Miguel Negrão (1): +- [Class Libray] Quarks GUI - sort quarks by name + +Tim Blechmann (10): +- plugins: fix Clip.kr +- class library: archive TempoClock as compile string +- cmake build system: restrict win32-specific cflags to win32 +- external libraries: nova-simd update +- external libraries: nova-simd compile fix +- plugins: fix StereoConvolution2L constructor +- scsynth: use aligned memory allocation functions from supernova +- external libraries: nova-simd update +- scsynth: provide zalloc as symbol + +redFrik (1): +- scdoc: fixed a bunch of helpfile errors + + +SuperCollider v3.5.1, released 2012-04 +====================================== + +Jakob Leben (13): +- windows: properly pass the SC version to NSIS +- qtcollider: QPopUpMenu: fix action triggering +- qtcollider: get rid of "X is not implemented" message +- class library: make Server:-plotTree resilient to GUI kit switching +- help: improve Stethoscope documentation +- class library: QStethoscope2: add missing class methods +- class library: fix UGen scoping on out-of-process servers +- class library: PlusFreqScope: simplify server checking +- class library: fix and improve various 'scope' and 'freqscope' methods +- help: fix Stethoscope:*isValidServer documentation +- class library: ServerMeter: fix synth startup and cleanup +- update README_WINDOWS.txt +- windows: improve building and installation + +Jonatan Liljedahl (6): +- lang11d: Fix parse tree generation of expr.(key:value, ...) +- SC.app: allow saving plain text .schelp files +- SCDoc: copymethod:: also search *.ext.schelp files +- Update News for 3.5 doc +- Fix typo in News-3_5.schelp and improve StartupFile.schelp +- Update WritingPrimitives.schelp regarding GC safety + +Joshua Parmenter (1): +- prevent HID crashes on OS X. Devices still aren't added to the queue though (longs for the locID aren't correctly set up) + +Scott Wilson (1): +- Make Unpack1FFT a subclass of UGen, rather than of PV_ChainUGen + +Tim Blechmann (4): +- class library: SynthDef - fix uploading of large synthdefs +- sclang: block evaluation typesafety +- sclang: signal primitives - fix Signal-fft + + +SuperCollider v3.5.0, released 2012-03 +====================================== + +Major release with many new features - please see the help doc +"News in 3.5" for more information. +http://doc.sccode.org/Guides/News-3_5.html + + +SuperCollider v3.4.5, released 2012-01 +====================================== + +Tim Blechmann (7): +- class library: FreqScope fix +- sclang: fix crash of scpacket overflow by using exception handling +- sclang: pad PyrMethodRaw struct +- sclang: force size of PyrSlot to 16 byte and fix PyrMethodRaw size +- server plugins: fix div_ai_nova +- plugins: Resonz - fix initialization +- plugins: disable simd-optimization for tanh + +James Harkins (3): +- Explicitly show the command to uninstall (for scons idiots like me). +- (3.4) PathName now sets tmp directory using Platform +- SimpleController:update would throw error if no actions had been 'put' in + +Dan Stowell (1): +- Remove waf file from 3.4.x - was never used, and contains binary code, causing linux packaging problems. See ubuntu bug #529154 for details, and debian bug #529154 for sc-specific + +Mathieu Trudel-Lapierre (1): +- Fixup environment variables used for linking against readline, libicu, curl, cwiid. + +Nick Collins (1): +- Fix bug in MFCC ugen + +Noe Rubinstein (1): +- Fix PMOsc doc: index -> pmindex + +dmotd (1): +- Include altivec.h on linux powerpc, fixing FTBFS + + +SuperCollider v3.4.4, released 2011-06 +====================================== + +Dan Stowell (4): +- Improve format of copyright/GPL notices (issue raised in debian pkging) +- Clarify Fontana copyright in MoogFF (and don't use keyword 'copyright' in files where he doesn't have copyright) +- Update AUTHORS file +- Remove unneeded PDF (debian raised query over copyright) + +Nick Collins (1): +- Initial fix for headphones problem where plugging in or out headphones while using Built-in Output leads to loss of audio on OS X. Aggregate Devices not tackled at this point + +Tim Blechmann (15): +- sclang: mathematical operators - clip2 fix +- plugins: LPF - fix control-rate initialization +- sclang: wii - don't use address of temporary +- SCClassLibrary: ScoreStreamPlayer - do not add instances to server list +- scsynth: apple - set denormal handling flags, if __SSE__ is defined +- sclang: slotString - crash fix +- plugins: XLine - correct handling of done actions +- sclang: gc - introduce LazyCollect to avoid leak of frames and argument lists +- plugins: Pitch.ar - fix crash for high execution period +- changelog: fix version number +- update changelog +- sclang: parser - support message send syntax for unary operators +- plugins: delay ugens - rt memory allocation may fail +- sclang: compile fix + + +SuperCollider v3.4.3 +====================================== + +Dan Stowell (2): +- SC 3.4 set correct SOVERSION 1.0.0 for libs, and install more properly. (Changes ported from downstream debian packaging.) +- lib SOVERSIONs back from 1.0.0 to 1, following debian-multimedia advice + +James Harkins (8): +- Fix nowExecutingPath bug in scel (never backported?) +- fix two bugs in NotificationCenter registerOneShot: +- fix corner case in ClassBrowser +- Fix asPseg bug for short curves array (which should wrap, not kill the stream) +- Clear dataptr when closing a file (so that isClosed answers correctly) +- Incorrectly used dataptr instead of fileptr in previous commit on this file +- replace old, unsafe Dictionary test with a safer (but less OOPy) test +- rats... I missed two others of the same + +Joshua Parmenter (1): +- update version number + +Tim Blechmann (3): +- scsynth: set ftz flag on osx +- two commits: (1) simplify access to the superclass tree in Class. (2) when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of havin +- scons build system: libsclang build fix + + +SuperCollider v3.4.2, released 2011-03 +====================================== + +Bugfixes: +--------- + +- 2010-06-05 fix Latch first sample output bug: if trigger > 0 initially, latch should not output 0 - jh +- 2010-09-04 fix firstArg behavior in BinaryOpUGen by a list-approved hack - jh +- 2010-10-01 fix SConstruct so that libscsynth and libsclang get SONAME entries - ds +- 2010-11-13 grainBuf: audio-rate trigger fix - tb +- 2010-11-15 generate libsclang and libscsynth with .so.1 extension (and soname) on linux - ds +- 2010-11-15 scons create symlinks from libX.so to libX.so.1 on linux, and install them - ds +- 2010-11-16 added .htm files to SConstruct as approved help file extension - mb +- 2010-11-28 compile fix for curl support - tb +- 2010-11-28 prevent asBus from breaking when called with no numChannels - jh +- 2010-12-03 grain ugens: demand ugen input fix - tb +- 2010-12-05 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place. backported from master - tb +- 2010-12-08 prString_FindRegexp fix: match char array was too short to hold null termination - jli +- 2010-12-11 fix classbrowser colors bugs. backported from master - tb +- 2010-12-12 fixes the bug where installed quark help files would not be detected - tb/ar +- 2010-12-13 mark inherited methods in class browser by background colour. backported from master - tb +- 2010-12-30 Pipe does not remove closed pipes from openFiles - jh +- 2010-12-30 fix String:rotate - pb +- 2011-01-02 unit generators: LagControl - fix initialization order - jh +- 2011-01-02 unit generators: LagControl - dynamically allocate buffer for filter states - tb +- 2011-01-07 fixed iOS compilation and backported changes from master branch - ab +- 2011-01-06 array primitives: fix allTuples and unlace - pb +- 2011-01-07 sclang: makeIntrinsicClass - correct bounds for memcpy - tb +- 2011-01-08 sclang: prString_FindRegexp - fill array after allocating objects - tb +- 2011-01-14 sclang: prString_FindRegexp ensure correct size of results array during gc calls - tb +- 2011-02-27 sclang: ensure minimum stack size - tb +- 2011-03-09 SCVim: avoid generating scvim help cache if not currently in scvim - ds +- 2011-03-11 fix the Event type 'note' (fixes rendering patterns to audio files) - rk + + +SuperCollider v3.4.1, released 2010-11 +====================================== + +- 2010-07-12 remove accidental debug messages from SCView (on mac, posted a lot of info to Console, could affect performance) - ds +- 2010-07-11 Collections should behave as reasonably as possible when empty - some fixes to better this - jr +- 2010-07-11 SynthDef:add now sends to all running servers if no libname is given. SynthDescs are still added to the global SynthDescLib. If you want to handle multiple SynthDesc libs, you have to add the servers to each of them explicitly - jr +- 2010-07-12 PanAz: added support for audio-rate pos arg - lfsaw +- 2010-07-18 improved the sclang syntax highlighting parses - Patrick Borgeat +- 2010-07-30 Dreset UGen allows to reset the child UGens on its input - jr +- 2010-08-05 storeOn / asCompileString now simplifies its output. Default arguments that are given in the *new method anyhow are omitted - jr +- 2010-08-06 Dictionary merge and blend methods - jr +- 2010-08-09 method overwrite messages not posted by default, rather a message inviting people to run Main:overwriteMsg for the info - ds +- 2010-08-13 MethodOverride class to encapsule information on overridden messages, inviting people to run MethodOverride.printAll - jr +- 2010-08-13 add size arg to Signal:zeroPad - jr and jh +- 2010-08-18 Pevent now uses default event if no event is passed in - jr +- 2010-08-18 added a shortcut to the rather tedious .asCompileString method. In analogy to object.postcs, object.cs returns the compile string - jr +- 2010-08-20 audio driver for scsynth running on Android (through JNI) - ds +- 2010-08-24 un-deprecate scsynth's ability to use internal "green" FFT lib, for embedded devices etc - ds +- 2010-08-28 no 'record' button for remote server GUIs, since path not generally known - ds +- 2010-09-02 token threading for sclang interpreter - tb +- 2010-09-07 when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of having to select both words around the colon - jr +- 2010-09-07 added methods for better navigation in the class tree (findOverriddenMethod) - jr +- 2010-09-10 add method: Complex:abs to fit common usage - jr +- 2010-09-12 added Dwrand UGen - jr +- 2010-09-15 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place - jr +- 2010-10-07 change the mac HID error-handler code to output errors to sc post window rather than to mac log; removes a pascal-string issue - ds +- 2010-10-19 Ndef now releses its bus when server was quit or just booted - jr +- 2010-10-20 retain the path to the file in which an error has occurred and post it - jr + + +Bugfixes: +--------- +- 2010-07-10 protecting the server against malformatted SynthDef names - jr +- 2010-06-28 syntaxColorize fix for double-backslashes, thanks Patrick Borgeat for the patch - ds +- 2010-07-24 catch crash in the case that one tries to define a unique method using a return value directly - jr +- 2010-09-07 UGen:clip, :wrap, :fold now apply correctly to scalar-rate signals; also methodSelectorForRate tweak for which class is asked - ds +- 2010-09-09 fix a bug for trigger signals in Demand.kr that hold longer than one control period - jr +- 2010-09-11 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr +- 2010-09-12 fix bug: 2994009. LFPar and LFCub audio rate modulation frequency argument work now - jr +- 2010-09-19 fix to JITGui, when numItems is not supplied - jr +- 2010-10-10 remove more crufty NSLog debug messages - ds +- 2010-10-13 fix SCUserView:receiveDrag to receive mouse co-ordinates; thanks Daniel van den Eijkel - ds +- 2010-10-19 debian-style scvim-check-if-plugin-is-active, brought upstream - ds +- 2010-10-19 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr +- 2010-10-19 partial fix for bugs item #2994009 - seems to fix LFPar but not LFCub. More work needed - ds +- 2010-10-19 DC: fix multichannel expansion - tb +- 2010-10-19 fix to demand rate unary op ugens, thanks james harkins - tb +- 2010-10-19 Ugens: LinLin/LinExp fixes - tb +- 2010-10-19 only /clearSched if RT - to fix tracker item #3033454 - tb +- 2010-10-19 UGens: binary operators - fix scalar/signal division - tb +- 2010-10-19 fix bug 2988525: SynthDef:writeDefFile appends path correctly - tb +- 2010-10-19 ProcessOSCPacket: fix possible deadlock - tb +- 2010-10-19 fix network address handling - albert graef +- 2010-11-05 fix memory issues in regular expressions: correct memory management in prString_FindRegexp - tb +- 2010-11-07 sclang: correct symlink handling - tb, ar + +SuperCollider v3.4, released 2010-07 +==================================== + +Headlines: +---------- + +- 2009-09-03 add support for Mac OS 10.5 and greater 64-bit builds of plugins and scsynth +- 2009-07-xx iphone support by Axel Balley added - ab +- 2009-07-21 EnvirGui added, a gui for livecoding/editing environments - adc +- 2009-07-24 Server.plotTree method for visualising the groups and synths on the server - sw +- 2009-07-31 mac osx text-completion feature now includes sclang objects - ds +- 2009-08-01 sclang now has a flag (Platform.ideName) for which IDE is in use (scapp, scvim, scel, sced, jsceclipse...) so that the same class-library can be used with different IDEs, enabling IDE-specific code as necessary - ds +- 2009-08-16 add emergency escape route: if sclang is caught in an infinite loop, send it a USR1 signal to break out of it - ds +- 2009-09-12 String:findRegexp and other regular expressions now available on linux as well as mac - mb,ds +- 2009-09-18 n_order and Server:reorder allow one to specify chains of nodes - sw +- 2009-09-20 simplify the Server recording interface. prepareForRecord is now optional (will be automatically invoked if you don't), and the server gui button is now just two-state "record" "stop" - ds +- 2009-10-04 support multichannel indices for Env:at - jr +- 2009-10-29 improve OSC message correctness: for convenience, sclang allows command names as symbols with no leading slash e.g. \g_new. To improve compliance with the OSC standard, the leading slash is now added to those symbols before dispatch - ds +- 2009-11-07 use nova-simd framework for performance improvements of unit generators - tb +- 2009-11-21 Event type \note supports polyphonic sustain, lag and timingOffset, and responds correctly to free and release. Add \grain event type. - jr +- 2009-11-28 windows: system "application support path", previously hardcoded as C:\SuperCollider, now settable by environment variable SC_SYSAPPSUP_PATH. Default setting for that env var (when using official wix bundle) will be [SC3INSTALLLOCATION] - ds +- 2009-12-15 sclang: 64-bit safety - tb +- 2009-12-15 sclang: performance improvement of math ops - tb +- 2010-01-02 scsynth: use osc-compilant address patterns for server/lang communication - tb +- 2010-01-24 add readline interface to sclang command-line. This is used by default when invoking "sclang" (to use the non-readline interface set the "-i" option to something other than "none") - ds +- 2010-01-24 enable GPL3 code by default - this 'upgrades' the overall binary license from GPL2+ to GPL3+, and allows supercollider to benefit from GPL3+ libraries such as libsimdmath and gnu readline - ds +- 2010-02-04 Improvements to SC.app editor: Split pane documents, AutoInOutdent - sw +- 2010-02-18 scvim: now compatible with gnu screen, opens post window using screen, making it compatible with a pure-CLI environment - ds +- 2010-02-xx add the Deployment32-64 build style for building on OS X (10.5 and greater) - jp +- 2010-03-10 SynthDef:memStore deprecated in favour of the more coherent and typeable SynthDef:add - jr +- 2010-04-11 Moved some more experimental JITLib classes to "JITLib extensions" Quark - jr + + +Bugfixes: +--------- + +- 2009-06-12 fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw +- 2009-06-18 fix for mouse coordinates bug - sw +- 2009-06-22 fix for negative bounds issue in SCUserView - sw +- 2009-06-23 avoid memory corruption when unknown OSC type tags are received. Instead forward them to sclang - jr +- 2009-06-23 Fix server crash with negative buffer numbers. - jr +- 2009-07-20 factors(): no prime factors exist below the first prime - jr +- 2009-07-21 Loudness ugen now supports LocalBuf - nc +- 2009-07-23 Fix very nasty bug in Pbindf: if a key is an array, new values were written into the incoming event, instead of the outgoing event - jh +- 2009-07-28 catch unintialised value in sc_GetUserHomeDirectory(), fixing potential memory corruption if HOME not set - ds +- 2009-08-01 SpecCentroid, fix its reaction to silence (output zero instead of NaN) - ds +- 2009-08-01 NamedControl: single default value now returns instance, not array, default values are obtained in a consistent way - jr +- 2009-08-04 fix the CPU-usage issue when calling plain "./sclang" from the terminal on OSX (seems it was caused by a bug in how OSX handles poll() calls) - ds +- 2009-08-15 LinPan2: fix initialisation issue - panning was not correctly applied during the first calc block - ds +- 2009-09-28 Workaround for faded colours in HTML docs - sw +- 2009-09-13 fix PV_MagShift argument handling, so that the defaults mean no-change, matching the behaviour of PV_BinShift - ds +- 2009-09-20 warn about weirdness of Float:switch - ds +- 2009-09-30 prevent NaN output from SpecFlatness when input is silence - ds +- 2009-10-16 fix cropping issue in printing SuperCollider.app documents - cq +- 2009-10-17 many phase-vocoder (PV_) ugens previously didn't handle the DC/nyquist bins as expected. fixed most of these (PV_MagAbove, PV_MagBelow, PV_MagClip, PV_LocalMax, PV_BrickWall, PV_MagSquared, PV_BinWipe, PV_CopyPhase, PV_Max, PV_RandComb) - ds +- 2009-11-01 fix audio rate arg problem in PlayBuf - jp +- 2009-11-02 fix amplitude-convergence issue in Pan2, Balance2, LinPan2, XFade2, which could sometimes result in sound despite zero amp, as discovered by jh - ds +- 2009-11-03 fix unsafe implementation of methods that allow sending collections to buffers - jr +- 2009-11-04 fix signalRange for MouseX, MouseY and KeyState, so that the range message works now - jr +- 2009-11-19 Fix for PV chains and LocalBuf - sw +- 2009-12-14 fix uninitialised variable in Pulse (could sometimes cause small glitch on init), thanks to rhian lloyd - ds +- 2010-01-10 Demand ugens can now handle more than 32 channels, thanks Patrick Borgeat for the patch - ds +- 2010-02-05 scsynth now respects the -D commandline option when running in NRT mode - ds +- 2010-02-11 Fix for nowExecutingPath with Routines - sw +- 2010-02-23 Performance fixes for SCUserView - sw +- 2010-02-25 Fix interpolation / indexing problem in VDiskIn that caused slight pitch fluctuations - jp +- 2010-03-11 SequenceableCollection:reduce no longer returns nil if the collection has only 1 element - ds +- 2010-03-28 fix memory leak of empty command line, for interactive sclang mode - tb +- 2010-03-29 main menu for Mac lang editor app: correction to key for evaluate selection, used to be return, now return+shift - nc +- 2010-04-19 fix missing font issue in Plotter -jr + +Other additions/improvements: +----------------------------- + +- 2009-06-11 Evaluate Selection menu command - sw +- 2009-06-23 allow remote apps to send type chars - jr +- 2009-06-27 build 32bit sclang on x86_64 - tb +- 2009-07-xx efficiency improvements on some UGens - tb +- 2009-07-xx improve Quarks use of svn for smoother user experience - ds +- 2009-07-22 catch the case when a user tries to compile into a synthdef, a unary/binary operator that the server can't apply - jh +- 2009-08-29 String:toUpper and String:toLower - ds +- 2009-09-06 Boolean:while now throws an informative error, since Boolean:while has no particular use but is often used in error by beginners in code where Function:while is intended - ds +- 2009-09-12 method FunctionDef:makeEnvirFromArgs allows to create template events from a function - jr +- 2009-09-30 Error is now posted if maxSynthDefs exceeded -sw +- 2009-11-03 TwoWayIdentityDictionary has a removeAt method now - jr +- 2009-11-04 update of deferredTaskInterval from 0.038 to 0.01667 - fo +- 2009-11-07 improved PyrSlot typesafety - tb +- 2009-11-23 menu system improvements in Windows IDE - mv +- 2009-12-13 tidyups for "sclang when on osx but not in sc.app" - ds +- 2009-12-13 added lincurve and curvelin methods for numbers and UGens - jr +- 2010-01-01 OSCresponder and OSCresponderNode respond equally to messages with or without preceding slash - jr +- 2010-01-04 sclang: deprecated Proutine - switch back to the original Prout +- 2010-01-06 UnitTest Quark improved, added script support - jr +- 2010-01-23 Improved NodeProxy and ProxySpace helpfiles. Added proxy composition syntax to NodeProxy - jr +- 2010-01-30 Make multichannel plotting easier. If no numChannels is given, find out automatically - jr +- 2010-01-31 add new LOOP1 macro - tb +- 2010-01-31 use c99 log2 functions for sc_log2 - tb +- 2010-02-09 rearrangement of supercollider source code tree - ds +- 2010-02-11 Server:default_ now assigns to s by default. Settable with flag - sw +- 2010-02-27 removed SCAnimationView and added SCUserView:animate_ - fo +- 2010-03-10 SCPen:setSmoothing changed to SCPen:smoothing_, harmonised change with swingosc - ds +- 2010-03-23 exponentiation for Complex numbers - jr +- 2010-xx-xx many helpfiles improved - various authors +- 2010-03-30 Image class added, a redirect for SCImage or JSCImage - hr +- 2010-03-30 Pitch ugen ability to output clarity measure (by default not activated, for backwards compat) - ds + +SuperCollider v3.3.1, released 2009-06-19 +========================================= + +Headlines: +---------- + +- 2009-05-11 SCWindow additions for visible, visible_, unminimize - cq +- 2009-05-17 server guis (on osx) now indicate which one is currently default - adc +- 2009-05-18 enabled control rate versions of Ball, TBall and Spring - mb +- 2009-05-18 LID support for setting "MSC" state as well as "LED" on devices - ds +- 2009-06-19 patched for compatibility with Safari 4, fixing a lockup issue when opening help docs - ar + +Bugfixes: +--------- + +- 2009-05-11 fix keyword addressing for the order: argument - jmc +- 2009-05-15 update libsndfile to 1.0.20 to fix security issues (overflow vulnerabilities) in libsndfile - ds +- 2009-05-20 fix bug #2790649, "very large SimpleNumber:series can crash sclang" - ds +- 2009-05-25 mac icons for document types .quark .scd .rtfd were omitted from the app bundle, now fixed - ds +- 2009-06-02 EnvGen: fix off by one block latency in envelope attacks and releases - jr +- 2009-06-12 bug fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw +- 2009-06-12 mouse coordinates fix, deprecate SCUserView:mousePosition - sw +- 2009-06-17 some issues fixed in SCUserView - cq +- 2009-06-20 fix redirect for Stethoscope - adc + +Other additions/improvements: +----------------------------- + +- 2009-05-05 fixes/improvements to cocoabridge primitives - cq +- 2009-05-06 SCImage various minor improvements - cq +- 2009-05-16 optimisation for scrollview drawing, remove VIEWHACK - sw +- 2009-05-xx various documentation updates - various +- 2009-05-xx various improvements to ubuntu-debian packaging scripts - ds, am +- 2009-05-20 SynthDef:writeOnce now available as an instance method as well as a class method - ds +- 2009-06-11 sc.app gets a menu command for "Evaluate selection" - sw +- 2009-06-17 adjusted SCKnob to use relative mouse coordinates - jm +- 2009-06-17 small fix to SConstruct to allow for new Debian X11 location when compiling on linux - mb +- 2009-06-19 Blip ugen: prevent sound blowup by never letting numharm be less than 1 - fo +- 2009-06-20 SCPen: fillStroke changed default from draw(4) to draw(3) - fo +- 2009-06-21 Fold, Clip and Wrap can now modulate the low and high inputs. + +SuperCollider v3.3, released 2009-04-30 +======================================= + +Headlines: +---------- +- 2008-04-08 scvim is now part of the distro - ds +- 2008-04-20 improvements to MIDI sysex handling - added sysex parsing directly in source - thanks to charles picasso +- 2008-07-12 scsynth on Mac can now use separate devices for audio input vs audio output. Thanks to Axel Balley for much of the work on this, also a bit by ds. +- 2008-07-12 PlayBuf, RecordBuf, BufWr, BufRd, ScopeOut - used to be limited to 16-channel audio maximum. Now can handle massively multichannel audio - ds +- 2008-07-19 Buffer:normalize method added - ds +- 2008-07-23 FFT and IFFT added option for zero-padding, by optional "framesize" argument - ds +- 2008-09-03 new VDiskIn ugen - jp +- 2008-10-08 SCImage for manipulating bitmap image objects (mac only) - ch +- 2008-10-09 LocalBuf system to allow synths to manage their own purely-local buffers - jr +- 2008-10-17 Added "-P" option to scsynth (accessible as s.options.restrictedPath) to allow restricting which paths scsynth is allowed to read/write - ds +- 2008-10-18 new PartConv ugen, performs efficient frequency-domain convolution - nc +- 2008-10-26 support on mac for "modal windows/sheets" (for user dialogs etc) - sw +- 2008-xx-xx various behind-the-scenes efficiency improvements, for a sleeker audio server that can do more on a given machine - various contributors +- 2008-11-01 add BEQSuite filter UGens (blackrain, jp) +- 2008-11-11 add Pfxb pattern - jr +- 2008-11-25 new EZPopUpMenu - jm +- 2008-11-29 Pitch ugen can now also track the pitch of control-rate signals - mb +- 2008-11-30 Drag and drop paths from Finder to Documents and SCViews - sw +- 2008-12-03 added PV_Div ugen for complex division - ds +- 2008-12-07 added PV_Conj ugen for complex conjugate - ds +- 2008-12-15 new ViewRedirect for easier cross-platform gui syntax. e.g. Window now redirects to SCWindow or JWindow. ds & jm +- 2008-12-15 revised and updated all SC Gui documentation. New gui introduction. New SCUserView subclassing tutorial. - jm +- 2008-12-15 the /done message for Buffer allocation/free/etc now also includes the buffer index - jt +- 2008-12-15 added methods to SCFreqScope for "special" SynthDef, and for visualising frequency responses - ds +- 2008-12-18 the main windows version of sc is now called "SuperCollider" rather than "PsyCollider" (although psycollider is the name of the code editor). SuperCollider on windows now has a different (better? who knows) installer, uses the main sc3 icon, and has some other tweaks that make it different from version 3.2 - ds +- 2008-12-19 new EZListView - jm +- 2009-01-02 sced (the gedit sc plugin) is now part of the distro - mb/artem +- 2009-01-06 SendReply UGen - jr +- 2009-01-06 VDiskIn sends file position to client - jr +- 2009-01-12 map audio to SynthDef controls. new OSC messages n_mapa and n_mapan. - jp, jr, rk +- 2009-01-13 relativeOrigin=true. SC's coordinate system in container views and user views are now by default relative. +- 2009-01-15 SCLevelIndicator view added - sw +- 2009-01-16 Scale and Tuning classes added - tw +- 2009-01-17 SuperColliderAU (scsynth as a Mac OSX "Audio Unit") added to main distribution - gr +- 2009-02-03 EZKnob revised and now part of distro - br, jm +- 2009-02-23 SystemActions refactored - jr +- 2009-02-23 SCMenuItem, SCMenuGroup, and SCMenuSeparator for user customisable menus - sw +- 2009-02-23 LFGauss UGen added - jr +- 2009-03-14 Added GeneralHID based patterns PhidKey and PhidSlot - mb + +Bugfixes: +--------- +- 2008-05-20 fix for the special case when 0.2.asFraction beachballs the lang (bug id 1856972) - jr +- 2008-05-20 fix slight mistake in the defaults printed by scsynth on command-line (bug id 1953392) - ds +- 2008-07-24 Routine / AppClock fix setting the clock of the thread (bug id 2023852) - jr +- 2008-09-16 stability fixes to FFT and IFFT - ds +- 2008-09-27 fix TExpRand.ar - ds +- 2008-11-11 SystemSynthDefs.numChannels can now be set from the startup file - jr +- 2008-11-24 avoid FFT failure when buffer not allocated - jr +- 2008-11-29 resolved inconsistency in Server:waitForBoot - function is always executed in a Routine, whether or not the server is booted - ds +- 2008-12-07 FlowView setting inital margin and gap fixed (bug id 1986059) - jh +- 2008-12-07 OSCpathResponder fixed (bug id 2021481) - jh +- 2009-01-08 b_readChannel fixed (bug id 1938480) - mb +- 2009-01-08 MIDIIn.connect on Linux fixed (bug id 1986850) - mb +- 2009-01-09 Tabbing in SCTextView - sw +- 2008-08-23 fix for sclang crashing sometimes when compiling erroneous code (bug id 2022297) - rb +- 2009-01-18 SCScrollView relativeOrigin glitch fixed (bug id 2508451) - jr, sw +- 2009-01-28 Fixed QuartzComposer view bounds bug - sw +- 2009-02-21 NodeProxy handles groups more consistently - jr +- 2009-04-16 asFraction fix by JMcC - jr + +Other additions/improvements: +----------------------------- +- 2008-03-22 added open Method and link handling to SCTextView - sw +- 2008-04-04 SoundFile:toCSV - ds +- 2008-04-29 buffer UGens now post a warning (rather than failing silently) if buffer channels doesn't match num ins/outs - ds +- 2008-07-14 Deprecated rendezvous in favour of zeroConf - sw +- 2008-09-xx various code improvements, including compiling for 64-bit linux - tb +- 2008-10-03 improvements to standalone build - jp +- 2008-10-03 SCEnvelopeView remembers drawing order. - sw +- 2008-10-05 Maintain initial offset when dragging on an Envelope View node. This avoids nodes jumping to a new position on mouse down. - sw +- 2008-10-05 Enabled gridOn, gridResolution, gridColor, timeCursorOn, timeCursorPosition, and timeCursorColor for SCSoundFileViews. - sw +- 2008-10-31 thisProcess.pid - sclang now can know what its process id is - ds +- 2008-11-21 support for LocalBuf in FFT UGens - jr +- 2008-11-27 SC3 will ignore ugens/class-files in folders named "ignore". Previously the name has been "test" - ignoring folders named "test" is now deprecated and will be removed - ds +- 2008-12-06 Added Main:recompile to allow recompiling from code (SC.app only so far) - sw +- 2008-12-08 Added custom drag label for SCView - sw +- 2008-12-15 Buffer's done osc reply now includes the bufnum - jt +- 2008-12-20 Help tree in help menu (OSX) - sw +- 2008-12-24 EZSLider and EZNumber now have an enclosing containers, as well labelPosition =\left, \right, or \stack modes - jm +- 2009-01-03 Help browser text is editable/executable (CocoaGUI) - sw +- 2009-01-04 Escape exits modal and fullscreen states (OSX) - sw +- 2009-01-08 interface change to ProxySpace.stop (now stops all proxies, just like free/end/clear) - jr +- 2009-01-08 improved Ndef implementation, stores values in an internal ProxySpace, Ndef takes server names for multiple servers. - jr +- 2009-01-08 improved ProxyMixer implementation, added NdefMixer. - adc +- 2009-01-11 Added class browser to help menu (OSX) - sw +- 2009-01-20 New Cocoa based SCTextField - sw +- 2009-01-28 More helpful error string for operation cannot be called from this Process - sw +- 2009-02-23 CocoaDialog takes allowsMultiple arg rather than maxItems - sw + + +SuperCollider v3.2, released 2008-02-21 +======================================= + +Headlines: +---------- +- 2007-11-xx new suite of machine listening ugens - Loudness, BeatTrack, Onsets, KeyTrack, SpecCentroid, SpecPcile, SpecFlatness - nc, ds +- 2008-01-06 FreeBSD compatibility - hb +- 2008-01-10 Quarks updating on OSX should now be easier for first-time users; commands are run in a separate terminal window - ds +- 2008-01-15 "Advanced find" in Mac interface - jt +- 2008-01-20 Buffer.copy changed to match other .copy methods - now copies language-side object rather than server buffer. Buffer.copyData can be used to copy data from one server buffer to another - jh +- 2008-01-20 - add volume controls to the Server and Server guis - jp +- 2008-01-xx Pattern library implementation changes, Pfx, Pbus, Pgroup etc. - rk, jr, jh +- 2008-01-26 TDuty outputs trigger first, not level. for backwards compatibility TDuty_old - jr +- 2008-02-03 moved the search location for "startup.rtf" on Mac - now searches in system, then user, "Application Support/SuperCollider" folders - ds + +Bugfixes: +--------- +- 2007-11-16 bug fixes for MIDIIn in connect/disconnect methods. split MIDIOut.sysex into user method and primitive (breaks with previous implementation). default value for uid arg in MIDIOut.new. - mb +- 2007-11-18 fixed a bug in prTry / protect - jr +- 2007-11-27 lock avoided in nextTimeOnGrid +- 2007-12-12 Node-setn fixed when using integers as control indices - jr +- 2008-01-16 fixed Pen: bug with fillRect, fillOval and fillColor (bugtracker id 1837775) - jt +- 2008-01-20 CheckBadValues rate-checking was too restrictive - ds +- 2008-01-20 fix for Saw and Pulse's offset noise on first instantiation, thanks to hisao takagi - ds +- 2008-01-26 TDuty / Duty does not drift anymore - jr +- 2008-02-07 Fixed hang and incorrect background drawing in Cocoa scrollviews - sw + +Other additions/improvements: +----------------------------- +- 2007-11-16 MIDIOut.connect and disconnect - mb +- 2007-11-18 added T2A UGen - jr +- 2007-11-18 Refactoring of Document class, including new CocoaDocument class to handle the Cocoa-specific (SuperCollider.app) document management - ds +- 2007-11-18 More macros available in the plugin API for UGen programmers: GET_BUF, SIMPLE_GET_BUF, FULLRATE, RGET, RPUT - ds +- 2007-11-20 UnixPlatform:arch method - jp +- 2007-11-20 FFTTrigger UGen - a ugen to create "fake" (empty) FFT chains - jp +- 2007-11-21 StartUp protects its added functions from each other - if one fails this no longer prevents others from running - ds +- 2007-11-25 added Pclutch and moved StreamClutch to common - jr +- 2007-11-27 Function:inEnvir added - jh +- 2007-12-12 added Collection.flatIf - jr +- 2007-12-15 added control rate functionality to NumRunningSynths - jr +- 2008-01-08 martin rumori's DiskIn bugfix and loop enhancement - jp +- 2008-01-10 String:runInTerminal method - ds +- 2008-01-11 poll now works for scalar ugens - jr +- 2008-01-15 Collection:maxIndex and Collection:minIndex - nc +- 2008-01-24 Server.options.rendezvous to (de)activate Rendezvous if desired - ds +- 2008-01-24 demand ugens accept audio rate inputs correctly - jr +- 2008-01-26 added Dbufwr ugen, for writing to buffers from a demand ugen chain - jr +- 2008-01-27 Main:version and associated methods for programmatically determining which version SC is - ds +- 2008-02-03 Server:defaultRecDir class variable, to allow user to specify default rec location - ds +- 2008-02-07 SCScrollView and SCScrollTopView no longer fire their action when scrolled programatically - sw + + +SuperCollider v3.1.1, released 2007-11-16 +========================================= +Bugfixes: +--------- +- 2007-11-09 re-organized the main help file - rb +- 2007-11-14 fix for .asStringPrec, to avoid crashes on intel systems for large precision values - jt + +Other additions/improvements: +----------------------------- +- 2007-11-14 added a preprocessor to the interpreter - jr +- 2007-11-14 added a startup message specifying how to get help - rk + + +SuperCollider v3.1, released 2007-10-31 +======================================= +(changes below are since 2007-09-22, for first ever point release) + +Headlines: +---------- +- 2007-09-27 SparseArray class added - jr +- 2007-09-28 Help.gui added - ds +- 2007-10-01 FFT and IFFT rewrite - now using more efficient libs, also allows user to vary the overlap and the window type, also large-sized FFTs are possible - ds +- 2007-10-02 UnpackFFT and PackFFT added - these allow for flexible frequency-domain manipulations inside synths - ds +- 2007-10-04 Pkey and Pif added - hjh +- 2007-10-05 reformed Patterns - all patterns accept patterns as arguments - jr +- 2007-10-08 change to UGen plugin loading fixes the audio dropout issue that various users have experienced - rb +- 2007-10-08 GeneralHID crossplatform HID wrapper - mb +- 2007-xx-xx many improvements to Quarks package-management system. gui improvements, dependency-handling improvements, etc - various +- 2007-10-20 added a Glossary file - sw +- 2007-10-xx various new help files added, and many help files improved - various +- 2007-10-26 changed Cmd-? to Cmd-D in lieu of the default help menu shortcut in Leopard. Also changed Cmd-Shift-K (clear post window) to Cmd-Shift-C to avoid accidental recompiles. - rb + +Other additions/improvements: +--------------------------- +- 2007-09-22 change log added, much rejoicing +- 2007-09-25 added packagesource.sh script to produce source code bundles - ds +- 2007-09-28 IdentityDictionary:doesNotUnderstand now warns if adding a pseudo-method which overrides a real method - jr +- 2007-09-28 String:openHTMLFile added - ds +- 2007-10-04 Integer:collect and Integer:collectAs methods added - ds/jr +- 2007-10-05 Dwhite:new and Dbrown:new have default values for lo and hi - jr +- 2007-10-10 SC no longer automatically writes data (synthdefs, archive.scxtar) to the application folder - instead writes to "app support". This fixes problems with running SC using an unprivileged user account - ds +- 2007-10-16 SequenceableCollection:median speed improvement, approx ten times faster in many cases - ds +- 2007-10-20 Object:deprecated and DeprecatedError added to allow for method deprecation - sw +- 2007-10-21 Amplitude : attackTime and releaseTime can be modulated now - jr +- 2007-10-25 Collection : histo method improved and moved from mathLib to common - jr +- 2007-10-30 improvements to cocoa Gui, including SCUserView improved to support layering and own draw hook - jt, sciss +- 2007-10-31 refactored Pbrown, added Pgbrown - jr + +Bugfixes: +--------- +- 2007-09-29 takekos bug fixed (obscure issue with garbage collection in arrays) - jm +- 2007-10-01 fixed off by one bug in Dswitch and Dswitch1 that caused a server crash - jr +- 2007-10-09 fixed deadlock and other problems in NSAttributedStringAdditions.m - rb +- 2007-10-11 fixed inaccurate automatic determination of whether SC is running as standalone - ds +- 2007-10-14 .quark files now saved correctly as plain-text, not RTF - ds +- 2007-10-24 fixed a bug in Pbeta - jp + + +\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* + + + +SuperCollider v3.6.5, released 2013-04 +====================================== + + Jakob Leben (10): + sc class library: fix regression in Server:-scope + scide: add "reset font size" action to post window and help browser + scide: autocompletion: order methods by class hierarchy when class is + known + documentation: improve info on logical time, clocks and threads + documentation: more info on threads, clocks and time + sclang: PyrThread: ensure slot type safety + documentation: clarify the functioning of Thread and Routine + streamline README.txt + documentation: improve thisFunction and thisFunctionDef + + Julian Rohrhuber (3): + sc class library: replacing the source of a node proxy led to hanging + patterns + sc class library: NodeProxy:cleanNodeMapnow works even if no settings are + present + fix typo / removing the implication that ansi-C isn't appropriate + + Michael Zacherl (5): + In.schelp: replaced AudioIn w/ SoundIn in reference, added loudness + warning in example section + Knob.schelp: repositioned text in mouseOverAction example + Klang.schelp: changed 'filter' to 'oscillator' in methods section + DynKlang.schelp: changed 'filter' to 'oscillator' in methods section + README.txt: reworked and simplified with focus on SC IDE and version 3.6 + + vividsnow (2): + scdoc: Pseg: duration pattern in beats not seconds + scdoc: add thisFunctionDef/thisFunction + + +SuperCollider v3.6.4, released 2013-04 +====================================== + + Dan Stowell (1): + SinOsc and Osc: note phase issue beyond +-8pi. Fixes #815 + + Jakob Leben (34): + sclang: fix Char:-isUpper/isLower + qtcollider: add QListView:-selectionAction + qtcollider: add QListView:-selection setter + scide: remove credits for kiberpipa + help: GUI - improve documentation of alignment options + help: add guide on creating standalone applications + sc ide: show impl/ref lookup dialogs even when no text under cursor + sc class library: ClassBrowser: fix search with empty query string + sc ide: interpreter: post notification on quit or crash + qtcollider: pass exit code up to SC_TerminalClient + sc ide: fix and improve region detection + sc ide: sc editor: add action to select pair of brackets enclosing cursor + sc ide: sc editor: update bracket match highlight after applying settings + qtcollider: QTextView: increase 'selectedString' compatibility, fix docs + qtcollider: envelope view: fix drawing of quadratic and cubic curves + sc ide: help browser: delegate docklet focus to webpage view + sc ide: docklet: when focusing, also activate window + sc ide: fix auto-indenting closing brackets on certain locales + sc ide: ensure dock widgets within screen bounds when first undocked + qtcollider: QTextView: set 'enterInterpretsSelection' to true by default + scide: config dialog: preserve font when toggling "show only monospaced" + scide: select line in code on triple click + scide: ensure last active window activated after open/save file dialog + scide: on startup, remove invalid file paths from "recent documents" list + scide: improve default paths in open/save dialogs + scide: save document dialog: always allow saving with any extension + scide: editor: highlight unmatched brackets just like mismatched ones + qtcollider: StackLayout: fix crash when removing contained widget + qtcollider: do not allow reparenting layouts, to avoid crashing + scide: fix closing tool panels on Escape + scide: impl/ref lookup: close dialog when opening documentation for class + Revert "Revert "scide: on Mac, make one global menu to share by all + windows"" + scide: prevent erroneous overriding of shortcuts on Mac OS + + James Harkins (2): + Library: Bugfix for PmonoArtic inside other patterns w/cleanup + Library: Fix Pfset passing child cleanups up to its parent(s) + + Tim Blechmann (10): + Help: fix rlpf help file + plugins: DemandEnv - fix shape polling + plugins: GrainBuf - catch both inf and NaN phase arguments + scsynth: prevent possible buffer overflow + cmake build system: fix x11 include paths + class library: Bus - fix get method for multi-channel busses + class library: Server.scope - remove limitation to 16 channels + plugins: LocalOut - don't crash server if LocalIn is missing + sclang: prevent buffer overflow + scide: link with librt + + Victor Bombi (1): + supernova: CMakeLists.txt must set include dirs for fftw3f + + attejensen (1): + Update MIDI.schelp + + +SuperCollider v3.6.3, released 2013-02 +====================================== + + Dan Stowell (2): + Add cmake option NO_GPL3 to simplify building of GPL2 binaries + SCDoc: generalise licensing from GPL3+ to GPL2+ + + Graeme Urquhart (2): + Issue #702 fix: sendSelection receives NSString + String:Help of split method matches implementation + + Jakob Leben (24): + qtcollider: relicense to GPL version 2 + sclang: terminal client - fix and simplify request handling + qtcollider: support String:-speak when Speech class is + available + cmake: set LIBSCSYNTH=ON by default on Windows + qtcollider: QView - do not block beginDrag if currentDrag is + already set + qtcollider: QKnob - let 'background' affect knob color + sc ide: improve server boot/quit actions + sc ide: improve interpreter start/stop actions + sc ide: improve default server booting shortcuts + qtcollider: sf view: fix loading non-power-of-two floating + point files + sc ide: disable zooming by mouse wheel (scrolling) + sc ide: editor - set Qt::WA_MacNoClickThrough on viewport + help: improve the SC IDE guide + qtcollider: implement QtGUI:*cursorPosition + class library: Platform - redirect getMouseCoords to GUI + sc ide: post window - disable click-through on Mac OS X + sc ide: add Help menu action to open the SuperCollider IDE + guide + help: SC IDE guide - show scaled screenshot, with a link to + unscaled one + sc ide: docklets - fix geometry after undocking + sc ide: change default shortcuts for Go To Next/Previous Region + sc ide: make cmd-period silent + sc ide: improve status box context menu interaction + sc ide: add context menu to interpreter status box + + James Harkins (4): + Fix title:: tags in the practical guide: user-friendly titles + vs. filenames + Add Practical Guide Cookbook entry on swing rhythms + PG_Cookbook_08: Fix an omitted copy/paste + Fix typo in analysis example: BufWr.ar on a kr signal is bad + + Tim Blechmann (22): + supernova: fix crash on /quit with portaudio + class library: PlusFreqScope - survive server actions + scide: remove ctrl-b shortcut + class library: FreqScope - fix for starting scope after booting + common: introduce new autogenerated SC_Version.hpp header + class library: fix Array-unlace + supernova: plugin interface - guard access to rt-pool + plugins: IOUgens - prevent buffer overflow + Help: BrownNoise - use a convention of -20db + supernova: sized array - assert boundaries + supernova: sndfile backend - correctly use correct blocksize + for temp buffer + supernova: jack backend - avoid uninitialized value + supernova: nrt engine - nicer formatting of message log + plugins: ui ugens - initialize libx11 for threading + supernova: start dsp threads from run methods + sclang: library config - correcty handle library config command + line argument + server plugins: RecordBuf - fix multichannel corruption and + buffer overrun + fftlib: for now we avoid intptr_t + server plugins: fix div_ka + plugins: osc ugens - fix GET_TABLE macro + plugins: OscUGens - ensure buffer initialization + scide: add menu item to open the user application support + directory + + Victor Bombi (2): + common: win32 - avoid integer truncation + supernova: correctly print synthdef path + + +SuperCollider v3.6.2, released 2012-12 +====================================== + + BS Collist (1): + qtcollider: QEnvelopeView - add method to return all selected + indexes + + Jakob Leben (32): + common (windows): unify access to known folder paths + sclang (windows): add primitive to access "My Documents" dir + cmake: expand the search for libsndfile and libfftw3f + cmake (Windows): use CMAKE_LIBRARY_PATH for fixup_bundle() + search dirs + scide: let cmd-period have an application-wide shortcut context + scide: DocumentManager - refresh cached file info before + storing save time + scide: help browser - support doc/impl/ref lookup for selected + text + scide: search widget hierarchy upwards for first handler of + lookup actions + scide: GenericLookupDialog - no need for subclassing QTreeView + anymore + scide: make doc/impl/ref lookup shortcuts work on detached + docklets + scide: always pop up lookup dialogs with the active window as + the parent + scide: update translation sources, add italian + qtcollider: start drag within mouse event handler + qtcollider: QStethoscope2 - reverse operation of horizontal + zoom slider + scide: GenericCodeEditor - set Qt::WA_MacNoClickThrough widget + attribute + scide: SyntaxHighlighter - swap QChar::toAscii() for toLatin1() + scide: Document - swap QString::toAscii() for + QString::toLatin1() + scide: MainWindow - substitute deprecated + QFileDialog::setFilter(QString) + scide: MainWindow - include QMimeData + scide: PostWindow - include QMimeData + scide: GenericCodeEditor - include QMimeData + qtcollider: QWidgetProxy - include QDrag + sclang: SCIpcClient - fix includes + cmake: sclang - fix building when SC_IDE=ON and SC_QT=OFF + cmake: scide - add QtNetwork to required Qt modules + qtcollider: QStethoscope2 - refactor for robustness + qtcollider: QListView - add 'selection' method to get all + selected indexes + help: document new 'selection' methods of EnvelopeView and + ListView + help: View - improve documentation, fix links + help: fix a large amount of broken links due to changes in + SCDoc + cmake: FindPortmidi - actually implement auto-finding portmidi + + James Harkins (1): + Fix bug introduced by 7f29d322: Don't free the same alloc'ed + index twice + + Tim Blechmann (18): + scide: DocumentManager - read files via QTextStream to decode + characters + supernova: osc handler - fix completion message and done + message for /b_close + supernova: asynchronous log - fix string splitting + supernova: compile fix + supernova: send /fail messages on /notify commands + supernova: send /fail on buffer commands + supernova: fix sndfile error handling + win32: ensure stack alignment + plugins: fix GrainBuf cleanup + Help: SymbolicNotations - replace SCSlider with Slider + supernova: plugin interface - protect against multiple done + actions + Help: remove memStore + class library: Buffer - freeMsg should clear all cached + information + supernova: osc interface - fix bug with node reordering + supernova: buffer_read - don't check samplerate when queueing + soundfiles + class library: fix Function.plot + plugins: RecordBuf - fix recordbuf overrun & fix done action + handling + Help: RecordBuf - RecordBuf is recording, not playing + + +SuperCollider v3.6.1, released 2012-11 +====================================== + + Dan Stowell (1): + SpecFlatness: prevent NaN output for silence (thanks nick + collins) + + Glen Fraser (1): + scide: code editor / post window - copy using plain text + + Jakob Leben (13): + update README_WINDOWS.txt for changed application data + locations + fix compilation with MinGW (broken static initialization) + scide: find/replace - use Qt translation system to handle + singular/plural + cmake: scide - improve handling translations + scide: load translations from app resource directory + scide: update translation source files + scide: change english translation file name to serve as + fallback + sclang: (Windows) change app support dir from roaming to local + scide: load fallback translation in addition to locale + translation + sclang: add primitive to allow Platform to access user home + directory + class library: WindowsPlatform - set a user-friendly default + recordingsDir + readme (windows): add instructions on moving application data + + Tim Blechmann (1): + class library: SynthDef - writeDefFile should use default + SynthDef path + + +SuperCollider v3.6.0, released 2012-11 +====================================== + +Major release with many new features - please see the help doc +"News in 3.6" for more information. +http://doc.sccode.org/Guides/News-3_6.html + + +SuperCollider v3.5.7, released 2012-11 +====================================== + + Jakob Leben (6): + sclang: (Windows) fix String:-getenv to return variables set + with -setenv + class library: ServerMeter - fix closing window when server has + never run + sclang: fix 'gcd' and 'lcm' methods + qtcollider: QStethoscope2 - fix width of number boxes + qtcollider: fix SoundFileView:-selectAll and -selectNone + qtcollider: fix QPen:*matrix setter - combine instead of + replace matrix + + Julian Rohrhuber (1): + class library: jitlib - Avoiding sync problems with free/play + + Tim Blechmann (9): + plugins: filters - fix initialization of filter parameters + external libraries: nova-simd update + external libraries: move nova-simd submodule to github + plugins: DelayN - fix initialization code + Revert "plugins: DelayN - fix initialization code" + common: fftlib - increase size limit for ffts + sclang: server shm interface - fix setting of multiple values + plugin interface: provide wrapper class for c++-style unit + generators + + +SuperCollider v3.5.6, released 2012-10 +====================================== + + Dan Stowell (2): + Improve error messages when cmake can't find optional things + Compile fix for Qt widget on arm. Upstreamed from + debian-multimedia (thanks Felipe Sateler) + + James Harkins (1): + Fix Spawner bug: cleanup.update is mandatory, including rest + events + + Jonatan Liljedahl (7): + Quarks: fix typo and also open old-style helpfiles ending with + .htm + Include old non-converted helpfiles in SCDoc document index + HelpBrowser: also open RTF files with whatever is available + Even more support for old help files + scdoc: use JS hasOwnProperty instead of testing the property + directly + HelpBrowser: post javascript errors + SCDoc: properly escape keys in generated docmap.js + + Joshua Parmenter (1): + Fix ServerOptions instance var ordering, etc., to make internal + server booting use correct number of audio bus channels. + + Tim Blechmann (4): + cmake: provide explicit option to use system-installed boost + libraries + external libraries - revert submodule updates + lang: SerialPort - fix invocation of done action + + +SuperCollider v3.5.5, released 2012-09 +====================================== + + Dan Stowell (1): + Fix bug in Complex:exp + + James Harkins (1): + Convert misleading and confusing OSC-style example into + object-style + + Joshua Parmenter (2): + fix IEnvGen kr UGen + fix cocoa window alpha setting + + Tim Blechmann (12): + sclang: fix Array:extendWrap for negative size argument + sclang: array primitivies - protect all array extend primitives + against negative sizes + scdoc: fix string comparison in parser + supernova: sized_array - don't allocate memory for zero-sized + array + plugins: GrainBuf - fix crash when using nan as position + control + scsynth: ensure alignment of wire buffers + supernova: catch exceptions when reading synthdefs + supernova: free_aligned - fix fallback implementation for null + pointers + cmake build system: dont compile shared library with + -fwhole-program + plugins: GrainBuf - allocate grain after reading window + plugins: GrainBuf - fix access to default hann window + + Victor Bombi (1): + cpu usage for portaudio_backend.hpp + + +SuperCollider v3.5.4, released 2012-08 +====================================== + + Dan Stowell (5): + Fix typo that causes build fail on big-endian archs, thanks + Felipe Sateler + fix build on ARM (where qreal==float); thanks Felipe Sateler + Strip gremlin characters from JITLib wrapForNodeProxy.sc + choose clipping rather than wraparound for writing + integer-format audio files (libsndfile setting) + arm build fix: another double->qreal in QcMultiSlider + + James Harkins (1): + Improve documentation of GUI kits and kit switching + + Jonatan Liljedahl (2): + SCDoc: Use proper static string constants instead of comparing + string literals. + Revert "reinstate Mix.arFill and Mix.krFill for backward + compatibility reasons" + + Julian Rohrhuber (2): + reinstate Mix.arFill and Mix.krFill for backward compatibility + reasons + improve string helpfile + + Tim Blechmann (10): + plugins: GrainUGens - handle unallocated window buffers + plugins: GrainBuf - reject multi-channel buffers + plugins: grain ugens - treat empty window buffers correctly + server: provide memory alignment wrappers for msvc + server: scsynth - ensure correct deallocation of SndBuffer + memory + server/language/supernova: automatically clip integer audio + files + scsynth: correctly free aligned buffers + Help: fix OSC function in SendPeakRMS help file + package: use alternative implementation of git-archive-all + + Victor Bombi (1): + MSVC fix + + +SuperCollider v3.5.3, released 2012-06 +====================================== + + Dan Stowell (6): + LocalIn helpfile fix, thanks Bruno Ruviaro + Fix scvim regsitry file for updated filename (thanks Carlo Capocasa) + version number to 3.5.3 + Server helpfile: see-also reference docs + SCVim.sc should not be executable + cmake build system: use system boost libraries if available + + Jakob Leben (1): + cmake: fix Boost Thread linking on Windows + + James Harkins (10): + EnvGen_next_ak_nova: Hardcoded blocksize=64, change to + inNumSamples + Per Scott W., initSiblings is not needed + Reinstate Mix.ar and Mix.kr, with rate checks + Fix crossplatform fail: Scale.directory shouldn’t always depend + on Document + ListPatterns: offset.value omitted (inval) as an argument + Fix PbindProxy:storeArgs - should NOT call “source” on keys in + the array! + Scale:degreeToRatio should handle degrees outside of one + octave’s range + More meaningful error message for too many selectors + Explain the limitation on the number of selectors in one + FunctionDef + Correct spelling error + + Jonatan Liljedahl (3): + Methods.html: auto-redirect to Search if method not found + SCDoc: fix detection of old format class docs + Mix.ar was un-deprecated, so remove the deprecated method + + Joshua Parmenter (2): + fix scroll view problem for OS X 10.7.4 + update SC_DirUtils to look at the name of the app bundle on osx + + Julian Rohrhuber (14): + fix bugs due to wrong usage of partial application + PV_BinShift helpfile improved + PV_Diffuser helpfile improved + reformat statement for readability (no change of functionality) + helpfile improvements + improve array helpfile + add note to the loop argument of DiskIn (thanks Stefan). + improve helpfile + some helpfile improvements + improve helpfile + improve helpfile + improve and simplify FFT overview helpfile: fix some errors in + examples. + improve and simplify IFFT helpfile. + improve and simplify FFT helpfile, mention that hopsize must be + larger than 0.0 + + Tim Blechmann (11): + external libraries: update nova-tt (gcc 4.7 fix) + supernova: correctly implement replace semantics for /s_new + Help: Function.scope is not limited to OSX anymore + cmake build system: locate server plugins on freebsd + server: add support for RF64 + cmake build system: ensure boost include path for scsynth + cmake build system: set boost library path + cmake build system: link scapp with correct version of + libboost_thread + cmake build system: minor cleanup + supernova: fix asynchronous commands for empty reply address + common: fix non-apple builds + + +SuperCollider v3.5.2, released 201 +====================================== + + Dan Stowell (3): + Remove outdated Japanese menus + Cannot use indentation for CMAKE example - on mac it is rendered + as   which then breaks cmake compilation + Fix bug in FFT library if winsize != audiosize + + Jakob Leben (21): + qtcollider: fix QTextView:-background and + QSoundFileView:-background + cmake: improve message if Qt4 or one of its components not found + qtcollider: QKnob: fix mouse response when mouseOverAction is set + qtcollider: implement missing QPopUpMenu:-background + qtcollider: QTextView fixes and improvements + help: add missing GUI examples + qtcollider: support use of UTF-8 encoded strings + qtcollider: QTextView: improve -enterInterpretsSelection + qtcollider: QTextField: never propagate Enter to parent + qtcollider: QEnvelopeView: improve node selection API and UI + help: update EnvelopeView documentation + help: fix incorrect info in EnvelopeView documentation + qtcollider: QObject:-getProperty: turn an error into a debug + warning + qtcollider: implement drag-and-drop for data outside SC + qtcollider: improve key propagation in QListView and QTreeView + qtcollider: optimize view instantiation (take 2) + qtcollider: fix mouse wheel event being forwarded to SC for no + reason + qtcollider: fix potential null pointer dereference + qtcollider: optimization - partially revert event handling + changes + qtcollider: optimization - avoid a signal connection at QObject + construction + qtcollider: optimization - avoid connecting signals with + unnormalized signatures + + James Harkins (2): + Fix Pcollect/select/reject:embedInStream to pass inval to the + function + setTheme: Inherit colors from parent theme if the user didn't + specify + + Jonatan Liljedahl (41): + scdoc: MathJax: don't use fonts installed on users computer + New SCDoc parser and renderer. Faster, more stable, less buggy. + fix some helpfiles for new scdoc + scdoc.css update + scdoc: scapp compile fix + scdoc: defer indexAllDocuments until first use + HelpBrowser tweaks + scdoc: warn on additions for non-existent help doc + scdoc: fill in argument names for argument:: with no name given + SCDocRenderer: warn on broken links + scdoc: fix classtree:: rendering bug + scdoc: only warn on grouped methods argnames mismatch if + argument:: tag is used + scdoc: avoid GC error in primitive + scdoc: collect metadata also from *.ext.schelp (doc additions) + scdoc: warn if argument:: name does not match real method arg + scdoc: updated SCDoc related docs + scdoc: warn if classdoc title and filename mismatch + scdoc: fix varargs name match warning + scdoc: render getter/setter combinations as two different methods + scdoc: warn if setter methods (trailing underscore) is documented + explicitly + scdoc: more helpfile fixes + scdoc: fix some bugs, handle class docs with missing classes + scdoc Search.html: match also on filename for 'title' + schelp: fix some broken links + scdoc: add clearCache arg to indexAllDocuments, and don't render + undocumented classes more than once per session + scdoc: updated SCDoc related helpfiles + schelp: more doc error fixes + scdoc: improve argument:: auto-fill and checks + String-warn and -error: don't print newline after WARNING: and + ERROR: + scdoc: tweak warnings + scdoc: fix escaping of :: in metadata parsing and block verbatim + schelp: add keywords for scdoc tags in SCDocSyntax.schelp + scdoc: allow end-of-file as newline terminator, and improve error + messages + scdoc: use setter_() syntax if more than one argument + scdoc: render method arg defaults as "foo: val" instead of "foo = + val" + mention new scdoc implementation in News-3_5.schelp + scdoc parser: allow empty lines before headertags + SCDoc: fix escaping of & < and > + SCDoc: fix inf loop at missing :: end-tag in code blocks + SCDoc: allow EOF as terminator for private:: and similar tags + SCDoc: don't warn on missing trailing mul & add args + + Miguel Negrão (1): + [Class Libray] Quarks GUI - sort quarks by name + + Tim Blechmann (10): + plugins: fix Clip.kr + class library: archive TempoClock as compile string + cmake build system: restrict win32-specific cflags to win32 + external libraries: nova-simd update + external libraries: nova-simd compile fix + plugins: fix StereoConvolution2L constructor + scsynth: use aligned memory allocation functions from supernova + external libraries: nova-simd update + scsynth: provide zalloc as symbol + + redFrik (1): + scdoc: fixed a bunch of helpfile errors + + +SuperCollider v3.5.1, released 2012-04 +====================================== + + Jakob Leben (13): + windows: properly pass the SC version to NSIS + qtcollider: QPopUpMenu: fix action triggering + qtcollider: get rid of "X is not implemented" message + class library: make Server:-plotTree resilient to GUI kit + switching + help: improve Stethoscope documentation + class library: QStethoscope2: add missing class methods + class library: fix UGen scoping on out-of-process servers + class library: PlusFreqScope: simplify server checking + class library: fix and improve various 'scope' and 'freqscope' + methods + help: fix Stethoscope:*isValidServer documentation + class library: ServerMeter: fix synth startup and cleanup + update README_WINDOWS.txt + windows: improve building and installation + + Jonatan Liljedahl (6): + lang11d: Fix parse tree generation of expr.(key:value, ...) + SC.app: allow saving plain text .schelp files + SCDoc: copymethod:: also search *.ext.schelp files + Update News for 3.5 doc + Fix typo in News-3_5.schelp and improve StartupFile.schelp + Update WritingPrimitives.schelp regarding GC safety + + Joshua Parmenter (1): + prevent HID crashes on OS X. Devices still aren't added to the + queue though (longs for the locID aren't correctly set up) + + Scott Wilson (1): + Make Unpack1FFT a subclass of UGen, rather than of PV_ChainUGen + + Tim Blechmann (4): + class library: SynthDef - fix uploading of large synthdefs + sclang: block evaluation typesafety + sclang: signal primitives - fix Signal-fft + + +SuperCollider v3.5.0, released 2012-03 +====================================== + +Major release with many new features - please see the help doc +"News in 3.5" for more information. +http://doc.sccode.org/Guides/News-3_5.html + + +SuperCollider v3.4.5, released 2012-01 +====================================== + + Tim Blechmann (7): + class library: FreqScope fix + sclang: fix crash of scpacket overflow by using exception handling + sclang: pad PyrMethodRaw struct + sclang: force size of PyrSlot to 16 byte and fix PyrMethodRaw size + server plugins: fix div_ai_nova + plugins: Resonz - fix initialization + plugins: disable simd-optimization for tanh + + James Harkins (3): + Explicitly show the command to uninstall (for scons idiots like me). + (3.4) PathName now sets tmp directory using Platform + SimpleController:update would throw error if no actions had been 'put' in + + Dan Stowell (1): + Remove waf file from 3.4.x - was never used, and contains binary code, causing linux packaging problems. See ubuntu bug #529154 for details, and debian bug #529154 for sc-specific + + Mathieu Trudel-Lapierre (1): + Fixup environment variables used for linking against readline, libicu, curl, cwiid. + + Nick Collins (1): + Fix bug in MFCC ugen + + Noe Rubinstein (1): + Fix PMOsc doc: index -> pmindex + + dmotd (1): + Include altivec.h on linux powerpc, fixing FTBFS + + +SuperCollider v3.4.4, released 2011-06 +====================================== + + Dan Stowell (4): + Improve format of copyright/GPL notices (issue raised in debian pkging) + Clarify Fontana copyright in MoogFF (and don't use keyword 'copyright' in files where he doesn't have copyright) + Update AUTHORS file + Remove unneeded PDF (debian raised query over copyright) + + Nick Collins (1): + Initial fix for headphones problem where plugging in or out headphones while using Built-in Output leads to loss of audio on OS X. Aggregate Devices not tackled at this point + + Tim Blechmann (15): + sclang: mathematical operators - clip2 fix + plugins: LPF - fix control-rate initialization + sclang: wii - don't use address of temporary + SCClassLibrary: ScoreStreamPlayer - do not add instances to server list + scsynth: apple - set denormal handling flags, if __SSE__ is defined + sclang: slotString - crash fix + plugins: XLine - correct handling of done actions + sclang: gc - introduce LazyCollect to avoid leak of frames and argument lists + plugins: Pitch.ar - fix crash for high execution period + changelog: fix version number + update changelog + sclang: parser - support message send syntax for unary operators + plugins: delay ugens - rt memory allocation may fail + sclang: compile fix + + +SuperCollider v3.4.3 +====================================== + + Dan Stowell (2): + SC 3.4 set correct SOVERSION 1.0.0 for libs, and install more properly. (Changes ported from downstream debian packaging.) + lib SOVERSIONs back from 1.0.0 to 1, following debian-multimedia advice + + James Harkins (8): + Fix nowExecutingPath bug in scel (never backported?) + fix two bugs in NotificationCenter registerOneShot: + fix corner case in ClassBrowser + Fix asPseg bug for short curves array (which should wrap, not kill the stream) + Clear dataptr when closing a file (so that isClosed answers correctly) + Incorrectly used dataptr instead of fileptr in previous commit on this file + replace old, unsafe Dictionary test with a safer (but less OOPy) test + rats... I missed two others of the same + + Joshua Parmenter (1): + update version number + + Tim Blechmann (3): + scsynth: set ftz flag on osx + two commits: (1) simplify access to the superclass tree in Class. (2) when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of havin + scons build system: libsclang build fix + + +SuperCollider v3.4.2, released 2011-03 +====================================== + +Bugfixes: +--------- + +* 2010-06-05 fix Latch first sample output bug: if trigger > 0 initially, latch should not output 0 - jh +* 2010-09-04 fix firstArg behavior in BinaryOpUGen by a list-approved hack - jh +* 2010-10-01 fix SConstruct so that libscsynth and libsclang get SONAME entries - ds +* 2010-11-13 grainBuf: audio-rate trigger fix - tb +* 2010-11-15 generate libsclang and libscsynth with .so.1 extension (and soname) on linux - ds +* 2010-11-15 scons create symlinks from libX.so to libX.so.1 on linux, and install them - ds +* 2010-11-16 added .htm files to SConstruct as approved help file extension - mb +* 2010-11-28 compile fix for curl support - tb +* 2010-11-28 prevent asBus from breaking when called with no numChannels - jh +* 2010-12-03 grain ugens: demand ugen input fix - tb +* 2010-12-05 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place. backported from master - tb +* 2010-12-08 prString_FindRegexp fix: match char array was too short to hold null termination - jli +* 2010-12-11 fix classbrowser colors bugs. backported from master - tb +* 2010-12-12 fixes the bug where installed quark help files would not be detected - tb/ar +* 2010-12-13 mark inherited methods in class browser by background colour. backported from master - tb +* 2010-12-30 Pipe does not remove closed pipes from openFiles - jh +* 2010-12-30 fix String:rotate - pb +* 2011-01-02 unit generators: LagControl - fix initialization order - jh +* 2011-01-02 unit generators: LagControl - dynamically allocate buffer for filter states - tb +* 2011-01-07 fixed iOS compilation and backported changes from master branch - ab +* 2011-01-06 array primitives: fix allTuples and unlace - pb +* 2011-01-07 sclang: makeIntrinsicClass - correct bounds for memcpy - tb +* 2011-01-08 sclang: prString_FindRegexp - fill array after allocating objects - tb +* 2011-01-14 sclang: prString_FindRegexp ensure correct size of results array during gc calls - tb +* 2011-02-27 sclang: ensure minimum stack size - tb +* 2011-03-09 SCVim: avoid generating scvim help cache if not currently in scvim - ds +* 2011-03-11 fix the Event type 'note' (fixes rendering patterns to audio files) - rk + + +SuperCollider v3.4.1, released 2010-11 +====================================== + +* 2010-07-12 remove accidental debug messages from SCView (on mac, posted a lot of info to Console, could affect performance) - ds +* 2010-07-11 Collections should behave as reasonably as possible when empty - some fixes to better this - jr +* 2010-07-11 SynthDef:add now sends to all running servers if no libname is given. SynthDescs are still added to the global SynthDescLib. If you want to handle multiple SynthDesc libs, you have to add the servers to each of them explicitly - jr +* 2010-07-12 PanAz: added support for audio-rate pos arg - lfsaw +* 2010-07-18 improved the sclang syntax highlighting parses - Patrick Borgeat +* 2010-07-30 Dreset UGen allows to reset the child UGens on its input - jr +* 2010-08-05 storeOn / asCompileString now simplifies its output. Default arguments that are given in the *new method anyhow are omitted - jr +* 2010-08-06 Dictionary merge and blend methods - jr +* 2010-08-09 method overwrite messages not posted by default, rather a message inviting people to run Main:overwriteMsg for the info - ds +* 2010-08-13 MethodOverride class to encapsule information on overridden messages, inviting people to run MethodOverride.printAll - jr +* 2010-08-13 add size arg to Signal:zeroPad - jr and jh +* 2010-08-18 Pevent now uses default event if no event is passed in - jr +* 2010-08-18 added a shortcut to the rather tedious .asCompileString method. In analogy to object.postcs, object.cs returns the compile string - jr +* 2010-08-20 audio driver for scsynth running on Android (through JNI) - ds +* 2010-08-24 un-deprecate scsynth's ability to use internal "green" FFT lib, for embedded devices etc - ds +* 2010-08-28 no 'record' button for remote server GUIs, since path not generally known - ds +* 2010-09-02 token threading for sclang interpreter - tb +* 2010-09-07 when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of having to select both words around the colon - jr +* 2010-09-07 added methods for better navigation in the class tree (findOverriddenMethod) - jr +* 2010-09-10 add method: Complex:abs to fit common usage - jr +* 2010-09-12 added Dwrand UGen - jr +* 2010-09-15 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place - jr +* 2010-10-07 change the mac HID error-handler code to output errors to sc post window rather than to mac log; removes a pascal-string issue - ds +* 2010-10-19 Ndef now releses its bus when server was quit or just booted - jr +* 2010-10-20 retain the path to the file in which an error has occurred and post it - jr + + +Bugfixes: +--------- +* 2010-07-10 protecting the server against malformatted SynthDef names - jr +* 2010-06-28 syntaxColorize fix for double-backslashes, thanks Patrick Borgeat for the patch - ds +* 2010-07-24 catch crash in the case that one tries to define a unique method using a return value directly - jr +* 2010-09-07 UGen:clip, :wrap, :fold now apply correctly to scalar-rate signals; also methodSelectorForRate tweak for which class is asked - ds +* 2010-09-09 fix a bug for trigger signals in Demand.kr that hold longer than one control period - jr +* 2010-09-11 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr +* 2010-09-12 fix bug: 2994009. LFPar and LFCub audio rate modulation frequency argument work now - jr +* 2010-09-19 fix to JITGui, when numItems is not supplied - jr +* 2010-10-10 remove more crufty NSLog debug messages - ds +* 2010-10-13 fix SCUserView:receiveDrag to receive mouse co-ordinates; thanks Daniel van den Eijkel - ds +* 2010-10-19 debian-style scvim-check-if-plugin-is-active, brought upstream - ds +* 2010-10-19 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr +* 2010-10-19 partial fix for bugs item #2994009 - seems to fix LFPar but not LFCub. More work needed - ds +* 2010-10-19 DC: fix multichannel expansion - tb +* 2010-10-19 fix to demand rate unary op ugens, thanks james harkins - tb +* 2010-10-19 Ugens: LinLin/LinExp fixes - tb +* 2010-10-19 only /clearSched if RT - to fix tracker item #3033454 - tb +* 2010-10-19 UGens: binary operators - fix scalar/signal division - tb +* 2010-10-19 fix bug 2988525: SynthDef:writeDefFile appends path correctly - tb +* 2010-10-19 ProcessOSCPacket: fix possible deadlock - tb +* 2010-10-19 fix network address handling - albert graef +* 2010-11-05 fix memory issues in regular expressions: correct memory management in prString_FindRegexp - tb +* 2010-11-07 sclang: correct symlink handling - tb, ar + +SuperCollider v3.4, released 2010-07 +==================================== + +Headlines: +---------- + +* 2009-09-03 add support for Mac OS 10.5 and greater 64-bit builds of plugins and scsynth +* 2009-07-xx iphone support by Axel Balley added - ab +* 2009-07-21 EnvirGui added, a gui for livecoding/editing environments - adc +* 2009-07-24 Server.plotTree method for visualising the groups and synths on the server - sw +* 2009-07-31 mac osx text-completion feature now includes sclang objects - ds +* 2009-08-01 sclang now has a flag (Platform.ideName) for which IDE is in use (scapp, scvim, scel, sced, jsceclipse...) so that the same class-library can be used with different IDEs, enabling IDE-specific code as necessary - ds +* 2009-08-16 add emergency escape route: if sclang is caught in an infinite loop, send it a USR1 signal to break out of it - ds +* 2009-09-12 String:findRegexp and other regular expressions now available on linux as well as mac - mb,ds +* 2009-09-18 n_order and Server:reorder allow one to specify chains of nodes - sw +* 2009-09-20 simplify the Server recording interface. prepareForRecord is now optional (will be automatically invoked if you don't), and the server gui button is now just two-state "record" "stop" - ds +* 2009-10-04 support multichannel indices for Env:at - jr +* 2009-10-29 improve OSC message correctness: for convenience, sclang allows command names as symbols with no leading slash e.g. \g_new. To improve compliance with the OSC standard, the leading slash is now added to those symbols before dispatch - ds +* 2009-11-07 use nova-simd framework for performance improvements of unit generators - tb +* 2009-11-21 Event type \note supports polyphonic sustain, lag and timingOffset, and responds correctly to free and release. Add \grain event type. - jr +* 2009-11-28 windows: system "application support path", previously hardcoded as C:\SuperCollider, now settable by environment variable SC_SYSAPPSUP_PATH. Default setting for that env var (when using official wix bundle) will be [SC3INSTALLLOCATION] - ds +* 2009-12-15 sclang: 64-bit safety - tb +* 2009-12-15 sclang: performance improvement of math ops - tb +* 2010-01-02 scsynth: use osc-compilant address patterns for server/lang communication - tb +* 2010-01-24 add readline interface to sclang command-line. This is used by default when invoking "sclang" (to use the non-readline interface set the "-i" option to something other than "none") - ds +* 2010-01-24 enable GPL3 code by default - this 'upgrades' the overall binary license from GPL2+ to GPL3+, and allows supercollider to benefit from GPL3+ libraries such as libsimdmath and gnu readline - ds +* 2010-02-04 Improvements to SC.app editor: Split pane documents, AutoInOutdent - sw +* 2010-02-18 scvim: now compatible with gnu screen, opens post window using screen, making it compatible with a pure-CLI environment - ds +* 2010-02-xx add the Deployment32-64 build style for building on OS X (10.5 and greater) - jp +* 2010-03-10 SynthDef:memStore deprecated in favour of the more coherent and typeable SynthDef:add - jr +* 2010-04-11 Moved some more experimental JITLib classes to "JITLib extensions" Quark - jr + + +Bugfixes: +--------- + +* 2009-06-12 fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw +* 2009-06-18 fix for mouse coordinates bug - sw +* 2009-06-22 fix for negative bounds issue in SCUserView - sw +* 2009-06-23 avoid memory corruption when unknown OSC type tags are received. Instead forward them to sclang - jr +* 2009-06-23 Fix server crash with negative buffer numbers. - jr +* 2009-07-20 factors(): no prime factors exist below the first prime - jr +* 2009-07-21 Loudness ugen now supports LocalBuf - nc +* 2009-07-23 Fix very nasty bug in Pbindf: if a key is an array, new values were written into the incoming event, instead of the outgoing event - jh +* 2009-07-28 catch unintialised value in sc_GetUserHomeDirectory(), fixing potential memory corruption if HOME not set - ds +* 2009-08-01 SpecCentroid, fix its reaction to silence (output zero instead of NaN) - ds +* 2009-08-01 NamedControl: single default value now returns instance, not array, default values are obtained in a consistent way - jr +* 2009-08-04 fix the CPU-usage issue when calling plain "./sclang" from the terminal on OSX (seems it was caused by a bug in how OSX handles poll() calls) - ds +* 2009-08-15 LinPan2: fix initialisation issue - panning was not correctly applied during the first calc block - ds +* 2009-09-28 Workaround for faded colours in HTML docs - sw +* 2009-09-13 fix PV_MagShift argument handling, so that the defaults mean no-change, matching the behaviour of PV_BinShift - ds +* 2009-09-20 warn about weirdness of Float:switch - ds +* 2009-09-30 prevent NaN output from SpecFlatness when input is silence - ds +* 2009-10-16 fix cropping issue in printing SuperCollider.app documents - cq +* 2009-10-17 many phase-vocoder (PV_) ugens previously didn't handle the DC/nyquist bins as expected. fixed most of these (PV_MagAbove, PV_MagBelow, PV_MagClip, PV_LocalMax, PV_BrickWall, PV_MagSquared, PV_BinWipe, PV_CopyPhase, PV_Max, PV_RandComb) - ds +* 2009-11-01 fix audio rate arg problem in PlayBuf - jp +* 2009-11-02 fix amplitude-convergence issue in Pan2, Balance2, LinPan2, XFade2, which could sometimes result in sound despite zero amp, as discovered by jh - ds +* 2009-11-03 fix unsafe implementation of methods that allow sending collections to buffers - jr +* 2009-11-04 fix signalRange for MouseX, MouseY and KeyState, so that the range message works now - jr +* 2009-11-19 Fix for PV chains and LocalBuf - sw +* 2009-12-14 fix uninitialised variable in Pulse (could sometimes cause small glitch on init), thanks to rhian lloyd - ds +* 2010-01-10 Demand ugens can now handle more than 32 channels, thanks Patrick Borgeat for the patch - ds +* 2010-02-05 scsynth now respects the -D commandline option when running in NRT mode - ds +* 2010-02-11 Fix for nowExecutingPath with Routines - sw +* 2010-02-23 Performance fixes for SCUserView - sw +* 2010-02-25 Fix interpolation / indexing problem in VDiskIn that caused slight pitch fluctuations - jp +* 2010-03-11 SequenceableCollection:reduce no longer returns nil if the collection has only 1 element - ds +* 2010-03-28 fix memory leak of empty command line, for interactive sclang mode - tb +* 2010-03-29 main menu for Mac lang editor app: correction to key for evaluate selection, used to be return, now return+shift - nc +* 2010-04-19 fix missing font issue in Plotter -jr + +Other additions/improvements: +----------------------------- + +* 2009-06-11 Evaluate Selection menu command - sw +* 2009-06-23 allow remote apps to send type chars - jr +* 2009-06-27 build 32bit sclang on x86_64 - tb +* 2009-07-xx efficiency improvements on some UGens - tb +* 2009-07-xx improve Quarks use of svn for smoother user experience - ds +* 2009-07-22 catch the case when a user tries to compile into a synthdef, a unary/binary operator that the server can't apply - jh +* 2009-08-29 String:toUpper and String:toLower - ds +* 2009-09-06 Boolean:while now throws an informative error, since Boolean:while has no particular use but is often used in error by beginners in code where Function:while is intended - ds +* 2009-09-12 method FunctionDef:makeEnvirFromArgs allows to create template events from a function - jr +* 2009-09-30 Error is now posted if maxSynthDefs exceeded -sw +* 2009-11-03 TwoWayIdentityDictionary has a removeAt method now - jr +* 2009-11-04 update of deferredTaskInterval from 0.038 to 0.01667 - fo +* 2009-11-07 improved PyrSlot typesafety - tb +* 2009-11-23 menu system improvements in Windows IDE - mv +* 2009-12-13 tidyups for "sclang when on osx but not in sc.app" - ds +* 2009-12-13 added lincurve and curvelin methods for numbers and UGens - jr +* 2010-01-01 OSCresponder and OSCresponderNode respond equally to messages with or without preceding slash - jr +* 2010-01-04 sclang: deprecated Proutine - switch back to the original Prout +* 2010-01-06 UnitTest Quark improved, added script support - jr +* 2010-01-23 Improved NodeProxy and ProxySpace helpfiles. Added proxy composition syntax to NodeProxy - jr +* 2010-01-30 Make multichannel plotting easier. If no numChannels is given, find out automatically - jr +* 2010-01-31 add new LOOP1 macro - tb +* 2010-01-31 use c99 log2 functions for sc_log2 - tb +* 2010-02-09 rearrangement of supercollider source code tree - ds +* 2010-02-11 Server:default_ now assigns to s by default. Settable with flag - sw +* 2010-02-27 removed SCAnimationView and added SCUserView:animate_ - fo +* 2010-03-10 SCPen:setSmoothing changed to SCPen:smoothing_, harmonised change with swingosc - ds +* 2010-03-23 exponentiation for Complex numbers - jr +* 2010-xx-xx many helpfiles improved - various authors +* 2010-03-30 Image class added, a redirect for SCImage or JSCImage - hr +* 2010-03-30 Pitch ugen ability to output clarity measure (by default not activated, for backwards compat) - ds + +SuperCollider v3.3.1, released 2009-06-19 +========================================= + +Headlines: +---------- + +* 2009-05-11 SCWindow additions for visible, visible_, unminimize - cq +* 2009-05-17 server guis (on osx) now indicate which one is currently default - adc +* 2009-05-18 enabled control rate versions of Ball, TBall and Spring - mb +* 2009-05-18 LID support for setting "MSC" state as well as "LED" on devices - ds +* 2009-06-19 patched for compatibility with Safari 4, fixing a lockup issue when opening help docs - ar + +Bugfixes: +--------- + +* 2009-05-11 fix keyword addressing for the order: argument - jmc +* 2009-05-15 update libsndfile to 1.0.20 to fix security issues (overflow vulnerabilities) in libsndfile - ds +* 2009-05-20 fix bug #2790649, "very large SimpleNumber:series can crash sclang" - ds +* 2009-05-25 mac icons for document types .quark .scd .rtfd were omitted from the app bundle, now fixed - ds +* 2009-06-02 EnvGen: fix off by one block latency in envelope attacks and releases - jr +* 2009-06-12 bug fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw +* 2009-06-12 mouse coordinates fix, deprecate SCUserView:mousePosition - sw +* 2009-06-17 some issues fixed in SCUserView - cq +* 2009-06-20 fix redirect for Stethoscope - adc + +Other additions/improvements: +----------------------------- + +* 2009-05-05 fixes/improvements to cocoabridge primitives - cq +* 2009-05-06 SCImage various minor improvements - cq +* 2009-05-16 optimisation for scrollview drawing, remove VIEWHACK - sw +* 2009-05-xx various documentation updates - various +* 2009-05-xx various improvements to ubuntu-debian packaging scripts - ds, am +* 2009-05-20 SynthDef:writeOnce now available as an instance method as well as a class method - ds +* 2009-06-11 sc.app gets a menu command for "Evaluate selection" - sw +* 2009-06-17 adjusted SCKnob to use relative mouse coordinates - jm +* 2009-06-17 small fix to SConstruct to allow for new Debian X11 location when compiling on linux - mb +* 2009-06-19 Blip ugen: prevent sound blowup by never letting numharm be less than 1 - fo +* 2009-06-20 SCPen: fillStroke changed default from draw(4) to draw(3) - fo +* 2009-06-21 Fold, Clip and Wrap can now modulate the low and high inputs. + +SuperCollider v3.3, released 2009-04-30 +======================================= + +Headlines: +---------- +* 2008-04-08 scvim is now part of the distro - ds +* 2008-04-20 improvements to MIDI sysex handling - added sysex parsing directly in source - thanks to charles picasso +* 2008-07-12 scsynth on Mac can now use separate devices for audio input vs audio output. Thanks to Axel Balley for much of the work on this, also a bit by ds. +* 2008-07-12 PlayBuf, RecordBuf, BufWr, BufRd, ScopeOut - used to be limited to 16-channel audio maximum. Now can handle massively multichannel audio - ds +* 2008-07-19 Buffer:normalize method added - ds +* 2008-07-23 FFT and IFFT added option for zero-padding, by optional "framesize" argument - ds +* 2008-09-03 new VDiskIn ugen - jp +* 2008-10-08 SCImage for manipulating bitmap image objects (mac only) - ch +* 2008-10-09 LocalBuf system to allow synths to manage their own purely-local buffers - jr +* 2008-10-17 Added "-P" option to scsynth (accessible as s.options.restrictedPath) to allow restricting which paths scsynth is allowed to read/write - ds +* 2008-10-18 new PartConv ugen, performs efficient frequency-domain convolution - nc +* 2008-10-26 support on mac for "modal windows/sheets" (for user dialogs etc) - sw +* 2008-xx-xx various behind-the-scenes efficiency improvements, for a sleeker audio server that can do more on a given machine - various contributors +* 2008-11-01 add BEQSuite filter UGens (blackrain, jp) +* 2008-11-11 add Pfxb pattern - jr +* 2008-11-25 new EZPopUpMenu - jm +* 2008-11-29 Pitch ugen can now also track the pitch of control-rate signals - mb +* 2008-11-30 Drag and drop paths from Finder to Documents and SCViews - sw +* 2008-12-03 added PV_Div ugen for complex division - ds +* 2008-12-07 added PV_Conj ugen for complex conjugate - ds +* 2008-12-15 new ViewRedirect for easier cross-platform gui syntax. e.g. Window now redirects to SCWindow or JWindow. ds & jm +* 2008-12-15 revised and updated all SC Gui documentation. New gui introduction. New SCUserView subclassing tutorial. - jm +* 2008-12-15 the /done message for Buffer allocation/free/etc now also includes the buffer index - jt +* 2008-12-15 added methods to SCFreqScope for "special" SynthDef, and for visualising frequency responses - ds +* 2008-12-18 the main windows version of sc is now called "SuperCollider" rather than "PsyCollider" (although psycollider is the name of the code editor). SuperCollider on windows now has a different (better? who knows) installer, uses the main sc3 icon, and has some other tweaks that make it different from version 3.2 - ds +* 2008-12-19 new EZListView - jm +* 2009-01-02 sced (the gedit sc plugin) is now part of the distro - mb/artem +* 2009-01-06 SendReply UGen - jr +* 2009-01-06 VDiskIn sends file position to client - jr +* 2009-01-12 map audio to SynthDef controls. new OSC messages n_mapa and n_mapan. - jp, jr, rk +* 2009-01-13 relativeOrigin=true. SC's coordinate system in container views and user views are now by default relative. +* 2009-01-15 SCLevelIndicator view added - sw +* 2009-01-16 Scale and Tuning classes added - tw +* 2009-01-17 SuperColliderAU (scsynth as a Mac OSX "Audio Unit") added to main distribution - gr +* 2009-02-03 EZKnob revised and now part of distro - br, jm +* 2009-02-23 SystemActions refactored - jr +* 2009-02-23 SCMenuItem, SCMenuGroup, and SCMenuSeparator for user customisable menus - sw +* 2009-02-23 LFGauss UGen added - jr +* 2009-03-14 Added GeneralHID based patterns PhidKey and PhidSlot - mb + +Bugfixes: +--------- +* 2008-05-20 fix for the special case when 0.2.asFraction beachballs the lang (bug id 1856972) - jr +* 2008-05-20 fix slight mistake in the defaults printed by scsynth on command-line (bug id 1953392) - ds +* 2008-07-24 Routine / AppClock fix setting the clock of the thread (bug id 2023852) - jr +* 2008-09-16 stability fixes to FFT and IFFT - ds +* 2008-09-27 fix TExpRand.ar - ds +* 2008-11-11 SystemSynthDefs.numChannels can now be set from the startup file - jr +* 2008-11-24 avoid FFT failure when buffer not allocated - jr +* 2008-11-29 resolved inconsistency in Server:waitForBoot - function is always executed in a Routine, whether or not the server is booted - ds +* 2008-12-07 FlowView setting inital margin and gap fixed (bug id 1986059) - jh +* 2008-12-07 OSCpathResponder fixed (bug id 2021481) - jh +* 2009-01-08 b_readChannel fixed (bug id 1938480) - mb +* 2009-01-08 MIDIIn.connect on Linux fixed (bug id 1986850) - mb +* 2009-01-09 Tabbing in SCTextView - sw +* 2008-08-23 fix for sclang crashing sometimes when compiling erroneous code (bug id 2022297) - rb +* 2009-01-18 SCScrollView relativeOrigin glitch fixed (bug id 2508451) - jr, sw +* 2009-01-28 Fixed QuartzComposer view bounds bug - sw +* 2009-02-21 NodeProxy handles groups more consistently - jr +* 2009-04-16 asFraction fix by JMcC - jr + +Other additions/improvements: +----------------------------- +* 2008-03-22 added open Method and link handling to SCTextView - sw +* 2008-04-04 SoundFile:toCSV - ds +* 2008-04-29 buffer UGens now post a warning (rather than failing silently) if buffer channels doesn't match num ins/outs - ds +* 2008-07-14 Deprecated rendezvous in favour of zeroConf - sw +* 2008-09-xx various code improvements, including compiling for 64-bit linux - tb +* 2008-10-03 improvements to standalone build - jp +* 2008-10-03 SCEnvelopeView remembers drawing order. - sw +* 2008-10-05 Maintain initial offset when dragging on an Envelope View node. This avoids nodes jumping to a new position on mouse down. - sw +* 2008-10-05 Enabled gridOn, gridResolution, gridColor, timeCursorOn, timeCursorPosition, and timeCursorColor for SCSoundFileViews. - sw +* 2008-10-31 thisProcess.pid - sclang now can know what its process id is - ds +* 2008-11-21 support for LocalBuf in FFT UGens - jr +* 2008-11-27 SC3 will ignore ugens/class-files in folders named "ignore". Previously the name has been "test" - ignoring folders named "test" is now deprecated and will be removed - ds +* 2008-12-06 Added Main:recompile to allow recompiling from code (SC.app only so far) - sw +* 2008-12-08 Added custom drag label for SCView - sw +* 2008-12-15 Buffer's done osc reply now includes the bufnum - jt +* 2008-12-20 Help tree in help menu (OSX) - sw +* 2008-12-24 EZSLider and EZNumber now have an enclosing containers, as well labelPosition =\left, \right, or \stack modes - jm +* 2009-01-03 Help browser text is editable/executable (CocoaGUI) - sw +* 2009-01-04 Escape exits modal and fullscreen states (OSX) - sw +* 2009-01-08 interface change to ProxySpace.stop (now stops all proxies, just like free/end/clear) - jr +* 2009-01-08 improved Ndef implementation, stores values in an internal ProxySpace, Ndef takes server names for multiple servers. - jr +* 2009-01-08 improved ProxyMixer implementation, added NdefMixer. - adc +* 2009-01-11 Added class browser to help menu (OSX) - sw +* 2009-01-20 New Cocoa based SCTextField - sw +* 2009-01-28 More helpful error string for operation cannot be called from this Process - sw +* 2009-02-23 CocoaDialog takes allowsMultiple arg rather than maxItems - sw + + +SuperCollider v3.2, released 2008-02-21 +======================================= + +Headlines: +---------- +* 2007-11-xx new suite of machine listening ugens - Loudness, BeatTrack, Onsets, KeyTrack, SpecCentroid, SpecPcile, SpecFlatness - nc, ds +* 2008-01-06 FreeBSD compatibility - hb +* 2008-01-10 Quarks updating on OSX should now be easier for first-time users; commands are run in a separate terminal window - ds +* 2008-01-15 "Advanced find" in Mac interface - jt +* 2008-01-20 Buffer.copy changed to match other .copy methods - now copies language-side object rather than server buffer. Buffer.copyData can be used to copy data from one server buffer to another - jh +* 2008-01-20 - add volume controls to the Server and Server guis - jp +* 2008-01-xx Pattern library implementation changes, Pfx, Pbus, Pgroup etc. - rk, jr, jh +* 2008-01-26 TDuty outputs trigger first, not level. for backwards compatibility TDuty_old - jr +* 2008-02-03 moved the search location for "startup.rtf" on Mac - now searches in system, then user, "Application Support/SuperCollider" folders - ds + +Bugfixes: +--------- +* 2007-11-16 bug fixes for MIDIIn in connect/disconnect methods. split MIDIOut.sysex into user method and primitive (breaks with previous implementation). default value for uid arg in MIDIOut.new. - mb +* 2007-11-18 fixed a bug in prTry / protect - jr +* 2007-11-27 lock avoided in nextTimeOnGrid +* 2007-12-12 Node-setn fixed when using integers as control indices - jr +* 2008-01-16 fixed Pen: bug with fillRect, fillOval and fillColor (bugtracker id 1837775) - jt +* 2008-01-20 CheckBadValues rate-checking was too restrictive - ds +* 2008-01-20 fix for Saw and Pulse's offset noise on first instantiation, thanks to hisao takagi - ds +* 2008-01-26 TDuty / Duty does not drift anymore - jr +* 2008-02-07 Fixed hang and incorrect background drawing in Cocoa scrollviews - sw + +Other additions/improvements: +----------------------------- +* 2007-11-16 MIDIOut.connect and disconnect - mb +* 2007-11-18 added T2A UGen - jr +* 2007-11-18 Refactoring of Document class, including new CocoaDocument class to handle the Cocoa-specific (SuperCollider.app) document management - ds +* 2007-11-18 More macros available in the plugin API for UGen programmers: GET_BUF, SIMPLE_GET_BUF, FULLRATE, RGET, RPUT - ds +* 2007-11-20 UnixPlatform:arch method - jp +* 2007-11-20 FFTTrigger UGen - a ugen to create "fake" (empty) FFT chains - jp +* 2007-11-21 StartUp protects its added functions from each other - if one fails this no longer prevents others from running - ds +* 2007-11-25 added Pclutch and moved StreamClutch to common - jr +* 2007-11-27 Function:inEnvir added - jh +* 2007-12-12 added Collection.flatIf - jr +* 2007-12-15 added control rate functionality to NumRunningSynths - jr +* 2008-01-08 martin rumori's DiskIn bugfix and loop enhancement - jp +* 2008-01-10 String:runInTerminal method - ds +* 2008-01-11 poll now works for scalar ugens - jr +* 2008-01-15 Collection:maxIndex and Collection:minIndex - nc +* 2008-01-24 Server.options.rendezvous to (de)activate Rendezvous if desired - ds +* 2008-01-24 demand ugens accept audio rate inputs correctly - jr +* 2008-01-26 added Dbufwr ugen, for writing to buffers from a demand ugen chain - jr +* 2008-01-27 Main:version and associated methods for programmatically determining which version SC is - ds +* 2008-02-03 Server:defaultRecDir class variable, to allow user to specify default rec location - ds +* 2008-02-07 SCScrollView and SCScrollTopView no longer fire their action when scrolled programatically - sw + + +SuperCollider v3.1.1, released 2007-11-16 +========================================= +Bugfixes: +--------- +* 2007-11-09 re-organized the main help file - rb +* 2007-11-14 fix for .asStringPrec, to avoid crashes on intel systems for large precision values - jt + +Other additions/improvements: +----------------------------- +* 2007-11-14 added a preprocessor to the interpreter - jr +* 2007-11-14 added a startup message specifying how to get help - rk + + +SuperCollider v3.1, released 2007-10-31 +======================================= +(changes below are since 2007-09-22, for first ever point release) + +Headlines: +---------- +* 2007-09-27 SparseArray class added - jr +* 2007-09-28 Help.gui added - ds +* 2007-10-01 FFT and IFFT rewrite - now using more efficient libs, also allows user to vary the overlap and the window type, also large-sized FFTs are possible - ds +* 2007-10-02 UnpackFFT and PackFFT added - these allow for flexible frequency-domain manipulations inside synths - ds +* 2007-10-04 Pkey and Pif added - hjh +* 2007-10-05 reformed Patterns - all patterns accept patterns as arguments - jr +* 2007-10-08 change to UGen plugin loading fixes the audio dropout issue that various users have experienced - rb +* 2007-10-08 GeneralHID crossplatform HID wrapper - mb +* 2007-xx-xx many improvements to Quarks package-management system. gui improvements, dependency-handling improvements, etc - various +* 2007-10-20 added a Glossary file - sw +* 2007-10-xx various new help files added, and many help files improved - various +* 2007-10-26 changed Cmd-? to Cmd-D in lieu of the default help menu shortcut in Leopard. Also changed Cmd-Shift-K (clear post window) to Cmd-Shift-C to avoid accidental recompiles. - rb + +Other additions/improvements: +--------------------------- +* 2007-09-22 change log added, much rejoicing +* 2007-09-25 added packagesource.sh script to produce source code bundles - ds +* 2007-09-28 IdentityDictionary:doesNotUnderstand now warns if adding a pseudo-method which overrides a real method - jr +* 2007-09-28 String:openHTMLFile added - ds +* 2007-10-04 Integer:collect and Integer:collectAs methods added - ds/jr +* 2007-10-05 Dwhite:new and Dbrown:new have default values for lo and hi - jr +* 2007-10-10 SC no longer automatically writes data (synthdefs, archive.scxtar) to the application folder - instead writes to "app support". This fixes problems with running SC using an unprivileged user account - ds +* 2007-10-16 SequenceableCollection:median speed improvement, approx ten times faster in many cases - ds +* 2007-10-20 Object:deprecated and DeprecatedError added to allow for method deprecation - sw +* 2007-10-21 Amplitude : attackTime and releaseTime can be modulated now - jr +* 2007-10-25 Collection : histo method improved and moved from mathLib to common - jr +* 2007-10-30 improvements to cocoa Gui, including SCUserView improved to support layering and own draw hook - jt, sciss +* 2007-10-31 refactored Pbrown, added Pgbrown - jr + +Bugfixes: +--------- +* 2007-09-29 takekos bug fixed (obscure issue with garbage collection in arrays) - jm +* 2007-10-01 fixed off by one bug in Dswitch and Dswitch1 that caused a server crash - jr +* 2007-10-09 fixed deadlock and other problems in NSAttributedStringAdditions.m - rb +* 2007-10-11 fixed inaccurate automatic determination of whether SC is running as standalone - ds +* 2007-10-14 .quark files now saved correctly as plain-text, not RTF - ds +* 2007-10-24 fixed a bug in Pbeta - jp diff -pruN 1:3.8.0~repack-2/CHANGELOG.md 1:3.10.0+repack-0.1/CHANGELOG.md --- 1:3.8.0~repack-2/CHANGELOG.md 2016-11-04 22:20:12.000000000 +0000 +++ 1:3.10.0+repack-0.1/CHANGELOG.md 2018-11-25 07:16:37.000000000 +0000 @@ -1,6 +1,798 @@ # Change Log -## [3.8.0](https://github.com/supercollider/supercollider/tree/3.8.0) (2016-09-23) +Release dates of 3.x versions: + +- 3.1: 2007-10-31 +- 3.2: 2008-02-19 +- 3.3: 2009-04-30 +- 3.4: 2010-07-15 +- 3.5: 2012-03-16 +- 3.6: 2012-11-28 +- 3.7: 2016-03-13 +- 3.8: 2016-11-04 +- 3.9: 2018-01-13 +- 3.10: 2018-11-24 + +3.10.0 (2018-11-24) +========================= + +Contributors to this release: adcxyz, bagong, brianlheim, dkmayer, dmorgan-github, dyfer, g-roma, +geoffroymontel, gusano, hardiksingh-rathore, htor, jamshark70, jpburstrom, LFSaw, lnihlen, lvm, +markwheeler, mhetrick, miczac, muellmusik, nilninull, novadeviator, orbsmiv, patrickdupuis, paum3, +prko, redFrik, sbl, scztt, sensestage, shimpe, simonvanderveldt, smiarx, smrg-lm, snappizz, +sonoro1234, telephon, tem44, widp, Xon77, and many others. + +Known issues +------------ + +- FileDialog can hang — currently we are only able to reproduce on KDE, but other OS's could be affected ([#3807](https://github.com/supercollider/supercollider/issues/3807)). +- On Windows and Linux, running code with Ctrl+Enter in the help browser (not the editor) only evaluates the current line ([#3989](https://github.com/supercollider/supercollider/issues/3989)). +- QtWebEngine, a hard dependency of SCLang and SCIDE, is difficult or impossible to install in some environments ([#4010](https://github.com/supercollider/supercollider/issues/4010)). Work is underway to make it an optional component, but this will not happen in time for 3.10. + +General: Added +----- + +A `NO_X11` option has been added to the build system so that server plugins requiring an X server such as MouseX can be omitted ([#3738](https://github.com/supercollider/supercollider/pull/3738)). + +General: Changed +------- + +sclang and scide have long been stuck with Qt 5.5 due to Qt dropping QtWebKit for QtWebEngine. They have been upgraded for compatibility with Qt 5.7+. We recommend using the most recent version of Qt. The impacts of this change include: + +- sclang and scide now build on Visual Studio 2015 and later. (Previously, Windows users had to obtain the now-ancient Visual Studio 2013.) +- UserView now supports Retina/HiDPI display. +- A somewhat different build process on Linux. See the README. + +The minimum required version is now CMake 3.5 instead of CMake 2.8 ([#3656](https://github.com/supercollider/supercollider/pull/3656)). + +scel (the emacs package) is now a submodule ([#3519](https://github.com/supercollider/supercollider/pull/3519)). + +General: Fixed +----- + +Many issues with Unicode paths on Windows were fixed in 3.9. A few remaining cases involving sound files remained, and are now fixed ([#3720](https://github.com/supercollider/supercollider/pull/3720)): + +- supernova's sound file backend, buffer manager, and plugin loading +- NRT mode in scsynth +- `/b_read` family of commands in scsynth +- `SoundFileView` in the sclang GUI + +Fixed a build failure with the CMake option `SYSTEM_YAMLCPP=on` ([#3558](https://github.com/supercollider/supercollider/pull/3558)). + +Fixed a misleading deprecation warning when `CMAKE_INSTALL_PREFIX` is set to the home directory in Linux ([#3613](https://github.com/supercollider/supercollider/pull/3613)). + +Fixed `CMAKE_PREFIX_PATH` incorrectly defaulting to `/usr/local/` on macOS under some conditions ([#4043](https://github.com/supercollider/supercollider/pull/4043)). + +scsynth and supernova: Added +----- + +supernova now has latency compensation ([#3790](https://github.com/supercollider/supercollider/pull/3790)). + +scsynth and supernova: Fixed +----- + +scsynth's latency compensation had a math error that ended up doubling the latency. It is fixed now ([#3790](https://github.com/supercollider/supercollider/pull/3790)). + +For consistency with scsynth, supernova no longer requires the final argument to `/b_allocReadChannel` ([#3826](https://github.com/supercollider/supercollider/pull/3826)). + +Fixed a missing newline in some of supernova's error messages ([#3897](https://github.com/supercollider/supercollider/pull/3897)). + +Fixed errors in supernova's `/s_getn` ([#3893](https://github.com/supercollider/supercollider/pull/3893)). + +Fix supernova's response to `/g_queryTree` so it matches scsynth ([#3221](https://github.com/supercollider/supercollider/pull/3221)). + +UGens: Fixed +----- + +Fixed clicks in Convolution2L ([#3687](https://github.com/supercollider/supercollider/pull/3687)). + +sclang: Added +----- + +Menus are now supported in the Qt GUI. See help files for `Menu`, `MenuAction`, `ToolBar`, and `MainMenu` ([#2504](https://github.com/supercollider/supercollider/pull/2504)). + +Added wrappers for over 100 special mathematical functions (gamma function, Bessel functions, elliptic integrals, etc.) from the Boost library ([#3672](https://github.com/supercollider/supercollider/pull/3672)). + +SerialPort now works on Windows ([#3809](https://github.com/supercollider/supercollider/pull/3809)). + +`FileDialog` and `Dialog` now support a "path" argument that specifies a default directory when the dialog appears ([#3508](https://github.com/supercollider/supercollider/pull/3508)). + +`QTreeView` has a new method: `setColumnWidth` ([#3560](https://github.com/supercollider/supercollider/pull/3560)). + +sclang: Changed +------- + +**Breaking change:** `Float:asString` now always produces a decimal point, so `3.0.asString` is now `"3.0"` instead of `"3"` ([#3585](https://github.com/supercollider/supercollider/pull/3585)). + +**Breaking change:** The `server` argument has changed to `target` in `Function:asBuffer`, `Function:loadToFloatArray`, and `Function:plot`, and now allows spawning the plotting synth relative to a group or node rather than just a server ([#3088](https://github.com/supercollider/supercollider/pull/3088)). + +**Breaking change:** `File:mkdir` now returns a Boolean indicating whether the operation was successful. Previously, it returned the File object ([#3635](https://github.com/supercollider/supercollider/issues/3635)). + +Scrollbars now always appear for ScrollView on Linux an Windows, as a temporary workaround for a very odd dependency on the use of the scroll wheel ([#3686](https://github.com/supercollider/supercollider/pull/3686)). + +sclang: Removed +------- + +Removed some unused Qt dependencies from the build system ([#3472](https://github.com/supercollider/supercollider/pull/3472)). + +sclang: Fixed +----- + +**Breaking change:** Fixed a long-standing math error in `SimpleNumber:expexp` ([#3786](https://github.com/supercollider/supercollider/pull/3786)). + +Fixed extreme CPU usage of sclang when built without Qt ([#3772](https://github.com/supercollider/supercollider/pull/3772)). + +On Windows, the directory where extensions were installed was accidentally changed in 3.9. It has been reverted ([#3751](https://github.com/supercollider/supercollider/pull/3751)). + +Fixed a crash when calling `File.copy` when the destination exists ([#3633](https://github.com/supercollider/supercollider/pull/3633)). + +Fixed two `Array:lace` issues: a crash when any element is an empty array, and an error when no length argument is provided and any element is not an array ([#3716](https://github.com/supercollider/supercollider/issues/3716)). + +Fixed conditions where `Integer:forBy` can cause sclang to freeze when the step size is 0 or a floating point value with an absolute value less than 1 ([#3804](https://github.com/supercollider/supercollider/pull/3804)). + +Fixed some incorrect output in `FunctionDef:dumpByteCodes` ([#3803](https://github.com/supercollider/supercollider/pull/3803)). + +Fixed `Node:release` getting stuck on negative release times, which are now equivalent to 0 ([#3741](https://github.com/supercollider/supercollider/pull/3741)). + +Fixed `==` on `Signal` objects randomly returning the wrong result ([#3970](https://github.com/supercollider/supercollider/pull/3970)). + +Class library: Added +----- + +`UnitTest.passVerbosity` allows changing the verbosity of test failure reports. See the `UnitTest` help file for more information ([#3615](https://github.com/supercollider/supercollider/pull/3615)). + +Added new UGen methods `.snap` and `.softRound` ([#3429](https://github.com/supercollider/supercollider/pull/3429/files)). + +`Node:query` has a new `action` argument, allowing specification of a callback function ([#3701](https://github.com/supercollider/supercollider/pull/3701)). + +`.degrad` and `.raddeg` are now implemented for UGens ([#3821](https://github.com/supercollider/supercollider/pull/3821)). + +Class library: Changed +------- + +The default behavior of `SerialPort.devices` pattern matching has been improved to match a wider variety of devices on macOS and Linux ([#3809](https://github.com/supercollider/supercollider/pull/3809)). + +Internal calls to `.interpret` have been removed from `Color.fromHexString` and `History.unformatTime`, improving both performance and security ([#3527](https://github.com/supercollider/supercollider/pull/3527)). + +Class library: Deprecated +---------- + +`SerialPort.cleanupAll` is deprecated ([#3809](https://github.com/supercollider/supercollider/pull/3809)). + +Providing an integer index for `SerialPort.new` is deprecated ([#3809](https://github.com/supercollider/supercollider/pull/3809)). + +Class library: Fixed +----- + +`BufWr.ar` no longer allows its input signals to be control rate, which caused the server to read from garbage memory ([#3749](https://github.com/supercollider/supercollider/pull/3749)). + +`Buffer:query` returned incorrect results if multiple query messages are sent at once. This has been fixed ([#3645](https://github.com/supercollider/supercollider/pull/3645)). + +Fixed fragilities in path joining methods such as `+/+`, `withTrailingSlash`, and `withoutTrailingSlash` ([#3634](https://github.com/supercollider/supercollider/pull/3634)). + +Fixed bugs when certain pattern classes are passed in 0 as the number of repeats ([#3603](https://github.com/supercollider/supercollider/pull/3603)). + +Fixed `Event.addEventType` ignoring the `parentEvent` argument ([#3736](https://github.com/supercollider/supercollider/pull/3736)). + +Fixed `Pkey` being skipped because the default number of repeats is `nil` instead of `inf` ([#3724](https://github.com/supercollider/supercollider/pull/3724)). + +Fixed some harmless but annoying errors about extensions of nonexistent classes when sclang is built without Qt ([#3770](https://github.com/supercollider/supercollider/pull/3770)). + +`ProxySpace:linkDoc` was broken — switching documents did not actually change ProxySpaces. This is fixed now ([#3764](https://github.com/supercollider/supercollider/pull/3764)). + +`Recorder:prepareForRecord` produced an error if the recordings path does not exist. It now makes the directory if it doesn't exist ([#3788](https://github.com/supercollider/supercollider/pull/3788)). + +Fixed bugs when providing multiple paths in `ServerOptions:ugensPluginPath` ([#3754](https://github.com/supercollider/supercollider/pull/3754)). + +Fixed `HelpBrowser` (the class, not the IDE help browser) being unusable since it didn't trigger rendering of help files when links are clicked ([#3832](https://github.com/supercollider/supercollider/pull/3832)). + +Fixed some bugs in `EnvGate`: throwing an error when `fadeTime` is a constant rather than a UGen input, and `i_level` not behaving as documented ([#3797](https://github.com/supercollider/supercollider/pull/3797)). + +Fixed occasional hangs when rebooting supernova ([#3848](https://github.com/supercollider/supercollider/pull/3848)). + +Fixed confusing user feedback with the "Check for updates" button in the quarks GUI ([#3986](https://github.com/supercollider/supercollider/pull/3986)). + +`Buffer` methods ensure that the buffer number in outbound OSC messages is an integer ([#3907](https://github.com/supercollider/supercollider/pull/3907)). This fixes errors in supernova, which is stricter than scsynth about the buffer number type. + +Fixed confusing user feedback with the "Check for updates" button in the quarks GUI ([#3986](https://github.com/supercollider/supercollider/pull/3986)). + +Fixed missing default arguments in `fold2`, `wrap2`, and `excess` methods of `Collection` for consistency with `SimpleNumber` ([#4037](https://github.com/supercollider/supercollider/pull/4037)). + +Fixed incorrect template matching behavior in `OSCFunc` and related functionality ([#4027](https://github.com/supercollider/supercollider/pull/4027)). + +Fixed "Message 'extension' not understood" preventing `Image` from working ([#3728](https://github.com/supercollider/supercollider/pull/3949)). + +IDE & SCDoc: Added +----- + +The IDE has a prettier default theme ([#4025](https://github.com/supercollider/supercollider/pull/4025)). The old theme still exists as "classic." + +The IDE now properly highlights scale degree literals like `4s` ([#4032](https://github.com/supercollider/supercollider/pull/4032)). + +IDE & SCDoc: Changed +------- + +The IDE has a prettier default theme ([#4025](https://github.com/supercollider/supercollider/pull/4025)). The old theme still exists as "classic." + +The IDE now has a unified look across all platforms, and its color scheme adapts to match the editor theme ([#3950](https://github.com/supercollider/supercollider/pull/3950)). + +The SCDoc TOC and menubar have been redesigned again ([#3831](https://github.com/supercollider/supercollider/pull/3831)). + +Various tweaks to the appearance of the IDE: nicer tabs ([#3992](https://github.com/supercollider/supercollider/pull/3992)), better border colors ([#4022](https://github.com/supercollider/supercollider/pull/4022)). + +IDE & SCDoc: Fixed +----- + +When starting the IDE, detached docklet sometimes spawn as unresponsive. This has been fixed ([#3660](https://github.com/supercollider/supercollider/pull/3660)). + +Syntax colors in the help browser now match the IDE ([#3883](https://github.com/supercollider/supercollider/pull/3883)). + +Only one preference window can be open at a time now ([#3988](https://github.com/supercollider/supercollider/pull/3988)). + +Fixed tabs reversing in order when restoring a session ([#3942](https://github.com/supercollider/supercollider/pull/3942)). + +3.9.3 (2018-04-07) +================== + +Contributors to this release: brianlheim, mneilsen, patrickdupuis, telephon + +General: Fixed +----- + +It is now possible to build the project using a system install of yaml-cpp. Previously the `SYSTEM_YAMLCPP` CMake option was broken ([#3557](https://github.com/supercollider/supercollider/pulls/3557)). + +Improvements to documentation on writing and designing classes ([#3605](https://github.com/supercollider/supercollider/pulls/3605)). + +sclang: Fixed +----- + +Fixed a regression from 3.8 to 3.9 that prevented the tilde character from being expanded to the user's home directory during class library compilation ([#3646](https://github.com/supercollider/supercollider/pulls/3646)). + +Class library: Fixed +----- + +Fixed an issue with handling of ranges in `RangeSlider:setSpan` and `:setDeviation` ([#3620](https://github.com/supercollider/supercollider/pulls/3620)). + +Fixed a regression in `Score`'s multichannel expansion from 3.9.1 to 3.9.2 ([#3608](https://github.com/supercollider/supercollider/pulls/3608)). + +3.9.2 (2018-03-23) +================== + +Contributors to this release: adcxyz, brianlheim, davidgranstrom, jamshark70, patrickdupuis, snappizz, telephon, vivid-synth + +General: Fixed +----- + +Improvements to various documentation pages ([#3587](https://github.com/supercollider/supercollider/pull/3587), [#3526](https://github.com/supercollider/supercollider/pull/3526)) + +Fixed CMake configuration errors that prevented successfully building on Windows when the project path contains spaces ([#3525](https://github.com/supercollider/supercollider/pull/3525)). + +UGens: Fixed +----- + +Fixed PSinGrain growing in amplitude after it was supposed to finish ([#3494](https://github.com/supercollider/supercollider/pull/3494)). + +sclang: Fixed +----- + +sclang now creates a configuration directory on startup, rather than waiting for it to be created by another action. This step is skipped if sclang is run as a standalone (-a) or if a language config file is specified with the -l option ([#3577](https://github.com/supercollider/supercollider/pull/3577)). + +`SequenceableCollection:unixCmd` now allows respects `PATH` instead of strictly requiring the executable path ([#3501](https://github.com/supercollider/supercollider/pull/3501)). + +Class library: Added +----- + +A new method, `Platform:killProcessByID`, was added ([#3499](https://github.com/supercollider/supercollider/pull/3499)). + +Class library: Changed +------- + +`LanguageConfig:store` throws an error if it fails to write ([#3577](https://github.com/supercollider/supercollider/pull/3577)). + +Class library: Fixed +----- + +Fixed an off-by-one error in a warning message for `Server:clientID_` ([#3487](https://github.com/supercollider/supercollider/pull/3487)). + +`Event:isRest` now returns true if the event's `\isRest` entry is `true`. This usage was backported from 3.8 and is deprecated ([#3521](https://github.com/supercollider/supercollider/pull/3521)). + +`Server` now tries to recover in the case of a lost connection between client and server ([#3486](https://github.com/supercollider/supercollider/pull/3486)). + +Fixed an error when producing a `Score` containing an `Event` with a multichannel `timingOffset` ([#3544](https://github.com/supercollider/supercollider/pull/3544)). + +IDE & SCDoc: Fixed +----- + +The help browser table of contents popout no longer has redundant "table of contents" text ([#3576](https://github.com/supercollider/supercollider/pull/3576)). + +3.9.1 (2018-02-05) +================== + +Contributors to this release: antonhornquist, aspiers, brianlheim, cappelnord, florian-grond, gusano, jamshark70, patrickdupuis, redFrik, shimpe, telephon + +General: Added +-------------- + +Introduced Guard integration that allows sclang UnitTests to be automatically rerun whenever a file changes ([#3369](https://github.com/supercollider/supercollider/pull/3369)). + +Bleeding-edge builds are now uploaded for Windows. See the Windows README for details ([#3441](https://github.com/supercollider/supercollider/pull/3441)). + +General: Fixed +-------------- + +Debugging information is improved when building a Windows installer package ([#3464](https://github.com/supercollider/supercollider/pull/3464)). + +scsynth and supernova: Fixed +---------------------------- + +supernova only looked for plugins in a `plugins/` subfolder of the provided extensions directory. This has been fixed to be consistent with scsynth ([#3433](https://github.com/supercollider/supercollider/pull/3433)). + +UGens: Fixed +------------ + +Fixed `Index`, `IndexL`, `FoldIndex`, `WrapIndex`, `IndexInBetween`, and `DetectIndex` incorrectly downsampling audio-rate index arguments ([#3436](https://github.com/supercollider/supercollider/pull/3436)). + +sclang: Fixed +------------- + +The GUI class library folders were installed even when building sclang without Qt, resulting in unbound primitives. This has been fixed ([#3456](https://github.com/supercollider/supercollider/pull/3456)). + +Some default class library directories had to be manually created. sclang will now create them for you if they don't exist ([#3469](https://github.com/supercollider/supercollider/pull/3469)). + +Class library: Fixed +-------------------- + +Fixed a Routine not being properly terminated when running `CmdPeriod.run` (or hitting an equivalent shortcut) when a `Server:plotTree` window is open ([#3423](https://github.com/supercollider/supercollider/pull/3423)). + +Fixed `LevelIndicator:style_` doing nothing and printing the warning `Qt: WARNING: Do not know how to use an instance of class 'Meta_QLevelIndicatorStyle'` ([#3398](https://github.com/supercollider/supercollider/pull/3398)). + +Fixed `Git.checkForGit` returning `nil` ([#3445](https://github.com/supercollider/supercollider/issues/3445)). + +The SynthDef compiler optimizes `a + b.neg` to `a - b`, but other UGens that depend on `b.neg` would also be incorrectly removed in some cases. This has been fixed ([#3437](https://github.com/supercollider/supercollider/pull/3437)). + +In 3.9.0, the `group` key broke in the "grain" event type. This has been fixed ([#3483](https://github.com/supercollider/supercollider/pull/3483)). + +IDE & SCDoc: Added +------------------ + +New IDE themes have been introduced for the editor and post window: Solarized, Solarized Dark, and Dracula ([#3412](https://github.com/supercollider/supercollider/pull/3412), [#3410](https://github.com/supercollider/supercollider/pull/3410)). + +IDE & SCDoc: Changed +-------------------- + +Set the default font in the IDE for macOS to Monaco, instead of the rather silly non-monospace font that has been the SC default for over a decade ([#3404](https://github.com/supercollider/supercollider/pull/3404)). + +IDE & SCDoc: Fixed +------------------ + +Fixed duplicate SCIDE icons in GNOME, and fixed the SCIDE icon looking wrong ([#3380](https://github.com/supercollider/supercollider/pull/3380)). + +Fixed SCDoc breaking with page titles containing a single quote character ([#3301](https://github.com/supercollider/supercollider/pull/3301)). + +Fixed an error due to lack of input sanitization when trying to open help (Cmd+D/Ctrl+D) or references (Cmd+U/Ctrl+U) on text containing a double quote character ([#3277](https://github.com/supercollider/supercollider/pull/3277)). + +3.9.0 (2018-01-13) +====================== + +We are proud to announce the arrival of SuperCollider 3.9.0! Apologies +for being so far behind schedule; we hope the improvements you'll find here +will more than make up for it. In 3.9.0, determined contributors have fixed +some of SuperCollider's major cross-platform compatibility demons, addressed +longstanding issues in the IDE and language, and added new features and bugfixes +across the board. + +Many thanks to all who contributed to this release: adcxyz, awson, bagong, +brianlheim, cappelnord, carlocapocasa, crucialfelix, danstowell, defaultxr, +dyfer, elifieldsteel, gagnonlg, ghost, gusano, jamshark70, jd-m, jleben, +jmckernon, joshpar, jreus, LFSaw, llloret, LucaDanieli, Magicking, +miguel-negrao, muellmusik, patrickdupuis, porres, privong, redFrik, samaaron, +scztt, simdax, smoge, smrg-lm, snappizz, telephon, thormagnusson, +tiagomoraismorgado88, timsutton, vivid-synth, vividsnow, yurivict, and many +more in the SC community who helped in ways other than participation on GitHub. + +Known Issues +------------ + +The IDE server status display turns yellow after a few seconds when opening `s.makeGui`. This does not cause any usability issues ([#3310](https://github.com/supercollider/supercollider/issues/3310)). + +Only the first pages of the HTML files produced by SCDoc are printed in web browsers ([#3395](https://github.com/supercollider/supercollider/issues/3395)). + +The help browser does not remember the last position open in a document when navigating through history, and just jumps to the top of the file ([#3396](https://github.com/supercollider/supercollider/issues/3396)). + +Supernova loads plugins from "Extensions/plugins" rather than "Extensions" ([#3391](https://github.com/supercollider/supercollider/issues/3391)). + +`LevelIndicator.style()` is broken, which leads to confusing warning messages ([#3398](https://github.com/supercollider/supercollider/pull/3398)). + +`File.copy` crashes the interpreter if the destination file exists ([#3401](https://github.com/supercollider/supercollider/issues/3401)). + +On Windows, SerialPort is not available ([#1008](https://github.com/supercollider/supercollider/issues/1008)). + +On Windows, Supernova is not available. + +On Windows, the command-line sclang interpreter is not available. + +General: Added +----- + +scvim has seen numerous enhancements now that an actively maintained fork has been merged in ([scvim #11](https://github.com/supercollider/scvim/pull/11)). + +SuperCollider can now be built on Windows using the MSYS2 toolchain, thanks in particular to @awson and @bagong. ([PortAudio #1](https://github.com/supercollider/portaudio/pull/1), [HIDAPI #5](https://github.com/supercollider/hidapi/pull/5), [#2473](https://github.com/supercollider/supercollider/pull/2473), [#2704](https://github.com/supercollider/supercollider/pull/2704)) + +SuperCollider can now be built on FreeBSD, thanks to @shamazmazum and @yurivict ([#2834](https://github.com/supercollider/supercollider/pull/2834), [#2704](https://github.com/supercollider/supercollider/pull/2704), [HIDAPI #8](https://github.com/supercollider/hidapi/pull/8), [#3131](https://github.com/supercollider/supercollider/pull/3131)). + +Detailed documentation on creating macOS standalone applications with SuperCollider has been added, thanks to @adcxyz ([#2881](https://github.com/supercollider/supercollider/pull/2881)). + +Support for multiple sclang clients connecting to the same server is greatly improved, thanks to @adcxyz. + +A CODE_OF_CONDUCT.md and CONTRIBUTING.md have been added to the repository ([#3001](https://github.com/supercollider/supercollider/pull/3001)). + +Higher-resolution raster versions of the SC cube logo have been added to the top-level `icons/` directory ([#3023](https://github.com/supercollider/supercollider/pull/3023)), and a retina-friendly `.icns` file ([#3060](https://github.com/supercollider/supercollider/pull/3060)). + +General: Changed +------- + +**Breaking change:** `sc_gcd` in the plugin interface now conforms to `gcd(n, 0) == n` instead of `gcd(n, 0) == abs(n)` ([#2980](https://github.com/supercollider/supercollider/pull/2980)). This also affects the method `SimpleNumber:gcd`. + +The macOS plist file now shows the full version number for both the Version String and Shortened Version String ([#2487](https://github.com/supercollider/supercollider/pull/2487)). + +General: Fixed +----- + +A typo in the build system prevented the `-msse` compiler flag from being properly set for gcc and clang ([#2623](https://github.com/supercollider/supercollider/pull/2623)). This *may* fix subnormal number issues in scsynth that some users have been experiencing. + +Fixed a fontification break in scel when too many classes are defined ([#2508](https://github.com/supercollider/supercollider/pull/2508)). + +Fixed build failures on FreeBSD ([#3126](https://github.com/supercollider/supercollider/pull/3126)), GCC 7 ([#3226](https://github.com/supercollider/supercollider/pull/3226)), and newer versions of Boost ([#3227](https://github.com/supercollider/supercollider/pull/3227)). + + +scsynth and supernova: Added +----- + +scsynth and supernova now support a `/version` command, which responds with a message of the form `/version.reply program major minor patch branch commit` ([#2546](https://github.com/supercollider/supercollider/pull/2546), [#2598](https://github.com/supercollider/supercollider/pull/2598)). See the Server Command Reference for full details. + +scsynth and supernova: Changed +------- + +On macOS, if scsynth's input and output devices have mismatched sample rates, an error is thrown and the server does not boot. Setting the number of input channels to 0 (`-i 0` on the command line and `s.options.numInputBusChannels = 0` in sclang) now bypasses this error ([#2610](https://github.com/supercollider/supercollider/pull/2610)). + +Disabled Nagle's algorithm for TCP communication in scsynth ([#2613](https://github.com/supercollider/supercollider/pull/2613)). Nagle's algorithm increases bandwidth at the cost of delay, which is undesirable in the context of SuperCollider. Both supernova and sclang have it turned off. + +scsynth and supernova: Fixed +----- + +The `/b_read` and `/b_readChannel` messages experienced intermittent failures to read sound files, most notably affecting `Buffer.cueSoundFile`. This has been fixed ([#2793](https://github.com/supercollider/supercollider/pull/2793)). + + +UGens: Added +----- + +A new UGen, `Sanitize`, replaces infinities, NaNs, and subnormals with another signal, zero by default ([#2561](https://github.com/supercollider/supercollider/pull/2561)). + +The `doneAction` argument to DetectSilence can now be modulated ([#2379](https://github.com/supercollider/supercollider/pull/2379)). + +UnaryOpUGen now supports the bitwise not operator `bitNot` ([#2381](https://github.com/supercollider/supercollider/pull/2381)). It used to simply fail silently. + +UGens: Changed +------- + +**Breaking change:** The application binary interface (ABI) for server plugins has changed ([#3129](https://github.com/supercollider/supercollider/pull/3129)). This has an important impact: **plugin binaries compiled for SuperCollider 3.8 will not work with SuperCollider 3.9** and vice versa. Please recompile your plugins. + +**Breaking change:** `FOS.ar` with control-rate coefficient inputs incorrectly initialized its coefficients at 0 and ramped to the correct values over the first control period. This has been fixed ([#2658](https://github.com/supercollider/supercollider/pull/2658)). To restore old behavior, multiply each coefficient by `Line.ar(0, 1, ControlDur.ir)`. + +UGens: Deprecated +---------- + +`Donce`, a demand-rate UGen with no identifiable purpose, is deprecated ([#2564](https://github.com/supercollider/supercollider/pull/2562)). It was most likely used in the production of electronic donce music. + +UGens: Fixed +----- + +A number of UGens were discovered to have serious initialization bugs ([#2333](https://github.com/supercollider/supercollider/issues/2333)) where the UGen would output an initial sample of garbage memory. This can create audio explosions if the buggy UGen's output is fed into certain filter UGens like LPF or Delay1. These bugs have been fixed, affecting: + +- BeatTrack +- BeatTrack2 +- CoinGate +- Convolution +- Convolution2 +- Convolution2L +- Convolution3 +- DetectSilence +- DiskIn +- DiskOut +- IFFT +- KeyTrack +- LFGauss +- PartConv +- PV_JensenAndersen +- PV_HainsworthFoote +- RunningSum +- StereoConvolution2L +- Unpack1FFT + +Fixed a bug with `TGrains` ignoring the `amp` parameter ([#2809](https://github.com/supercollider/supercollider/pull/2809)). + +`Dibrown` no longer ignores the `length` argument ([#2654](https://github.com/supercollider/supercollider/pull/2654)). + +`Pitch` no longer ignores the `median` argument ([#2953](https://github.com/supercollider/supercollider/pull/2953)). + +Fixed a build error in DiskIOUGens on Windows ([#3015](https://github.com/supercollider/supercollider/pull/3015)). + +Fixed `AudioControl` outputting garbage data if a bus is mapped to it but nothing is playing to the bus ([#3063](https://github.com/supercollider/supercollider/pull/3063)). + +Fixed incorrect math in `PanAz.ar` with audio-rate input signal and position ([3139](https://github.com/supercollider/supercollider/pull/3139)). + + +sclang: Added +----- + +Regression tests for the sclang lexer, parser, and compiler have been added ([#2751](https://github.com/supercollider/supercollider/pull/2751)). This will make it easier to make fixes to these components in the future. + +sclang: Changed +------- + +**Breaking change:** sclang's nestable multiline comments had some mistakes. In particular, sometimes sclang's lexer would incorrectly process overlapping combinations of `/*` and `*/`, so e.g. `*/*/` would be interpreted like `*/ /* */`. This has been fixed ([#2625](https://github.com/supercollider/supercollider/pull/2625)). + +The maximum number of MIDI ports has been increased from 16 to 128 ([#2494](https://github.com/supercollider/supercollider/pull/2494)). + +The startup post "NumPrimitives = #" is reworded to "Found # primitives" ([#3139](https://github.com/supercollider/supercollider/pull/3139)). + +sclang: Removed +------- + +Removed some unhelpful memory addresses from call stack output in error printing ([#2951](https://github.com/supercollider/supercollider/pull/2951)). + +Removed some accidentally retained debug posts when the language starts up ([#3135](https://github.com/supercollider/supercollider/pull/3135)). + +sclang: Fixed +----- + +Fixed help files failing to open on Windows if the user's name contains a non-ASCII character ([#2861](https://github.com/supercollider/supercollider/pull/2861)). + +Fixed non-ASCII characters breaking the Visual Studio debugger ([#2861](https://github.com/supercollider/supercollider/pull/2861)). + +Fixed a crash in `Object:perform` when the selector is an Array whose first element is not a Symbol, e.g. `0.perform([0])` ([#2617](https://github.com/supercollider/supercollider/pull/2617)). + +`thisProcess.nowExecutingPath` is no longer corrupted by `Routine:stop` ([#2620](https://github.com/supercollider/supercollider/pull/2620)). + +`TextView:selectedString_` now works when the selection size is zero ([#2648](https://github.com/supercollider/supercollider/pull/2648)). + +Fixed a crash when a method or class/instance variable is named "`none`" ([#2638](https://github.com/supercollider/supercollider/pull/2638)). + +Exceptions occurring in primitives no longer print unavoidable error messages even when wrapped in try-catch ([#2876](https://github.com/supercollider/supercollider/pull/2876)). + +Fixed a crash when `Dictionary:keysValuesArrayDo` is called with `nil` as an argument ([#2799](https://github.com/supercollider/supercollider/pull/2799)). + +Fixed `WebView:onLinkActivated` handler failing to fire ([#3003](https://github.com/supercollider/supercollider/pull/3003)). + +Fixed GUI objects failing to display when launched from the `action` of `unixCmd` ([#3009](https://github.com/supercollider/supercollider/pull/3009)). You will still need `{ }.defer`, however. + +Fixed `QImage:getColor` always returning zero for the green channel ([#3190](https://github.com/supercollider/supercollider/pull/3190)). + + +Class library: Added +----- + +The UnitTest quark has been incorporated into the main repository ([#3168](https://github.com/supercollider/supercollider/pull/3168)). + +Added a `rewind` method to `CollStream` ([#2400](https://github.com/supercollider/supercollider/pull/2400)). + +Added four new class methods to `File` for convenience: `readAllString`, `readAllSignal`, `readAllStringHTML`, `readAllStringRTF` ([#2410](https://github.com/supercollider/supercollider/pull/2410)). + +`Pstep` accepts an array as a duration argument ([#2511](https://github.com/supercollider/supercollider/pull/2511)). + +Help files originating from extensions now display a plaque for visibility ([#2449](https://github.com/supercollider/supercollider/pull/2449)). + +For consistency with other `Platform` class methods, `Platform.recordingsDir` may be used instead of `thisProcess.platform.recordingsDir` ([#2877](https://github.com/supercollider/supercollider/pull/2877)). + +`SequenceableCollection` has two new instance methods: `flatten2` and `flatBelow` ([#2527](https://github.com/supercollider/supercollider/pull/2527)). Additionally, `flatten` is faster now. + +The `~callback` function is now available for all `Event` types instead of just "on" events ([#2376](https://github.com/supercollider/supercollider/pull/2376)). + +Event types now include a `parentEvent`, which provides default values. ([#3021](https://github.com/supercollider/supercollider/pull/3021)). + +New aliases for done actions, e.g. `Done.freeSelf == 2`, are introduced for better readability ([#2616](https://github.com/supercollider/supercollider/pull/2616)). See the `Done` helpfile for details. + +A new class, `Recorder`, allows recording independently of the `Server` object ([#2422](https://github.com/supercollider/supercollider/pull/2422)). + +`SequenceableCollection:reduce` supports an adverb argument ([#2863](https://github.com/supercollider/supercollider/pull/2863)). + +A `recordingsDir` method has been added directly to `Platform`, which transparently calls `thisProcess.platform.recordingsDir` ([#2877](https://github.com/supercollider/supercollider/pull/2877)). + +`View:-resizeToBounds`, `View:-resizeToHint`, and `Window:-resizeToHint` were added to make it easier to force Views and Windows to automatically resize ([#2865](https://github.com/supercollider/supercollider/pull/2865)). + +`Maybe` now supports collection methods `at`, `atAll`, `put`, `putAll`, `add`, `addAll` ([#2437](https://github.com/supercollider/supercollider/pull/2437)). + +`BusPlug:-play` can now accept a `Bus` object ([#2845](https://github.com/supercollider/supercollider/pull/2845)). + +Breadcrumb links in helpfiles now have separate links for each node in the hierarchy, and pages with multiple categories have separators between the categories ([#2916](https://github.com/supercollider/supercollider/pull/2916)). + +`SoundFile:*openWrite` now takes additional parameters ([#2926](https://github.com/supercollider/supercollider/pull/2926)). + +Two new instance methods were added to Symbol: `isBinaryOp` and `isIdentifier` ([#2955](https://github.com/supercollider/supercollider/pull/2955)). + +Added three convenience methods: `View:resizeToBounds`, `View:resizeToHint`, and `Window:resizeToHint` ([#2865](https://github.com/supercollider/supercollider/pull/2865)). + +Added `Collection:asEvent` for easy conversion to an `Event` ([#2871](https://github.com/supercollider/supercollider/pull/2871)). + +`DeprecatedError` now shows you the file path of the deprecated method ([#3039](https://github.com/supercollider/supercollider/pull/3039)). + +Added two new methods to `SimpleNumber`: `snap` and `softRound` ([#3160](https://github.com/supercollider/supercollider/pull/3160)). + +`ReadableNodeIDAllocator` offers a new optional replacement for `PowerOfTwoAllocator` that assigns node IDs in a way more readable to humans when working with multiclient setups ([#3179](https://github.com/supercollider/supercollider/pull/3179)). + +A new "booted" stage has been added to Server objects that have been booted but +may not be running yet, accessible via `Server:hasBooted` and +`Server.allBootedServers` +([#3275](https://github.com/supercollider/supercollider/pull/3275)). + +Class library: Changed +------- + +**Breaking change:** Rests in the patterns system have been restructured ([#2802](https://github.com/supercollider/supercollider/pull/2802)). Instead of using the `isRest` event property, events are considered rests if one of their properties is a `Rest` object. You must use instances of `Rest` rather than the rest class itself -- use of `Rest` instead of `Rest()` is now deprecated. + +**Breaking change:** Fixed `Dictionary:==` only comparing the values of the two dictionaries, not the keys ([#2737](https://github.com/supercollider/supercollider/issues/2737)). + +**Breaking change:** Fixed a mistake where `Pen.quadCurveTo` used the primitive for a cubic Bézier instead of quadratic ([#2553](https://github.com/supercollider/supercollider/pull/2553)). To restore the old behavior, change `Pen.quadCurveTo` to `Pen.curveTo`. + +**Breaking change:** The convenience instance methods `Env:kr` and `Env:ar` had the arguments `mul` and `add` renamed to `levelScale` and `levelBias`, since they don't behave like typical `mul` and `add` arguments ([#2866](https://github.com/supercollider/supercollider/pull/2866)). + +`Collection:processRest` returns the processed collection rather than the original ([#2497](https://github.com/supercollider/supercollider/pull/2497)). + +The maximum number of MIDI ports has been increased ([#2494](https://github.com/supercollider/supercollider/pull/2494)). + +Attempting to use a control-rate signal as an input to `Hasher.ar` now results in an error ([#2589](https://github.com/supercollider/supercollider/pull/2589)). + +The "Cleaning up temp synthdefs..." post message is suppressed if there is nothing to clean up ([#2629](https://github.com/supercollider/supercollider/pull/2629)). + +To match `Out` and `ReplaceOut`, `LocalOut` and `XOut` now correctly validate their input, checking for a non-zero number of channels ([#2659](https://github.com/supercollider/supercollider/pull/2657), [#2659](https://github.com/supercollider/supercollider/pull/2659)). + +The argument to `Pattern:fin` has a default of 1 for consistency with `Object:fin` ([#2480](https://github.com/supercollider/supercollider/pull/2840/files)). + +`Complex:reciprocal` is faster now ([#2890](https://github.com/supercollider/supercollider/pull/2890)). + +`Buffer:write` takes floating point arguments, truncating them to integers ([#2547](https://github.com/supercollider/supercollider/pull/2547)). + +Conversion methods among collection types has been improved and documented ([#2871](https://github.com/supercollider/supercollider/pull/2871)). + +`clientID` is now protected from being changed while the server is running +([#3275](https://github.com/supercollider/supercollider/pull/3275)). + +Class library: Deprecated +---------- + +`OSCresponder`, `OSCresponderNode`, and `OSCpathResponder` now emit deprecation messages, and will be removed after at least a year ([#2870](https://github.com/supercollider/supercollider/pull/2870)). Use `OSCFunc` or `OSCdef` instead. + +`Speech` is deprecated ([#2424](https://github.com/supercollider/supercollider/pull/2424)), and will be removed in 3.10. The rationale is that its audio output is independent of the server (severely limiting use in compositions), it depends on a proprietary macOS API with no prospect of cross-platform compatibility, and it is too niche to justify inclusion in the core library. + +The WiiMote classes (`WiiMote`, `WiiMoteIRObject`, `WiiCalibrationInfo`, `WiiMoteGUI`, `WiiRemoteGUI`, `WiiNunchukGUI`) are deprecated ([#2698](https://github.com/supercollider/supercollider/pull/2698)). They never reached a stable state and have gone unmaintained and unused for years. + +`AudioIn` is deprecated and will be removed in some future version ([#2482](https://github.com/supercollider/supercollider/pull/2482)). It was provided only for backward compatibility with SC2, so its deprecation is long overdue. Use `SoundIn` instead. + +`SplayZ` has been deprecated for a long time, but it's finally on the "official" deprecation track and will be removed in 3.10 ([#2631](https://github.com/supercollider/supercollider/pull/2631)). Use `SplayAz` instead. + +`TDuty_old` has been deprecated for a long time, but it now emits a warning and will be removed in 3.10 ([#2677](https://github.com/supercollider/supercollider/pull/2677)). Use `TDuty` instead. + +`Watcher` is an old alias for `SkipJack` provided for backward compatibility. It is officially deprecated and will be removed in 3.10 ([#2700](https://github.com/supercollider/supercollider/pull/2700)). + +`Server:recordNode` is deprecated. Use `Recorder:recordNode` instead (e.g. `s.recorder.recordNode`) ([#2422](https://github.com/supercollider/supercollider/pull/2422)). + +The `Server.set` class variable is deprecated. Use `Server.all` instead ([#2422](https://github.com/supercollider/supercollider/pull/2422)). + +`SimpleNumber:quantize` is deprecated. Use `SimpleNumber:snap` instead ([#3160](https://github.com/supercollider/supercollider/pull/3160)). + +`Server:userSpecifiedClientID` is deprecated. Use `Server:clientID` instead +([#3275](https://github.com/supercollider/supercollider/pull/3275)). + +Class library: Removed +------- + +Removed non-functional stub methods and classes related to Image: the classes ImageFilter and ImageKernel, and the Image instance methods lockFocus, unlockFocus, applyFilters, filters, filteredWith, addFilter, removeFilter, flatten, invert, crop, applyKernel ([#2867](https://github.com/supercollider/supercollider/pull/2867)). + +`Module`, an unmaintained and unused class for serialization of Synths, has been moved to a quark ([#2703](https://github.com/supercollider/supercollider/pull/2703)). + +Removed the `openHelpFile` instance methods of `Object`, `String`, `Method`, and `Quark`. These methods have been deprecated since 3.8. + +Removed `String:openTextFile` and `Symbol:openTextFile`. Use `String:openDocument` and `Symbol:openTextFile` instead. These methods have been deprecated since 3.8. + +Class library: Fixed +----- + +A number of instance methods in `Buffer` and `Bus` did not properly check to see if the object has already been freed, and would act on buffer #0 or bus #0 (which is especially dangerous for the `free` instance method). They now safeguard against this case and throw errors ([#2936](https://github.com/supercollider/supercollider/pull/2936), [#2960](https://github.com/supercollider/supercollider/pull/2960), [#2993](https://github.com/supercollider/supercollider/pull/2993)). + +The `useRanger` option in `EnvirGui` broke in 3.7. This has been fixed ([#2418](https://github.com/supercollider/supercollider/pull/2418)). + +`IdentityDictionary` methods `collect`, `select`, and `reject` retain references to the `parent` and `proto` objects ([#2507](https://github.com/supercollider/supercollider/pull/2507)). + +On Linux, some MIDI methods created method override warnings. These have been silenced ([#2717](https://github.com/supercollider/supercollider/pull/2717)). + +The "key" argument to `Pn` was not properly set on the first repeat. This has been fixed ([#2833](https://github.com/supercollider/supercollider/pull/2833)). + +Fixed errors when using a DragSource inside a CompositeView object ([#2804](https://github.com/supercollider/supercollider/issues/2804)). + +Fixed an interpreter crash when defining a SynthDef whose name is too long ([#2821](https://github.com/supercollider/supercollider/pull/2821)). More specifically, the inputs to `UnixFILE:putPascalString` and `CollStream:putPascalString` are now validated. + +Server crashes are better handled by the interpreter ([#2453](https://github.com/supercollider/supercollider/pull/2453)). + +The time display and the "start recording", "pause recording", and "stop recording" menu items now cooperate better with running `Server:record`, `Server:pauseRecording`, and `Server:stopRecording` ([#2422](https://github.com/supercollider/supercollider/pull/2422)). + +`Server:makeGui` and `Server:makeWindow` broke in 3.8 — the fields in the windows went blank. They are working again ([#2422](https://github.com/supercollider/supercollider/pull/2422)). + +A timing error with `NodeProxy:-clear` was fixed ([#2845](https://github.com/supercollider/supercollider/pull/2845)). + +`SoundFileView` correctly displays its grid and does not draw the grid on top of the selection box ([#2872](https://github.com/supercollider/supercollider/pull/2872)). + +The macOS plist file now shows the full version number for both the Version String and Shortened Version String ([#2487](https://github.com/supercollider/supercollider/pull/2487)). + +Fixed instances of accidentally silencing error messages caused by neglecting to call `Object:primitiveFailed` ([#2908](https://github.com/supercollider/supercollider/pull/2908)). + +Patched the possibility of inconsistent `TempoClock` state when the tempo is set via `setTempoAtSec` ([#2078](https://github.com/supercollider/supercollider/pull/2078)). + +Fixed memory spikes when using `MIDIFunc.sysex` with a large `srcID` ([#3005](https://github.com/supercollider/supercollider/pull/3005)). + +Fixed spaces sometimes being rendered as `%20` in links in SCDoc ([#3033](https://github.com/supercollider/supercollider/pull/3033)). + +Fixed `Function:plot` showing an empty graph if the server wasn't booted when the method was invoked ([#3047](https://github.com/supercollider/supercollider/pull/3047)). + +Fixed blatant errors in `Collection:asAssociations` and `Collection:asPairs` where elements were dropped ([#3101](https://github.com/supercollider/supercollider/pull/3101)). + +Fixed bugs in `NodeProxy` when using external servers ([#3103](https://github.com/supercollider/supercollider/pull/3103)). + +`History` now outputs a correct timestamp on Windows ([#3045](https://github.com/supercollider/supercollider/pull/3045)). + +Fixed Volume control failing to be persistent when rebooting the server ([#3125](https://github.com/supercollider/supercollider/pull/3125)). + +Fixed `SimpleNumber:asTimeString` producing nonsensical results with the "precision" argument ([#3166](https://github.com/supercollider/supercollider/pull/3166)). + +`Server:clientID` can now be changed, allowing multiple clients connect to the same server ([#3178](https://github.com/supercollider/supercollider/pull/3178)). + +History and HistoryGui have been cleaned up +([#3267](https://github.com/supercollider/supercollider/pull/3267)). + +Fixed duplicate node IDs involving `Server.initTree` +([#3265](https://github.com/supercollider/supercollider/pull/3265)). + +Fixed supernova crashing when too many controls are used +([#3196](https://github.com/supercollider/supercollider/issues/3196)). + +`Volume` now respects lag time when it is instantiated or destroyed +([#3332](https://github.com/supercollider/supercollider/pull/3332)). + +IDE & SCDoc: Added +----- + +Entries in the Documents docklet can be reordered, and document tabs will automatically reorder to reflect this ([#2555](https://github.com/supercollider/supercollider/pull/2555)). + +"Edit > Preferences > Editor > Display" has a new option that allows replacing tabs with a dropdown whose items are alphabetically ordered ([#2555](https://github.com/supercollider/supercollider/pull/2555)). This makes navigation easier in some performance contexts. + +IDE & SCDoc: Changed +------- + +Server actions, which were previously in the "Language" menu, have been moved out to their own "Server" menu ([#3049](https://github.com/supercollider/supercollider/pull/3049)). + +Changed "occurrences" to "matches" in the status bar in the Find and Replace features ([#2702](https://github.com/supercollider/supercollider/pull/2702)). + +Many minor improvements were made to the look and feel of the documentation ([#2944](https://github.com/supercollider/supercollider/pull/2944), [#2945](https://github.com/supercollider/supercollider/pull/2945), [#2947](https://github.com/supercollider/supercollider/pull/2947), [#2948](https://github.com/supercollider/supercollider/pull/2948), [#2967](https://github.com/supercollider/supercollider/pull/2967), [#3006](https://github.com/supercollider/supercollider/pull/3006), [#3022](https://github.com/supercollider/supercollider/pull/3022), [#3025](https://github.com/supercollider/supercollider/pull/3025), [#3034](https://github.com/supercollider/supercollider/pull/3034), [#3175](https://github.com/supercollider/supercollider/pull/3175), [#3346](https://github.com/supercollider/supercollider/pull/3346)). + +IDE & SCDoc: Fixed +----- + +Fixed SCDoc refusing to index any further documents if one document has a malformed `copymethod::` command ([#3050](https://github.com/supercollider/supercollider/pull/3050)). + +Some Linux systems had unreadable font colors in the autocomplete tooltips. This has been (finally) fixed ([#2672](https://github.com/supercollider/supercollider/pull/2762)). + +Fixed a bug where `Document:selectedString_` had no effect ([#2849](https://github.com/supercollider/supercollider/pull/2849)). + +New tabs are now inserted to the right of the current tab instead of all the way at the end ([#3053](https://github.com/supercollider/supercollider/pull/3053)). + +The help browser now has keyboard shortcuts for navigating back and forward ([#3056](https://github.com/supercollider/supercollider/pull/3056)). These shortcuts are OS-dependent and given to us by [Qt](http://doc.qt.io/qt-5.9/qkeysequence.html#standard-shortcuts). + +Fixed the "Find in page..." feature in the help viewer skipping every other occurrence ([#2903](https://github.com/supercollider/supercollider/pull/2903)). + +Fixed HTML checkboxes appearing in the upper left of the help viewer ([#3028](https://github.com/supercollider/supercollider/pull/3028)). + +Fixed the right-click menu for the tabs appearing in the wrong place in macOS ([#3042](https://github.com/supercollider/supercollider/issues/3042)). + +# [3.8.0](https://github.com/supercollider/supercollider/tree/3.8.0) (2016-09-23) [Full Changelog](https://github.com/supercollider/supercollider/compare/3.7.2...3.8.0) ## API change @@ -188,11 +980,11 @@ - Add "(NRT)" to the NRT help file title (searchability) [#2281](https://github.com/supercollider/supercollider/pull/2281) by [vivid-synth](https://github.com/vivid-synth) - Update Ndef.schelp - [#2273](https://github.com/supercollider/supercollider/pull/2273) by [tiagmoraismorgado](https://github.com/tiagmoraismorgado) + [#2273](https://github.com/supercollider/supercollider/pull/2273) by [tiagmoraismorgado](https://github.com/tmm2018) - Update MouseX.schelp - [#2272](https://github.com/supercollider/supercollider/pull/2272) by [tiagmoraismorgado](https://github.com/tiagmoraismorgado) + [#2272](https://github.com/supercollider/supercollider/pull/2272) by [tiagmoraismorgado](https://github.com/tmm2018) - Update MouseButton.schelp - [#2271](https://github.com/supercollider/supercollider/pull/2271) by [tiagmoraismorgado](https://github.com/tiagmoraismorgado) + [#2271](https://github.com/supercollider/supercollider/pull/2271) by [tiagmoraismorgado](https://github.com/tmm2018) - help: Remove some outdated GUI info [#2248](https://github.com/supercollider/supercollider/pull/2248) by [snappizz](https://github.com/snappizz) - Add supernova to the list of components @@ -214,7 +1006,7 @@ - Fix a typo in SynthDef.schelp [#2186](https://github.com/supercollider/supercollider/pull/2186) by [kisielk](https://github.com/kisielk) - fixing Henon help - [#2150](https://github.com/supercollider/supercollider/pull/2150) by [tiagmoraismorgado](https://github.com/tiagmoraismorgado) + [#2150](https://github.com/supercollider/supercollider/pull/2150) by [tiagmoraismorgado](https://github.com/tmm2018) - document DelTapWr/DelTapRd/MultiTap delay time caveats [#2132](https://github.com/supercollider/supercollider/pull/2132) by [snappizz](https://github.com/snappizz) - help: document range better for LFGauss UGen @@ -992,2174 +1784,3 @@ SC VIM is now a git submodule. This affe - s.options.sampleRate\_ setter requires boot then reboot to take effect [\#768](https://github.com/supercollider/supercollider/issues/768) - FreqScope not updating correctly on current development version. [\#767](https://github.com/supercollider/supercollider/issues/767) - Wrongly reported external document changes [\#758](https://github.com/supercollider/supercollider/issues/758) - -## [Version-3.6.6](https://github.com/supercollider/supercollider/tree/Version-3.6.6) (2013-11-27) -[Full Changelog](https://github.com/supercollider/supercollider/compare/Version-3.6.5...Version-3.6.6) - -**Enhancements** - -- Enhance OSX readme for 3.6.6 [\#1001](https://github.com/supercollider/supercollider/issues/1001) -- "Exception when parsing synthdef: corrupted synthdef" - report which synthdef caused the error. [\#904](https://github.com/supercollider/supercollider/issues/904) -- "start coding" window title [\#898](https://github.com/supercollider/supercollider/issues/898) -- default file extension missing [\#838](https://github.com/supercollider/supercollider/issues/838) - -**Fixed bugs:** - -- scide: Object::connect: No such slot ScIDE::DocumentManager::updateCurrentDocContents\(int, int, int\) in ../editors/sc-ide/core/doc\_manager.cpp:907 [\#985](https://github.com/supercollider/supercollider/issues/985) -- sclang consumes high CPU when opening a session with multiple files [\#980](https://github.com/supercollider/supercollider/issues/980) -- \[ide\] help-\>"how to use the supercollider ide" detaches help browser [\#976](https://github.com/supercollider/supercollider/issues/976) -- NdefGUI and related don't show vol labels in IDE [\#965](https://github.com/supercollider/supercollider/issues/965) -- Primitive error in \_ScIDE\_SetDocTextMirror called from openDocument [\#964](https://github.com/supercollider/supercollider/issues/964) -- ide document: errors when closing document windows during language init [\#961](https://github.com/supercollider/supercollider/issues/961) -- SC\_QT=OFF build flag still needs QT on OSX [\#959](https://github.com/supercollider/supercollider/issues/959) -- Sending to a NetAddr with broadcast IP fails [\#930](https://github.com/supercollider/supercollider/issues/930) -- supernova: setting an array onto a control that doesn't exist will set value that does exist [\#916](https://github.com/supercollider/supercollider/issues/916) -- BinaryOpUGen 'div' operator: off-by-one and not integer division [\#907](https://github.com/supercollider/supercollider/issues/907) -- SimpleNumber-curvelin broken for negative numbers [\#902](https://github.com/supercollider/supercollider/issues/902) -- switching session: cancel loses unsaved documents and dialog blocks reviewing them [\#899](https://github.com/supercollider/supercollider/issues/899) -- Ramp UGen fails in LTI test [\#888](https://github.com/supercollider/supercollider/issues/888) -- prSimpleNumberSeries throws incomprehensible error for bad inputs [\#882](https://github.com/supercollider/supercollider/issues/882) -- uiugens: osx uses deprecated API [\#880](https://github.com/supercollider/supercollider/issues/880) -- A few UGens failing the unit tests [\#879](https://github.com/supercollider/supercollider/issues/879) -- Alias Manager depreated: sc\_ResolveIfAlias will have to be rewritten [\#875](https://github.com/supercollider/supercollider/issues/875) -- NodeProxy: multi-channel expansion broken for SynthDefs [\#872](https://github.com/supercollider/supercollider/issues/872) -- git clone --recursive is broken [\#866](https://github.com/supercollider/supercollider/issues/866) -- Windows: No SCIDE-icon [\#854](https://github.com/supercollider/supercollider/issues/854) -- Linux FFT/IFFT: Hann window with hop size 0.25 sounds wrong [\#851](https://github.com/supercollider/supercollider/issues/851) -- SendReply kills server [\#850](https://github.com/supercollider/supercollider/issues/850) -- SendReply.ar crashes the server [\#841](https://github.com/supercollider/supercollider/issues/841) - -**Closed issues:** - -- Error in Help - Getting Started Tutorial Series - Section 2 [\#981](https://github.com/supercollider/supercollider/issues/981) -- Crash in creating SynthDef [\#957](https://github.com/supercollider/supercollider/issues/957) -- supernova compilation error [\#951](https://github.com/supercollider/supercollider/issues/951) -- supercollider-gedit plugin not loading [\#950](https://github.com/supercollider/supercollider/issues/950) -- OSCFunc addr.hostname returns nil [\#933](https://github.com/supercollider/supercollider/issues/933) -- iOS build, doesn't. [\#927](https://github.com/supercollider/supercollider/issues/927) -- Disable mathjax - an unused feature that can cause problems [\#909](https://github.com/supercollider/supercollider/issues/909) -- DiskIn channel limitation [\#901](https://github.com/supercollider/supercollider/issues/901) -- sclang \(readline\) cannot quit [\#897](https://github.com/supercollider/supercollider/issues/897) -- PV\_Copy breaks edge model [\#896](https://github.com/supercollider/supercollider/issues/896) -- linux \(debian x64\) compilation error [\#894](https://github.com/supercollider/supercollider/issues/894) -- osx/wii uses deprecated/removed API [\#876](https://github.com/supercollider/supercollider/issues/876) -- drawFunc drawingEnabled\_\(false\) not respected by refresh [\#869](https://github.com/supercollider/supercollider/issues/869) -- file browser lacks default [\#868](https://github.com/supercollider/supercollider/issues/868) -- Issue Tracker: user can't enter categories/lables [\#860](https://github.com/supercollider/supercollider/issues/860) -- Windows \(installer\): no program shortcuts [\#857](https://github.com/supercollider/supercollider/issues/857) -- Windows: installer does not register in system [\#856](https://github.com/supercollider/supercollider/issues/856) -- Windows: no file associations [\#855](https://github.com/supercollider/supercollider/issues/855) -- Server load percentage on Windows off by factor 100 [\#849](https://github.com/supercollider/supercollider/issues/849) -- scsynth sound stops in 3.5 not in 3.4 [\#343](https://github.com/supercollider/supercollider/issues/343) - -**Merged pull requests:** - -- class library: pbind midi type - fix for sending sysex [\#947](https://github.com/supercollider/supercollider/pull/947) ([redFrik](https://github.com/redFrik)) -- supernova: TCP support [\#757](https://github.com/supercollider/supercollider/issues/757) -- sclang crashes when 'connect'ing a NetAddr for TCP [\#755](https://github.com/supercollider/supercollider/issues/755) -- EnvGen's gate argument can crash the server [\#753](https://github.com/supercollider/supercollider/issues/753) -- s.sync returns too soon after buffer load [\#750](https://github.com/supercollider/supercollider/issues/750) -- Broken color dialog [\#749](https://github.com/supercollider/supercollider/issues/749) -- Triple-click line selection only works when clicking on strings \[mac\] [\#748](https://github.com/supercollider/supercollider/issues/748) -- When undocked, docklets may appear off screen, impossible to move [\#730](https://github.com/supercollider/supercollider/issues/730) -- malformed YAML crashes interpreter [\#728](https://github.com/supercollider/supercollider/issues/728) -- SequenceableCollection resamp0/1 broken \(e.g. SplayAz\) [\#727](https://github.com/supercollider/supercollider/issues/727) -- Shaper should guard against negative buffer numbers [\#722](https://github.com/supercollider/supercollider/issues/722) -- wavetable oscillators broken for large wavetables [\#720](https://github.com/supercollider/supercollider/issues/720) -- prevent buffer overrun in IO UGens [\#716](https://github.com/supercollider/supercollider/issues/716) -- crash report Exception Type: EXC\_BAD\_ACCESS \(SIGSEGV\) [\#715](https://github.com/supercollider/supercollider/issues/715) -- Dialog.openPanel hangs on Windows XP [\#707](https://github.com/supercollider/supercollider/issues/707) -- SCTextView cmd-d crash [\#702](https://github.com/supercollider/supercollider/issues/702) -- cmd+B quite server as default is really unsafe for performance [\#699](https://github.com/supercollider/supercollider/issues/699) -- Knob does not allow change of background color [\#697](https://github.com/supercollider/supercollider/issues/697) -- Platform.getMouseCoords does not work [\#696](https://github.com/supercollider/supercollider/issues/696) -- scope issues: dies with CmdPeriod, not old behaviour [\#695](https://github.com/supercollider/supercollider/issues/695) -- Spawner:suspend doesn't execute EventStreamCleanup actions [\#681](https://github.com/supercollider/supercollider/issues/681) -- IDE window looses focus when subwindow is closed without action \(OS X\) [\#678](https://github.com/supercollider/supercollider/issues/678) -- selected text gets deselected when IDE editor window gets clicked on to get it to front [\#677](https://github.com/supercollider/supercollider/issues/677) -- "External-file-change" dialog pops up when saving file in IDE [\#673](https://github.com/supercollider/supercollider/issues/673) -- Problems with DragSource [\#671](https://github.com/supercollider/supercollider/issues/671) -- Key commands like STOP \(cmd + . \) don't work in Help window when it's detached [\#668](https://github.com/supercollider/supercollider/issues/668) -- ndef play producing click when evaluated [\#664](https://github.com/supercollider/supercollider/issues/664) -- Ndef channel wrapping broken for many channels [\#658](https://github.com/supercollider/supercollider/issues/658) -- Window's "detached" state is not persisted if it was closed before quit [\#655](https://github.com/supercollider/supercollider/issues/655) -- Crash when re-opening undocked help window [\#650](https://github.com/supercollider/supercollider/issues/650) -- crash on recompile if OSCFunc receiving messages on non-sclang port [\#649](https://github.com/supercollider/supercollider/issues/649) -- Array:slide bug [\#645](https://github.com/supercollider/supercollider/issues/645) -- got NotYetImplementedError with 3.6beta2 [\#641](https://github.com/supercollider/supercollider/issues/641) -- jitlib guis hardly readable [\#637](https://github.com/supercollider/supercollider/issues/637) -- Server -O and -I options causes seg fault and crashes sclang [\#636](https://github.com/supercollider/supercollider/issues/636) -- crash when closing tab [\#635](https://github.com/supercollider/supercollider/issues/635) -- \[SC-IDE\]\[MAC\] cmd+f \(resp. cmd+r\) doesn't work in the IDE [\#634](https://github.com/supercollider/supercollider/issues/634) -- Invoking Help does not bring it to front if: \(1\) it is in a hidden tab AND \(2\) the query string is empty [\#631](https://github.com/supercollider/supercollider/issues/631) -- command FIFO Full again [\#613](https://github.com/supercollider/supercollider/issues/613) -- Scale with scale name doesn't work as described [\#611](https://github.com/supercollider/supercollider/issues/611) -- Drag text from document to GUI deletes the text [\#610](https://github.com/supercollider/supercollider/issues/610) -- Auto-indent doesn't respect string and symbol literals [\#609](https://github.com/supercollider/supercollider/issues/609) -- SoundFileView selectNone and selectAll does not work [\#607](https://github.com/supercollider/supercollider/issues/607) -- QWindow, QView background color alpha broken on 3.6beta? [\#606](https://github.com/supercollider/supercollider/issues/606) -- Crash when evaluating code in non-code files [\#605](https://github.com/supercollider/supercollider/issues/605) -- 3.5.6 with sc3-plugins: SCDoc.renderAll\(true\) fails [\#604](https://github.com/supercollider/supercollider/issues/604) -- Evaluate line doesn't work if text wraps [\#601](https://github.com/supercollider/supercollider/issues/601) -- crash in autocompleter [\#600](https://github.com/supercollider/supercollider/issues/600) -- inconsistent behavior of Env.duration\_ [\#598](https://github.com/supercollider/supercollider/issues/598) -- multichannel Envelope.plot broken [\#592](https://github.com/supercollider/supercollider/issues/592) -- Cmd-I doesn't work from the Command line pane [\#588](https://github.com/supercollider/supercollider/issues/588) -- The post window seems to use double the tab size of documents [\#586](https://github.com/supercollider/supercollider/issues/586) -- Freqscope and Scope can't be used at the same time [\#580](https://github.com/supercollider/supercollider/issues/580) -- Shift-up/down at start/end of file cancels the selection [\#579](https://github.com/supercollider/supercollider/issues/579) -- Close brace } put at the wrong indent level in new SC IDE editor [\#578](https://github.com/supercollider/supercollider/issues/578) -- Can't type \[ \(open bracket\) character with Spanish keyboard [\#577](https://github.com/supercollider/supercollider/issues/577) -- Regexp with "^" makes sc-ide hang [\#576](https://github.com/supercollider/supercollider/issues/576) -- File extension warning when saving a new file [\#575](https://github.com/supercollider/supercollider/issues/575) -- There are problems with copying text from the post window [\#574](https://github.com/supercollider/supercollider/issues/574) -- Do not open HelpBrowser on application start if it was closed in the restored window state [\#572](https://github.com/supercollider/supercollider/issues/572) -- IDE help browser incorrectly shows "old help" warning [\#571](https://github.com/supercollider/supercollider/issues/571) -- Hitting Cmd/Ctrl while inertial scrolling causes rapid zoom in / out [\#568](https://github.com/supercollider/supercollider/issues/568) -- Deleting a session will lose unsaved documents w/o warning [\#565](https://github.com/supercollider/supercollider/issues/565) -- Save All is useless with one or more read only documents open [\#564](https://github.com/supercollider/supercollider/issues/564) -- Inline help: example code cannot be executed with regular keyboard shortcut [\#563](https://github.com/supercollider/supercollider/issues/563) -- Document tabs can become unusably small [\#562](https://github.com/supercollider/supercollider/issues/562) -- Cmd+Period doesn't work in Qt GUI windows [\#561](https://github.com/supercollider/supercollider/issues/561) -- Inaccurate wording in language configuration message box [\#559](https://github.com/supercollider/supercollider/issues/559) -- Aggressive method call aid within class method arg lists [\#557](https://github.com/supercollider/supercollider/issues/557) -- Mouse pointer vanishes when modifier keys are pressed [\#554](https://github.com/supercollider/supercollider/issues/554) -- changing file type should update/reload CodeEditor [\#551](https://github.com/supercollider/supercollider/issues/551) -- Win XP only: TempoClock scheduling crashes sclang [\#547](https://github.com/supercollider/supercollider/issues/547) -- Help browser: progress indicator stuck when opening links in code editor [\#546](https://github.com/supercollider/supercollider/issues/546) -- Help browser: can not evaluate a single line in code examples [\#545](https://github.com/supercollider/supercollider/issues/545) -- Help browser: code examples not syntax highlighted [\#544](https://github.com/supercollider/supercollider/issues/544) -- Cmd-Period doesn't work with help focussed. [\#541](https://github.com/supercollider/supercollider/issues/541) -- Cmd-Return / Shift-Return inconsistency in IDE and lang. [\#540](https://github.com/supercollider/supercollider/issues/540) -- IDE hides when another application becomes front [\#539](https://github.com/supercollider/supercollider/issues/539) -- Cmd+Alt+\ shortcuts not saved correctly [\#538](https://github.com/supercollider/supercollider/issues/538) -- IDE hides when another application becomes front [\#537](https://github.com/supercollider/supercollider/issues/537) -- Line numbers don't match lines [\#536](https://github.com/supercollider/supercollider/issues/536) -- scapp: library menu crash [\#534](https://github.com/supercollider/supercollider/issues/534) -- Superfluous blank lines between postln lines [\#533](https://github.com/supercollider/supercollider/issues/533) -- "Save" action for read-only files should trigger "Save as" [\#532](https://github.com/supercollider/supercollider/issues/532) -- Ctrl-shift-C doesn't clear the post window in winxp [\#531](https://github.com/supercollider/supercollider/issues/531) -- call hints don't scroll [\#529](https://github.com/supercollider/supercollider/issues/529) -- wrong font spacing in QT [\#527](https://github.com/supercollider/supercollider/issues/527) -- some color configuration items don't show default values [\#526](https://github.com/supercollider/supercollider/issues/526) -- nowExecutingPath in a newly saved document [\#523](https://github.com/supercollider/supercollider/issues/523) -- Saving as .sc saves as .scd instead [\#518](https://github.com/supercollider/supercollider/issues/518) -- Shortcuts reset after quiting [\#517](https://github.com/supercollider/supercollider/issues/517) -- server does not boot [\#512](https://github.com/supercollider/supercollider/issues/512) -- Wacom Bamboo Pen & Touch crashes [\#509](https://github.com/supercollider/supercollider/issues/509) -- "maxval" ignored by Buffer.plot [\#507](https://github.com/supercollider/supercollider/issues/507) -- Autocomplete sometimes pops up when I type open-bracket [\#505](https://github.com/supercollider/supercollider/issues/505) -- drag/drop a WAV onto scide should not attempt to open it [\#502](https://github.com/supercollider/supercollider/issues/502) -- Plugging in headphones crashes scsynth [\#499](https://github.com/supercollider/supercollider/issues/499) -- Save All doesn't update all document tabs [\#497](https://github.com/supercollider/supercollider/issues/497) -- general text colors are applied everywhere [\#496](https://github.com/supercollider/supercollider/issues/496) -- \[supernova\] fix g\_dumpTree [\#494](https://github.com/supercollider/supercollider/issues/494) -- "Step forward": Cursor doesn't move if line starts with "\(" and cursor is inside [\#493](https://github.com/supercollider/supercollider/issues/493) -- Method Call Assist: infer the class of literal values as receivers [\#490](https://github.com/supercollider/supercollider/issues/490) -- Method Call Assist: Alt+Space doesn't trigger [\#489](https://github.com/supercollider/supercollider/issues/489) -- \[CRITICAL\] IDE crashes when autocompleting methods of an integer literal [\#488](https://github.com/supercollider/supercollider/issues/488) -- Sessions: Document tabs out of order sometimes [\#485](https://github.com/supercollider/supercollider/issues/485) -- QEnvelopeView does not support quadratic/cubic shapes [\#483](https://github.com/supercollider/supercollider/issues/483) -- SCDoc document browser & search broken [\#482](https://github.com/supercollider/supercollider/issues/482) -- Autocompletion box pops up when pasting text -- shouldn't [\#481](https://github.com/supercollider/supercollider/issues/481) -- Server control state problem [\#477](https://github.com/supercollider/supercollider/issues/477) -- Server-meter window errors [\#476](https://github.com/supercollider/supercollider/issues/476) -- evaluate regions when being at opening bracket [\#474](https://github.com/supercollider/supercollider/issues/474) -- Up-arrow after RET does not move the insertion point straight up [\#472](https://github.com/supercollider/supercollider/issues/472) -- Multichannel Function:plot is broken in master [\#470](https://github.com/supercollider/supercollider/issues/470) -- new lines do not scroll anymore [\#467](https://github.com/supercollider/supercollider/issues/467) -- line numbers when opening files [\#466](https://github.com/supercollider/supercollider/issues/466) -- goto next block broken [\#465](https://github.com/supercollider/supercollider/issues/465) -- \[QWebView Windows 2\] Handling of file:// in \ [\#463](https://github.com/supercollider/supercollider/issues/463) -- \[QWebView Windows 1\] Handling of file:// links [\#462](https://github.com/supercollider/supercollider/issues/462) -- session: save-as glitch [\#458](https://github.com/supercollider/supercollider/issues/458) -- Method Call Assist: fix for functional notation [\#457](https://github.com/supercollider/supercollider/issues/457) -- "Step forward": Put the cursor at the beginning of the next line [\#454](https://github.com/supercollider/supercollider/issues/454) -- ide: ctrl-enter adds strange invisible line breaks [\#451](https://github.com/supercollider/supercollider/issues/451) -- Interactive find behavior is... hyperactive [\#437](https://github.com/supercollider/supercollider/issues/437) -- Line breaks in the post window, not generated by sc code [\#436](https://github.com/supercollider/supercollider/issues/436) -- Cannot dismiss the method signature popup for a "new" class method [\#435](https://github.com/supercollider/supercollider/issues/435) -- SerialPort doneAction never called & port not properly closed? [\#434](https://github.com/supercollider/supercollider/issues/434) -- SC-ide runs its own server status thread? [\#433](https://github.com/supercollider/supercollider/issues/433) -- Questionable, but common, auto indent case [\#432](https://github.com/supercollider/supercollider/issues/432) -- Highlighting flash of just-executed code sometimes gets stuck [\#431](https://github.com/supercollider/supercollider/issues/431) -- Interpreter \*is\* running but "Interpreter is not running!" [\#425](https://github.com/supercollider/supercollider/issues/425) -- SC 3.5.4 crashes with buffers on windows 7 [\#423](https://github.com/supercollider/supercollider/issues/423) -- stack smashing crash on certain code [\#422](https://github.com/supercollider/supercollider/issues/422) -- set nowExecutingPath from scide [\#418](https://github.com/supercollider/supercollider/issues/418) -- running sclang script does not set nowExecutingPath [\#417](https://github.com/supercollider/supercollider/issues/417) -- \[SC-IDE\] Ctrl-R replace panel: Replace button doesn't replace [\#416](https://github.com/supercollider/supercollider/issues/416) -- \[SC 3.5.4\] GrainBuf SynthDef causes SC to crash [\#415](https://github.com/supercollider/supercollider/issues/415) -- Preference pane does not select default font [\#414](https://github.com/supercollider/supercollider/issues/414) -- indentation bug [\#409](https://github.com/supercollider/supercollider/issues/409) -- ctrl+c after selecting text in post window does not copy [\#408](https://github.com/supercollider/supercollider/issues/408) -- Keyboard shortcut for Shrink font in post window says 'Shink' [\#406](https://github.com/supercollider/supercollider/issues/406) -- make install fails on verify app sclang.app, and it's not fixed-up correctly [\#401](https://github.com/supercollider/supercollider/issues/401) -- Tabs don't overflow correctly [\#395](https://github.com/supercollider/supercollider/issues/395) -- Volume initialization bug [\#393](https://github.com/supercollider/supercollider/issues/393) -- Multiple clocks after fullscreen [\#390](https://github.com/supercollider/supercollider/issues/390) -- double-click behavior [\#388](https://github.com/supercollider/supercollider/issues/388) -- Syntax color settings are not saved [\#385](https://github.com/supercollider/supercollider/issues/385) -- scide: "Auto Scroll" looks like a button but it can't be clicked off [\#378](https://github.com/supercollider/supercollider/issues/378) -- Drag'n'drop in QtGui makes Sc-Client crahs [\#375](https://github.com/supercollider/supercollider/issues/375) -- Method call aid popup stays shown when main window minimized/deactivated [\#369](https://github.com/supercollider/supercollider/issues/369) -- Language Configuration broken for osx command line sclang [\#366](https://github.com/supercollider/supercollider/issues/366) -- Missing boundary check in prArrayWrapExtend [\#360](https://github.com/supercollider/supercollider/issues/360) -- MIDI listEndPoints crash [\#353](https://github.com/supercollider/supercollider/issues/353) -- GrainBuf crashes server when position = NaN [\#352](https://github.com/supercollider/supercollider/issues/352) -- GrainBuf does not check buffer inputs to see if they exist [\#341](https://github.com/supercollider/supercollider/issues/341) -- \[SC-IDE\] Preferences -\> Keyboard shortcuts & font issues [\#339](https://github.com/supercollider/supercollider/issues/339) -- \[SC-IDE\] Region Detection [\#338](https://github.com/supercollider/supercollider/issues/338) -- \[SC-IDE\] Cannot save new file [\#337](https://github.com/supercollider/supercollider/issues/337) -- \[SC-IDE\] Open class definition + file already open [\#335](https://github.com/supercollider/supercollider/issues/335) -- \[SC-IDE\] Don't open same file twice [\#328](https://github.com/supercollider/supercollider/issues/328) -- \[SC-IDE\] Can't copy text from post window [\#322](https://github.com/supercollider/supercollider/issues/322) -- \[SC-IDE\] Add .scd file extension [\#320](https://github.com/supercollider/supercollider/issues/320) -- SCDoc.rendelAll broken in 3.5 branch [\#265](https://github.com/supercollider/supercollider/issues/265) -- Plotter domainSpecs bug [\#264](https://github.com/supercollider/supercollider/issues/264) -- \[Qt\] UserView doesn't pass click count for control clicks [\#263](https://github.com/supercollider/supercollider/issues/263) -- Sending sysex is broken [\#262](https://github.com/supercollider/supercollider/issues/262) -- sc3-plugins [\#261](https://github.com/supercollider/supercollider/issues/261) -- WARNING: server 'localhost' not running. nil [\#260](https://github.com/supercollider/supercollider/issues/260) -- Server crash on polling phase of DelTapWr [\#258](https://github.com/supercollider/supercollider/issues/258) -- opening this file crashes sc.app [\#257](https://github.com/supercollider/supercollider/issues/257) -- .add fails with SynthDefs containing \> 255 controls [\#256](https://github.com/supercollider/supercollider/issues/256) -- .freqscope not working on OS X 3.5 RC2 and RC3 [\#255](https://github.com/supercollider/supercollider/issues/255) -- HrEnvelopeView Crash in Cocoa [\#254](https://github.com/supercollider/supercollider/issues/254) -- KeyTrack not working with LocalBuf [\#253](https://github.com/supercollider/supercollider/issues/253) -- SCNSObject broken under osx 64bit [\#252](https://github.com/supercollider/supercollider/issues/252) -- 3.5.rc1 - -getControlBusValue only supports local servers [\#250](https://github.com/supercollider/supercollider/issues/250) -- 0 \> Signal\[0\] causes infinite loop and memory hogging [\#249](https://github.com/supercollider/supercollider/issues/249) -- 3.5 beta 3 crash on startup after forced quit [\#247](https://github.com/supercollider/supercollider/issues/247) -- same font looks different in qt/cocoa [\#245](https://github.com/supercollider/supercollider/issues/245) -- Segault:while loops with Routine in condition + empty bodies [\#244](https://github.com/supercollider/supercollider/issues/244) -- draw methods for String [\#242](https://github.com/supercollider/supercollider/issues/242) -- Some views does not work inside a Layout [\#240](https://github.com/supercollider/supercollider/issues/240) -- escapeWindow crashes app [\#239](https://github.com/supercollider/supercollider/issues/239) -- compiling error [\#238](https://github.com/supercollider/supercollider/issues/238) -- mouseOverActions trigger normal `action' [\#237](https://github.com/supercollider/supercollider/issues/237) -- alsa midi deadlock [\#236](https://github.com/supercollider/supercollider/issues/236) -- lib fixup for scsynth and sclang [\#235](https://github.com/supercollider/supercollider/issues/235) -- Outdated About dialog [\#234](https://github.com/supercollider/supercollider/issues/234) -- Pbind makes no sound when utilized in ProxySpace environment [\#233](https://github.com/supercollider/supercollider/issues/233) -- \[win\] UnixFILE GetInt primitives return unsigned [\#231](https://github.com/supercollider/supercollider/issues/231) -- Quarks GUI info button doesn't work [\#230](https://github.com/supercollider/supercollider/issues/230) -- SCEnvelopeView broken [\#229](https://github.com/supercollider/supercollider/issues/229) -- Internal server fails to quit on reboot [\#228](https://github.com/supercollider/supercollider/issues/228) -- Segmentation fault \(no X\) [\#227](https://github.com/supercollider/supercollider/issues/227) -- scvim: crash on startup [\#226](https://github.com/supercollider/supercollider/issues/226) -- DetectSilence initialization [\#225](https://github.com/supercollider/supercollider/issues/225) -- scel + qt: Document.open from qt doesn't run the callback [\#224](https://github.com/supercollider/supercollider/issues/224) -- QButton doesn't pass in modifier keycode to button action [\#223](https://github.com/supercollider/supercollider/issues/223) -- OSX does not resolve symlinks [\#222](https://github.com/supercollider/supercollider/issues/222) -- CmdPeriod + Task + AppClock = fail [\#221](https://github.com/supercollider/supercollider/issues/221) -- Broken: A sequence of multiple Pfxs with 'isolate' [\#220](https://github.com/supercollider/supercollider/issues/220) -- CmdPeriod broken [\#219](https://github.com/supercollider/supercollider/issues/219) -- UserView graphics on linux is \*very\* slow [\#218](https://github.com/supercollider/supercollider/issues/218) -- \[plot\] superposing envelopes [\#217](https://github.com/supercollider/supercollider/issues/217) -- SCDoc search results appear in arbitrary order [\#216](https://github.com/supercollider/supercollider/issues/216) -- FreeVerb/2 does not check if inputs are audio rate. [\#214](https://github.com/supercollider/supercollider/issues/214) -- randSeed doesn't effect Drand [\#212](https://github.com/supercollider/supercollider/issues/212) -- Subsection highlighting css bug [\#211](https://github.com/supercollider/supercollider/issues/211) -- cocoa window alpha\_ [\#210](https://github.com/supercollider/supercollider/issues/210) -- Minor colorizing bug in scdoc rendering [\#209](https://github.com/supercollider/supercollider/issues/209) -- SynthDef add fails silently [\#207](https://github.com/supercollider/supercollider/issues/207) -- cmd-f should work on OSX to search in helpbrowser [\#206](https://github.com/supercollider/supercollider/issues/206) -- cmd-d should open links in new Window if selected [\#205](https://github.com/supercollider/supercollider/issues/205) -- Proposal for Helpbrowser layout [\#204](https://github.com/supercollider/supercollider/issues/204) -- a nonpositive number in a Dser ends the server: [\#203](https://github.com/supercollider/supercollider/issues/203) -- b\_allocReadChannel reads only 1024 samples [\#202](https://github.com/supercollider/supercollider/issues/202) -- \[linux\] internal server doesn't receive OSC - unresponsive [\#201](https://github.com/supercollider/supercollider/issues/201) -- Internal server \(sometimes?\) fails to connect to CoreAudio [\#200](https://github.com/supercollider/supercollider/issues/200) -- Peak broken on OS X 64-bit [\#199](https://github.com/supercollider/supercollider/issues/199) -- b\_allocReadChannel crashes supernova [\#198](https://github.com/supercollider/supercollider/issues/198) -- LFPar and LFCub return silence with ar rate as input [\#197](https://github.com/supercollider/supercollider/issues/197) -- pow wierdness [\#196](https://github.com/supercollider/supercollider/issues/196) -- DragSink [\#194](https://github.com/supercollider/supercollider/issues/194) -- GEdit plugin doesn't work in GEdit 3 [\#193](https://github.com/supercollider/supercollider/issues/193) -- Inappropriate writing inside "Program Files" causes problems [\#192](https://github.com/supercollider/supercollider/issues/192) -- Strange behaviour with Demand ugen at kr [\#191](https://github.com/supercollider/supercollider/issues/191) -- Dswitch repeats source patterns' ending values [\#190](https://github.com/supercollider/supercollider/issues/190) -- \[SC.app\] DeferredDelete events are not processed [\#188](https://github.com/supercollider/supercollider/issues/188) -- Error with help system using Gedit \(help doc cache issue\) [\#187](https://github.com/supercollider/supercollider/issues/187) -- yNjV79 \midjepicgais\, [\#185](https://github.com/supercollider/supercollider/issues/185) -- QSoundFileView read family: missing arguments [\#184](https://github.com/supercollider/supercollider/issues/184) -- Class browser crashes sc [\#183](https://github.com/supercollider/supercollider/issues/183) -- \[OS X\] QView, QWindow: .remove resp. .close don't work [\#182](https://github.com/supercollider/supercollider/issues/182) -- HelpBrowser find-box does not work correctly [\#180](https://github.com/supercollider/supercollider/issues/180) -- Help browser line execution doesn't always work [\#179](https://github.com/supercollider/supercollider/issues/179) -- Find field is misleading [\#178](https://github.com/supercollider/supercollider/issues/178) -- s.meter is broken after reboot [\#177](https://github.com/supercollider/supercollider/issues/177) -- QFont size does not allow floats [\#176](https://github.com/supercollider/supercollider/issues/176) -- \[OS X\] setting QtGUI.style does not work first time [\#175](https://github.com/supercollider/supercollider/issues/175) -- Selection of code within brackets [\#174](https://github.com/supercollider/supercollider/issues/174) -- QWebView - process selection before eval [\#173](https://github.com/supercollider/supercollider/issues/173) -- SCWebView - process selection before eval [\#172](https://github.com/supercollider/supercollider/issues/172) -- SCDoc - convert remaining helpfiles [\#171](https://github.com/supercollider/supercollider/issues/171) -- SCWebView copy plain text [\#170](https://github.com/supercollider/supercollider/issues/170) -- some shortcuts does not work in SCWebView [\#169](https://github.com/supercollider/supercollider/issues/169) -- Qt linking [\#168](https://github.com/supercollider/supercollider/issues/168) -- \[OS X\] HelpBrowser with Qt doesn't display text [\#167](https://github.com/supercollider/supercollider/issues/167) -- SC.app: Qt vs Cocoa windows Z order [\#166](https://github.com/supercollider/supercollider/issues/166) -- SC.app: class-lib recompilation leaves unresponsive windows [\#165](https://github.com/supercollider/supercollider/issues/165) -- SC.app: QWebView bug on false URL [\#164](https://github.com/supercollider/supercollider/issues/164) -- Dictionary putPairs [\#163](https://github.com/supercollider/supercollider/issues/163) -- right-click in Qt-help-browser crashes SC.app \(OSX only?\) [\#162](https://github.com/supercollider/supercollider/issues/162) -- GeneralHID is still broken on osx 10.6.7 [\#161](https://github.com/supercollider/supercollider/issues/161) -- Resonz after DiskOut = big BIG distortion [\#160](https://github.com/supercollider/supercollider/issues/160) -- SC.app crash when scrolling QListView [\#159](https://github.com/supercollider/supercollider/issues/159) -- PopUpMenu problems in QtCollider under OSX [\#158](https://github.com/supercollider/supercollider/issues/158) -- QWebView a:hover underlined [\#157](https://github.com/supercollider/supercollider/issues/157) -- sclang does not start without X [\#156](https://github.com/supercollider/supercollider/issues/156) -- .wrap2 behavior [\#155](https://github.com/supercollider/supercollider/issues/155) -- SC.app hang in drawHook or drawFunc [\#154](https://github.com/supercollider/supercollider/issues/154) -- SC.app hangs when closing a Dialog [\#153](https://github.com/supercollider/supercollider/issues/153) -- \[Mac OS\] Button hit are too small [\#152](https://github.com/supercollider/supercollider/issues/152) -- SC.app crashes due to cmake's fixup\_bundle [\#151](https://github.com/supercollider/supercollider/issues/151) -- Strange display behavior in Help.gui [\#150](https://github.com/supercollider/supercollider/issues/150) -- Float error with QtCollider [\#149](https://github.com/supercollider/supercollider/issues/149) -- Semaphore does not work propery [\#148](https://github.com/supercollider/supercollider/issues/148) -- Help files not found with prefix=/usr [\#145](https://github.com/supercollider/supercollider/issues/145) -- String.powerset dosent throw error and causes SC to crash [\#144](https://github.com/supercollider/supercollider/issues/144) -- Review patterns for old early termination [\#143](https://github.com/supercollider/supercollider/issues/143) -- DetectSilence may never detect silence [\#142](https://github.com/supercollider/supercollider/issues/142) -- Patch for minor 'links' bug in scvim\_make\_help [\#141](https://github.com/supercollider/supercollider/issues/141) -- scheduling infinite duration freezes SClang [\#140](https://github.com/supercollider/supercollider/issues/140) -- sc3-plugins-src archive is out of date on the website [\#139](https://github.com/supercollider/supercollider/issues/139) -- Demand ugens broken [\#138](https://github.com/supercollider/supercollider/issues/138) -- Demand broken for infinite-length input sequences [\#137](https://github.com/supercollider/supercollider/issues/137) -- /clearSched causes NRT Crash [\#136](https://github.com/supercollider/supercollider/issues/136) -- DemandEnvGen curve=0 is wrong [\#135](https://github.com/supercollider/supercollider/issues/135) -- Cocoa SCEnvelopeView crashes SC app. [\#134](https://github.com/supercollider/supercollider/issues/134) -- On the new 3.4RC [\#133](https://github.com/supercollider/supercollider/issues/133) -- loadRelative breaks on linux [\#131](https://github.com/supercollider/supercollider/issues/131) -- sclang parsing does not take bracket sematics into account [\#130](https://github.com/supercollider/supercollider/issues/130) -- sclang crashes routinely in prGetBackTrace -\> MakeDebugFrame [\#129](https://github.com/supercollider/supercollider/issues/129) -- Demand plugins built by scons on osx: bad repeats/le [\#128](https://github.com/supercollider/supercollider/issues/128) -- LFPar and LFCub audio rate modulation frequency argument bug [\#127](https://github.com/supercollider/supercollider/issues/127) -- Error in method .set 's "initAction" of EZSlider [\#126](https://github.com/supercollider/supercollider/issues/126) -- SimpleNumber:frac wrong for negative numbers [\#125](https://github.com/supercollider/supercollider/issues/125) -- SynthDef:writeDefFile dir-name trailing slash [\#124](https://github.com/supercollider/supercollider/issues/124) -- SoundFile.cue cuts off low-sample-rate sounds early [\#123](https://github.com/supercollider/supercollider/issues/123) -- Scroll View with Drawhook drawing errors [\#122](https://github.com/supercollider/supercollider/issues/122) -- Signal fft crash [\#121](https://github.com/supercollider/supercollider/issues/121) -- WaveTerrain Crash [\#120](https://github.com/supercollider/supercollider/issues/120) -- drawAtPoint primitive fails if Font not installed [\#119](https://github.com/supercollider/supercollider/issues/119) -- Some methods SimpleNumber now fail with floats [\#118](https://github.com/supercollider/supercollider/issues/118) -- BeatTrack2 unsafety [\#117](https://github.com/supercollider/supercollider/issues/117) -- SCUserView relativeOrigin = true is inefficient [\#116](https://github.com/supercollider/supercollider/issues/116) -- SCPen.fillRadialGradient is faulty [\#115](https://github.com/supercollider/supercollider/issues/115) -- Compilation failure on PPC/Linux [\#114](https://github.com/supercollider/supercollider/issues/114) -- OSCpathResponder broken, needs fix like OSCresponderNode [\#113](https://github.com/supercollider/supercollider/issues/113) -- TCP broken in sclang \(rev 9591 onwards?\) [\#112](https://github.com/supercollider/supercollider/issues/112) -- Buffer cueSoundFile does not update path var [\#111](https://github.com/supercollider/supercollider/issues/111) -- Incoming OSC messages are dropped when VM is busy [\#110](https://github.com/supercollider/supercollider/issues/110) -- Setting Document default font causes crashes [\#109](https://github.com/supercollider/supercollider/issues/109) -- SCUserView relativeOrigin=true outputs bitmap [\#108](https://github.com/supercollider/supercollider/issues/108) -- Stuck synths using Pdef and Pmono [\#107](https://github.com/supercollider/supercollider/issues/107) -- SuperCollider.app v3.3.1 crashes on launch \(OS X 10.6.2\) [\#106](https://github.com/supercollider/supercollider/issues/106) -- is /b\_gen asynchronous? [\#105](https://github.com/supercollider/supercollider/issues/105) -- /b\_zero crashes for illegal bufnum [\#104](https://github.com/supercollider/supercollider/issues/104) -- BufDelayN produces "clicks" if buffer size is not power of 2 [\#103](https://github.com/supercollider/supercollider/issues/103) -- Buffer docs:bad par. name for asWavetable \[3.3.1\] [\#102](https://github.com/supercollider/supercollider/issues/102) -- Bug o f SuperCollider 3.3 on windows [\#100](https://github.com/supercollider/supercollider/issues/100) -- Bug o f SupperCollider 3.3 on windows [\#99](https://github.com/supercollider/supercollider/issues/99) -- Printing Bug [\#98](https://github.com/supercollider/supercollider/issues/98) -- SuperCollider 3.3 win alpha6 sur Windows XP [\#97](https://github.com/supercollider/supercollider/issues/97) -- SuperCollider 3.3 win alpha6 sur Windows XP [\#96](https://github.com/supercollider/supercollider/issues/96) -- Memory leak in Convolution2 [\#95](https://github.com/supercollider/supercollider/issues/95) -- bug on Max os X tiger intel [\#94](https://github.com/supercollider/supercollider/issues/94) -- source-with-extras bundle: instructions don't work [\#93](https://github.com/supercollider/supercollider/issues/93) -- fullscreen windows draw in front of PopUpMenu [\#92](https://github.com/supercollider/supercollider/issues/92) -- Loudness doesn't understand LocalBuf [\#91](https://github.com/supercollider/supercollider/issues/91) -- Build fails [\#89](https://github.com/supercollider/supercollider/issues/89) -- scvim tries to install in absolute path [\#88](https://github.com/supercollider/supercollider/issues/88) -- SuperCollider Crash with Safari4 [\#87](https://github.com/supercollider/supercollider/issues/87) -- very large SimpleNumber:series can crash sclang [\#86](https://github.com/supercollider/supercollider/issues/86) -- OSCresponderNode SCUserView refresh crashes [\#85](https://github.com/supercollider/supercollider/issues/85) -- Cmd-R does not update the cmdLine before interpreting [\#83](https://github.com/supercollider/supercollider/issues/83) -- doneAction in RecordBuf doesn't work [\#82](https://github.com/supercollider/supercollider/issues/82) -- findHelpFile sometimes returns an empty string on Linux [\#81](https://github.com/supercollider/supercollider/issues/81) -- ServerBoot and ServerQuit are called at wrong time [\#80](https://github.com/supercollider/supercollider/issues/80) -- 3.3beta: MFCC fails to init outputs in ctor \(fix attached\) [\#79](https://github.com/supercollider/supercollider/issues/79) -- LocalBuf and {}.plot are incompatible \(3.3.beta\) [\#78](https://github.com/supercollider/supercollider/issues/78) -- OSC-dumping crashes sound [\#76](https://github.com/supercollider/supercollider/issues/76) -- SCScrollView relativeOrigin glitch [\#75](https://github.com/supercollider/supercollider/issues/75) -- allTuple returns out of bounds memory results sometimes [\#74](https://github.com/supercollider/supercollider/issues/74) -- SCRangeSlider bg draws wrong in relative origin parent [\#72](https://github.com/supercollider/supercollider/issues/72) -- Pen clipping bug [\#71](https://github.com/supercollider/supercollider/issues/71) -- Document.listener.alwaysOnTop\_\(true\) survives recompilation [\#70](https://github.com/supercollider/supercollider/issues/70) -- Routine / AppClock broken [\#68](https://github.com/supercollider/supercollider/issues/68) -- sclang crashes when compiling errorneous code [\#67](https://github.com/supercollider/supercollider/issues/67) -- OSCpathResponder is broken [\#66](https://github.com/supercollider/supercollider/issues/66) -- test [\#65](https://github.com/supercollider/supercollider/issues/65) -- MIDIIn.connect no longer works on Linux [\#64](https://github.com/supercollider/supercollider/issues/64) -- FlowView setting inital margin and gap broken [\#63](https://github.com/supercollider/supercollider/issues/63) -- findRegExp sometimes crashes SC - probable GC corruption [\#62](https://github.com/supercollider/supercollider/issues/62) -- Condition.wait breaks any AppClock routine [\#60](https://github.com/supercollider/supercollider/issues/60) -- Reproducable unmotivated sclang crash [\#59](https://github.com/supercollider/supercollider/issues/59) -- view.remove only works one at a time [\#58](https://github.com/supercollider/supercollider/issues/58) -- scsynth terminal printout rendezvous default [\#57](https://github.com/supercollider/supercollider/issues/57) -- b\_readChannel broken [\#56](https://github.com/supercollider/supercollider/issues/56) -- infinities sometimes render compilestrings wrong in Windows [\#55](https://github.com/supercollider/supercollider/issues/55) -- clip2 on Signal [\#54](https://github.com/supercollider/supercollider/issues/54) -- Advanced Find/Replace Syntax Highlight Issue [\#53](https://github.com/supercollider/supercollider/issues/53) -- OSX double-click bracket matching fails in Windows files [\#51](https://github.com/supercollider/supercollider/issues/51) -- Collection:removeAll does not catch repeated items [\#50](https://github.com/supercollider/supercollider/issues/50) -- \_BasicClipPut primitive doesn't work [\#49](https://github.com/supercollider/supercollider/issues/49) -- Fix takeAt documentation [\#48](https://github.com/supercollider/supercollider/issues/48) -- \[post-3.2\] Incomplete compilation warning posted [\#47](https://github.com/supercollider/supercollider/issues/47) -- String literals in functiondefs can get corrupted [\#46](https://github.com/supercollider/supercollider/issues/46) -- Midi SysEx Message Bug [\#45](https://github.com/supercollider/supercollider/issues/45) -- Timestamped OSC messages don't work in Psycollider 3.2b1 [\#44](https://github.com/supercollider/supercollider/issues/44) -- GrainBuf bug [\#43](https://github.com/supercollider/supercollider/issues/43) -- SC2DSlider problem in an absolute-bound compositeview [\#42](https://github.com/supercollider/supercollider/issues/42) -- Make non-timestamped messages execute on control block bound [\#41](https://github.com/supercollider/supercollider/issues/41) -- Document.new returns nil if SC is not the active application [\#40](https://github.com/supercollider/supercollider/issues/40) -- \[windows\] SoundFile info is wrong after openRead'ing a file [\#39](https://github.com/supercollider/supercollider/issues/39) -- \[windows\] buffer reading seems not to work in win2k [\#38](https://github.com/supercollider/supercollider/issues/38) -- SC\_SYNTHDEF\_DIR environment variable incorrectly read, win32 [\#37](https://github.com/supercollider/supercollider/issues/37) -- Pen: strokeOval ignores pen width [\#34](https://github.com/supercollider/supercollider/issues/34) -- fixing deprecated use of string constants [\#33](https://github.com/supercollider/supercollider/issues/33) -- scsynth.exe crashes upon quit after timestamped messages [\#32](https://github.com/supercollider/supercollider/issues/32) -- Pitch crashes with too high a median length [\#31](https://github.com/supercollider/supercollider/issues/31) -- Some array primitives crash the VM if fed an empty array [\#30](https://github.com/supercollider/supercollider/issues/30) -- 0.2.asFraction beachballs the lang [\#29](https://github.com/supercollider/supercollider/issues/29) -- Server.bootSync optional argument [\#28](https://github.com/supercollider/supercollider/issues/28) -- sclang crash on invalid code [\#27](https://github.com/supercollider/supercollider/issues/27) -- Pen: bug with fillRect, fillOval and fillColor [\#26](https://github.com/supercollider/supercollider/issues/26) -- n\_free can crash the server [\#25](https://github.com/supercollider/supercollider/issues/25) -- SCTestView editable\_ [\#24](https://github.com/supercollider/supercollider/issues/24) -- Instr path variable is not populated [\#23](https://github.com/supercollider/supercollider/issues/23) -- Incorrect input/output device display on bootup [\#22](https://github.com/supercollider/supercollider/issues/22) -- .quark files saved as RTF? [\#21](https://github.com/supercollider/supercollider/issues/21) -- sclang memory usage [\#20](https://github.com/supercollider/supercollider/issues/20) -- Please ignore \(test 2\) [\#19](https://github.com/supercollider/supercollider/issues/19) -- Please ignore \(test item\) [\#18](https://github.com/supercollider/supercollider/issues/18) -- Audio dropout if starting UGens not used yet in session\(OSX\) [\#17](https://github.com/supercollider/supercollider/issues/17) -- Trouble finding libs when using PREFIX [\#16](https://github.com/supercollider/supercollider/issues/16) -- tiny doc bug [\#15](https://github.com/supercollider/supercollider/issues/15) -- server will not boot [\#14](https://github.com/supercollider/supercollider/issues/14) -- s\_new and synthdef names with hyphen under linux not working [\#13](https://github.com/supercollider/supercollider/issues/13) -- LPF fails due to NaN error when cutoff==0 [\#12](https://github.com/supercollider/supercollider/issues/12) -- exponentiation bug [\#11](https://github.com/supercollider/supercollider/issues/11) -- permission problem in synthdef [\#10](https://github.com/supercollider/supercollider/issues/10) -- SC folder rename introspection errors [\#9](https://github.com/supercollider/supercollider/issues/9) -- linux build error [\#8](https://github.com/supercollider/supercollider/issues/8) -- cannot build sc3 on linux [\#7](https://github.com/supercollider/supercollider/issues/7) -- cmd-line build fails \(needs -faltivec?\) [\#6](https://github.com/supercollider/supercollider/issues/6) -- views invisible on refresh if window too small [\#5](https://github.com/supercollider/supercollider/issues/5) -- SCSliderBase, knobColor bug [\#4](https://github.com/supercollider/supercollider/issues/4) -- SCRangeSlider dragging bug [\#3](https://github.com/supercollider/supercollider/issues/3) -- SCView.sc [\#2](https://github.com/supercollider/supercollider/issues/2) -- SCRangeSlider [\#1](https://github.com/supercollider/supercollider/issues/1) -- ide: fix issue with large documents [\#1849](https://github.com/supercollider/supercollider/pull/1849) ([miguel-negrao](https://github.com/miguel-negrao)) -- Classlib: Update PauseStream stream's clock upon play [\#1711](https://github.com/supercollider/supercollider/pull/1711) ([jamshark70](https://github.com/jamshark70)) -- Plugins: Clip NOVA functions should update unit-\> variables [\#1702](https://github.com/supercollider/supercollider/pull/1702) ([jamshark70](https://github.com/jamshark70)) - -**Closed issues:** - -- copyRange vs. bracket ranges [\#1876](https://github.com/supercollider/supercollider/issues/1876) -- FloatArray prevents rounding [\#1873](https://github.com/supercollider/supercollider/issues/1873) -- Quark not properly checked-out and/or updated [\#1864](https://github.com/supercollider/supercollider/issues/1864) -- ScopeView broken in SuperCollider 3.7.0-beta1? [\#1862](https://github.com/supercollider/supercollider/issues/1862) -- sclang in master freezes on arm \(due to PR \#1677 / commit d0f475d\) [\#1842](https://github.com/supercollider/supercollider/issues/1842) -- Multiple schelp syntax errors [\#1837](https://github.com/supercollider/supercollider/issues/1837) -- scsynth: verbosity -1 & -2 not recognised - scsynth won't start [\#1825](https://github.com/supercollider/supercollider/issues/1825) -- Building master with gcc 4.7 fails due to 'is\_trivially\_destructible' in SC\_PlugIn.hpp [\#1820](https://github.com/supercollider/supercollider/issues/1820) -- compilation error on slackware linux [\#1814](https://github.com/supercollider/supercollider/issues/1814) -- The Font help file has a syntax error [\#1811](https://github.com/supercollider/supercollider/issues/1811) -- Github's source code bundles are unhelpful for SuperCollider because submodules missing [\#1807](https://github.com/supercollider/supercollider/issues/1807) -- Error when saving with 3.7.0 beta1 [\#1806](https://github.com/supercollider/supercollider/issues/1806) -- cmake: if on ARM, automatically disable SSE and SSE2 flags [\#1802](https://github.com/supercollider/supercollider/issues/1802) -- sclang compilation error in Linux [\#1797](https://github.com/supercollider/supercollider/issues/1797) -- Confusing terminology in "02. First Steps" of Tutorial "Getting Started With SuperCollider" [\#1781](https://github.com/supercollider/supercollider/issues/1781) -- if duplicate quark folders exist in extensions ... [\#1767](https://github.com/supercollider/supercollider/issues/1767) -- Need updated Windows build instructions [\#1763](https://github.com/supercollider/supercollider/issues/1763) -- build: LFUGens.cpp requires nova\_simd code even if NOVA\_SIMD=off [\#1751](https://github.com/supercollider/supercollider/issues/1751) -- StkInst overloaded new and delete waiting supernova [\#1747](https://github.com/supercollider/supercollider/issues/1747) -- install instructions for ubuntu are out of date [\#1723](https://github.com/supercollider/supercollider/issues/1723) -- NodeProxy fails to detect containing audiorate \(irregularly\) [\#1672](https://github.com/supercollider/supercollider/issues/1672) -- Issues running with Portaudio \(without jack\) on linux [\#1658](https://github.com/supercollider/supercollider/issues/1658) -- OSCFunc with special recvPort can't be freed [\#1654](https://github.com/supercollider/supercollider/issues/1654) -- Pipe breaks if it receives lines longer than 1024 characters [\#1593](https://github.com/supercollider/supercollider/issues/1593) -- Multichannel recording does not work in Windows 7 [\#1560](https://github.com/supercollider/supercollider/issues/1560) -- concatenating large strings causes memory corruption [\#1543](https://github.com/supercollider/supercollider/issues/1543) -- Seems like interpreter \(or servers\) are not tracking osc messages to server correctly [\#1524](https://github.com/supercollider/supercollider/issues/1524) -- help: TempoClock set beats example is incorrect [\#1518](https://github.com/supercollider/supercollider/issues/1518) -- supernova was left out of the -v -V transition [\#1468](https://github.com/supercollider/supercollider/issues/1468) -- findRegexp does not compile escaped character sequences correctly [\#1411](https://github.com/supercollider/supercollider/issues/1411) -- blocksize and latency in scsynth and supernova [\#1314](https://github.com/supercollider/supercollider/issues/1314) -- EnvelopeView gridOn\_ doesn't work \(in Qt on MS Windows anyway\) [\#1284](https://github.com/supercollider/supercollider/issues/1284) -- minor bug in an IEnvGen example [\#1276](https://github.com/supercollider/supercollider/issues/1276) -- Signal.waveFill function parameters \(3\) don't match documentation \(2\) [\#1259](https://github.com/supercollider/supercollider/issues/1259) -- Env.step example is confusing [\#1143](https://github.com/supercollider/supercollider/issues/1143) -- \(unnecessary?\) warning "The HID scheme 'nil' is not installed" [\#1120](https://github.com/supercollider/supercollider/issues/1120) -- AudioStreamAddPropertyListener deprecated warning [\#1117](https://github.com/supercollider/supercollider/issues/1117) -- counter intuitive behaviour when embedding events/dictionaries in streams directly [\#1107](https://github.com/supercollider/supercollider/issues/1107) -- No implementation of "Preferences" in Cocoa application [\#1098](https://github.com/supercollider/supercollider/issues/1098) -- SplayAz behaviour doesn't match documentation [\#1059](https://github.com/supercollider/supercollider/issues/1059) -- Error in Help - Getting Started Tutorial Series - Section 2 [\#981](https://github.com/supercollider/supercollider/issues/981) -- SuperCollider won't build with Xcode 5 [\#958](https://github.com/supercollider/supercollider/issues/958) -- Crash in creating SynthDef [\#957](https://github.com/supercollider/supercollider/issues/957) -- supernova compilation error [\#951](https://github.com/supercollider/supercollider/issues/951) -- supercollider-gedit plugin not loading [\#950](https://github.com/supercollider/supercollider/issues/950) -- OSCFunc addr.hostname returns nil [\#933](https://github.com/supercollider/supercollider/issues/933) -- iOS build, doesn't. [\#927](https://github.com/supercollider/supercollider/issues/927) -- Disable mathjax - an unused feature that can cause problems [\#909](https://github.com/supercollider/supercollider/issues/909) -- DiskIn channel limitation [\#901](https://github.com/supercollider/supercollider/issues/901) -- sclang \(readline\) cannot quit [\#897](https://github.com/supercollider/supercollider/issues/897) -- PV\_Copy breaks edge model [\#896](https://github.com/supercollider/supercollider/issues/896) -- linux \(debian x64\) compilation error [\#894](https://github.com/supercollider/supercollider/issues/894) -- osx/wii uses deprecated/removed API [\#876](https://github.com/supercollider/supercollider/issues/876) -- drawFunc drawingEnabled\_\(false\) not respected by refresh [\#869](https://github.com/supercollider/supercollider/issues/869) -- file browser lacks default [\#868](https://github.com/supercollider/supercollider/issues/868) -- SerialPort Cleanup error [\#862](https://github.com/supercollider/supercollider/issues/862) -- Windows: preferably use native file selector on document open etc. [\#861](https://github.com/supercollider/supercollider/issues/861) -- Issue Tracker: user can't enter categories/lables [\#860](https://github.com/supercollider/supercollider/issues/860) -- Windows: curl support doesn't work and no alternative available [\#859](https://github.com/supercollider/supercollider/issues/859) -- Windows \(installer\): no program shortcuts [\#857](https://github.com/supercollider/supercollider/issues/857) -- Windows: installer does not register in system [\#856](https://github.com/supercollider/supercollider/issues/856) -- Windows: no file associations [\#855](https://github.com/supercollider/supercollider/issues/855) -- Server load percentage on Windows off by factor 100 [\#849](https://github.com/supercollider/supercollider/issues/849) -- SC IDE: Custom Shortcut ctrl-alt-\ for Move Line Up/Down gets lost after quitting SC [\#836](https://github.com/supercollider/supercollider/issues/836) -- searched word is highlighted even after edit [\#833](https://github.com/supercollider/supercollider/issues/833) -- server-scope: zoom default value not set on SC 3.6.4 [\#825](https://github.com/supercollider/supercollider/issues/825) -- build error [\#816](https://github.com/supercollider/supercollider/issues/816) -- Missing "\)" in HelpSource / Guides / MIDI.schelp [\#802](https://github.com/supercollider/supercollider/issues/802) -- Up-arrow after hitting return wrongly goes to the end of the previous line [\#800](https://github.com/supercollider/supercollider/issues/800) -- \[linux, gnome\] Tab-navigation in find/replace panel is invisible [\#797](https://github.com/supercollider/supercollider/issues/797) -- EnvelopeView and exponential, cubed and squared curves. [\#784](https://github.com/supercollider/supercollider/issues/784) -- Bug in Bus:get when using multichannel busses [\#778](https://github.com/supercollider/supercollider/issues/778) -- Scope won't show a channel count higher than 16 upon initialization [\#769](https://github.com/supercollider/supercollider/issues/769) -- FreqScope not updating correctly [\#764](https://github.com/supercollider/supercollider/issues/764) -- Supernova does not load UGens from ~/.local [\#763](https://github.com/supercollider/supercollider/issues/763) -- Convolution2: frameSize = 2\*\*15 \(32768\) fails [\#738](https://github.com/supercollider/supercollider/issues/738) -- Convolution2: kernel size is truncated to fftsize [\#737](https://github.com/supercollider/supercollider/issues/737) -- Convolution2: failure if frameSize \> numFrames, in some cases! [\#736](https://github.com/supercollider/supercollider/issues/736) -- sclang crash on quit - assertion failure [\#726](https://github.com/supercollider/supercollider/issues/726) -- Wrong results from something.kr / something.ar [\#721](https://github.com/supercollider/supercollider/issues/721) -- TreeView.clear works in IDE, but doesn't work in Standalone [\#719](https://github.com/supercollider/supercollider/issues/719) -- X11 crashes: \[xcb\] Unknown request in queue while dequeuing [\#717](https://github.com/supercollider/supercollider/issues/717) -- sclang -l configuration fails \(no warnings, no errors\) [\#713](https://github.com/supercollider/supercollider/issues/713) -- scsynth stops when running with RME Fireface UCX [\#701](https://github.com/supercollider/supercollider/issues/701) -- plot on a signal does not work \(3.6.1\) [\#698](https://github.com/supercollider/supercollider/issues/698) -- Document browser's "Tutorial" subsection should list all tutorials [\#693](https://github.com/supercollider/supercollider/issues/693) -- OpenBSD, runtime error: gNumClasses 'discrepancy' [\#684](https://github.com/supercollider/supercollider/issues/684) -- cmd-d in help document does not work [\#667](https://github.com/supercollider/supercollider/issues/667) -- SC 3.6beta3 - help docs don't compile [\#666](https://github.com/supercollider/supercollider/issues/666) -- 3.6.3 STANDARD plugin API mismatch [\#660](https://github.com/supercollider/supercollider/issues/660) -- Copy/paste from SC IDE to Mail loses formatting & tabs \(OS X\) [\#657](https://github.com/supercollider/supercollider/issues/657) -- scide: Ctrl+P does not focus Post Window [\#654](https://github.com/supercollider/supercollider/issues/654) -- Single channel NamedControl returns default values as one-item-array [\#652](https://github.com/supercollider/supercollider/issues/652) -- Cannot create new .sc class definition file from SC IDE [\#651](https://github.com/supercollider/supercollider/issues/651) -- \[SCIDE 3.6 beta 2\] Help pane browser pops up annoyingly on load [\#643](https://github.com/supercollider/supercollider/issues/643) -- Env/event documentation error [\#638](https://github.com/supercollider/supercollider/issues/638) -- crash when evaluating exprand [\#632](https://github.com/supercollider/supercollider/issues/632) -- \[SC-IDE\] save/save as dialog extensions [\#615](https://github.com/supercollider/supercollider/issues/615) -- \[SC-IDE\] hang when trying to stop sclang [\#614](https://github.com/supercollider/supercollider/issues/614) -- Ndef clear/play sequence problem [\#612](https://github.com/supercollider/supercollider/issues/612) -- File-changed behavior is triggered while file is opened \(and closed\) in other applications [\#595](https://github.com/supercollider/supercollider/issues/595) -- Tab widths are radically different between post window and [\#594](https://github.com/supercollider/supercollider/issues/594) -- Number views on Stethoscope are too narrow to be readable on OSX [\#583](https://github.com/supercollider/supercollider/issues/583) -- Line numbers do not sync for some fonts [\#567](https://github.com/supercollider/supercollider/issues/567) -- Duplicate keyboard shortcuts can be set, causing undefined behavior [\#566](https://github.com/supercollider/supercollider/issues/566) -- indent line or region sometimes doesn't work [\#528](https://github.com/supercollider/supercollider/issues/528) -- server meter menu option always localhost [\#525](https://github.com/supercollider/supercollider/issues/525) -- No sound after stopping and running Main again [\#520](https://github.com/supercollider/supercollider/issues/520) -- \[sc-ide\] Saving as .sc saves as .scd instead [\#519](https://github.com/supercollider/supercollider/issues/519) -- ~tildestuff is not treated as a unit for selection [\#508](https://github.com/supercollider/supercollider/issues/508) -- SCDoc: right-click on a link offers non-working "Open in new window" [\#504](https://github.com/supercollider/supercollider/issues/504) -- pressing ctrl+D with cursor just before bracket in "Latch\)" searches for bracket not Latch [\#503](https://github.com/supercollider/supercollider/issues/503) -- Cmd-Delete to have similar functionality to other OSX windows [\#501](https://github.com/supercollider/supercollider/issues/501) -- Ctrl-shift-I/U should not be separated from Ctrl-I/U in the menus [\#498](https://github.com/supercollider/supercollider/issues/498) -- Can't connect to and play sounds on already running scsynth [\#487](https://github.com/supercollider/supercollider/issues/487) -- Ctrl+. in helpfile doesn't stop it [\#480](https://github.com/supercollider/supercollider/issues/480) -- SC-IDE under Mac OSX: Open Class/Method Definition not working [\#479](https://github.com/supercollider/supercollider/issues/479) -- SC-IDE under Mac OSX: Open Class/Method Definition not working [\#478](https://github.com/supercollider/supercollider/issues/478) -- SuperCollider is renamed SuperColliderCocoa [\#473](https://github.com/supercollider/supercollider/issues/473) -- ide: simplifying find/replace? [\#468](https://github.com/supercollider/supercollider/issues/468) -- Copying from post window widget [\#460](https://github.com/supercollider/supercollider/issues/460) -- Enable word wrap in the post window [\#459](https://github.com/supercollider/supercollider/issues/459) -- keyboard shortcut for copy is disabled in post window [\#452](https://github.com/supercollider/supercollider/issues/452) -- Switching applications [\#449](https://github.com/supercollider/supercollider/issues/449) -- serialPort doneAction never called & port not properly closed? [\#438](https://github.com/supercollider/supercollider/issues/438) -- SC 3.5.4 crashes with buffers on windows 7 [\#424](https://github.com/supercollider/supercollider/issues/424) -- default for freqscope [\#421](https://github.com/supercollider/supercollider/issues/421) -- \[SC-IDE\] Evaluate a line within a region \(with the same shortcut\) [\#403](https://github.com/supercollider/supercollider/issues/403) -- Introspection thread safety [\#394](https://github.com/supercollider/supercollider/issues/394) -- Import RTF files [\#392](https://github.com/supercollider/supercollider/issues/392) -- Custom OSC Message processing section in OSC Communication doc's is incorrect [\#389](https://github.com/supercollider/supercollider/issues/389) -- font scaling behavior [\#379](https://github.com/supercollider/supercollider/issues/379) -- scide: arg tooltip for floats, display 1 not 1.000000 [\#377](https://github.com/supercollider/supercollider/issues/377) -- \[Qt IDE\] Tab not working [\#374](https://github.com/supercollider/supercollider/issues/374) -- sclang menu bar vs ide [\#367](https://github.com/supercollider/supercollider/issues/367) -- Buffer.free on 3.5.3 crash scsynth [\#359](https://github.com/supercollider/supercollider/issues/359) -- \[SC-IDE\] server status bar [\#348](https://github.com/supercollider/supercollider/issues/348) -- Can SFC\_SET\_CLIPPING fix the wrapped vs. clipped int-format recording problem? [\#345](https://github.com/supercollider/supercollider/issues/345) -- SynthDef compiler in Lua [\#344](https://github.com/supercollider/supercollider/issues/344) -- scsynth sound stops in 3.5 not in 3.4 [\#343](https://github.com/supercollider/supercollider/issues/343) -- Pseg duration in secs or beats? [\#340](https://github.com/supercollider/supercollider/issues/340) -- MIDIFunc.noteOn does not work with floats [\#325](https://github.com/supercollider/supercollider/issues/325) - -**Merged pull requests:** - -- fix: typo in CHANGELOG.md [\#1888](https://github.com/supercollider/supercollider/pull/1888) ([crucialfelix](https://github.com/crucialfelix)) -- build: copy CHANGELOG.md not the old ChangeLog [\#1887](https://github.com/supercollider/supercollider/pull/1887) ([crucialfelix](https://github.com/crucialfelix)) -- class library: poll treats numbers as signals [\#1885](https://github.com/supercollider/supercollider/pull/1885) ([telephon](https://github.com/telephon)) -- class library display path in quark gui [\#1882](https://github.com/supercollider/supercollider/pull/1882) ([telephon](https://github.com/telephon)) -- Topic/osx move scsynth [\#1881](https://github.com/supercollider/supercollider/pull/1881) ([crucialfelix](https://github.com/crucialfelix)) -- fix \#1864 Quarks Git not detecting latest she correctly [\#1880](https://github.com/supercollider/supercollider/pull/1880) ([crucialfelix](https://github.com/crucialfelix)) -- build: use direct test to decide if SSE available [\#1879](https://github.com/supercollider/supercollider/pull/1879) ([danstowell](https://github.com/danstowell)) -- Improved documentation for copyRange and copySeries [\#1877](https://github.com/supercollider/supercollider/pull/1877) ([snappizz](https://github.com/snappizz)) -- sclang: add explanation of standalone mode. [\#1872](https://github.com/supercollider/supercollider/pull/1872) ([miguel-negrao](https://github.com/miguel-negrao)) -- Avoid misleading message for Xcode and Visual Studio [\#1871](https://github.com/supercollider/supercollider/pull/1871) ([bagong](https://github.com/bagong)) -- ide: menu option "Show Quarks" [\#1867](https://github.com/supercollider/supercollider/pull/1867) ([miguel-negrao](https://github.com/miguel-negrao)) -- ide: Add standalone option in settings. [\#1863](https://github.com/supercollider/supercollider/pull/1863) ([miguel-negrao](https://github.com/miguel-negrao)) -- ide: fix memory leak [\#1859](https://github.com/supercollider/supercollider/pull/1859) ([miguel-negrao](https://github.com/miguel-negrao)) -- plugins: allow Vibrato to be triggered [\#1858](https://github.com/supercollider/supercollider/pull/1858) ([sonoro1234](https://github.com/sonoro1234)) -- 3.7win without IPC fix [\#1852](https://github.com/supercollider/supercollider/pull/1852) ([bagong](https://github.com/bagong)) -- Topic fix allocations [\#1845](https://github.com/supercollider/supercollider/pull/1845) ([telephon](https://github.com/telephon)) -- Fixes/for master [\#1844](https://github.com/supercollider/supercollider/pull/1844) ([timblechmann](https://github.com/timblechmann)) -- build: bump GCC version requirement up from 4.7 to 4.8 [\#1839](https://github.com/supercollider/supercollider/pull/1839) ([danstowell](https://github.com/danstowell)) -- Help source syntax fix [\#1838](https://github.com/supercollider/supercollider/pull/1838) ([gusano](https://github.com/gusano)) -- build: fix PanUGens to build when NOVA\_SIMD=OFF [\#1834](https://github.com/supercollider/supercollider/pull/1834) ([danstowell](https://github.com/danstowell)) -- Fix error message [\#1828](https://github.com/supercollider/supercollider/pull/1828) ([carlocapocasa](https://github.com/carlocapocasa)) -- Server.sc: option for scsynth's verbosity now is "V" not "v". [\#1826](https://github.com/supercollider/supercollider/pull/1826) ([miczac](https://github.com/miczac)) -- build: fix non-SSE2 compile of SC\_SndBuf.h \(Fixes \#1819\) [\#1821](https://github.com/supercollider/supercollider/pull/1821) ([danstowell](https://github.com/danstowell)) -- cmake: disable SSE on ARM [\#1817](https://github.com/supercollider/supercollider/pull/1817) ([danstowell](https://github.com/danstowell)) -- QView.sc: removes residue OS X Space after closing a fullscreen window. [\#1816](https://github.com/supercollider/supercollider/pull/1816) ([miczac](https://github.com/miczac)) -- build: fix an integer type mismatch that caused build fail for some [\#1815](https://github.com/supercollider/supercollider/pull/1815) ([danstowell](https://github.com/danstowell)) -- fixes \#1811, also, allowing for more space for the last two examples [\#1813](https://github.com/supercollider/supercollider/pull/1813) ([miczac](https://github.com/miczac)) -- cmake: avoid confusing "FATAL" messages if not a git checkout [\#1809](https://github.com/supercollider/supercollider/pull/1809) ([crucialfelix](https://github.com/crucialfelix)) -- cmake: disable SSE on ARM [\#1803](https://github.com/supercollider/supercollider/pull/1803) ([danstowell](https://github.com/danstowell)) -- plugins: fix plugin registration for sum3/sum4 [\#1799](https://github.com/supercollider/supercollider/pull/1799) ([timblechmann](https://github.com/timblechmann)) -- Revert "subproject commit" which mistakenly downgraded nova dependencies [\#1795](https://github.com/supercollider/supercollider/pull/1795) ([danstowell](https://github.com/danstowell)) -- class library: moved Model.sc out of GUI directory [\#1792](https://github.com/supercollider/supercollider/pull/1792) ([redFrik](https://github.com/redFrik)) -- help guides: fix typo [\#1790](https://github.com/supercollider/supercollider/pull/1790) ([gusano](https://github.com/gusano)) -- Incorporate these tutorial corrections [\#1787](https://github.com/supercollider/supercollider/pull/1787) ([afischli](https://github.com/afischli)) -- FIx typo in tutorial on shortcut explanation to clear the post window [\#1784](https://github.com/supercollider/supercollider/pull/1784) ([afischli](https://github.com/afischli)) -- scide: don't sync documents if language was not compiled [\#1780](https://github.com/supercollider/supercollider/pull/1780) ([gusano](https://github.com/gusano)) -- Novacollider/cleanups [\#1779](https://github.com/supercollider/supercollider/pull/1779) ([timblechmann](https://github.com/timblechmann)) -- supernova: tests - use thread and chrono [\#1778](https://github.com/supercollider/supercollider/pull/1778) ([timblechmann](https://github.com/timblechmann)) -- Correcting a spelling of "Buffer" in Getting Started 13 [\#1777](https://github.com/supercollider/supercollider/pull/1777) ([meatballhat](https://github.com/meatballhat)) -- plugin interface: avoid dependency on nova-tt [\#1776](https://github.com/supercollider/supercollider/pull/1776) ([timblechmann](https://github.com/timblechmann)) -- Novacollider/cleanups [\#1775](https://github.com/supercollider/supercollider/pull/1775) ([timblechmann](https://github.com/timblechmann)) -- nova-simd: fix lower boundary of exp approximation [\#1774](https://github.com/supercollider/supercollider/pull/1774) ([timblechmann](https://github.com/timblechmann)) -- cmake: refuse to build if unrecognised AUDIOAPI [\#1773](https://github.com/supercollider/supercollider/pull/1773) ([danstowell](https://github.com/danstowell)) -- jack audio driver: remove old unused codepath for jack\<0.100 [\#1772](https://github.com/supercollider/supercollider/pull/1772) ([danstowell](https://github.com/danstowell)) -- Topic/boost 1.60 [\#1770](https://github.com/supercollider/supercollider/pull/1770) ([timblechmann](https://github.com/timblechmann)) -- Novacollider/supernova refactoring [\#1769](https://github.com/supercollider/supercollider/pull/1769) ([timblechmann](https://github.com/timblechmann)) -- external libraries: nova-simd [\#1768](https://github.com/supercollider/supercollider/pull/1768) ([timblechmann](https://github.com/timblechmann)) -- supernova: tcp - catch exceptions when sending replies via tcp [\#1765](https://github.com/supercollider/supercollider/pull/1765) ([timblechmann](https://github.com/timblechmann)) -- Refactor EnvirGui [\#1761](https://github.com/supercollider/supercollider/pull/1761) ([adcxyz](https://github.com/adcxyz)) -- Fix string find [\#1759](https://github.com/supercollider/supercollider/pull/1759) ([muellmusik](https://github.com/muellmusik)) -- scdoc: typo in Working\_with\_HID.schelp [\#1756](https://github.com/supercollider/supercollider/pull/1756) ([redFrik](https://github.com/redFrik)) -- scdoc: typo in LID\_permissions.schelp [\#1755](https://github.com/supercollider/supercollider/pull/1755) ([redFrik](https://github.com/redFrik)) -- scdoc: typo in HID\_permissions.schelp [\#1754](https://github.com/supercollider/supercollider/pull/1754) ([redFrik](https://github.com/redFrik)) -- c++ interface: introduce templated registerUnit [\#1753](https://github.com/supercollider/supercollider/pull/1753) ([timblechmann](https://github.com/timblechmann)) -- Topic/quarks git fixes [\#1752](https://github.com/supercollider/supercollider/pull/1752) ([crucialfelix](https://github.com/crucialfelix)) -- Fixes/supernova unload plugins [\#1748](https://github.com/supercollider/supercollider/pull/1748) ([timblechmann](https://github.com/timblechmann)) -- Novacollider/supernova refactoring [\#1745](https://github.com/supercollider/supercollider/pull/1745) ([timblechmann](https://github.com/timblechmann)) -- Novacollider/prevent bad optimization [\#1744](https://github.com/supercollider/supercollider/pull/1744) ([timblechmann](https://github.com/timblechmann)) -- plugin interface: provide numInputs/numOutputs as interface functions [\#1743](https://github.com/supercollider/supercollider/pull/1743) ([timblechmann](https://github.com/timblechmann)) -- cleanup: detect apple via \_\_APPLE\_\_ [\#1741](https://github.com/supercollider/supercollider/pull/1741) ([timblechmann](https://github.com/timblechmann)) -- build: modify trunc\(\) calls to compile on gcc 4.8.4 [\#1740](https://github.com/supercollider/supercollider/pull/1740) ([danstowell](https://github.com/danstowell)) -- supernova: received\_packet - make implementation more robust [\#1739](https://github.com/supercollider/supercollider/pull/1739) ([timblechmann](https://github.com/timblechmann)) -- Fixes/supernova handle out of memory [\#1733](https://github.com/supercollider/supercollider/pull/1733) ([timblechmann](https://github.com/timblechmann)) -- Fix avoid calling nonexisting cleanup event type [\#1731](https://github.com/supercollider/supercollider/pull/1731) ([blacksound](https://github.com/blacksound)) -- Fix obsolete server method call [\#1730](https://github.com/supercollider/supercollider/pull/1730) ([blacksound](https://github.com/blacksound)) -- Consistent use of Event in example. [\#1729](https://github.com/supercollider/supercollider/pull/1729) ([blacksound](https://github.com/blacksound)) -- example & help files: cleanup and streamlining of server handling [\#1728](https://github.com/supercollider/supercollider/pull/1728) ([miczac](https://github.com/miczac)) -- example & help files: fix reference to default server [\#1727](https://github.com/supercollider/supercollider/pull/1727) ([miczac](https://github.com/miczac)) -- Simplify pspawner example [\#1726](https://github.com/supercollider/supercollider/pull/1726) ([blacksound](https://github.com/blacksound)) -- typofix - make description match example code [\#1725](https://github.com/supercollider/supercollider/pull/1725) ([blacksound](https://github.com/blacksound)) -- UGen-scope.sc: fixes method to determine default server [\#1724](https://github.com/supercollider/supercollider/pull/1724) ([miczac](https://github.com/miczac)) -- Fix typo in NodeProxy roles help file [\#1722](https://github.com/supercollider/supercollider/pull/1722) ([blacksound](https://github.com/blacksound)) -- ass Filters: warning in help-docs about filter frequencies close to zero [\#1721](https://github.com/supercollider/supercollider/pull/1721) ([miczac](https://github.com/miczac)) -- Clean up classlib: consistent tabs and Egyptian braces [\#1714](https://github.com/supercollider/supercollider/pull/1714) ([crucialfelix](https://github.com/crucialfelix)) -- fix \#1668 - make existsCaseSensitive work for directories [\#1713](https://github.com/supercollider/supercollider/pull/1713) ([crucialfelix](https://github.com/crucialfelix)) -- fix \#1670 isPath and isAbsolutePath regexp for windows [\#1712](https://github.com/supercollider/supercollider/pull/1712) ([crucialfelix](https://github.com/crucialfelix)) -- fixes for master [\#1710](https://github.com/supercollider/supercollider/pull/1710) ([timblechmann](https://github.com/timblechmann)) -- supernova: silence clang warning [\#1709](https://github.com/supercollider/supercollider/pull/1709) ([timblechmann](https://github.com/timblechmann)) -- sclang: file prim - remove unused carbon code [\#1708](https://github.com/supercollider/supercollider/pull/1708) ([timblechmann](https://github.com/timblechmann)) -- fix issues found by clang's static analyzer [\#1707](https://github.com/supercollider/supercollider/pull/1707) ([timblechmann](https://github.com/timblechmann)) -- class library: store floats with full precision [\#1701](https://github.com/supercollider/supercollider/pull/1701) ([telephon](https://github.com/telephon)) -- docs: minor typo adjustment in Getting Started 11 [\#1698](https://github.com/supercollider/supercollider/pull/1698) ([meatballhat](https://github.com/meatballhat)) -- modernize supernova [\#1697](https://github.com/supercollider/supercollider/pull/1697) ([timblechmann](https://github.com/timblechmann)) -- docs: minor typo correction in Getting Started 10 [\#1694](https://github.com/supercollider/supercollider/pull/1694) ([meatballhat](https://github.com/meatballhat)) -- sclang: slot - improve architecture detection [\#1693](https://github.com/supercollider/supercollider/pull/1693) ([timblechmann](https://github.com/timblechmann)) -- scdoc/sclang lexers: use intptr\_t tof compatibility with LLP64 archtectures [\#1692](https://github.com/supercollider/supercollider/pull/1692) ([timblechmann](https://github.com/timblechmann)) -- refactoring [\#1691](https://github.com/supercollider/supercollider/pull/1691) ([timblechmann](https://github.com/timblechmann)) -- fix lost keyevents [\#1690](https://github.com/supercollider/supercollider/pull/1690) ([timblechmann](https://github.com/timblechmann)) -- install help sources on linux [\#1689](https://github.com/supercollider/supercollider/pull/1689) ([timblechmann](https://github.com/timblechmann)) -- cmake fixes [\#1688](https://github.com/supercollider/supercollider/pull/1688) ([timblechmann](https://github.com/timblechmann)) -- class library: make control set atomic [\#1687](https://github.com/supercollider/supercollider/pull/1687) ([LFSaw](https://github.com/LFSaw)) -- Primitive related cleanups [\#1683](https://github.com/supercollider/supercollider/pull/1683) ([muellmusik](https://github.com/muellmusik)) -- fixed one broken link [\#1680](https://github.com/supercollider/supercollider/pull/1680) ([redFrik](https://github.com/redFrik)) -- fixed two broken links [\#1679](https://github.com/supercollider/supercollider/pull/1679) ([redFrik](https://github.com/redFrik)) -- scel: Fix mode-line update [\#1678](https://github.com/supercollider/supercollider/pull/1678) ([ptrv](https://github.com/ptrv)) -- use c++17-style executors to compile class library [\#1677](https://github.com/supercollider/supercollider/pull/1677) ([timblechmann](https://github.com/timblechmann)) -- supernova: guard gcc version check [\#1675](https://github.com/supercollider/supercollider/pull/1675) ([timblechmann](https://github.com/timblechmann)) -- fixed two broken links [\#1673](https://github.com/supercollider/supercollider/pull/1673) ([redFrik](https://github.com/redFrik)) -- Update 03-Start-Your-Engines.schelp [\#1667](https://github.com/supercollider/supercollider/pull/1667) ([danielmkarlsson](https://github.com/danielmkarlsson)) -- Update 02-First-Steps.schelp [\#1666](https://github.com/supercollider/supercollider/pull/1666) ([danielmkarlsson](https://github.com/danielmkarlsson)) -- Update 01-Introductory-Remarks.schelp [\#1665](https://github.com/supercollider/supercollider/pull/1665) ([danielmkarlsson](https://github.com/danielmkarlsson)) -- Subclass searches [\#1663](https://github.com/supercollider/supercollider/pull/1663) ([jamshark70](https://github.com/jamshark70)) -- scsynth: sends d\_removed from the right thread [\#1662](https://github.com/supercollider/supercollider/pull/1662) ([sonoro1234](https://github.com/sonoro1234)) -- class library: defer calls to ide [\#1661](https://github.com/supercollider/supercollider/pull/1661) ([telephon](https://github.com/telephon)) -- EnvGen: fix cub nans [\#1660](https://github.com/supercollider/supercollider/pull/1660) ([sonoro1234](https://github.com/sonoro1234)) -- scsynth: denormal handling in PortAudio and Jack [\#1659](https://github.com/supercollider/supercollider/pull/1659) ([sonoro1234](https://github.com/sonoro1234)) -- QtCollider: TextView: Get code for enterInterpretsSelection from block\(\) [\#1652](https://github.com/supercollider/supercollider/pull/1652) ([jamshark70](https://github.com/jamshark70)) -- some buildsystem fixes [\#1649](https://github.com/supercollider/supercollider/pull/1649) ([timblechmann](https://github.com/timblechmann)) -- supernova: cpu\_time\_info compile fix [\#1647](https://github.com/supercollider/supercollider/pull/1647) ([timblechmann](https://github.com/timblechmann)) -- scsynth:SC\_GraphDef.cpp correct d\_removed packet definition [\#1646](https://github.com/supercollider/supercollider/pull/1646) ([sonoro1234](https://github.com/sonoro1234)) -- lang: prevent Signal.chebyFill from returning nan [\#1645](https://github.com/supercollider/supercollider/pull/1645) ([totalgee](https://github.com/totalgee)) -- SequenceableCollection help: fix some erroneous links [\#1641](https://github.com/supercollider/supercollider/pull/1641) ([nuss](https://github.com/nuss)) -- disallow newCopyArgs in Boolean [\#1638](https://github.com/supercollider/supercollider/pull/1638) ([miguel-negrao](https://github.com/miguel-negrao)) -- Novacollider/freelist updates [\#1636](https://github.com/supercollider/supercollider/pull/1636) ([timblechmann](https://github.com/timblechmann)) -- Non-characters pass ASCII code 0 to key actions [\#1632](https://github.com/supercollider/supercollider/pull/1632) ([jamshark70](https://github.com/jamshark70)) -- plugin interface: fix compile failure with gcc-4.9 [\#1628](https://github.com/supercollider/supercollider/pull/1628) ([timblechmann](https://github.com/timblechmann)) -- Classlib: SystemSynthDefs: Clean up temp defs properly on all platforms [\#1627](https://github.com/supercollider/supercollider/pull/1627) ([jamshark70](https://github.com/jamshark70)) -- Gc fixes and doc final [\#1624](https://github.com/supercollider/supercollider/pull/1624) ([muellmusik](https://github.com/muellmusik)) -- common: oscutils - correct printf format specifier for \(u\)int64\_t [\#1620](https://github.com/supercollider/supercollider/pull/1620) ([timblechmann](https://github.com/timblechmann)) -- scide: fix float regexp [\#1619](https://github.com/supercollider/supercollider/pull/1619) ([timblechmann](https://github.com/timblechmann)) -- supernova: some refactoring [\#1614](https://github.com/supercollider/supercollider/pull/1614) ([timblechmann](https://github.com/timblechmann)) -- server: Assume requested SR was successfully set [\#1612](https://github.com/supercollider/supercollider/pull/1612) ([scztt](https://github.com/scztt)) -- cmake: copy targets to ide app bundle in post-build steps [\#1608](https://github.com/supercollider/supercollider/pull/1608) ([timblechmann](https://github.com/timblechmann)) -- Misc Quarks fixes [\#1606](https://github.com/supercollider/supercollider/pull/1606) ([crucialfelix](https://github.com/crucialfelix)) -- sclang: fix gc-related bug [\#1605](https://github.com/supercollider/supercollider/pull/1605) ([timblechmann](https://github.com/timblechmann)) -- Quarks: avoid a stack overflow from LanguageConfig.includePaths [\#1603](https://github.com/supercollider/supercollider/pull/1603) ([crucialfelix](https://github.com/crucialfelix)) -- fix: Quarks.load quark set [\#1602](https://github.com/supercollider/supercollider/pull/1602) ([crucialfelix](https://github.com/crucialfelix)) -- Topic/ide fixes for master [\#1601](https://github.com/supercollider/supercollider/pull/1601) ([timblechmann](https://github.com/timblechmann)) -- Topic/ide keyevent fixes [\#1598](https://github.com/supercollider/supercollider/pull/1598) ([timblechmann](https://github.com/timblechmann)) -- scide: preferences dialog - fix width of icon list widget [\#1597](https://github.com/supercollider/supercollider/pull/1597) ([timblechmann](https://github.com/timblechmann)) -- Topic/fixes for master [\#1595](https://github.com/supercollider/supercollider/pull/1595) ([timblechmann](https://github.com/timblechmann)) -- qtcollider/sc-ide: make use of QStringLiteral [\#1594](https://github.com/supercollider/supercollider/pull/1594) ([timblechmann](https://github.com/timblechmann)) -- Topic/fixes for master [\#1592](https://github.com/supercollider/supercollider/pull/1592) ([timblechmann](https://github.com/timblechmann)) -- Fix: \#1475 absolute path detection and conversion for windows [\#1590](https://github.com/supercollider/supercollider/pull/1590) ([crucialfelix](https://github.com/crucialfelix)) -- Adding a note about W64, CAF and WAV support as proposed by @scztt [\#1584](https://github.com/supercollider/supercollider/pull/1584) ([gogobd](https://github.com/gogobd)) -- Topic/fixes for master [\#1583](https://github.com/supercollider/supercollider/pull/1583) ([timblechmann](https://github.com/timblechmann)) -- Classlib: Event: Add missing ~latency into ~schedBundleArray calls [\#1582](https://github.com/supercollider/supercollider/pull/1582) ([jamshark70](https://github.com/jamshark70)) -- OSX: Allow cmake install prefix to be overridden [\#1576](https://github.com/supercollider/supercollider/pull/1576) ([bagong](https://github.com/bagong)) -- HID final cleanup, and LID adaption to use similar API [\#1573](https://github.com/supercollider/supercollider/pull/1573) ([sensestage](https://github.com/sensestage)) -- Midi connect all [\#1571](https://github.com/supercollider/supercollider/pull/1571) ([sensestage](https://github.com/sensestage)) -- OSX: return to old default cmake install location ./Install [\#1569](https://github.com/supercollider/supercollider/pull/1569) ([bagong](https://github.com/bagong)) -- class library: HID: fix else statement in findAvailable [\#1567](https://github.com/supercollider/supercollider/pull/1567) ([sensestage](https://github.com/sensestage)) -- fix scope on internal, solves \#1527 [\#1552](https://github.com/supercollider/supercollider/pull/1552) ([adcxyz](https://github.com/adcxyz)) -- add valueActionIfChanged to fix issue\#1460 [\#1551](https://github.com/supercollider/supercollider/pull/1551) ([adcxyz](https://github.com/adcxyz)) -- scsynth: alow using malloc, realloc, free [\#1549](https://github.com/supercollider/supercollider/pull/1549) ([sonoro1234](https://github.com/sonoro1234)) -- fix \#1476 stack corruption triggered by calling a git unixCmd [\#1542](https://github.com/supercollider/supercollider/pull/1542) ([crucialfelix](https://github.com/crucialfelix)) -- quarks: protect during eval of isCompatible fix \#1463 [\#1541](https://github.com/supercollider/supercollider/pull/1541) ([crucialfelix](https://github.com/crucialfelix)) -- validate that a refspec refers to an existing tag [\#1540](https://github.com/supercollider/supercollider/pull/1540) ([crucialfelix](https://github.com/crucialfelix)) -- ide: Switch focus to help docklet on help request [\#1529](https://github.com/supercollider/supercollider/pull/1529) ([scztt](https://github.com/scztt)) -- import boost-1.58 [\#1528](https://github.com/supercollider/supercollider/pull/1528) ([timblechmann](https://github.com/timblechmann)) -- build: switch to alpha1 [\#1525](https://github.com/supercollider/supercollider/pull/1525) ([scztt](https://github.com/scztt)) -- Topic/fix scrollbar hiding osx [\#1523](https://github.com/supercollider/supercollider/pull/1523) ([scztt](https://github.com/scztt)) -- sclang: fix default fonts [\#1522](https://github.com/supercollider/supercollider/pull/1522) ([scztt](https://github.com/scztt)) -- Chebyshev: zero-offset default change plus documentation updates [\#1520](https://github.com/supercollider/supercollider/pull/1520) ([totalgee](https://github.com/totalgee)) -- Fix MIDIIn.connectAll on Linux to only connect to external sources and not internal ones [\#1517](https://github.com/supercollider/supercollider/pull/1517) ([sensestage](https://github.com/sensestage)) -- sclang: Fix incorrect modifiers [\#1513](https://github.com/supercollider/supercollider/pull/1513) ([scztt](https://github.com/scztt)) -- Update Ringz.schelp [\#1511](https://github.com/supercollider/supercollider/pull/1511) ([porres](https://github.com/porres)) -- Update LFPar.schelp [\#1510](https://github.com/supercollider/supercollider/pull/1510) ([porres](https://github.com/porres)) -- Update Resonz.schelp [\#1509](https://github.com/supercollider/supercollider/pull/1509) ([porres](https://github.com/porres)) -- Update Ringz.schelp [\#1508](https://github.com/supercollider/supercollider/pull/1508) ([porres](https://github.com/porres)) -- Update LFPar.schelp [\#1507](https://github.com/supercollider/supercollider/pull/1507) ([porres](https://github.com/porres)) -- Chebyshev polynomials: various fixes \(issue \#1500\) [\#1504](https://github.com/supercollider/supercollider/pull/1504) ([totalgee](https://github.com/totalgee)) -- plugins/LFUGens: generate symmetrical waveforms in LFPulse [\#1503](https://github.com/supercollider/supercollider/pull/1503) ([totalgee](https://github.com/totalgee)) -- Timedll for supernova [\#1497](https://github.com/supercollider/supercollider/pull/1497) ([sonoro1234](https://github.com/sonoro1234)) -- ide: Workaround for completion help view crash [\#1495](https://github.com/supercollider/supercollider/pull/1495) ([scztt](https://github.com/scztt)) -- sclang: fix crash during SerialPort cleanup [\#1494](https://github.com/supercollider/supercollider/pull/1494) ([scztt](https://github.com/scztt)) -- sclang: workaround webkit scrollbar hiding bug [\#1493](https://github.com/supercollider/supercollider/pull/1493) ([scztt](https://github.com/scztt)) -- classlib: Don't pass unprintables in key events [\#1492](https://github.com/supercollider/supercollider/pull/1492) ([scztt](https://github.com/scztt)) -- sclang: set max scroll according to req'd value [\#1491](https://github.com/supercollider/supercollider/pull/1491) ([scztt](https://github.com/scztt)) -- ide: better newline behavior within brackets [\#1490](https://github.com/supercollider/supercollider/pull/1490) ([scztt](https://github.com/scztt)) -- MIDI: make interpreting noteOnZeroAsNoteOff an option rather than a h… [\#1488](https://github.com/supercollider/supercollider/pull/1488) ([sensestage](https://github.com/sensestage)) -- classlib: Use correct spec for x coord of edits [\#1486](https://github.com/supercollider/supercollider/pull/1486) ([scztt](https://github.com/scztt)) -- Add two qt5 packages to dependencies list [\#1481](https://github.com/supercollider/supercollider/pull/1481) ([bagong](https://github.com/bagong)) -- supernova: print version with -v and use -V for verbose [\#1470](https://github.com/supercollider/supercollider/pull/1470) ([sonoro1234](https://github.com/sonoro1234)) -- Help: WritingClasses: Extension methods are like obj-c categories [\#1469](https://github.com/supercollider/supercollider/pull/1469) ([jamshark70](https://github.com/jamshark70)) -- Pluginsunload2 [\#1467](https://github.com/supercollider/supercollider/pull/1467) ([sonoro1234](https://github.com/sonoro1234)) -- remove obsolete Document autocomplete extensions [\#1461](https://github.com/supercollider/supercollider/pull/1461) ([crucialfelix](https://github.com/crucialfelix)) -- Sclang: print version with -v [\#1459](https://github.com/supercollider/supercollider/pull/1459) ([gusano](https://github.com/gusano)) -- Scsynth: print version with -v [\#1458](https://github.com/supercollider/supercollider/pull/1458) ([gusano](https://github.com/gusano)) -- Topic/quarks window is path [\#1457](https://github.com/supercollider/supercollider/pull/1457) ([crucialfelix](https://github.com/crucialfelix)) -- Classlib: lincurve: Prevent incorrect range clipping when curve ~= 0 [\#1441](https://github.com/supercollider/supercollider/pull/1441) ([jamshark70](https://github.com/jamshark70)) -- lang: NetAddr: correctly disconnect tcp socket [\#1440](https://github.com/supercollider/supercollider/pull/1440) ([miguel-negrao](https://github.com/miguel-negrao)) -- protect NetAddr-disconnectAll from failing during shutdown [\#1439](https://github.com/supercollider/supercollider/pull/1439) ([crucialfelix](https://github.com/crucialfelix)) -- classlib: translate modifier keys on mac [\#1434](https://github.com/supercollider/supercollider/pull/1434) ([scztt](https://github.com/scztt)) -- ide: fix crash on session switch [\#1433](https://github.com/supercollider/supercollider/pull/1433) ([scztt](https://github.com/scztt)) -- classlib: Convert note/cc nums in array case [\#1432](https://github.com/supercollider/supercollider/pull/1432) ([scztt](https://github.com/scztt)) -- qtcollider: defer setPropery if called inside drawFunc [\#1431](https://github.com/supercollider/supercollider/pull/1431) ([scztt](https://github.com/scztt)) -- Fix: Install quark dependencies with refspecs [\#1427](https://github.com/supercollider/supercollider/pull/1427) ([crucialfelix](https://github.com/crucialfelix)) -- classlib: note nums / cc channels must be integers [\#1425](https://github.com/supercollider/supercollider/pull/1425) ([scztt](https://github.com/scztt)) -- FreqScope.sc: adapt to new fill property of scope. [\#1419](https://github.com/supercollider/supercollider/pull/1419) ([miczac](https://github.com/miczac)) -- ide: hide toolbox after changing box focus [\#1418](https://github.com/supercollider/supercollider/pull/1418) ([scztt](https://github.com/scztt)) -- lang: don't drop backslashes [\#1417](https://github.com/supercollider/supercollider/pull/1417) ([scztt](https://github.com/scztt)) -- ide: track files opened in a session switch in the recent documents menu [\#1416](https://github.com/supercollider/supercollider/pull/1416) ([scztt](https://github.com/scztt)) -- ide: do not save format settings for controls that are disabled. [\#1415](https://github.com/supercollider/supercollider/pull/1415) ([scztt](https://github.com/scztt)) -- Quarks GUI tiny improvements [\#1414](https://github.com/supercollider/supercollider/pull/1414) ([gusano](https://github.com/gusano)) -- scide: theme: introducing built-in "dark" theme [\#1410](https://github.com/supercollider/supercollider/pull/1410) ([vdonnefort](https://github.com/vdonnefort)) -- \[Help\] add words "Fast Fourier Transform" to guide [\#1407](https://github.com/supercollider/supercollider/pull/1407) ([patrickdupuis](https://github.com/patrickdupuis)) -- Topic/quarks gui enhancements [\#1394](https://github.com/supercollider/supercollider/pull/1394) ([crucialfelix](https://github.com/crucialfelix)) -- Pattern.record method doesn't stop recording [\#1392](https://github.com/supercollider/supercollider/pull/1392) ([gurk](https://github.com/gurk)) -- fixes \#1369 LanguageConfig.current returns "", should return nil [\#1388](https://github.com/supercollider/supercollider/pull/1388) ([crucialfelix](https://github.com/crucialfelix)) -- class library: GridLayout - fix position when using spanning [\#1384](https://github.com/supercollider/supercollider/pull/1384) ([gusano](https://github.com/gusano)) -- fix-DiskOut [\#1382](https://github.com/supercollider/supercollider/pull/1382) ([muellmusik](https://github.com/muellmusik)) -- server GUI: fix initial volume button value [\#1372](https://github.com/supercollider/supercollider/pull/1372) ([gusano](https://github.com/gusano)) -- ide: Fix triggering of doc modified signal [\#1371](https://github.com/supercollider/supercollider/pull/1371) ([scztt](https://github.com/scztt)) -- Date.schelp: corrected peculiar format example [\#1368](https://github.com/supercollider/supercollider/pull/1368) ([miczac](https://github.com/miczac)) -- Fix broken link in Ndef help file [\#1366](https://github.com/supercollider/supercollider/pull/1366) ([albertojgomez](https://github.com/albertojgomez)) -- class library: collectCopy method implementation [\#1357](https://github.com/supercollider/supercollider/pull/1357) ([telephon](https://github.com/telephon)) -- Revert "scide: DocumentSelectPopUp - convert to Popup to fix lost KeyRel... [\#1354](https://github.com/supercollider/supercollider/pull/1354) ([telephon](https://github.com/telephon)) -- scide: DocumentSelectPopUp - convert to Popup to fix lost KeyRelease event [\#1352](https://github.com/supercollider/supercollider/pull/1352) ([timblechmann](https://github.com/timblechmann)) -- cmake: use bundled yaml-cpp by default [\#1351](https://github.com/supercollider/supercollider/pull/1351) ([timblechmann](https://github.com/timblechmann)) -- Topic/improve doc readability [\#1349](https://github.com/supercollider/supercollider/pull/1349) ([telephon](https://github.com/telephon)) -- Classlib: Complex: Fix bugs in 'pow' method [\#1348](https://github.com/supercollider/supercollider/pull/1348) ([jamshark70](https://github.com/jamshark70)) -- Topic/simplify gui documentation [\#1345](https://github.com/supercollider/supercollider/pull/1345) ([telephon](https://github.com/telephon)) -- Tiny enhancements to README\_OSX.md [\#1344](https://github.com/supercollider/supercollider/pull/1344) ([bagong](https://github.com/bagong)) -- Topic nodeproxy gui for numbers [\#1343](https://github.com/supercollider/supercollider/pull/1343) ([telephon](https://github.com/telephon)) -- class library: FunctionList copies before iterating. [\#1341](https://github.com/supercollider/supercollider/pull/1341) ([telephon](https://github.com/telephon)) -- Topic/level indicator [\#1338](https://github.com/supercollider/supercollider/pull/1338) ([scztt](https://github.com/scztt)) -- Topic/ogl filled scope [\#1337](https://github.com/supercollider/supercollider/pull/1337) ([scztt](https://github.com/scztt)) -- Topic/source preview [\#1336](https://github.com/supercollider/supercollider/pull/1336) ([scztt](https://github.com/scztt)) -- Topic/qt5 tim all and cosmetics [\#1334](https://github.com/supercollider/supercollider/pull/1334) ([scztt](https://github.com/scztt)) -- Scide/autocomplete help [\#1333](https://github.com/supercollider/supercollider/pull/1333) ([vdonnefort](https://github.com/vdonnefort)) -- Topic language config current path [\#1327](https://github.com/supercollider/supercollider/pull/1327) ([telephon](https://github.com/telephon)) -- supernova: fix endpoint handling for asynchronous commands [\#1326](https://github.com/supercollider/supercollider/pull/1326) ([timblechmann](https://github.com/timblechmann)) -- qtcollider: avoid un-safe printf by using qWarning\(\) instead [\#1325](https://github.com/supercollider/supercollider/pull/1325) ([timblechmann](https://github.com/timblechmann)) -- Sclang/print version [\#1324](https://github.com/supercollider/supercollider/pull/1324) ([blacksound](https://github.com/blacksound)) -- scsynth: print version and exit with option -V [\#1322](https://github.com/supercollider/supercollider/pull/1322) ([blacksound](https://github.com/blacksound)) -- supernova: use -Z in portaudio 0 hight \(negative\) low others desired har... [\#1318](https://github.com/supercollider/supercollider/pull/1318) ([sonoro1234](https://github.com/sonoro1234)) -- server: GraphDef\_ReadVer1 now reads via ParamSpec\_ReadVer1 [\#1317](https://github.com/supercollider/supercollider/pull/1317) ([telephon](https://github.com/telephon)) -- plugins: fix 10 trigger UGens that did not initialize ZOUT correcly [\#1311](https://github.com/supercollider/supercollider/pull/1311) ([jamshark70](https://github.com/jamshark70)) -- Plugins: Demand: Add Dconst UGen, with schelp [\#1305](https://github.com/supercollider/supercollider/pull/1305) ([jamshark70](https://github.com/jamshark70)) -- Scide/line number [\#1302](https://github.com/supercollider/supercollider/pull/1302) ([vdonnefort](https://github.com/vdonnefort)) -- Topic/linxfade fix [\#1301](https://github.com/supercollider/supercollider/pull/1301) ([timblechmann](https://github.com/timblechmann)) -- class library\(GUI\): rename arguments - \*new [\#1288](https://github.com/supercollider/supercollider/pull/1288) ([gurk](https://github.com/gurk)) -- Topic/timing cleanup [\#1286](https://github.com/supercollider/supercollider/pull/1286) ([muellmusik](https://github.com/muellmusik)) -- Topic/operators [\#1282](https://github.com/supercollider/supercollider/pull/1282) ([telephon](https://github.com/telephon)) -- scide: add OSX delete word ctrl+w shortcut [\#1272](https://github.com/supercollider/supercollider/pull/1272) ([vdonnefort](https://github.com/vdonnefort)) -- Topic/bounded controls: cleaned up branch ready. [\#1270](https://github.com/supercollider/supercollider/pull/1270) ([telephon](https://github.com/telephon)) -- string: regex: rename firstRegexp [\#1269](https://github.com/supercollider/supercollider/pull/1269) ([sofakid](https://github.com/sofakid)) -- scide: introducing restore function [\#1267](https://github.com/supercollider/supercollider/pull/1267) ([vdonnefort](https://github.com/vdonnefort)) -- plugins: EnvGen - fix initialization of hold segment [\#1265](https://github.com/supercollider/supercollider/pull/1265) ([timblechmann](https://github.com/timblechmann)) -- scide: add save-as-extension functionality [\#1264](https://github.com/supercollider/supercollider/pull/1264) ([timblechmann](https://github.com/timblechmann)) -- cmake: externals - don't scare users about auto\_ptr [\#1263](https://github.com/supercollider/supercollider/pull/1263) ([timblechmann](https://github.com/timblechmann)) -- Update Tdef.schelp [\#1262](https://github.com/supercollider/supercollider/pull/1262) ([vividsnow](https://github.com/vividsnow)) -- class library: translations between key value pairs, asscociations, and dictionaries [\#1260](https://github.com/supercollider/supercollider/pull/1260) ([telephon](https://github.com/telephon)) -- Apple build: Prevent supernova from being installed twice [\#1256](https://github.com/supercollider/supercollider/pull/1256) ([bagong](https://github.com/bagong)) -- plugins: Linen checks for prehistoric release message [\#1255](https://github.com/supercollider/supercollider/pull/1255) ([telephon](https://github.com/telephon)) -- Topic/boost 1.57 [\#1249](https://github.com/supercollider/supercollider/pull/1249) ([timblechmann](https://github.com/timblechmann)) -- string: Fix regex cache init, implement firstRegex [\#1248](https://github.com/supercollider/supercollider/pull/1248) ([sofakid](https://github.com/sofakid)) -- Orthographical adjustment to win installer script [\#1244](https://github.com/supercollider/supercollider/pull/1244) ([bagong](https://github.com/bagong)) -- IFFT.schelp: fix example [\#1243](https://github.com/supercollider/supercollider/pull/1243) ([miczac](https://github.com/miczac)) -- sclang: hidapi - fix gc corruption bug [\#1242](https://github.com/supercollider/supercollider/pull/1242) ([timblechmann](https://github.com/timblechmann)) -- Classlib: Pstep: Fix unnecessary creation of an array on every iteration [\#1236](https://github.com/supercollider/supercollider/pull/1236) ([jamshark70](https://github.com/jamshark70)) -- Classlib: QPenPrinter: Add 'bounds' method [\#1235](https://github.com/supercollider/supercollider/pull/1235) ([jamshark70](https://github.com/jamshark70)) -- Classlib: Pfuncn: Like Pfunc, this should call processRest before yield [\#1234](https://github.com/supercollider/supercollider/pull/1234) ([jamshark70](https://github.com/jamshark70)) -- Classlib: Rest: Add 'value' method to simplify mixing rests and numbers [\#1233](https://github.com/supercollider/supercollider/pull/1233) ([jamshark70](https://github.com/jamshark70)) -- Topic/qt5 win [\#1229](https://github.com/supercollider/supercollider/pull/1229) ([timblechmann](https://github.com/timblechmann)) -- cmake: fix & clean up xcode project [\#1225](https://github.com/supercollider/supercollider/pull/1225) ([timblechmann](https://github.com/timblechmann)) -- Fix "QNetworkRequest header not found". [\#1223](https://github.com/supercollider/supercollider/pull/1223) ([ventosus](https://github.com/ventosus)) -- fix help installation [\#1222](https://github.com/supercollider/supercollider/pull/1222) ([nuss](https://github.com/nuss)) -- supernova: /notify - return client id [\#1221](https://github.com/supercollider/supercollider/pull/1221) ([timblechmann](https://github.com/timblechmann)) -- tcp server, retry a couple of times until getting a tcp connection [\#1215](https://github.com/supercollider/supercollider/pull/1215) ([miguel-negrao](https://github.com/miguel-negrao)) -- lang: Fix TCP bugs [\#1214](https://github.com/supercollider/supercollider/pull/1214) ([muellmusik](https://github.com/muellmusik)) -- More document stuff [\#1213](https://github.com/supercollider/supercollider/pull/1213) ([muellmusik](https://github.com/muellmusik)) -- rd/tgrains \(& localbuf\) [\#1207](https://github.com/supercollider/supercollider/pull/1207) ([rd--](https://github.com/rd--)) -- Blocksize-\>BlockSize [\#1206](https://github.com/supercollider/supercollider/pull/1206) ([rd--](https://github.com/rd--)) -- scel: highlight uppercase symbols in emacs [\#1205](https://github.com/supercollider/supercollider/pull/1205) ([bion](https://github.com/bion)) -- HID\_API fix: initClass -\> initClassTree [\#1203](https://github.com/supercollider/supercollider/pull/1203) ([andersvi](https://github.com/andersvi)) -- Adding drawImage example to Pen.schelp [\#1197](https://github.com/supercollider/supercollider/pull/1197) ([thormagnusson](https://github.com/thormagnusson)) -- Create Image.schelp [\#1195](https://github.com/supercollider/supercollider/pull/1195) ([thormagnusson](https://github.com/thormagnusson)) -- Update win32\_api.hpp [\#1192](https://github.com/supercollider/supercollider/pull/1192) ([bagong](https://github.com/bagong)) -- Topic/boost updates [\#1191](https://github.com/supercollider/supercollider/pull/1191) ([timblechmann](https://github.com/timblechmann)) -- cmake/apple: compile targets directly into the app bundle [\#1189](https://github.com/supercollider/supercollider/pull/1189) ([timblechmann](https://github.com/timblechmann)) -- supernova: don't scare osx users by consumer-os [\#1187](https://github.com/supercollider/supercollider/pull/1187) ([timblechmann](https://github.com/timblechmann)) -- fix assign path [\#1186](https://github.com/supercollider/supercollider/pull/1186) ([carlocapocasa](https://github.com/carlocapocasa)) -- scide: mark current session in dialogs [\#1184](https://github.com/supercollider/supercollider/pull/1184) ([timblechmann](https://github.com/timblechmann)) -- scide: fix preferences action name shortcut for osx menu placement [\#1183](https://github.com/supercollider/supercollider/pull/1183) ([timblechmann](https://github.com/timblechmann)) -- cmake: fix typo [\#1182](https://github.com/supercollider/supercollider/pull/1182) ([timblechmann](https://github.com/timblechmann)) -- scide: key up after line evaluation should go to original position [\#1178](https://github.com/supercollider/supercollider/pull/1178) ([timblechmann](https://github.com/timblechmann)) -- cmake: link sclang with tlsf [\#1177](https://github.com/supercollider/supercollider/pull/1177) ([timblechmann](https://github.com/timblechmann)) -- cmake: install help on non-apple systems [\#1175](https://github.com/supercollider/supercollider/pull/1175) ([timblechmann](https://github.com/timblechmann)) -- Topic/scide enhancements [\#1172](https://github.com/supercollider/supercollider/pull/1172) ([timblechmann](https://github.com/timblechmann)) -- boost updates & cmake modernization [\#1166](https://github.com/supercollider/supercollider/pull/1166) ([timblechmann](https://github.com/timblechmann)) -- Fix Scale.newFromKey with tuning argument [\#1161](https://github.com/supercollider/supercollider/pull/1161) ([slpopejoy](https://github.com/slpopejoy)) -- Update Date.schelp [\#1151](https://github.com/supercollider/supercollider/pull/1151) ([thormagnusson](https://github.com/thormagnusson)) -- ide: introducing themes management [\#1150](https://github.com/supercollider/supercollider/pull/1150) ([vdonnefort](https://github.com/vdonnefort)) -- help: chaotic generators warnings removed [\#1149](https://github.com/supercollider/supercollider/pull/1149) ([smrg-lm](https://github.com/smrg-lm)) -- Topic/coremidi crash fix [\#1147](https://github.com/supercollider/supercollider/pull/1147) ([scztt](https://github.com/scztt)) -- plugins: TrigControl behaves like Control. Fixes \#1145 [\#1146](https://github.com/supercollider/supercollider/pull/1146) ([telephon](https://github.com/telephon)) -- Classlib: PlotView: Don't post spec in calcSpecs [\#1135](https://github.com/supercollider/supercollider/pull/1135) ([jamshark70](https://github.com/jamshark70)) -- mergeCharFormat instead of setCharFormat, so existing format info isn't ... [\#1134](https://github.com/supercollider/supercollider/pull/1134) ([scztt](https://github.com/scztt)) -- Colorize lines in the post window. [\#1131](https://github.com/supercollider/supercollider/pull/1131) ([scztt](https://github.com/scztt)) -- Allow the addReplace action to replace existing nodes while keeping the ... [\#1130](https://github.com/supercollider/supercollider/pull/1130) ([scztt](https://github.com/scztt)) -- Show line number \(v3\) [\#1129](https://github.com/supercollider/supercollider/pull/1129) ([vdonnefort](https://github.com/vdonnefort)) -- supernova: ensure that daz/ftz are set in all audio threads [\#1127](https://github.com/supercollider/supercollider/pull/1127) ([timblechmann](https://github.com/timblechmann)) -- File.schelp: changed pathnames to fully qualified [\#1126](https://github.com/supercollider/supercollider/pull/1126) ([miczac](https://github.com/miczac)) -- some supernova fixes [\#1123](https://github.com/supercollider/supercollider/pull/1123) ([timblechmann](https://github.com/timblechmann)) -- ide: add show/hide line number feature [\#1121](https://github.com/supercollider/supercollider/pull/1121) ([vdonnefort](https://github.com/vdonnefort)) -- scsynth coreaudio fixes [\#1118](https://github.com/supercollider/supercollider/pull/1118) ([gurk](https://github.com/gurk)) -- Topic/supernova tcp [\#1109](https://github.com/supercollider/supercollider/pull/1109) ([timblechmann](https://github.com/timblechmann)) -- sclang: fix accidental number literal [\#1105](https://github.com/supercollider/supercollider/pull/1105) ([mohayonao](https://github.com/mohayonao)) -- sclang: fix float radix with pi [\#1104](https://github.com/supercollider/supercollider/pull/1104) ([mohayonao](https://github.com/mohayonao)) -- server: mapped audio bus for /g\_queryTree.reply [\#1103](https://github.com/supercollider/supercollider/pull/1103) ([8c6794b6](https://github.com/8c6794b6)) -- Initialize openPorts variable before startup.scd file is executed. [\#1102](https://github.com/supercollider/supercollider/pull/1102) ([marierm](https://github.com/marierm)) -- Fix ctrl-w [\#1101](https://github.com/supercollider/supercollider/pull/1101) ([muellmusik](https://github.com/muellmusik)) -- supernova: protect synth controls [\#1095](https://github.com/supercollider/supercollider/pull/1095) ([timblechmann](https://github.com/timblechmann)) -- update readline version from homebrew in os x readme [\#1093](https://github.com/supercollider/supercollider/pull/1093) ([seansay](https://github.com/seansay)) -- HID fix cleaned up [\#1092](https://github.com/supercollider/supercollider/pull/1092) ([sensestage](https://github.com/sensestage)) -- ClassLib: SimpleNumber: biexp return calculated value [\#1089](https://github.com/supercollider/supercollider/pull/1089) ([mohayonao](https://github.com/mohayonao)) -- Netbsd compatibility [\#1088](https://github.com/supercollider/supercollider/pull/1088) ([danstowell](https://github.com/danstowell)) -- Tiny correction [\#1080](https://github.com/supercollider/supercollider/pull/1080) ([arnaldorusso](https://github.com/arnaldorusso)) -- Classlib: SystemSynthDefs: Remove postln that shouldn't have been committed [\#1076](https://github.com/supercollider/supercollider/pull/1076) ([jamshark70](https://github.com/jamshark70)) -- Classlib: Server.sc: Prevent an inadvertent "non-inlined function" warning [\#1075](https://github.com/supercollider/supercollider/pull/1075) ([jamshark70](https://github.com/jamshark70)) -- cmake: disable some msvc warnings [\#1074](https://github.com/supercollider/supercollider/pull/1074) ([timblechmann](https://github.com/timblechmann)) -- Classlib: GUI: Reinstate proper functioning of ObjectGui system [\#1073](https://github.com/supercollider/supercollider/pull/1073) ([marierm](https://github.com/marierm)) -- lang: include missing header [\#1072](https://github.com/supercollider/supercollider/pull/1072) ([timblechmann](https://github.com/timblechmann)) -- class library: single lag value in NamedControl shouldn't result in an a... [\#1071](https://github.com/supercollider/supercollider/pull/1071) ([miguel-negrao](https://github.com/miguel-negrao)) -- sclang: deepfreeze - do not freeze immutable / permanent objects [\#1069](https://github.com/supercollider/supercollider/pull/1069) ([timblechmann](https://github.com/timblechmann)) -- DreamHouse.scd: replaced code on request by author [\#1067](https://github.com/supercollider/supercollider/pull/1067) ([miczac](https://github.com/miczac)) -- supernova: make apple clang happy [\#1066](https://github.com/supercollider/supercollider/pull/1066) ([timblechmann](https://github.com/timblechmann)) -- Help: Fix envelope handling in a pattern-cookbook example [\#1061](https://github.com/supercollider/supercollider/pull/1061) ([jamshark70](https://github.com/jamshark70)) -- Fix NRT file paths [\#1060](https://github.com/supercollider/supercollider/pull/1060) ([jamshark70](https://github.com/jamshark70)) -- lang: Fix memory corruption bug introduced in commit ac613331d5062bcd1ae... [\#1054](https://github.com/supercollider/supercollider/pull/1054) ([muellmusik](https://github.com/muellmusik)) -- syntax highlight and allow running code from schelp files [\#1052](https://github.com/supercollider/supercollider/pull/1052) ([miguel-negrao](https://github.com/miguel-negrao)) -- Classlib: fixed PatternProxy constrainStream so defaultQuant works [\#1043](https://github.com/supercollider/supercollider/pull/1043) ([d0kt0r0](https://github.com/d0kt0r0)) -- Classlib: Change NetAddr's default port to nil [\#1040](https://github.com/supercollider/supercollider/pull/1040) ([jamshark70](https://github.com/jamshark70)) -- class library: Env\#\*step easier creation of step envelopes [\#1039](https://github.com/supercollider/supercollider/pull/1039) ([miguel-negrao](https://github.com/miguel-negrao)) -- sclang: Fixed bug where osc bundles were being chooped midway [\#1038](https://github.com/supercollider/supercollider/pull/1038) ([miguel-negrao](https://github.com/miguel-negrao)) -- Small tweaks required for building libscsynth for Win 64-bit [\#1035](https://github.com/supercollider/supercollider/pull/1035) ([maedoc](https://github.com/maedoc)) -- lang: capture elapsedTime\(\) when a packet is received, rather than just ... [\#1032](https://github.com/supercollider/supercollider/pull/1032) ([muellmusik](https://github.com/muellmusik)) -- plugins: EnvGen - initialize level of initial \hold segments [\#1028](https://github.com/supercollider/supercollider/pull/1028) ([timblechmann](https://github.com/timblechmann)) -- Update INSTALL [\#1025](https://github.com/supercollider/supercollider/pull/1025) ([jwakely](https://github.com/jwakely)) -- plugins: EnvGen - update number of produced samples on audio-rate gates [\#1024](https://github.com/supercollider/supercollider/pull/1024) ([timblechmann](https://github.com/timblechmann)) -- sclang: add terminal standalone option [\#1021](https://github.com/supercollider/supercollider/pull/1021) ([miguel-negrao](https://github.com/miguel-negrao)) -- Server multi client [\#1019](https://github.com/supercollider/supercollider/pull/1019) ([muellmusik](https://github.com/muellmusik)) -- sc class library: events: allocWrite type [\#1017](https://github.com/supercollider/supercollider/pull/1017) ([vividsnow](https://github.com/vividsnow)) -- fix filepath typo in os x readme file [\#1015](https://github.com/supercollider/supercollider/pull/1015) ([seansay](https://github.com/seansay)) -- sclang/identDictput: test if object is mutable before changing [\#1012](https://github.com/supercollider/supercollider/pull/1012) ([mortuosplango](https://github.com/mortuosplango)) -- Disable AppNap in QtCollider, sclang, and scsynth [\#1011](https://github.com/supercollider/supercollider/pull/1011) ([snickell](https://github.com/snickell)) -- Minor enhancements after first rewrite [\#1003](https://github.com/supercollider/supercollider/pull/1003) ([bagong](https://github.com/bagong)) -- scdoc: minor correction to Dshuf new argument - should be repeats and no... [\#1002](https://github.com/supercollider/supercollider/pull/1002) ([redFrik](https://github.com/redFrik)) -- Rework OSX Readme [\#1000](https://github.com/supercollider/supercollider/pull/1000) ([bagong](https://github.com/bagong)) -- Add matchLangIP method and primitive [\#998](https://github.com/supercollider/supercollider/pull/998) ([muellmusik](https://github.com/muellmusik)) -- Fix open document [\#997](https://github.com/supercollider/supercollider/pull/997) ([muellmusik](https://github.com/muellmusik)) -- Mac OS 10.9 SDK compatibility [\#994](https://github.com/supercollider/supercollider/pull/994) ([mortuosplango](https://github.com/mortuosplango)) -- update to boost-1.55 [\#993](https://github.com/supercollider/supercollider/pull/993) ([timblechmann](https://github.com/timblechmann)) -- scvim: Adding tmux support, fixing screen support, fixing sclang restart/start/kill \(also in terminal multiplexers\) [\#990](https://github.com/supercollider/supercollider/pull/990) ([dvzrv](https://github.com/dvzrv)) -- boost: fix build error with recent versions of glibc [\#988](https://github.com/supercollider/supercollider/pull/988) ([gusano](https://github.com/gusano)) -- cmake: disable SC\_WII by default [\#987](https://github.com/supercollider/supercollider/pull/987) ([gusano](https://github.com/gusano)) -- external libs: bump nova-tt [\#983](https://github.com/supercollider/supercollider/pull/983) ([timblechmann](https://github.com/timblechmann)) -- help: update phasor [\#978](https://github.com/supercollider/supercollider/pull/978) ([miguel-negrao](https://github.com/miguel-negrao)) -- Topic/env step2 [\#975](https://github.com/supercollider/supercollider/pull/975) ([timblechmann](https://github.com/timblechmann)) -- class library: allow NamedControl.new\(\) to return non-arrayed Lag \(fixing issue 973\) [\#974](https://github.com/supercollider/supercollider/pull/974) ([totalgee](https://github.com/totalgee)) -- Topic/for master [\#971](https://github.com/supercollider/supercollider/pull/971) ([timblechmann](https://github.com/timblechmann)) -- Ide editor improvements improvements [\#970](https://github.com/supercollider/supercollider/pull/970) ([muellmusik](https://github.com/muellmusik)) -- lang: Add editable property to QWebView [\#969](https://github.com/supercollider/supercollider/pull/969) ([muellmusik](https://github.com/muellmusik)) -- Topic/for master [\#963](https://github.com/supercollider/supercollider/pull/963) ([timblechmann](https://github.com/timblechmann)) -- class library: speed improvements in a few places where bit operations are used. [\#962](https://github.com/supercollider/supercollider/pull/962) ([redFrik](https://github.com/redFrik)) -- Topic/for master [\#953](https://github.com/supercollider/supercollider/pull/953) ([timblechmann](https://github.com/timblechmann)) -- Scide document rework text mirror [\#948](https://github.com/supercollider/supercollider/pull/948) ([muellmusik](https://github.com/muellmusik)) -- class library: pbind midi type - fix for sending sysex [\#947](https://github.com/supercollider/supercollider/pull/947) ([redFrik](https://github.com/redFrik)) -- help: changed .send\(s\) for .add in SynthDef example [\#946](https://github.com/supercollider/supercollider/pull/946) ([brunoruviaro](https://github.com/brunoruviaro)) -- Classlib: Fix 2 issues regarding Rest and patterns [\#941](https://github.com/supercollider/supercollider/pull/941) ([jamshark70](https://github.com/jamshark70)) -- Topic/asio appclock [\#940](https://github.com/supercollider/supercollider/pull/940) ([timblechmann](https://github.com/timblechmann)) -- class library: NamedControl - avoid lags if possible [\#938](https://github.com/supercollider/supercollider/pull/938) ([timblechmann](https://github.com/timblechmann)) -- Documentation: Escape char in string literals, and thisProcess.nowExecutingPath [\#935](https://github.com/supercollider/supercollider/pull/935) ([jamshark70](https://github.com/jamshark70)) -- Filter Help Docs: Warning about frequencies close to 0 [\#934](https://github.com/supercollider/supercollider/pull/934) ([miczac](https://github.com/miczac)) -- Simplify and enhance Windows installer [\#929](https://github.com/supercollider/supercollider/pull/929) ([bagong](https://github.com/bagong)) -- Library: Prevent inline-function warning in FFTUnpacking.sc [\#922](https://github.com/supercollider/supercollider/pull/922) ([jamshark70](https://github.com/jamshark70)) -- Class Library: Object - performance improvements for Object.dup [\#921](https://github.com/supercollider/supercollider/pull/921) ([thormagnusson](https://github.com/thormagnusson)) -- linux readme: qt5 limitation [\#917](https://github.com/supercollider/supercollider/pull/917) ([miguel-negrao](https://github.com/miguel-negrao)) -- scsynth: support for receiving nested OSC bundles. [\#914](https://github.com/supercollider/supercollider/pull/914) ([ventosus](https://github.com/ventosus)) -- supernova: synthdef corruption - added synthef path to error message [\#912](https://github.com/supercollider/supercollider/pull/912) ([miguel-negrao](https://github.com/miguel-negrao)) -- SCDoc: remove MathJax support [\#910](https://github.com/supercollider/supercollider/pull/910) ([gusano](https://github.com/gusano)) -- implement sclang sockets via boost.asio & move ReplyAddress out of the public interface [\#903](https://github.com/supercollider/supercollider/pull/903) ([timblechmann](https://github.com/timblechmann)) -- HelpSource: MIDIFunc: show how to free a MIDIFunc [\#900](https://github.com/supercollider/supercollider/pull/900) ([gusano](https://github.com/gusano)) -- make sure GUI.skins is not nil in ProxyMixerOld [\#893](https://github.com/supercollider/supercollider/pull/893) ([redFrik](https://github.com/redFrik)) -- scide: sc\_editor: include parenthesis in regionAroundCursor\(\) [\#892](https://github.com/supercollider/supercollider/pull/892) ([gusano](https://github.com/gusano)) -- Pproto minor typo fix [\#891](https://github.com/supercollider/supercollider/pull/891) ([blacksound](https://github.com/blacksound)) -- Topic/markdown for readme files [\#890](https://github.com/supercollider/supercollider/pull/890) ([gusano](https://github.com/gusano)) -- sclang: support for receiving nested OSC bundles. [\#881](https://github.com/supercollider/supercollider/pull/881) ([ventosus](https://github.com/ventosus)) -- sclang: support for more non-standard OSC types [\#878](https://github.com/supercollider/supercollider/pull/878) ([ventosus](https://github.com/ventosus)) -- sclang bugfix: proper handling of Open Sound Control Blob Arguments [\#877](https://github.com/supercollider/supercollider/pull/877) ([ventosus](https://github.com/ventosus)) -- Quarks: use new sf.net repo url [\#873](https://github.com/supercollider/supercollider/pull/873) ([gusano](https://github.com/gusano)) -- classlib \(quarks\): Defer svn path checking until needed; try{} the check [\#865](https://github.com/supercollider/supercollider/pull/865) ([jamshark70](https://github.com/jamshark70)) -- Ndef.schelp, Shaper.schelp, Wavetable.schelp [\#846](https://github.com/supercollider/supercollider/pull/846) ([miczac](https://github.com/miczac)) -- Server : pings before considered dead [\#842](https://github.com/supercollider/supercollider/pull/842) ([miguel-negrao](https://github.com/miguel-negrao)) -- remove bundled elisp library tree-widget.el [\#840](https://github.com/supercollider/supercollider/pull/840) ([tarsius](https://github.com/tarsius)) -- scdoc: Pseg: duration pattern in beats not seconds [\#827](https://github.com/supercollider/supercollider/pull/827) ([vividsnow](https://github.com/vividsnow)) -- new version of README.txt, corrections to help docs [\#822](https://github.com/supercollider/supercollider/pull/822) ([miczac](https://github.com/miczac)) -- examples: ASA - simplify and cleanup [\#819](https://github.com/supercollider/supercollider/pull/819) ([gusano](https://github.com/gusano)) -- updated README.txt [\#818](https://github.com/supercollider/supercollider/pull/818) ([miczac](https://github.com/miczac)) -- thisFunction/thisFunctionDef keywords in help [\#809](https://github.com/supercollider/supercollider/pull/809) ([vividsnow](https://github.com/vividsnow)) -- Update the description of LinPan2. [\#808](https://github.com/supercollider/supercollider/pull/808) ([vanhuman](https://github.com/vanhuman)) -- Updates the description. [\#807](https://github.com/supercollider/supercollider/pull/807) ([vanhuman](https://github.com/vanhuman)) -- Changed the description of Balance2 into something a bit more explanatory. [\#806](https://github.com/supercollider/supercollider/pull/806) ([vanhuman](https://github.com/vanhuman)) -- Added missing closing "\)" in MIDI input example. [\#803](https://github.com/supercollider/supercollider/pull/803) ([attejensen](https://github.com/attejensen)) -- sc ide: settings editor: move insertMatchingTokens setting [\#796](https://github.com/supercollider/supercollider/pull/796) ([gusano](https://github.com/gusano)) -- Update GUI-Layout-Management.schelp [\#795](https://github.com/supercollider/supercollider/pull/795) ([olafklingt](https://github.com/olafklingt)) -- sc ide: sc editor: slight improvement of matching token insertion [\#792](https://github.com/supercollider/supercollider/pull/792) ([gusano](https://github.com/gusano)) -- sc ide: settings editor: move insertMatchingTokens setting [\#791](https://github.com/supercollider/supercollider/pull/791) ([gusano](https://github.com/gusano)) -- class library: UGen - provide bilin [\#781](https://github.com/supercollider/supercollider/pull/781) ([timblechmann](https://github.com/timblechmann)) -- scide: left|right arrow keys disable completion [\#773](https://github.com/supercollider/supercollider/pull/773) ([gusano](https://github.com/gusano)) -- removed superfluous links under related [\#766](https://github.com/supercollider/supercollider/pull/766) ([redFrik](https://github.com/redFrik)) -- added related link to SendReply [\#765](https://github.com/supercollider/supercollider/pull/765) ([redFrik](https://github.com/redFrik)) -- Update Warp1.schelp [\#759](https://github.com/supercollider/supercollider/pull/759) ([redFrik](https://github.com/redFrik)) -- fix git recursive flag command [\#747](https://github.com/supercollider/supercollider/pull/747) ([hems](https://github.com/hems)) -- Adding "Contributing with the documentation" to "Writing Help.schelp" file [\#746](https://github.com/supercollider/supercollider/pull/746) ([hems](https://github.com/hems)) -- cmake: link pthreads libraries [\#742](https://github.com/supercollider/supercollider/pull/742) ([gusano](https://github.com/gusano)) -- Topic/simplify cpu dispatching [\#732](https://github.com/supercollider/supercollider/pull/732) ([timblechmann](https://github.com/timblechmann)) -- Multichannel envelope fixes [\#718](https://github.com/supercollider/supercollider/pull/718) ([timblechmann](https://github.com/timblechmann)) -- Topic/ide cmdline [\#711](https://github.com/supercollider/supercollider/pull/711) ([timblechmann](https://github.com/timblechmann)) -- out-comment s\_tick [\#709](https://github.com/supercollider/supercollider/pull/709) ([2mc](https://github.com/2mc)) -- include: split public and private headers & prototype libsclang interface [\#703](https://github.com/supercollider/supercollider/pull/703) ([timblechmann](https://github.com/timblechmann)) -- in OpenBSD search for classes using cmake configuration [\#685](https://github.com/supercollider/supercollider/pull/685) ([acamari](https://github.com/acamari)) -- ports supercollider to OpenBSD [\#683](https://github.com/supercollider/supercollider/pull/683) ([acamari](https://github.com/acamari)) -- scide: code editor - insert path when dropping unknown files [\#663](https://github.com/supercollider/supercollider/pull/663) ([totalgee](https://github.com/totalgee)) -- asSynthDef and SynthDef.name should return symbols [\#661](https://github.com/supercollider/supercollider/pull/661) ([timblechmann](https://github.com/timblechmann)) -- Fix for \#657; copy/paste to OS X Mail loses tabs [\#659](https://github.com/supercollider/supercollider/pull/659) ([totalgee](https://github.com/totalgee)) -- Main:startup: initialize openPorts before StartUp.run to enable OSCFunc ... [\#647](https://github.com/supercollider/supercollider/pull/647) ([iani](https://github.com/iani)) -- Properly initialize mSaveTime on document open and save. [\#597](https://github.com/supercollider/supercollider/pull/597) ([scztt](https://github.com/scztt)) -- Corrected some typos and errors in the help docs [\#506](https://github.com/supercollider/supercollider/pull/506) ([andrewcsmith](https://github.com/andrewcsmith)) -- Fixed two typos in the update news [\#500](https://github.com/supercollider/supercollider/pull/500) ([andrewcsmith](https://github.com/andrewcsmith)) -- class library: fix server meter initialization [\#484](https://github.com/supercollider/supercollider/pull/484) ([timblechmann](https://github.com/timblechmann)) -- Refer to TChoose from the TIRand help file [\#355](https://github.com/supercollider/supercollider/pull/355) ([rukano](https://github.com/rukano)) -- Typo in PparGroup's help file example [\#351](https://github.com/supercollider/supercollider/pull/351) ([rukano](https://github.com/rukano)) -- corrected pathname for sound file in LevelIndicator.schelp [\#347](https://github.com/supercollider/supercollider/pull/347) ([miczac](https://github.com/miczac)) - - -SuperCollider v3.6.5, released 2013-04 -====================================== - -Jakob Leben (10): -- sc class library: fix regression in Server:-scope -- scide: add "reset font size" action to post window and help browser -- scide: autocompletion: order methods by class hierarchy when class is known -- documentation: improve info on logical time, clocks and threads -- documentation: more info on threads, clocks and time -- sclang: PyrThread: ensure slot type safety -- documentation: clarify the functioning of Thread and Routine -- streamline README.txt -- documentation: improve thisFunction and thisFunctionDef - -Julian Rohrhuber (3): -- sc class library: replacing the source of a node proxy led to hanging patterns -- sc class library: NodeProxy:cleanNodeMapnow works even if no settings are present -- fix typo / removing the implication that ansi-C isn't appropriate - -Michael Zacherl (5): -- In.schelp: replaced AudioIn w/ SoundIn in reference, added loudness in example section -- Knob.schelp: repositioned text in mouseOverAction example -- Klang.schelp: changed 'filter' to 'oscillator' in methods section -- DynKlang.schelp: changed 'filter' to 'oscillator' in methods section -- README.txt: reworked and simplified with focus on SC IDE and version 3.6 - -vividsnow (2): -- scdoc: Pseg: duration pattern in beats not seconds -- scdoc: add thisFunctionDef/thisFunction - - -SuperCollider v3.6.4, released 2013-04 -====================================== - -Dan Stowell (1): -- SinOsc and Osc: note phase issue beyond +-8pi. Fixes #815 - -Jakob Leben (34): -- sclang: fix Char:-isUpper/isLower -- qtcollider: add QListView:-selectionAction -- qtcollider: add QListView:-selection setter -- scide: remove credits for kiberpipa -- help: GUI - improve documentation of alignment options -- help: add guide on creating standalone applications -- sc ide: show impl/ref lookup dialogs even when no text under cursor -- sc class library: ClassBrowser: fix search with empty query string -- sc ide: interpreter: post notification on quit or crash -- qtcollider: pass exit code up to SC_TerminalClient -- sc ide: fix and improve region detection -- sc ide: sc editor: add action to select pair of brackets enclosing cursor -- sc ide: sc editor: update bracket match highlight after applying settings -- qtcollider: QTextView: increase 'selectedString' compatibility, fix docs -- qtcollider: envelope view: fix drawing of quadratic and cubic curves -- sc ide: help browser: delegate docklet focus to webpage view -- sc ide: docklet: when focusing, also activate window -- sc ide: fix auto-indenting closing brackets on certain locales -- sc ide: ensure dock widgets within screen bounds when first undocked -- qtcollider: QTextView: set 'enterInterpretsSelection' to true by default -- scide: config dialog: preserve font when toggling "show only monospaced" -- scide: select line in code on triple click -- scide: ensure last active window activated after open/save file dialog -- scide: on startup, remove invalid file paths from "recent documents" list -- scide: improve default paths in open/save dialogs -- scide: save document dialog: always allow saving with any extension -- scide: editor: highlight unmatched brackets just like mismatched ones -- qtcollider: StackLayout: fix crash when removing contained widget -- qtcollider: do not allow reparenting layouts, to avoid crashing -- scide: fix closing tool panels on Escape -- scide: impl/ref lookup: close dialog when opening documentation for class -- Revert "Revert "scide: on Mac, make one global menu to share by all windows"" -- scide: prevent erroneous overriding of shortcuts on Mac OS - -James Harkins (2): -- Library: Bugfix for PmonoArtic inside other patterns w/cleanup -- Library: Fix Pfset passing child cleanups up to its parent(s) - -Tim Blechmann (10): -- Help: fix rlpf help file -- plugins: DemandEnv - fix shape polling -- plugins: GrainBuf - catch both inf and NaN phase arguments -- scsynth: prevent possible buffer overflow -- cmake build system: fix x11 include paths -- class library: Bus - fix get method for multi-channel busses -- class library: Server.scope - remove limitation to 16 channels -- plugins: LocalOut - don't crash server if LocalIn is missing -- sclang: prevent buffer overflow -- scide: link with librt - -Victor Bombi (1): -- supernova: CMakeLists.txt must set include dirs for fftw3f - -attejensen (1): -- Update MIDI.schelp - - -SuperCollider v3.6.3, released 2013-02 -====================================== - -Dan Stowell (2): -- Add cmake option NO_GPL3 to simplify building of GPL2 binaries -- SCDoc: generalise licensing from GPL3+ to GPL2+ - -Graeme Urquhart (2): -- Issue #702 fix: sendSelection receives NSString -- String:Help of split method matches implementation - -Jakob Leben (24): -- qtcollider: relicense to GPL version 2 -- sclang: terminal client - fix and simplify request handling -- qtcollider: support String:-speak when Speech class is available -- cmake: set LIBSCSYNTH=ON by default on Windows -- qtcollider: QView - do not block beginDrag if currentDrag is already set -- qtcollider: QKnob - let 'background' affect knob color -- sc ide: improve server boot/quit actions -- sc ide: improve interpreter start/stop actions -- sc ide: improve default server booting shortcuts -- qtcollider: sf view: fix loading non-power-of-two floating point files -- sc ide: disable zooming by mouse wheel (scrolling) -- sc ide: editor - set Qt::WA_MacNoClickThrough on viewport -- help: improve the SC IDE guide -- qtcollider: implement QtGUI:*cursorPosition -- class library: Platform - redirect getMouseCoords to GUI -- sc ide: post window - disable click-through on Mac OS X -- sc ide: add Help menu action to open the SuperCollider IDE guide -- help: SC IDE guide - show scaled screenshot, with a link to unscaled one -- sc ide: docklets - fix geometry after undocking -- sc ide: change default shortcuts for Go To Next/Previous Region -- sc ide: make cmd-period silent -- sc ide: improve status box context menu interaction -- sc ide: add context menu to interpreter status box - -James Harkins (4): -- Fix title:: tags in the practical guide: user-friendly titles vs. filenames -- Add Practical Guide Cookbook entry on swing rhythms -- PG_Cookbook_08: Fix an omitted copy/paste -- Fix typo in analysis example: BufWr.ar on a kr signal is bad - -Tim Blechmann (22): -- supernova: fix crash on /quit with portaudio -- class library: PlusFreqScope - survive server actions -- scide: remove ctrl-b shortcut -- class library: FreqScope - fix for starting scope after booting -- common: introduce new autogenerated SC_Version.hpp header -- class library: fix Array-unlace -- supernova: plugin interface - guard access to rt-pool -- plugins: IOUgens - prevent buffer overflow -- Help: BrownNoise - use a convention of -20db -- supernova: sized array - assert boundaries -- supernova: sndfile backend - correctly use correct blocksize for temp buffer -- supernova: jack backend - avoid uninitialized value -- supernova: nrt engine - nicer formatting of message log -- plugins: ui ugens - initialize libx11 for threading -- supernova: start dsp threads from run methods -- sclang: library config - correcty handle library config command line argument -- server plugins: RecordBuf - fix multichannel corruption and buffer overrun -- fftlib: for now we avoid intptr_t -- server plugins: fix div_ka -- plugins: osc ugens - fix GET_TABLE macro -- plugins: OscUGens - ensure buffer initialization -- scide: add menu item to open the user application support directory - -Victor Bombi (2): -- common: win32 - avoid integer truncation -- supernova: correctly print synthdef path - - -SuperCollider v3.6.2, released 2012-12 -====================================== - -BS Collist (1): -- qtcollider: QEnvelopeView - add method to return all selected indexes - -Jakob Leben (32): -- common (windows): unify access to known folder paths -- sclang (windows): add primitive to access "My Documents" dir -- cmake: expand the search for libsndfile and libfftw3f -- cmake (Windows): use CMAKE_LIBRARY_PATH for fixup_bundle() search dirs -- scide: let cmd-period have an application-wide shortcut context -- scide: DocumentManager - refresh cached file info before storing save time -- scide: help browser - support doc/impl/ref lookup for selected text -- scide: search widget hierarchy upwards for first handler of lookup actions -- scide: GenericLookupDialog - no need for subclassing QTreeView anymore -- scide: make doc/impl/ref lookup shortcuts work on detached docklets -- scide: always pop up lookup dialogs with the active window as the parent -- scide: update translation sources, add italian -- qtcollider: start drag within mouse event handler -- qtcollider: QStethoscope2 - reverse operation of horizontal zoom slider -- scide: GenericCodeEditor - set Qt::WA_MacNoClickThrough widget attribute -- scide: SyntaxHighlighter - swap QChar::toAscii() for toLatin1() -- scide: Document - swap QString::toAscii() for QString::toLatin1() -- scide: MainWindow - substitute deprecated QFileDialog::setFilter(QString) -- scide: MainWindow - include QMimeData -- scide: PostWindow - include QMimeData -- scide: GenericCodeEditor - include QMimeData -- qtcollider: QWidgetProxy - include QDrag -- sclang: SCIpcClient - fix includes -- cmake: sclang - fix building when SC_IDE=ON and SC_QT=OFF -- cmake: scide - add QtNetwork to required Qt modules -- qtcollider: QStethoscope2 - refactor for robustness -- qtcollider: QListView - add 'selection' method to get all selected indexes -- help: document new 'selection' methods of EnvelopeView and ListView -- help: View - improve documentation, fix links -- help: fix a large amount of broken links due to changes in SCDoc -- cmake: FindPortmidi - actually implement auto-finding portmidi - -James Harkins (1): -- Fix bug introduced by 7f29d322: Don't free the same alloc'ed index twice - -Tim Blechmann (18): -- scide: DocumentManager - read files via QTextStream to decode characters -- supernova: osc handler - fix completion message and done message for /b_close -- supernova: asynchronous log - fix string splitting -- supernova: compile fix -- supernova: send /fail messages on /notify commands -- supernova: send /fail on buffer commands -- supernova: fix sndfile error handling -- win32: ensure stack alignment -- plugins: fix GrainBuf cleanup -- Help: SymbolicNotations - replace SCSlider with Slider -- supernova: plugin interface - protect against multiple done actions -- Help: remove memStore -- class library: Buffer - freeMsg should clear all cached information -- supernova: osc interface - fix bug with node reordering -- supernova: buffer_read - don't check samplerate when queueing soundfiles -- class library: fix Function.plot -- plugins: RecordBuf - fix recordbuf overrun & fix done action handling -- Help: RecordBuf - RecordBuf is recording, not playing - - -SuperCollider v3.6.1, released 2012-11 -====================================== - -Dan Stowell (1): -- SpecFlatness: prevent NaN output for silence (thanks nick collins) - -Glen Fraser (1): -- scide: code editor / post window - copy using plain text - -Jakob Leben (13): -- update README_WINDOWS.txt for changed application data locations -- fix compilation with MinGW (broken static initialization) -- scide: find/replace - use Qt translation system to handle singular/plural -- cmake: scide - improve handling translations -- scide: load translations from app resource directory -- scide: update translation source files -- scide: change english translation file name to serve as fallback -- sclang: (Windows) change app support dir from roaming to local -- scide: load fallback translation in addition to locale translation -- sclang: add primitive to allow Platform to access user home directory -- class library: WindowsPlatform - set a user-friendly default recordingsDir -- readme (windows): add instructions on moving application data - -Tim Blechmann (1): -- class library: SynthDef - writeDefFile should use default SynthDef path - - -SuperCollider v3.6.0, released 2012-11 -====================================== - -Major release with many new features - please see the help doc -"News in 3.6" for more information. -http://doc.sccode.org/Guides/News-3_6.html - - -SuperCollider v3.5.7, released 2012-11 -====================================== - -Jakob Leben (6): -- sclang: (Windows) fix String:-getenv to return variables set with -setenv -- class library: ServerMeter - fix closing window when server has never run -- sclang: fix 'gcd' and 'lcm' methods -- qtcollider: QStethoscope2 - fix width of number boxes -- qtcollider: fix SoundFileView:-selectAll and -selectNone -- qtcollider: fix QPen:*matrix setter - combine instead of replace matrix - -Julian Rohrhuber (1): -- class library: jitlib - Avoiding sync problems with free/play - -Tim Blechmann (9): -- plugins: filters - fix initialization of filter parameters -- external libraries: nova-simd update -- external libraries: move nova-simd submodule to github -- plugins: DelayN - fix initialization code -- Revert "plugins: DelayN - fix initialization code" -- common: fftlib - increase size limit for ffts -- sclang: server shm interface - fix setting of multiple values -- plugin interface: provide wrapper class for c++-style unit generators - - -SuperCollider v3.5.6, released 2012-10 -====================================== - -Dan Stowell (2): -- Improve error messages when cmake can't find optional things -- Compile fix for Qt widget on arm. Upstreamed from debian-multimedia (thanks Felipe Sateler) - -James Harkins (1): -- Fix Spawner bug: cleanup.update is mandatory, including rest events - -Jonatan Liljedahl (7): -- Quarks: fix typo and also open old-style helpfiles ending with .htm -- Include old non-converted helpfiles in SCDoc document index -- HelpBrowser: also open RTF files with whatever is available -- Even more support for old help files -- scdoc: use JS hasOwnProperty instead of testing the property directly -- HelpBrowser: post javascript errors -- SCDoc: properly escape keys in generated docmap.js - -Joshua Parmenter (1): -- Fix ServerOptions instance var ordering, etc., to make internal server booting use correct number of audio bus channels. - -Tim Blechmann (4): -- cmake: provide explicit option to use system-installed boost libraries -- external libraries - revert submodule updates -- lang: SerialPort - fix invocation of done action - - -SuperCollider v3.5.5, released 2012-09 -====================================== - -Dan Stowell (1): -- Fix bug in Complex:exp - -James Harkins (1): -- Convert misleading and confusing OSC-style example into object-style - -Joshua Parmenter (2): -- fix IEnvGen kr UGen -- fix cocoa window alpha setting - -Tim Blechmann (12): -- sclang: fix Array:extendWrap for negative size argument -- sclang: array primitivies - protect all array extend primitives against negative sizes -- scdoc: fix string comparison in parser -- supernova: sized_array - don't allocate memory for zero-sized array -- plugins: GrainBuf - fix crash when using nan as position control -- scsynth: ensure alignment of wire buffers -- supernova: catch exceptions when reading synthdefs -- supernova: free_aligned - fix fallback implementation for null pointers -- cmake build system: dont compile shared library with -fwhole-program -- plugins: GrainBuf - allocate grain after reading window -- plugins: GrainBuf - fix access to default hann window - -Victor Bombi (1): -- cpu usage for portaudio_backend.hpp - - -SuperCollider v3.5.4, released 2012-08 -====================================== - -Dan Stowell (5): -- Fix typo that causes build fail on big-endian archs, thanks Felipe Sateler -- fix build on ARM (where qreal==float); thanks Felipe Sateler -- Strip gremlin characters from JITLib wrapForNodeProxy.sc -- choose clipping rather than wraparound for writing integer-format audio files (libsndfile setting) -- arm build fix: another double->qreal in QcMultiSlider - -James Harkins (1): -- Improve documentation of GUI kits and kit switching - -Jonatan Liljedahl (2): -- SCDoc: Use proper static string constants instead of comparing string literals. -- Revert "reinstate Mix.arFill and Mix.krFill for backward compatibility reasons" - -Julian Rohrhuber (2): -- reinstate Mix.arFill and Mix.krFill for backward compatibility reasons -- improve string helpfile - -Tim Blechmann (10): -- plugins: GrainUGens - handle unallocated window buffers -- plugins: GrainBuf - reject multi-channel buffers -- plugins: grain ugens - treat empty window buffers correctly -- server: provide memory alignment wrappers for msvc -- server: scsynth - ensure correct deallocation of SndBuffer memory -- server/language/supernova: automatically clip integer audio files -- scsynth: correctly free aligned buffers -- Help: fix OSC function in SendPeakRMS help file -- package: use alternative implementation of git-archive-all - -Victor Bombi (1): -- MSVC fix - - -SuperCollider v3.5.3, released 2012-06 -====================================== - -Dan Stowell (6): -- LocalIn helpfile fix, thanks Bruno Ruviaro -- Fix scvim regsitry file for updated filename (thanks Carlo Capocasa) -- version number to 3.5.3 -- Server helpfile: see-also reference docs -- SCVim.sc should not be executable -- cmake build system: use system boost libraries if available - -Jakob Leben (1): -- cmake: fix Boost Thread linking on Windows - -James Harkins (10): -- EnvGen_next_ak_nova: Hardcoded blocksize=64, change to -- inNumSamples -- Per Scott W., initSiblings is not needed -- Reinstate Mix.ar and Mix.kr, with rate checks -- Fix crossplatform fail: Scale.directory shouldn’t always depend -- on Document -- ListPatterns: offset.value omitted (inval) as an argument -- Fix PbindProxy:storeArgs - should NOT call “source” on keys in -- the array! -- Scale:degreeToRatio should handle degrees outside of one -- octave’s range -- More meaningful error message for too many selectors -- Explain the limitation on the number of selectors in one -- FunctionDef -- Correct spelling error - -Jonatan Liljedahl (3): -- Methods.html: auto-redirect to Search if method not found -- SCDoc: fix detection of old format class docs -- Mix.ar was un-deprecated, so remove the deprecated method - -Joshua Parmenter (2): -- fix scroll view problem for OS X 10.7.4 -- update SC_DirUtils to look at the name of the app bundle on osx - -Julian Rohrhuber (14): -- fix bugs due to wrong usage of partial application -- PV_BinShift helpfile improved -- PV_Diffuser helpfile improved -- reformat statement for readability (no change of functionality) -- helpfile improvements -- improve array helpfile -- add note to the loop argument of DiskIn (thanks Stefan). -- improve helpfile -- some helpfile improvements -- improve helpfile -- improve helpfile -- improve and simplify FFT overview helpfile: fix some errors in -- examples. -- improve and simplify IFFT helpfile. -- improve and simplify FFT helpfile, mention that hopsize must be -- larger than 0.0 - -Tim Blechmann (11): -- external libraries: update nova-tt (gcc 4.7 fix) -- supernova: correctly implement replace semantics for /s_new -- Help: Function.scope is not limited to OSX anymore -- cmake build system: locate server plugins on freebsd -- server: add support for RF64 -- cmake build system: ensure boost include path for scsynth -- cmake build system: set boost library path -- cmake build system: link scapp with correct version of -- libboost_thread -- cmake build system: minor cleanup -- supernova: fix asynchronous commands for empty reply address -- common: fix non-apple builds - - -SuperCollider v3.5.2, released 201 -====================================== - -Dan Stowell (3): -- Remove outdated Japanese menus -- Cannot use indentation for CMAKE example - on mac it is rendered as   which then breaks cmake compilation -- Fix bug in FFT library if winsize != audiosize - -Jakob Leben (21): -- qtcollider: fix QTextView:-background and QSoundFileView:-background -- cmake: improve message if Qt4 or one of its components not found -- qtcollider: QKnob: fix mouse response when mouseOverAction is set -- qtcollider: implement missing QPopUpMenu:-background -- qtcollider: QTextView fixes and improvements -- help: add missing GUI examples -- qtcollider: support use of UTF-8 encoded strings -- qtcollider: QTextView: improve -enterInterpretsSelection -- qtcollider: QTextField: never propagate Enter to parent -- qtcollider: QEnvelopeView: improve node selection API and UI -- help: update EnvelopeView documentation -- help: fix incorrect info in EnvelopeView documentation -- qtcollider: QObject:-getProperty: turn an error into a debug warning -- qtcollider: implement drag-and-drop for data outside SC -- qtcollider: improve key propagation in QListView and QTreeView -- qtcollider: optimize view instantiation (take 2) -- qtcollider: fix mouse wheel event being forwarded to SC for no reason -- qtcollider: fix potential null pointer dereference -- qtcollider: optimization - partially revert event handling changes -- qtcollider: optimization - avoid a signal connection at QObject construction -- qtcollider: optimization - avoid connecting signals with unnormalized signatures - -James Harkins (2): -- Fix Pcollect/select/reject:embedInStream to pass inval to the function -- setTheme: Inherit colors from parent theme if the user didn't specify - -Jonatan Liljedahl (41): -- scdoc: MathJax: don't use fonts installed on users computer -- New SCDoc parser and renderer. Faster, more stable, less buggy. -- fix some helpfiles for new scdoc -- scdoc.css update -- scdoc: scapp compile fix -- scdoc: defer indexAllDocuments until first use -- HelpBrowser tweaks -- scdoc: warn on additions for non-existent help doc -- scdoc: fill in argument names for argument:: with no name given -- SCDocRenderer: warn on broken links -- scdoc: fix classtree:: rendering bug -- scdoc: only warn on grouped methods argnames mismatch if argument:: tag is used -- scdoc: avoid GC error in primitive -- scdoc: collect metadata also from *.ext.schelp (doc additions) -- scdoc: warn if argument:: name does not match real method arg -- scdoc: updated SCDoc related docs -- scdoc: warn if classdoc title and filename mismatch -- scdoc: fix varargs name match warning -- scdoc: render getter/setter combinations as two different methods -- scdoc: warn if setter methods (trailing underscore) is documented explicitly -- scdoc: more helpfile fixes -- scdoc: fix some bugs, handle class docs with missing classes -- scdoc Search.html: match also on filename for 'title' -- schelp: fix some broken links -- scdoc: add clearCache arg to indexAllDocuments, and don't render undocumented classes more than once per session -- scdoc: updated SCDoc related helpfiles -- schelp: more doc error fixes -- scdoc: improve argument:: auto-fill and checks -- String-warn and -error: don't print newline after WARNING: and ERROR: -- scdoc: tweak warnings -- scdoc: fix escaping of :: in metadata parsing and block verbatim -- schelp: add keywords for scdoc tags in SCDocSyntax.schelp -- scdoc: allow end-of-file as newline terminator, and improve error messages -- scdoc: use setter_() syntax if more than one argument -- scdoc: render method arg defaults as "foo: val" instead of "foo = val" -- mention new scdoc implementation in News-3_5.schelp -- scdoc parser: allow empty lines before headertags -- SCDoc: fix escaping of & < and > -- SCDoc: fix inf loop at missing :: end-tag in code blocks -- SCDoc: allow EOF as terminator for private:: and similar tags -- SCDoc: don't warn on missing trailing mul & add args - -Miguel Negrão (1): -- [Class Libray] Quarks GUI - sort quarks by name - -Tim Blechmann (10): -- plugins: fix Clip.kr -- class library: archive TempoClock as compile string -- cmake build system: restrict win32-specific cflags to win32 -- external libraries: nova-simd update -- external libraries: nova-simd compile fix -- plugins: fix StereoConvolution2L constructor -- scsynth: use aligned memory allocation functions from supernova -- external libraries: nova-simd update -- scsynth: provide zalloc as symbol - -redFrik (1): -- scdoc: fixed a bunch of helpfile errors - - -SuperCollider v3.5.1, released 2012-04 -====================================== - -Jakob Leben (13): -- windows: properly pass the SC version to NSIS -- qtcollider: QPopUpMenu: fix action triggering -- qtcollider: get rid of "X is not implemented" message -- class library: make Server:-plotTree resilient to GUI kit switching -- help: improve Stethoscope documentation -- class library: QStethoscope2: add missing class methods -- class library: fix UGen scoping on out-of-process servers -- class library: PlusFreqScope: simplify server checking -- class library: fix and improve various 'scope' and 'freqscope' methods -- help: fix Stethoscope:*isValidServer documentation -- class library: ServerMeter: fix synth startup and cleanup -- update README_WINDOWS.txt -- windows: improve building and installation - -Jonatan Liljedahl (6): -- lang11d: Fix parse tree generation of expr.(key:value, ...) -- SC.app: allow saving plain text .schelp files -- SCDoc: copymethod:: also search *.ext.schelp files -- Update News for 3.5 doc -- Fix typo in News-3_5.schelp and improve StartupFile.schelp -- Update WritingPrimitives.schelp regarding GC safety - -Joshua Parmenter (1): -- prevent HID crashes on OS X. Devices still aren't added to the queue though (longs for the locID aren't correctly set up) - -Scott Wilson (1): -- Make Unpack1FFT a subclass of UGen, rather than of PV_ChainUGen - -Tim Blechmann (4): -- class library: SynthDef - fix uploading of large synthdefs -- sclang: block evaluation typesafety -- sclang: signal primitives - fix Signal-fft - - -SuperCollider v3.5.0, released 2012-03 -====================================== - -Major release with many new features - please see the help doc -"News in 3.5" for more information. -http://doc.sccode.org/Guides/News-3_5.html - - -SuperCollider v3.4.5, released 2012-01 -====================================== - -Tim Blechmann (7): -- class library: FreqScope fix -- sclang: fix crash of scpacket overflow by using exception handling -- sclang: pad PyrMethodRaw struct -- sclang: force size of PyrSlot to 16 byte and fix PyrMethodRaw size -- server plugins: fix div_ai_nova -- plugins: Resonz - fix initialization -- plugins: disable simd-optimization for tanh - -James Harkins (3): -- Explicitly show the command to uninstall (for scons idiots like me). -- (3.4) PathName now sets tmp directory using Platform -- SimpleController:update would throw error if no actions had been 'put' in - -Dan Stowell (1): -- Remove waf file from 3.4.x - was never used, and contains binary code, causing linux packaging problems. See ubuntu bug #529154 for details, and debian bug #529154 for sc-specific - -Mathieu Trudel-Lapierre (1): -- Fixup environment variables used for linking against readline, libicu, curl, cwiid. - -Nick Collins (1): -- Fix bug in MFCC ugen - -Noe Rubinstein (1): -- Fix PMOsc doc: index -> pmindex - -dmotd (1): -- Include altivec.h on linux powerpc, fixing FTBFS - - -SuperCollider v3.4.4, released 2011-06 -====================================== - -Dan Stowell (4): -- Improve format of copyright/GPL notices (issue raised in debian pkging) -- Clarify Fontana copyright in MoogFF (and don't use keyword 'copyright' in files where he doesn't have copyright) -- Update AUTHORS file -- Remove unneeded PDF (debian raised query over copyright) - -Nick Collins (1): -- Initial fix for headphones problem where plugging in or out headphones while using Built-in Output leads to loss of audio on OS X. Aggregate Devices not tackled at this point - -Tim Blechmann (15): -- sclang: mathematical operators - clip2 fix -- plugins: LPF - fix control-rate initialization -- sclang: wii - don't use address of temporary -- SCClassLibrary: ScoreStreamPlayer - do not add instances to server list -- scsynth: apple - set denormal handling flags, if __SSE__ is defined -- sclang: slotString - crash fix -- plugins: XLine - correct handling of done actions -- sclang: gc - introduce LazyCollect to avoid leak of frames and argument lists -- plugins: Pitch.ar - fix crash for high execution period -- changelog: fix version number -- update changelog -- sclang: parser - support message send syntax for unary operators -- plugins: delay ugens - rt memory allocation may fail -- sclang: compile fix - - -SuperCollider v3.4.3 -====================================== - -Dan Stowell (2): -- SC 3.4 set correct SOVERSION 1.0.0 for libs, and install more properly. (Changes ported from downstream debian packaging.) -- lib SOVERSIONs back from 1.0.0 to 1, following debian-multimedia advice - -James Harkins (8): -- Fix nowExecutingPath bug in scel (never backported?) -- fix two bugs in NotificationCenter registerOneShot: -- fix corner case in ClassBrowser -- Fix asPseg bug for short curves array (which should wrap, not kill the stream) -- Clear dataptr when closing a file (so that isClosed answers correctly) -- Incorrectly used dataptr instead of fileptr in previous commit on this file -- replace old, unsafe Dictionary test with a safer (but less OOPy) test -- rats... I missed two others of the same - -Joshua Parmenter (1): -- update version number - -Tim Blechmann (3): -- scsynth: set ftz flag on osx -- two commits: (1) simplify access to the superclass tree in Class. (2) when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of havin -- scons build system: libsclang build fix - - -SuperCollider v3.4.2, released 2011-03 -====================================== - -Bugfixes: ---------- - -- 2010-06-05 fix Latch first sample output bug: if trigger > 0 initially, latch should not output 0 - jh -- 2010-09-04 fix firstArg behavior in BinaryOpUGen by a list-approved hack - jh -- 2010-10-01 fix SConstruct so that libscsynth and libsclang get SONAME entries - ds -- 2010-11-13 grainBuf: audio-rate trigger fix - tb -- 2010-11-15 generate libsclang and libscsynth with .so.1 extension (and soname) on linux - ds -- 2010-11-15 scons create symlinks from libX.so to libX.so.1 on linux, and install them - ds -- 2010-11-16 added .htm files to SConstruct as approved help file extension - mb -- 2010-11-28 compile fix for curl support - tb -- 2010-11-28 prevent asBus from breaking when called with no numChannels - jh -- 2010-12-03 grain ugens: demand ugen input fix - tb -- 2010-12-05 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place. backported from master - tb -- 2010-12-08 prString_FindRegexp fix: match char array was too short to hold null termination - jli -- 2010-12-11 fix classbrowser colors bugs. backported from master - tb -- 2010-12-12 fixes the bug where installed quark help files would not be detected - tb/ar -- 2010-12-13 mark inherited methods in class browser by background colour. backported from master - tb -- 2010-12-30 Pipe does not remove closed pipes from openFiles - jh -- 2010-12-30 fix String:rotate - pb -- 2011-01-02 unit generators: LagControl - fix initialization order - jh -- 2011-01-02 unit generators: LagControl - dynamically allocate buffer for filter states - tb -- 2011-01-07 fixed iOS compilation and backported changes from master branch - ab -- 2011-01-06 array primitives: fix allTuples and unlace - pb -- 2011-01-07 sclang: makeIntrinsicClass - correct bounds for memcpy - tb -- 2011-01-08 sclang: prString_FindRegexp - fill array after allocating objects - tb -- 2011-01-14 sclang: prString_FindRegexp ensure correct size of results array during gc calls - tb -- 2011-02-27 sclang: ensure minimum stack size - tb -- 2011-03-09 SCVim: avoid generating scvim help cache if not currently in scvim - ds -- 2011-03-11 fix the Event type 'note' (fixes rendering patterns to audio files) - rk - - -SuperCollider v3.4.1, released 2010-11 -====================================== - -- 2010-07-12 remove accidental debug messages from SCView (on mac, posted a lot of info to Console, could affect performance) - ds -- 2010-07-11 Collections should behave as reasonably as possible when empty - some fixes to better this - jr -- 2010-07-11 SynthDef:add now sends to all running servers if no libname is given. SynthDescs are still added to the global SynthDescLib. If you want to handle multiple SynthDesc libs, you have to add the servers to each of them explicitly - jr -- 2010-07-12 PanAz: added support for audio-rate pos arg - lfsaw -- 2010-07-18 improved the sclang syntax highlighting parses - Patrick Borgeat -- 2010-07-30 Dreset UGen allows to reset the child UGens on its input - jr -- 2010-08-05 storeOn / asCompileString now simplifies its output. Default arguments that are given in the *new method anyhow are omitted - jr -- 2010-08-06 Dictionary merge and blend methods - jr -- 2010-08-09 method overwrite messages not posted by default, rather a message inviting people to run Main:overwriteMsg for the info - ds -- 2010-08-13 MethodOverride class to encapsule information on overridden messages, inviting people to run MethodOverride.printAll - jr -- 2010-08-13 add size arg to Signal:zeroPad - jr and jh -- 2010-08-18 Pevent now uses default event if no event is passed in - jr -- 2010-08-18 added a shortcut to the rather tedious .asCompileString method. In analogy to object.postcs, object.cs returns the compile string - jr -- 2010-08-20 audio driver for scsynth running on Android (through JNI) - ds -- 2010-08-24 un-deprecate scsynth's ability to use internal "green" FFT lib, for embedded devices etc - ds -- 2010-08-28 no 'record' button for remote server GUIs, since path not generally known - ds -- 2010-09-02 token threading for sclang interpreter - tb -- 2010-09-07 when looking for a code file (openCodeFile) or cmd-J, it is now enough to select a full line, instead of having to select both words around the colon - jr -- 2010-09-07 added methods for better navigation in the class tree (findOverriddenMethod) - jr -- 2010-09-10 add method: Complex:abs to fit common usage - jr -- 2010-09-12 added Dwrand UGen - jr -- 2010-09-15 SystemClock and TempoClock sched and schedAbs with inf time doesn't schedule the task in the first place - jr -- 2010-10-07 change the mac HID error-handler code to output errors to sc post window rather than to mac log; removes a pascal-string issue - ds -- 2010-10-19 Ndef now releses its bus when server was quit or just booted - jr -- 2010-10-20 retain the path to the file in which an error has occurred and post it - jr - - -Bugfixes: ---------- -- 2010-07-10 protecting the server against malformatted SynthDef names - jr -- 2010-06-28 syntaxColorize fix for double-backslashes, thanks Patrick Borgeat for the patch - ds -- 2010-07-24 catch crash in the case that one tries to define a unique method using a return value directly - jr -- 2010-09-07 UGen:clip, :wrap, :fold now apply correctly to scalar-rate signals; also methodSelectorForRate tweak for which class is asked - ds -- 2010-09-09 fix a bug for trigger signals in Demand.kr that hold longer than one control period - jr -- 2010-09-11 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr -- 2010-09-12 fix bug: 2994009. LFPar and LFCub audio rate modulation frequency argument work now - jr -- 2010-09-19 fix to JITGui, when numItems is not supplied - jr -- 2010-10-10 remove more crufty NSLog debug messages - ds -- 2010-10-13 fix SCUserView:receiveDrag to receive mouse co-ordinates; thanks Daniel van den Eijkel - ds -- 2010-10-19 debian-style scvim-check-if-plugin-is-active, brought upstream - ds -- 2010-10-19 bug in audio rate mapping fixed, when new source object was inserted in a mapped node proxy - jr -- 2010-10-19 partial fix for bugs item #2994009 - seems to fix LFPar but not LFCub. More work needed - ds -- 2010-10-19 DC: fix multichannel expansion - tb -- 2010-10-19 fix to demand rate unary op ugens, thanks james harkins - tb -- 2010-10-19 Ugens: LinLin/LinExp fixes - tb -- 2010-10-19 only /clearSched if RT - to fix tracker item #3033454 - tb -- 2010-10-19 UGens: binary operators - fix scalar/signal division - tb -- 2010-10-19 fix bug 2988525: SynthDef:writeDefFile appends path correctly - tb -- 2010-10-19 ProcessOSCPacket: fix possible deadlock - tb -- 2010-10-19 fix network address handling - albert graef -- 2010-11-05 fix memory issues in regular expressions: correct memory management in prString_FindRegexp - tb -- 2010-11-07 sclang: correct symlink handling - tb, ar - -SuperCollider v3.4, released 2010-07 -==================================== - -Headlines: ----------- - -- 2009-09-03 add support for Mac OS 10.5 and greater 64-bit builds of plugins and scsynth -- 2009-07-xx iphone support by Axel Balley added - ab -- 2009-07-21 EnvirGui added, a gui for livecoding/editing environments - adc -- 2009-07-24 Server.plotTree method for visualising the groups and synths on the server - sw -- 2009-07-31 mac osx text-completion feature now includes sclang objects - ds -- 2009-08-01 sclang now has a flag (Platform.ideName) for which IDE is in use (scapp, scvim, scel, sced, jsceclipse...) so that the same class-library can be used with different IDEs, enabling IDE-specific code as necessary - ds -- 2009-08-16 add emergency escape route: if sclang is caught in an infinite loop, send it a USR1 signal to break out of it - ds -- 2009-09-12 String:findRegexp and other regular expressions now available on linux as well as mac - mb,ds -- 2009-09-18 n_order and Server:reorder allow one to specify chains of nodes - sw -- 2009-09-20 simplify the Server recording interface. prepareForRecord is now optional (will be automatically invoked if you don't), and the server gui button is now just two-state "record" "stop" - ds -- 2009-10-04 support multichannel indices for Env:at - jr -- 2009-10-29 improve OSC message correctness: for convenience, sclang allows command names as symbols with no leading slash e.g. \g_new. To improve compliance with the OSC standard, the leading slash is now added to those symbols before dispatch - ds -- 2009-11-07 use nova-simd framework for performance improvements of unit generators - tb -- 2009-11-21 Event type \note supports polyphonic sustain, lag and timingOffset, and responds correctly to free and release. Add \grain event type. - jr -- 2009-11-28 windows: system "application support path", previously hardcoded as C:\SuperCollider, now settable by environment variable SC_SYSAPPSUP_PATH. Default setting for that env var (when using official wix bundle) will be [SC3INSTALLLOCATION] - ds -- 2009-12-15 sclang: 64-bit safety - tb -- 2009-12-15 sclang: performance improvement of math ops - tb -- 2010-01-02 scsynth: use osc-compilant address patterns for server/lang communication - tb -- 2010-01-24 add readline interface to sclang command-line. This is used by default when invoking "sclang" (to use the non-readline interface set the "-i" option to something other than "none") - ds -- 2010-01-24 enable GPL3 code by default - this 'upgrades' the overall binary license from GPL2+ to GPL3+, and allows supercollider to benefit from GPL3+ libraries such as libsimdmath and gnu readline - ds -- 2010-02-04 Improvements to SC.app editor: Split pane documents, AutoInOutdent - sw -- 2010-02-18 scvim: now compatible with gnu screen, opens post window using screen, making it compatible with a pure-CLI environment - ds -- 2010-02-xx add the Deployment32-64 build style for building on OS X (10.5 and greater) - jp -- 2010-03-10 SynthDef:memStore deprecated in favour of the more coherent and typeable SynthDef:add - jr -- 2010-04-11 Moved some more experimental JITLib classes to "JITLib extensions" Quark - jr - - -Bugfixes: ---------- - -- 2009-06-12 fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw -- 2009-06-18 fix for mouse coordinates bug - sw -- 2009-06-22 fix for negative bounds issue in SCUserView - sw -- 2009-06-23 avoid memory corruption when unknown OSC type tags are received. Instead forward them to sclang - jr -- 2009-06-23 Fix server crash with negative buffer numbers. - jr -- 2009-07-20 factors(): no prime factors exist below the first prime - jr -- 2009-07-21 Loudness ugen now supports LocalBuf - nc -- 2009-07-23 Fix very nasty bug in Pbindf: if a key is an array, new values were written into the incoming event, instead of the outgoing event - jh -- 2009-07-28 catch unintialised value in sc_GetUserHomeDirectory(), fixing potential memory corruption if HOME not set - ds -- 2009-08-01 SpecCentroid, fix its reaction to silence (output zero instead of NaN) - ds -- 2009-08-01 NamedControl: single default value now returns instance, not array, default values are obtained in a consistent way - jr -- 2009-08-04 fix the CPU-usage issue when calling plain "./sclang" from the terminal on OSX (seems it was caused by a bug in how OSX handles poll() calls) - ds -- 2009-08-15 LinPan2: fix initialisation issue - panning was not correctly applied during the first calc block - ds -- 2009-09-28 Workaround for faded colours in HTML docs - sw -- 2009-09-13 fix PV_MagShift argument handling, so that the defaults mean no-change, matching the behaviour of PV_BinShift - ds -- 2009-09-20 warn about weirdness of Float:switch - ds -- 2009-09-30 prevent NaN output from SpecFlatness when input is silence - ds -- 2009-10-16 fix cropping issue in printing SuperCollider.app documents - cq -- 2009-10-17 many phase-vocoder (PV_) ugens previously didn't handle the DC/nyquist bins as expected. fixed most of these (PV_MagAbove, PV_MagBelow, PV_MagClip, PV_LocalMax, PV_BrickWall, PV_MagSquared, PV_BinWipe, PV_CopyPhase, PV_Max, PV_RandComb) - ds -- 2009-11-01 fix audio rate arg problem in PlayBuf - jp -- 2009-11-02 fix amplitude-convergence issue in Pan2, Balance2, LinPan2, XFade2, which could sometimes result in sound despite zero amp, as discovered by jh - ds -- 2009-11-03 fix unsafe implementation of methods that allow sending collections to buffers - jr -- 2009-11-04 fix signalRange for MouseX, MouseY and KeyState, so that the range message works now - jr -- 2009-11-19 Fix for PV chains and LocalBuf - sw -- 2009-12-14 fix uninitialised variable in Pulse (could sometimes cause small glitch on init), thanks to rhian lloyd - ds -- 2010-01-10 Demand ugens can now handle more than 32 channels, thanks Patrick Borgeat for the patch - ds -- 2010-02-05 scsynth now respects the -D commandline option when running in NRT mode - ds -- 2010-02-11 Fix for nowExecutingPath with Routines - sw -- 2010-02-23 Performance fixes for SCUserView - sw -- 2010-02-25 Fix interpolation / indexing problem in VDiskIn that caused slight pitch fluctuations - jp -- 2010-03-11 SequenceableCollection:reduce no longer returns nil if the collection has only 1 element - ds -- 2010-03-28 fix memory leak of empty command line, for interactive sclang mode - tb -- 2010-03-29 main menu for Mac lang editor app: correction to key for evaluate selection, used to be return, now return+shift - nc -- 2010-04-19 fix missing font issue in Plotter -jr - -Other additions/improvements: ------------------------------ - -- 2009-06-11 Evaluate Selection menu command - sw -- 2009-06-23 allow remote apps to send type chars - jr -- 2009-06-27 build 32bit sclang on x86_64 - tb -- 2009-07-xx efficiency improvements on some UGens - tb -- 2009-07-xx improve Quarks use of svn for smoother user experience - ds -- 2009-07-22 catch the case when a user tries to compile into a synthdef, a unary/binary operator that the server can't apply - jh -- 2009-08-29 String:toUpper and String:toLower - ds -- 2009-09-06 Boolean:while now throws an informative error, since Boolean:while has no particular use but is often used in error by beginners in code where Function:while is intended - ds -- 2009-09-12 method FunctionDef:makeEnvirFromArgs allows to create template events from a function - jr -- 2009-09-30 Error is now posted if maxSynthDefs exceeded -sw -- 2009-11-03 TwoWayIdentityDictionary has a removeAt method now - jr -- 2009-11-04 update of deferredTaskInterval from 0.038 to 0.01667 - fo -- 2009-11-07 improved PyrSlot typesafety - tb -- 2009-11-23 menu system improvements in Windows IDE - mv -- 2009-12-13 tidyups for "sclang when on osx but not in sc.app" - ds -- 2009-12-13 added lincurve and curvelin methods for numbers and UGens - jr -- 2010-01-01 OSCresponder and OSCresponderNode respond equally to messages with or without preceding slash - jr -- 2010-01-04 sclang: deprecated Proutine - switch back to the original Prout -- 2010-01-06 UnitTest Quark improved, added script support - jr -- 2010-01-23 Improved NodeProxy and ProxySpace helpfiles. Added proxy composition syntax to NodeProxy - jr -- 2010-01-30 Make multichannel plotting easier. If no numChannels is given, find out automatically - jr -- 2010-01-31 add new LOOP1 macro - tb -- 2010-01-31 use c99 log2 functions for sc_log2 - tb -- 2010-02-09 rearrangement of supercollider source code tree - ds -- 2010-02-11 Server:default_ now assigns to s by default. Settable with flag - sw -- 2010-02-27 removed SCAnimationView and added SCUserView:animate_ - fo -- 2010-03-10 SCPen:setSmoothing changed to SCPen:smoothing_, harmonised change with swingosc - ds -- 2010-03-23 exponentiation for Complex numbers - jr -- 2010-xx-xx many helpfiles improved - various authors -- 2010-03-30 Image class added, a redirect for SCImage or JSCImage - hr -- 2010-03-30 Pitch ugen ability to output clarity measure (by default not activated, for backwards compat) - ds - -SuperCollider v3.3.1, released 2009-06-19 -========================================= - -Headlines: ----------- - -- 2009-05-11 SCWindow additions for visible, visible_, unminimize - cq -- 2009-05-17 server guis (on osx) now indicate which one is currently default - adc -- 2009-05-18 enabled control rate versions of Ball, TBall and Spring - mb -- 2009-05-18 LID support for setting "MSC" state as well as "LED" on devices - ds -- 2009-06-19 patched for compatibility with Safari 4, fixing a lockup issue when opening help docs - ar - -Bugfixes: ---------- - -- 2009-05-11 fix keyword addressing for the order: argument - jmc -- 2009-05-15 update libsndfile to 1.0.20 to fix security issues (overflow vulnerabilities) in libsndfile - ds -- 2009-05-20 fix bug #2790649, "very large SimpleNumber:series can crash sclang" - ds -- 2009-05-25 mac icons for document types .quark .scd .rtfd were omitted from the app bundle, now fixed - ds -- 2009-06-02 EnvGen: fix off by one block latency in envelope attacks and releases - jr -- 2009-06-12 bug fix for level indicator: critical and warning now display based on peak if it is shown rather than on value - sw -- 2009-06-12 mouse coordinates fix, deprecate SCUserView:mousePosition - sw -- 2009-06-17 some issues fixed in SCUserView - cq -- 2009-06-20 fix redirect for Stethoscope - adc - -Other additions/improvements: ------------------------------ - -- 2009-05-05 fixes/improvements to cocoabridge primitives - cq -- 2009-05-06 SCImage various minor improvements - cq -- 2009-05-16 optimisation for scrollview drawing, remove VIEWHACK - sw -- 2009-05-xx various documentation updates - various -- 2009-05-xx various improvements to ubuntu-debian packaging scripts - ds, am -- 2009-05-20 SynthDef:writeOnce now available as an instance method as well as a class method - ds -- 2009-06-11 sc.app gets a menu command for "Evaluate selection" - sw -- 2009-06-17 adjusted SCKnob to use relative mouse coordinates - jm -- 2009-06-17 small fix to SConstruct to allow for new Debian X11 location when compiling on linux - mb -- 2009-06-19 Blip ugen: prevent sound blowup by never letting numharm be less than 1 - fo -- 2009-06-20 SCPen: fillStroke changed default from draw(4) to draw(3) - fo -- 2009-06-21 Fold, Clip and Wrap can now modulate the low and high inputs. - -SuperCollider v3.3, released 2009-04-30 -======================================= - -Headlines: ----------- -- 2008-04-08 scvim is now part of the distro - ds -- 2008-04-20 improvements to MIDI sysex handling - added sysex parsing directly in source - thanks to charles picasso -- 2008-07-12 scsynth on Mac can now use separate devices for audio input vs audio output. Thanks to Axel Balley for much of the work on this, also a bit by ds. -- 2008-07-12 PlayBuf, RecordBuf, BufWr, BufRd, ScopeOut - used to be limited to 16-channel audio maximum. Now can handle massively multichannel audio - ds -- 2008-07-19 Buffer:normalize method added - ds -- 2008-07-23 FFT and IFFT added option for zero-padding, by optional "framesize" argument - ds -- 2008-09-03 new VDiskIn ugen - jp -- 2008-10-08 SCImage for manipulating bitmap image objects (mac only) - ch -- 2008-10-09 LocalBuf system to allow synths to manage their own purely-local buffers - jr -- 2008-10-17 Added "-P" option to scsynth (accessible as s.options.restrictedPath) to allow restricting which paths scsynth is allowed to read/write - ds -- 2008-10-18 new PartConv ugen, performs efficient frequency-domain convolution - nc -- 2008-10-26 support on mac for "modal windows/sheets" (for user dialogs etc) - sw -- 2008-xx-xx various behind-the-scenes efficiency improvements, for a sleeker audio server that can do more on a given machine - various contributors -- 2008-11-01 add BEQSuite filter UGens (blackrain, jp) -- 2008-11-11 add Pfxb pattern - jr -- 2008-11-25 new EZPopUpMenu - jm -- 2008-11-29 Pitch ugen can now also track the pitch of control-rate signals - mb -- 2008-11-30 Drag and drop paths from Finder to Documents and SCViews - sw -- 2008-12-03 added PV_Div ugen for complex division - ds -- 2008-12-07 added PV_Conj ugen for complex conjugate - ds -- 2008-12-15 new ViewRedirect for easier cross-platform gui syntax. e.g. Window now redirects to SCWindow or JWindow. ds & jm -- 2008-12-15 revised and updated all SC Gui documentation. New gui introduction. New SCUserView subclassing tutorial. - jm -- 2008-12-15 the /done message for Buffer allocation/free/etc now also includes the buffer index - jt -- 2008-12-15 added methods to SCFreqScope for "special" SynthDef, and for visualising frequency responses - ds -- 2008-12-18 the main windows version of sc is now called "SuperCollider" rather than "PsyCollider" (although psycollider is the name of the code editor). SuperCollider on windows now has a different (better? who knows) installer, uses the main sc3 icon, and has some other tweaks that make it different from version 3.2 - ds -- 2008-12-19 new EZListView - jm -- 2009-01-02 sced (the gedit sc plugin) is now part of the distro - mb/artem -- 2009-01-06 SendReply UGen - jr -- 2009-01-06 VDiskIn sends file position to client - jr -- 2009-01-12 map audio to SynthDef controls. new OSC messages n_mapa and n_mapan. - jp, jr, rk -- 2009-01-13 relativeOrigin=true. SC's coordinate system in container views and user views are now by default relative. -- 2009-01-15 SCLevelIndicator view added - sw -- 2009-01-16 Scale and Tuning classes added - tw -- 2009-01-17 SuperColliderAU (scsynth as a Mac OSX "Audio Unit") added to main distribution - gr -- 2009-02-03 EZKnob revised and now part of distro - br, jm -- 2009-02-23 SystemActions refactored - jr -- 2009-02-23 SCMenuItem, SCMenuGroup, and SCMenuSeparator for user customisable menus - sw -- 2009-02-23 LFGauss UGen added - jr -- 2009-03-14 Added GeneralHID based patterns PhidKey and PhidSlot - mb - -Bugfixes: ---------- -- 2008-05-20 fix for the special case when 0.2.asFraction beachballs the lang (bug id 1856972) - jr -- 2008-05-20 fix slight mistake in the defaults printed by scsynth on command-line (bug id 1953392) - ds -- 2008-07-24 Routine / AppClock fix setting the clock of the thread (bug id 2023852) - jr -- 2008-09-16 stability fixes to FFT and IFFT - ds -- 2008-09-27 fix TExpRand.ar - ds -- 2008-11-11 SystemSynthDefs.numChannels can now be set from the startup file - jr -- 2008-11-24 avoid FFT failure when buffer not allocated - jr -- 2008-11-29 resolved inconsistency in Server:waitForBoot - function is always executed in a Routine, whether or not the server is booted - ds -- 2008-12-07 FlowView setting inital margin and gap fixed (bug id 1986059) - jh -- 2008-12-07 OSCpathResponder fixed (bug id 2021481) - jh -- 2009-01-08 b_readChannel fixed (bug id 1938480) - mb -- 2009-01-08 MIDIIn.connect on Linux fixed (bug id 1986850) - mb -- 2009-01-09 Tabbing in SCTextView - sw -- 2008-08-23 fix for sclang crashing sometimes when compiling erroneous code (bug id 2022297) - rb -- 2009-01-18 SCScrollView relativeOrigin glitch fixed (bug id 2508451) - jr, sw -- 2009-01-28 Fixed QuartzComposer view bounds bug - sw -- 2009-02-21 NodeProxy handles groups more consistently - jr -- 2009-04-16 asFraction fix by JMcC - jr - -Other additions/improvements: ------------------------------ -- 2008-03-22 added open Method and link handling to SCTextView - sw -- 2008-04-04 SoundFile:toCSV - ds -- 2008-04-29 buffer UGens now post a warning (rather than failing silently) if buffer channels doesn't match num ins/outs - ds -- 2008-07-14 Deprecated rendezvous in favour of zeroConf - sw -- 2008-09-xx various code improvements, including compiling for 64-bit linux - tb -- 2008-10-03 improvements to standalone build - jp -- 2008-10-03 SCEnvelopeView remembers drawing order. - sw -- 2008-10-05 Maintain initial offset when dragging on an Envelope View node. This avoids nodes jumping to a new position on mouse down. - sw -- 2008-10-05 Enabled gridOn, gridResolution, gridColor, timeCursorOn, timeCursorPosition, and timeCursorColor for SCSoundFileViews. - sw -- 2008-10-31 thisProcess.pid - sclang now can know what its process id is - ds -- 2008-11-21 support for LocalBuf in FFT UGens - jr -- 2008-11-27 SC3 will ignore ugens/class-files in folders named "ignore". Previously the name has been "test" - ignoring folders named "test" is now deprecated and will be removed - ds -- 2008-12-06 Added Main:recompile to allow recompiling from code (SC.app only so far) - sw -- 2008-12-08 Added custom drag label for SCView - sw -- 2008-12-15 Buffer's done osc reply now includes the bufnum - jt -- 2008-12-20 Help tree in help menu (OSX) - sw -- 2008-12-24 EZSLider and EZNumber now have an enclosing containers, as well labelPosition =\left, \right, or \stack modes - jm -- 2009-01-03 Help browser text is editable/executable (CocoaGUI) - sw -- 2009-01-04 Escape exits modal and fullscreen states (OSX) - sw -- 2009-01-08 interface change to ProxySpace.stop (now stops all proxies, just like free/end/clear) - jr -- 2009-01-08 improved Ndef implementation, stores values in an internal ProxySpace, Ndef takes server names for multiple servers. - jr -- 2009-01-08 improved ProxyMixer implementation, added NdefMixer. - adc -- 2009-01-11 Added class browser to help menu (OSX) - sw -- 2009-01-20 New Cocoa based SCTextField - sw -- 2009-01-28 More helpful error string for operation cannot be called from this Process - sw -- 2009-02-23 CocoaDialog takes allowsMultiple arg rather than maxItems - sw - - -SuperCollider v3.2, released 2008-02-21 -======================================= - -Headlines: ----------- -- 2007-11-xx new suite of machine listening ugens - Loudness, BeatTrack, Onsets, KeyTrack, SpecCentroid, SpecPcile, SpecFlatness - nc, ds -- 2008-01-06 FreeBSD compatibility - hb -- 2008-01-10 Quarks updating on OSX should now be easier for first-time users; commands are run in a separate terminal window - ds -- 2008-01-15 "Advanced find" in Mac interface - jt -- 2008-01-20 Buffer.copy changed to match other .copy methods - now copies language-side object rather than server buffer. Buffer.copyData can be used to copy data from one server buffer to another - jh -- 2008-01-20 - add volume controls to the Server and Server guis - jp -- 2008-01-xx Pattern library implementation changes, Pfx, Pbus, Pgroup etc. - rk, jr, jh -- 2008-01-26 TDuty outputs trigger first, not level. for backwards compatibility TDuty_old - jr -- 2008-02-03 moved the search location for "startup.rtf" on Mac - now searches in system, then user, "Application Support/SuperCollider" folders - ds - -Bugfixes: ---------- -- 2007-11-16 bug fixes for MIDIIn in connect/disconnect methods. split MIDIOut.sysex into user method and primitive (breaks with previous implementation). default value for uid arg in MIDIOut.new. - mb -- 2007-11-18 fixed a bug in prTry / protect - jr -- 2007-11-27 lock avoided in nextTimeOnGrid -- 2007-12-12 Node-setn fixed when using integers as control indices - jr -- 2008-01-16 fixed Pen: bug with fillRect, fillOval and fillColor (bugtracker id 1837775) - jt -- 2008-01-20 CheckBadValues rate-checking was too restrictive - ds -- 2008-01-20 fix for Saw and Pulse's offset noise on first instantiation, thanks to hisao takagi - ds -- 2008-01-26 TDuty / Duty does not drift anymore - jr -- 2008-02-07 Fixed hang and incorrect background drawing in Cocoa scrollviews - sw - -Other additions/improvements: ------------------------------ -- 2007-11-16 MIDIOut.connect and disconnect - mb -- 2007-11-18 added T2A UGen - jr -- 2007-11-18 Refactoring of Document class, including new CocoaDocument class to handle the Cocoa-specific (SuperCollider.app) document management - ds -- 2007-11-18 More macros available in the plugin API for UGen programmers: GET_BUF, SIMPLE_GET_BUF, FULLRATE, RGET, RPUT - ds -- 2007-11-20 UnixPlatform:arch method - jp -- 2007-11-20 FFTTrigger UGen - a ugen to create "fake" (empty) FFT chains - jp -- 2007-11-21 StartUp protects its added functions from each other - if one fails this no longer prevents others from running - ds -- 2007-11-25 added Pclutch and moved StreamClutch to common - jr -- 2007-11-27 Function:inEnvir added - jh -- 2007-12-12 added Collection.flatIf - jr -- 2007-12-15 added control rate functionality to NumRunningSynths - jr -- 2008-01-08 martin rumori's DiskIn bugfix and loop enhancement - jp -- 2008-01-10 String:runInTerminal method - ds -- 2008-01-11 poll now works for scalar ugens - jr -- 2008-01-15 Collection:maxIndex and Collection:minIndex - nc -- 2008-01-24 Server.options.rendezvous to (de)activate Rendezvous if desired - ds -- 2008-01-24 demand ugens accept audio rate inputs correctly - jr -- 2008-01-26 added Dbufwr ugen, for writing to buffers from a demand ugen chain - jr -- 2008-01-27 Main:version and associated methods for programmatically determining which version SC is - ds -- 2008-02-03 Server:defaultRecDir class variable, to allow user to specify default rec location - ds -- 2008-02-07 SCScrollView and SCScrollTopView no longer fire their action when scrolled programatically - sw - - -SuperCollider v3.1.1, released 2007-11-16 -========================================= -Bugfixes: ---------- -- 2007-11-09 re-organized the main help file - rb -- 2007-11-14 fix for .asStringPrec, to avoid crashes on intel systems for large precision values - jt - -Other additions/improvements: ------------------------------ -- 2007-11-14 added a preprocessor to the interpreter - jr -- 2007-11-14 added a startup message specifying how to get help - rk - - -SuperCollider v3.1, released 2007-10-31 -======================================= -(changes below are since 2007-09-22, for first ever point release) - -Headlines: ----------- -- 2007-09-27 SparseArray class added - jr -- 2007-09-28 Help.gui added - ds -- 2007-10-01 FFT and IFFT rewrite - now using more efficient libs, also allows user to vary the overlap and the window type, also large-sized FFTs are possible - ds -- 2007-10-02 UnpackFFT and PackFFT added - these allow for flexible frequency-domain manipulations inside synths - ds -- 2007-10-04 Pkey and Pif added - hjh -- 2007-10-05 reformed Patterns - all patterns accept patterns as arguments - jr -- 2007-10-08 change to UGen plugin loading fixes the audio dropout issue that various users have experienced - rb -- 2007-10-08 GeneralHID crossplatform HID wrapper - mb -- 2007-xx-xx many improvements to Quarks package-management system. gui improvements, dependency-handling improvements, etc - various -- 2007-10-20 added a Glossary file - sw -- 2007-10-xx various new help files added, and many help files improved - various -- 2007-10-26 changed Cmd-? to Cmd-D in lieu of the default help menu shortcut in Leopard. Also changed Cmd-Shift-K (clear post window) to Cmd-Shift-C to avoid accidental recompiles. - rb - -Other additions/improvements: ---------------------------- -- 2007-09-22 change log added, much rejoicing -- 2007-09-25 added packagesource.sh script to produce source code bundles - ds -- 2007-09-28 IdentityDictionary:doesNotUnderstand now warns if adding a pseudo-method which overrides a real method - jr -- 2007-09-28 String:openHTMLFile added - ds -- 2007-10-04 Integer:collect and Integer:collectAs methods added - ds/jr -- 2007-10-05 Dwhite:new and Dbrown:new have default values for lo and hi - jr -- 2007-10-10 SC no longer automatically writes data (synthdefs, archive.scxtar) to the application folder - instead writes to "app support". This fixes problems with running SC using an unprivileged user account - ds -- 2007-10-16 SequenceableCollection:median speed improvement, approx ten times faster in many cases - ds -- 2007-10-20 Object:deprecated and DeprecatedError added to allow for method deprecation - sw -- 2007-10-21 Amplitude : attackTime and releaseTime can be modulated now - jr -- 2007-10-25 Collection : histo method improved and moved from mathLib to common - jr -- 2007-10-30 improvements to cocoa Gui, including SCUserView improved to support layering and own draw hook - jt, sciss -- 2007-10-31 refactored Pbrown, added Pgbrown - jr - -Bugfixes: ---------- -- 2007-09-29 takekos bug fixed (obscure issue with garbage collection in arrays) - jm -- 2007-10-01 fixed off by one bug in Dswitch and Dswitch1 that caused a server crash - jr -- 2007-10-09 fixed deadlock and other problems in NSAttributedStringAdditions.m - rb -- 2007-10-11 fixed inaccurate automatic determination of whether SC is running as standalone - ds -- 2007-10-14 .quark files now saved correctly as plain-text, not RTF - ds -- 2007-10-24 fixed a bug in Pbeta - jp - - -\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* diff -pruN 1:3.8.0~repack-2/CMakeLists.txt 1:3.10.0+repack-0.1/CMakeLists.txt --- 1:3.8.0~repack-2/CMakeLists.txt 2016-09-14 06:52:55.000000000 +0000 +++ 1:3.10.0+repack-0.1/CMakeLists.txt 2018-11-19 21:36:53.000000000 +0000 @@ -4,8 +4,11 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux") set(LINUX 1) endif() -cmake_minimum_required (VERSION 2.8.12) -set(SUPERNOVA_CMAKE_MINVERSION 3.1) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD|DragonFly|OpenBSD|NetBSD") + set(LINUX_OR_BSD 1) +endif() + +cmake_minimum_required (VERSION 3.5) include("SCVersion.txt") set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}${PROJECT_VERSION_PATCH}") @@ -37,6 +40,32 @@ CONFIGURE_FILE( "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) +# workaround for using ccache with Xcode generator +# thanks to Craig Scott: https://crascit.com/2016/04/09/using-ccache-with-cmake/ +get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE) +if(RULE_LAUNCH_COMPILE AND CMAKE_GENERATOR STREQUAL "Xcode") + + # find ccache + find_program(CCACHE_PROGRAM ccache) + + message(STATUS "Xcode and ccache detected: using ccache to speed up build process") + + # Set up wrapper scripts + set(SC_LAUNCH_C_SCRIPT "${CMAKE_BINARY_DIR}/launch-c") + set(SC_LAUNCH_CXX_SCRIPT "${CMAKE_BINARY_DIR}/launch-cxx") + + configure_file("cmake_modules/launch-c.in" launch-c) + configure_file("cmake_modules/launch-cxx.in" launch-cxx) + execute_process(COMMAND chmod a+rx "${SC_LAUNCH_C_SCRIPT}" "${SC_LAUNCH_CXX_SCRIPT}") + + # Set Xcode project attributes to route compilation and linking + # through our scripts + set(CMAKE_XCODE_ATTRIBUTE_CC "${SC_LAUNCH_C_SCRIPT}") + set(CMAKE_XCODE_ATTRIBUTE_CXX "${SC_LAUNCH_CXX_SCRIPT}") + set(CMAKE_XCODE_ATTRIBUTE_LD "${SC_LAUNCH_C_SCRIPT}") + set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${SC_LAUNCH_CXX_SCRIPT}") +endif() + ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") @@ -45,7 +74,7 @@ ADD_CUSTOM_TARGET(uninstall if(WIN32) SET(SC_WIN_BUNDLE_NAME "SuperCollider" CACHE STRING "Folder name of SC install") - if(CMAKE_CL_64 OR "$ENV{MSYSTEM}" MATCHES "64" OR CMAKE_C_COMPILER MATCHES "64") + if(CMAKE_SIZEOF_VOID_P EQUAL 8) SET(CMAKE_LIBRARY_ARCHITECTURE "x64" CACHE STRING "Architecture of target system (for 64bit)") else() SET(CMAKE_LIBRARY_ARCHITECTURE "x86" CACHE STRING "Architecture of target system (for 32bit)") @@ -58,8 +87,10 @@ if(WIN32) # might work with "SHARED" as well. set(PA_LIBRARY_TYPE "STATIC") - set(PORTAUDIO_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/external_libraries/portaudio_sc_org/include" CACHE PATH "Portaudio include directory" FORCE) - add_subdirectory("${CMAKE_SOURCE_DIR}/external_libraries/portaudio_sc_org") + if(NOT MSYS) + set(PORTAUDIO_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/external_libraries/portaudio_sc_org/include" CACHE PATH "Portaudio include directory" FORCE) + add_subdirectory("${CMAKE_SOURCE_DIR}/external_libraries/portaudio_sc_org") + endif(NOT MSYS) endif(WIN32) ############################################# @@ -76,7 +107,7 @@ if (${CMAKE_COMPILER_IS_GNUCXX}) message(FATAL_ERROR "SuperCollider requires at least gcc-4.8 when compiled with gcc.") endif() - add_definitions("-ffast-math -fsigned-zeros -fno-associative-math") + add_definitions("-fno-math-errno -fno-signaling-nans -fsigned-zeros -fno-associative-math") if(APPLE) exec_program(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info) @@ -99,7 +130,7 @@ endif() if(APPLE) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/Install" CACHE STRING "Cmake install path") + set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/Install" CACHE STRING "Cmake install path" FORCE) endif() elseif(UNIX) add_definitions(-DSC_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/SuperCollider") @@ -167,15 +198,12 @@ else() set(SC_IDE False) endif() endif (SC_QT) - +option(NO_X11 "Disables the building of plugins that require the X11 library (for UI-less compiles)" OFF) option(ENABLE_TESTSUITE "Compile testsuite." ON) -if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT CMAKE_VERSION VERSION_LESS SUPERNOVA_CMAKE_MINVERSION) - option(SUPERNOVA "Build with supernova as optional audio synthesis server" ON) -else() - option(SUPERNOVA "Build with supernova as optional audio synthesis server" OFF) -endif() +# Build supernova by default only when on Linux or BSD systems +option(SUPERNOVA "Build with supernova as optional audio synthesis server" ${LINUX_OR_BSD}) option(SN_MEMORY_DEBUGGING "Build supernova for memory debugging (disable memory pools).") option(SC_MEMORY_DEBUGGING "Build sclang&scsynth for memory debugging (disable memory pools).") @@ -191,8 +219,6 @@ option(NO_GPL3 "Disable GPL3 code, for p option(SCLANG_SERVER "Build with internal server." ON) -option(SC_WII "Build sclang with WII support (broken on osx after 10.7)" OFF) - if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG) option(NATIVE "Optimize binary for this architecture (binaries may not run on other machines).") endif() @@ -208,6 +234,12 @@ option(SYSTEM_YAMLCPP "Use yaml-cpp libr option(FORTIFY "Define -D_FORTIFY_SOURCE=2 to check for programming errors" OFF) +if(MINGW AND (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 5.3.0)) + option(SC_HIDAPI "Build with HID support" OFF) +else() + option(SC_HIDAPI "Build with HID support" ON) +endif() + ############################################# # some default libraries @@ -242,7 +274,7 @@ endif() if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG) if (SSE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse") - set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -msse") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse") if(NOT APPLE AND NOT CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpmath=sse") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpmath=sse") @@ -304,7 +336,9 @@ if(MSVC) set(${flag} "${${flag}} /wd4996") # The POSIX name for this item is deprecated. endforeach() - add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS) +# _ENABLE_ATOMIC_ALIGNMENT_FIX prevents the build from breaking when VS2015 update 2 upwards are used +# see http://boost.2283326.n4.nabble.com/lockfree-ENABLE-ATOMIC-ALIGNMENT-FIX-for-VS-2015-Update-2-td4685955.html + add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_ENABLE_ATOMIC_ALIGNMENT_FIX) endif(MSVC) if (SC_MEMORY_DEBUGGING) @@ -312,10 +346,13 @@ if (SC_MEMORY_DEBUGGING) add_definitions(-DENABLE_MEMORY_CHECKS) endif() -if(MINGW) +if(MINGW AND (${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 4.8.5) AND (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 5.3.0)) # no-strict-aliasing was introduced because of problems with MinGW/GCC 4.9.2 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign -fno-strict-aliasing") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign -fno-strict-aliasing") +elseif(MINGW) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign") endif() # support for building on Raspberry Pi 1/2/3 and BBB @@ -343,7 +380,6 @@ add_subdirectory(external_libraries) if(NOT YAMLCPP_FOUND) set(YAMLCPP_LIBRARY yaml) - set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/include) endif() @@ -389,7 +425,7 @@ endif() set(SCCLASSLIB_EXCLUDE_REGEX "IGNOREME") if(NOT SC_QT) - set(SCCLASSLIB_EXCLUDE_REGEX "${SCCLASSLIB_EXCLUDE_REGEX}|QtCollider") + set(SCCLASSLIB_EXCLUDE_REGEX "${SCCLASSLIB_EXCLUDE_REGEX}|GUI") endif() if(WIN32) @@ -447,7 +483,7 @@ if (WIN32) elseif(APPLE) set( AdditionalInstallFiles README.md - README_OS_X.md + README_MACOS.md CHANGELOG.md COPYING AUTHORS @@ -487,18 +523,13 @@ endif() # # build scdoc help files # -list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/Common") -list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/Platform") -list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/SCDoc") -list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/DefaultLibrary") -list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/JITLib") -list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/backwards_compatibility") +list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary") # this folder has an extension to Platform that disables the loadStartupFiles method list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/platform/disable_startup_files") foreach(arg ${BUILD_CLASSLIBRARIES}) - set(BUILD_CLASSLIBRARYPATH "${BUILD_CLASSLIBRARYPATH}+${arg}\n") + set(BUILD_CLASSLIBRARYPATH "${BUILD_CLASSLIBRARYPATH} - ${arg}\n") endforeach() configure_file(build_sclang.cfg.in ${CMAKE_CURRENT_BINARY_DIR}/build_sclang.cfg) @@ -508,8 +539,8 @@ if(SC_DOC_RENDER) file(GLOB_RECURSE SCDocClasses RELATIVE SCClassLibrary/SCDoc *.sc) add_custom_target(doc ALL - COMMAND $/sclang${CMAKE_EXECUTABLE_SUFFIX} - -l ${CMAKE_CURRENT_BINARY_DIR}/build_sclang.cfg + COMMAND sclang + -a -l ${CMAKE_CURRENT_BINARY_DIR}/build_sclang.cfg platform/renderAllHelp.scd ${CMAKE_CURRENT_SOURCE_DIR}/HelpSource ${CMAKE_CURRENT_BINARY_DIR}/RenderedHelp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS sclang ${SCDocSources} ${SCDocClasses}) @@ -543,7 +574,7 @@ if(APPLE) # set(CPACK_PACKAGE_FILE_NAME "${scappbundlename}-${PROJECT_VERSION}") set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/package/ds_store") set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/package/background.png") - set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/icons/SCcube.icns") + set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/icons/sc_ide.icns") endif() if(NOT WIN32) # We define a custom 'package' target in platform/windows/CMakeLists.txt @@ -560,3 +591,4 @@ mark_as_advanced(JACK JACK_INCLUDE_DIR J mark_as_advanced(MATH_LIBRARY) mark_as_advanced(QT_QMAKE_EXECUTABLE) mark_as_advanced(SNDFILE SNDFILE_LIBRARY_DIR) +mark_as_advanced(SC_HIDAPI) diff -pruN 1:3.8.0~repack-2/cmake_modules/FindBluetooth.cmake 1:3.10.0+repack-0.1/cmake_modules/FindBluetooth.cmake --- 1:3.8.0~repack-2/cmake_modules/FindBluetooth.cmake 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/cmake_modules/FindBluetooth.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -# Try to find Bluetooth -# BLUETOOTH_FOUND - If false, do not try to use Bluetooth. -# BLUETOOTH_INCLUDE_DIRS - where to find bluetooth/bluetooth.h -# BLUETOOTH_LIBRARIES - the libraries to link against - - -if (BLUETOOTH_LIBRARIES AND BLUETOOTH_INCLUDE_DIRS) - # path set by user or was found in the past - set(BLUETOOTH_FOUND TRUE) -else (BLUETOOTH_LIBRARIES AND BLUETOOTH_INCLUDE_DIRS) - find_path(BLUETOOTH_INCLUDE_DIRS - NAMES bluetooth/bluetooth.h - ) - - find_library(BLUETOOTH_LIBRARIES - NAMES bluetooth - ) - - if (BLUETOOTH_INCLUDE_DIRS AND BLUETOOTH_LIBRARIES) - set(BLUETOOTH_FOUND TRUE) - endif (BLUETOOTH_INCLUDE_DIRS AND BLUETOOTH_LIBRARIES) - - if (BLUETOOTH_FOUND) - if (NOT BLUETOOTH_FIND_QUIETLY) - message(STATUS "Found Bluetooth: ${BLUETOOTH_LIBRARIES}") - endif (NOT BLUETOOTH_FIND_QUIETLY) - else (BLUETOOTH_FOUND) - if (BLUETOOTH_FIND_REQUIRED) - message(FATAL_ERROR "Could not find Bluetooth") - endif (BLUETOOTH_FIND_REQUIRED) - endif (BLUETOOTH_FOUND) - - # set visibility in cache - mark_as_advanced(BLUETOOTH_INCLUDE_DIRS BLUETOOTH_LIBRARIES) - -endif (BLUETOOTH_LIBRARIES AND BLUETOOTH_INCLUDE_DIRS) diff -pruN 1:3.8.0~repack-2/cmake_modules/FindCWiid.cmake 1:3.10.0+repack-0.1/cmake_modules/FindCWiid.cmake --- 1:3.8.0~repack-2/cmake_modules/FindCWiid.cmake 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/cmake_modules/FindCWiid.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -# Try to find CWiid -# CWIID_FOUND - If false, do not try to use CWiid. -# CWIID_INCLUDE_DIRS - where to find cwiid.h -# CWIID_LIBRARIES - the libraries to link against - -find_package(Bluetooth) - -if (CWIID_LIBRARIES AND CWIID_INCLUDE_DIRS AND BLUETOOTH_FOUND) - # path set by user or was found in the past - set(CWIID_FOUND TRUE) -else (CWIID_LIBRARIES AND CWIID_INCLUDE_DIRS AND BLUETOOTH_FOUND) - find_path(CWIID_INCLUDE_DIRS - NAMES cwiid.h - ) - - find_library(CWIID_LIBRARY - NAMES cwiid - ) - - set(CWIID_LIBRARIES ${BLUETOOTH_LIBRARIES} ${CWIID_LIBRARY}) - - if (CWIID_INCLUDE_DIRS AND CWIID_LIBRARIES AND BLUETOOTH_FOUND) - set(CWIID_FOUND TRUE) - endif (CWIID_INCLUDE_DIRS AND CWIID_LIBRARIES AND BLUETOOTH_FOUND) - - if (CWIID_FOUND) - if (NOT CWIID_FIND_QUIETLY) - message(STATUS "Found CWiid: ${CWIID_LIBRARIES}") - endif (NOT CWIID_FIND_QUIETLY) - else (CWIID_FOUND) - if (CWIID_FIND_REQUIRED) - if (NOT BLUETOOTH_FOUND) - message(FATAL_ERROR "Could not find dependency Bluetooth for CWiid") - else (NOT BLUETOOTH_FOUND) - message(FATAL_ERROR "Could not find CWiid") - endif (NOT BLUETOOTH_FOUND) - endif (CWIID_FIND_REQUIRED) - endif (CWIID_FOUND) - - # set visibility in cache - mark_as_advanced(CWIID_INCLUDE_DIRS CWIID_LIBRARY CWIID_LIBRARIES) - -endif (CWIID_LIBRARIES AND CWIID_INCLUDE_DIRS AND BLUETOOTH_FOUND) diff -pruN 1:3.8.0~repack-2/cmake_modules/launch-c.in 1:3.10.0+repack-0.1/cmake_modules/launch-c.in --- 1:3.8.0~repack-2/cmake_modules/launch-c.in 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/cmake_modules/launch-c.in 2018-07-17 03:17:00.000000000 +0000 @@ -0,0 +1,5 @@ +#!/bin/sh + +# thanks to Craig Scott: https://crascit.com/2016/04/09/using-ccache-with-cmake/ +export CCACHE_CPP2=true +exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_CXX_COMPILER}" "$@" diff -pruN 1:3.8.0~repack-2/cmake_modules/launch-cxx.in 1:3.10.0+repack-0.1/cmake_modules/launch-cxx.in --- 1:3.8.0~repack-2/cmake_modules/launch-cxx.in 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/cmake_modules/launch-cxx.in 2018-07-17 03:17:00.000000000 +0000 @@ -0,0 +1,5 @@ +#!/bin/sh +# Thanks to Craig Scott: https://crascit.com/2016/04/09/using-ccache-with-cmake/ + +export CCACHE_CPP2=true +exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_CXX_COMPILER}" "$@" diff -pruN 1:3.8.0~repack-2/cmake_modules/MacOSXBundleInfo.plist.in 1:3.10.0+repack-0.1/cmake_modules/MacOSXBundleInfo.plist.in --- 1:3.8.0~repack-2/cmake_modules/MacOSXBundleInfo.plist.in 2016-06-03 19:44:35.000000000 +0000 +++ 1:3.10.0+repack-0.1/cmake_modules/MacOSXBundleInfo.plist.in 2018-08-28 01:12:47.000000000 +0000 @@ -128,7 +128,7 @@ CFBundleExecutable ${MACOSX_BUNDLE_BUNDLE_NAME} CFBundleIconFile - SCcube + sc_ide CFBundleIdentifier net.sourceforge.supercollider CFBundleInfoDictionaryVersion @@ -140,11 +140,11 @@ CFBundleSignature SCjm CFBundleVersion - ${PROJECT_VERSION_PATCH} + ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}${PROJECT_VERSION_PATCH} CFBundleShortVersionString - ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}${PROJECT_VERSION_PATCH} NSHumanReadableCopyright - (C) 2001-2012 James McCartney et al. + (C) 2001-2018 James McCartney et al. NSMainNibFile MainMenu NSPrincipalClass diff -pruN 1:3.8.0~repack-2/CODE_OF_CONDUCT.md 1:3.10.0+repack-0.1/CODE_OF_CONDUCT.md --- 1:3.8.0~repack-2/CODE_OF_CONDUCT.md 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/CODE_OF_CONDUCT.md 2018-08-28 01:12:47.000000000 +0000 @@ -0,0 +1,97 @@ +## Purpose + +A primary goal of our community, our user groups and mailing lists, symposia and other events is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all. + +This Code of Conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. + +We invite all those who participate in our community to help us create safe and positive experiences for everyone. + +## Diversity Statement + +We encourage everyone to participate and are committed to building a community for all. Although we will fail at times, we seek to treat everyone both as fairly and equally as possible. Whenever a participant has made a mistake, we expect them to take responsibility for it. If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong. + +Although this list cannot be exhaustive, we explicitly honor diversity in age, gender, gender identity or expression, culture, ethnicity, language, national origin, political beliefs, profession, race, colour, immigration status, education level, size, family status, religion, sexual orientation, class, socioeconomic status, and technical ability. We will not tolerate discrimination based on any of the protected characteristics above, including discrimination against participants with disabilities. + +We are aware that the definitions and examples for diversity and discrimination have a strong cultural bias and are likely to change over time. They mirror the sensitivities of the SuperCollider community at the time of writing. We welcome suggestions as to how to extend our understanding of discrimination and exclusivism. + +## Open [Source/Culture/Tech] Citizenship + +A supplemental goal of this Code of Conduct is to increase free and open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. + +Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. + +If you see someone who is making an extra effort to ensure our community is welcoming and friendly, and encourages all participants to contribute to the fullest extent, we want to know. + +### The SuperCollider community strives to be: + +* Friendly and patient. +* Welcoming: We strive to be a community that welcomes and supports people of all backgrounds and identities. +* Considerate: Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we’re a world-wide community, so you might not be communicating in someone else’s primary language. +* Respectful: Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one. +* Understanding of differences of opinion: Disagreements, both social and technical, happen all the time. It is important that we resolve disagreements and differing views constructively. Remember that we’re different. The strength of our community comes from its diversity. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes. + +## Expected Behavior + +* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. +* Exercise consideration and respect in your speech and actions. +* Attempt collaboration before conflict. +* Refrain from demeaning, discriminatory, or harassing behavior and speech. +* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. + +### Self-Promotion + +* You are invited to use the SuperCollider mailing lists and forums to share your own projects and events, commercial or noncommercial, that directly involve SuperCollider. Posting your artistic projects is specifically encouraged. +* You may also share news of projects and events that are only topically related to SuperCollider, provided that they are noncommercial. +* Avoid using the community as a platform to advertise commercial products that lack direct connections to the software. +* Self-promotion postings should be in courteous volumes and preferably include good descriptions. + +## Unacceptable Behavior + +Unacceptable behaviors include: intimidating, harassing, abusive, culturally appropriative, discriminatory, derogatory or demeaning speech or actions by any participant in our community online, at all related events and in one-on-one communications carried out in the context of community business. Community event venues may be shared with members of the public; please be respectful to all patrons of these locations. + +Harassment includes, but is not limited to: + +* Harmful or prejudicial verbal or written comments related to gender, gender identity and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, race, ethnicity, age, regional discrimination, political or religious affiliation +* Unwelcome comments regarding a person’s lifestyle choices and practices, including those related to food, health, parenting, drugs, and employment +* Deliberate misgendering. This includes deadnaming or persistently using a pronoun that does not correctly reflect a person’s gender identity. You must address people by the name they give you when not addressing them by their username or handle +* Physical contact and simulated physical contact (eg, textual descriptions like “backrub”) without consent or after a request to stop +* Inappropriate depictions of violence (including presentation slides) +* Threats of violence, both physical and psychological +* Incitement of violence towards any individual, including encouraging a person to commit suicide or to engage in self-harm +* Deliberate intimidation +* Stalking or following +* Harassing photography or recording, including logging online activity for harassment purposes +* Sustained disruption of discussion +* Unwelcome sexual attention, including gratuitous or off-topic sexual images or behaviour +* Pattern of inappropriate social contact, such as requesting/assuming inappropriate levels of intimacy with others +* Continued one-on-one communication after requests to cease +* Deliberate “outing” of any aspect of a person’s identity without their consent except as necessary to protect others from intentional abuse +* Publication of non-harassing private communication + +The SuperCollider community prioritizes marginalized people’s safety over privileged people’s comfort. We will not act on complaints regarding: +* ‘Reverse’ -isms, including ‘reverse racism,’ ‘reverse sexism,’ and ‘cisphobia’ +* Reasonable communication of boundaries, such as “leave me alone,” “go away,” or “I’m not discussing this with you” +* Refusal to explain or debate social justice concepts +* Criticizing racist, sexist, cissexist, or otherwise oppressive behavior or assumptions + +## Consequences of Unacceptable Behavior + +Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. Anyone asked to stop unacceptable behavior is expected to comply immediately. + +If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). + +## If You Witness or Are Subject to Unacceptable Behavior + +If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. + +## Addressing Grievances + +If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify one of the event or community organizers with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies. + +## Scope + +We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues—online and in-person—as well as in all one-on-one communications pertaining to community business. + +## License and attribution + +The SuperCollider Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/) license. It is based on the [Berlin Code of Conduct](http://berlincodeofconduct.org/), the [Open Code of Conduct](https://github.com/todogroup/opencodeofconduct), and the [Geek Feminism Code of Conduct] (http://geekfeminism.org/about/code-of-conduct/). diff -pruN 1:3.8.0~repack-2/common/malloc_aligned.hpp 1:3.10.0+repack-0.1/common/malloc_aligned.hpp --- 1:3.8.0~repack-2/common/malloc_aligned.hpp 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/malloc_aligned.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -0,0 +1,130 @@ +// functions for aligned memory allocation +// Copyright (C) 2009 Tim Blechmann +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; see the file COPYING. If not, write to +// the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +#pragma once + +#include +#include + +#include // for std::bad_alloc +#include // for std::forward + +#include + +#include "function_attributes.h" + +namespace nova { + +const int malloc_memory_alignment = 64; + +inline void* MALLOC ASSUME_ALIGNED(64) malloc_aligned(std::size_t bytes) +{ + return boost::alignment::aligned_alloc( malloc_memory_alignment, bytes ); +} + +inline void free_aligned(void *ptr) +{ + return boost::alignment::aligned_free( ptr ); +} + +inline void * MALLOC ASSUME_ALIGNED(64) calloc_aligned(std::size_t bytes) +{ + void * ret = malloc_aligned(bytes); + if (ret) + std::memset(ret, 0, bytes); + return ret; +} + +template +T* MALLOC ASSUME_ALIGNED(64) malloc_aligned(std::size_t n) +{ + return static_cast(malloc_aligned(n * sizeof(T))); +} + +template +T* MALLOC ASSUME_ALIGNED(64) calloc_aligned(std::size_t n) +{ + return static_cast(calloc_aligned(n * sizeof(T))); +} + + +/** smart-pointer, freeing the managed pointer via free_aligned */ +template +class aligned_storage_ptr +{ +public: + explicit aligned_storage_ptr(T * p = 0): + ptr(p) + {} + + explicit aligned_storage_ptr(size_t count): + ptr(malloc_aligned(count)) + {} + + ~aligned_storage_ptr(void) + { + if (managed && ptr) + free_aligned(ptr); + } + + void reset(T * p = 0) + { + if (managed && ptr) + free_aligned(ptr); + ptr = p; + } + + T & operator*() const + { + return *ptr; + } + + T * operator->() const + { + return ptr; + } + + T * get() const + { + return ptr; + } + + aligned_storage_ptr & operator=(T * p) + { + reset(p); + return *this; + } + + operator bool() const + { + return bool(ptr); + } + + void swap(aligned_storage_ptr & b) + { + T * p = ptr; + ptr = b.ptr; + b.ptr = p; + } + +private: + T * ptr; +}; + +} /* namespace nova */ + diff -pruN 1:3.8.0~repack-2/common/MsgFifo.h 1:3.10.0+repack-0.1/common/MsgFifo.h --- 1:3.8.0~repack-2/common/MsgFifo.h 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/MsgFifo.h 2018-08-28 01:12:47.000000000 +0000 @@ -20,8 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef _MsgFifo_ -#define _MsgFifo_ +#pragma once #include @@ -132,4 +131,3 @@ using SCMsgFifo::MsgFifoNoFree; ///////////////////////////////////////////////////////////////////// -#endif diff -pruN 1:3.8.0~repack-2/common/Samp.hpp 1:3.10.0+repack-0.1/common/Samp.hpp --- 1:3.8.0~repack-2/common/Samp.hpp 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/Samp.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -18,8 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef _SC_Samp_ -#define _SC_Samp_ +#pragma once #include "SC_Types.h" @@ -35,5 +34,4 @@ extern float32 gSineWavetable[2*kSineSiz void SignalAsWavetable(float32* signal, float32* wavetable, long inSize); void WavetableAsSignal(float32* wavetable, float32* signal, long inSize); -#endif diff -pruN 1:3.8.0~repack-2/common/SC_AllocPool.h 1:3.10.0+repack-0.1/common/SC_AllocPool.h --- 1:3.8.0~repack-2/common/SC_AllocPool.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_AllocPool.h 2018-08-28 01:12:47.000000000 +0000 @@ -27,8 +27,7 @@ Improved bit block scanning by using a c */ -#ifndef _AllocPool_ -#define _AllocPool_ +#pragma once #include "SC_List.h" #include "clz.h" @@ -275,4 +274,3 @@ private: unsigned long mBinBlocks[4]; }; -#endif diff -pruN 1:3.8.0~repack-2/common/SC_Apple.hpp 1:3.10.0+repack-0.1/common/SC_Apple.hpp --- 1:3.8.0~repack-2/common/SC_Apple.hpp 2015-05-13 15:49:14.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Apple.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -17,8 +17,7 @@ * ************************************************************************/ -#ifndef _SC_APPLE_H_ -#define _SC_APPLE_H_ +#pragma once namespace SC { namespace Apple { @@ -28,4 +27,3 @@ void disableAppNap ( ); } // namespace Apple } // namespace SC -#endif \ No newline at end of file diff -pruN 1:3.8.0~repack-2/common/SC_Apple.mm 1:3.10.0+repack-0.1/common/SC_Apple.mm --- 1:3.8.0~repack-2/common/SC_Apple.mm 2015-05-13 15:49:14.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Apple.mm 2018-07-17 03:17:00.000000000 +0000 @@ -38,9 +38,9 @@ void disableAppNap ( ) uint64_t options = (0x00FFFFFFULL | (1ULL << 20)) | 0xFF00000000ULL; // NSActivityLatencyCritical | NSActivityUserInitiated - id activity = [[NSProcessInfo processInfo] beginActivityWithOptions: options reason:@"avoiding audio hiccups and reducing latency"]; + [[NSProcessInfo processInfo] beginActivityWithOptions: options reason:@"avoiding audio hiccups and reducing latency"]; } } } // namespace Apple -} // namespace SC \ No newline at end of file +} // namespace SC diff -pruN 1:3.8.0~repack-2/common/SC_Codecvt.hpp 1:3.10.0+repack-0.1/common/SC_Codecvt.hpp --- 1:3.8.0~repack-2/common/SC_Codecvt.hpp 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Codecvt.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -0,0 +1,137 @@ +/** + * \file SC_Codecvt.hpp + * + * \brief Codepage conversion utilities. + * + * This header provides convenience functions to convert strings and paths between UTF-8 and the OS's + * filesystem API encoding. On POSIX systems, this does nothing. On Windows, this converts between + * UTF-8 and UTF-16. On Windows, additional functions are provided to convert between UTF-8 std::string + * and UTF-16 std::wstring. + * + * $Author: Brian Heim $ + * + * \version 1.1 + * + * $Date: 2017-05-14 $ + * + * $Contact: brianlheim@gmail.com $ + * + * Created on: 2017-05-14 + */ +/* + * Copyright (C) Brian Heim, 2017. All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ +#pragma once + +#include // string +#include // path + +#ifdef _WIN32 +# include // std::codecvt_utf8_utf16, utf16 +# include // std::wstring_convert +#endif + +/** \namespace SC_Codecvt + * \brief Namespace for codepage conversion functions. */ +namespace SC_Codecvt { + +// Windows helper functions. Only defined on Windows to avoid having +// to unnecessarily include and +#ifdef _WIN32 + +/** \brief Converts a UTF-8 char str to UTF-16 std::wstring + * + * This function is only defined on Windows, to avoid unnecessary header includes. */ +inline std::wstring utf8_cstr_to_utf16_wstring(const char *s) +{ + return std::wstring_convert >().from_bytes(s); +} + +/** \brief Converts a UTF-16 wchar_t str to UTF-8 std::string + * + * This function is only defined on Windows, to avoid unnecessary header includes. */ +inline std::string utf16_wcstr_to_utf8_string(const wchar_t *s) +{ + return std::wstring_convert >().to_bytes(s); +} + +#endif // _WIN32 + +/** \brief Converts a path to a UTF-8 encoded string. + * + * On POSIX platforms, this just converts using .string(). On Windows, uses + * conversion between UTF-16 and UTF-8. */ +inline std::string path_to_utf8_str(const boost::filesystem::path& p) +{ +#ifdef _WIN32 + return p.string(std::codecvt_utf8_utf16()); +#else + return p.string(); +#endif // _WIN32 +} + +/** \brief Converts a UTF-8 encoded string to a path. + * + * On POSIX platforms, this converts using the default constructor. On Windows, + * uses conversion between UTF-16 and UTF-8. */ +inline boost::filesystem::path utf8_str_to_path(const std::string& s) +{ +#ifdef _WIN32 + return boost::filesystem::path(s, std::codecvt_utf8_utf16()); +#else + return boost::filesystem::path(s); +#endif // _WIN32 +} + +/** \brief Converts a native filesystem-encoded string to a UTF-8 string. + * + * On Windows, converts between UTF-16 and UTF-8. On POSIX systems, no-op. */ +inline std::string utf8_to_native_str(const std::string& s) +{ +#ifdef _WIN32 + // first to wide string (native format) + std::wstring ws = utf8_cstr_to_utf16_wstring(s.c_str()); + + // then to string (still native) + std::wstring_convert > conv_16to16; + std::string ret = conv_16to16.to_bytes(ws); + return ret; +#else + return s; +#endif // _WIN32 +} + +/** \brief Converts a UTF-8 string to a native filesystem-encoded string. + * + * On Windows, converts between UTF-16 and UTF-8. On POSIX systems, no-op. */ +inline std::string native_to_utf8_str(const std::string& s) +{ +#ifdef _WIN32 + // first to wide string (still native format) + std::wstring_convert > conv_16to16; + std::wstring ws = conv_16to16.from_bytes(s); + + // then to string (utf8) + std::string ret = utf16_wcstr_to_utf8_string(ws.c_str()); + return ret; +#else + return s; +#endif // _WIN32 +} + +} // SC_Codecvt diff -pruN 1:3.8.0~repack-2/common/SC_DirUtils.cpp 1:3.10.0+repack-0.1/common/SC_DirUtils.cpp --- 1:3.8.0~repack-2/common/SC_DirUtils.cpp 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_DirUtils.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,641 +0,0 @@ -/* - * Copyright (c) 2005 Tim Walters. All rights reserved. - * Created by Tim Walters on 10/19/05. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - */ - -#include -#include -#include -#include - -#ifdef __APPLE__ -#import -#endif - -#ifdef _WIN32 -# include "SC_Win32Utils.h" -# include -# include -# include -#else -# include -# include -# include -# include -# include -# include -#endif - -#include "SC_DirUtils.h" -#if defined(__APPLE__) || defined(SC_IPHONE) -#ifndef _SC_StandAloneInfo_ -# include "SC_StandAloneInfo_Darwin.h" -#endif -# include -# include -#ifndef SC_IPHONE -# include -#endif -#endif - -const char * gIdeName = "none"; - -// Add a component to a path. - -void sc_AppendToPath(char *path, size_t max_size, const char *component) -{ - size_t currentLength = strlen(path); - if (currentLength >= max_size-1) - return; - path[currentLength] = SC_PATH_DELIMITER[0]; - path[currentLength+1] = 0; - ++currentLength; - - char * tail = path + currentLength; - size_t remain = max_size - currentLength; - - strncat(tail, component, remain); -} - - -char *sc_StandardizePath(const char *path, char *newpath2) -{ - char newpath1[MAXPATHLEN]; - - newpath1[0] = '\0'; - newpath2[0] = '\0'; - - size_t pathLen = strlen(path); - - if ((pathLen >= 2) && (path[0] == '~') && ((path[1] == '/') || (path[1] == '\\'))) { - char home[PATH_MAX]; - sc_GetUserHomeDirectory(home, PATH_MAX); - - if (home[0] != 0) { - if ((pathLen - 1 + strlen(home)) >= MAXPATHLEN) { - return 0; - } - strcpy(newpath1, home); - strcat(newpath1, path + 1); - } else { - if (pathLen >= MAXPATHLEN) { - return 0; - } - strcpy(newpath1, path); - newpath1[0] = '.'; - } - } else { - if (pathLen >= MAXPATHLEN) { - return 0; - } - strcpy(newpath1, path); - } - - bool isAlias = false; - if(sc_ResolveIfAlias(newpath1, newpath2, isAlias, PATH_MAX)!=0) { - strcpy(newpath2, newpath1); - } - - return newpath2; -} - - -// Returns TRUE iff dirname is an existing directory. - -bool sc_DirectoryExists(const char *dirname) -{ -#if defined(_WIN32) - DWORD attr = GetFileAttributes(dirname); - return ((attr != INVALID_FILE_ATTRIBUTES) && - (attr & FILE_ATTRIBUTE_DIRECTORY)); -#else - struct stat buf; - return ((stat(dirname, &buf) == 0) && - S_ISDIR(buf.st_mode)); -#endif -} - -bool sc_IsSymlink(const char* path) -{ -#if defined(_WIN32) - // FIXME - return false; -#else - struct stat buf; - - return ((stat(path, &buf) == 0) && - S_ISLNK(buf.st_mode)); -#endif -} - -bool sc_IsNonHostPlatformDir(const char *name) -{ -#if defined(SC_IPHONE) - const char a[] = "linux", b[] = "windows", c[]="osx"; -#elif defined(__APPLE__) - const char a[] = "linux", b[] = "windows", c[]="iphone"; -#elif defined(__linux__) - const char a[] = "osx", b[] = "windows", c[]="iphone"; -#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) - const char a[] = "osx", b[] = "windows", c[]="iphone"; -#elif defined(_WIN32) - const char a[] = "osx", b[] = "linux", c[]="iphone"; -#endif - return ((strcmp(name, a) == 0) || - (strcmp(name, b) == 0) || - (strcmp(name, c) == 0)); -} - - -// Returns TRUE iff 'name' is special directory '.' or '..' - -inline static bool sc_IsSpecialDirectory(const char* name) -{ - return (strcmp(name, ".") == 0) || (strcmp(name, "..") == 0); -} - -// Returns TRUE iff 'name' is to be ignored during compilation. - -bool sc_SkipDirectory(const char *name) -{ - return (stringCaseCompare(name, "help") || - stringCaseCompare(name, "ignore") || - (strcmp(name, ".svn") == 0) || - (strcmp(name, ".git") == 0) || - (strcmp(name, "_darcs") == 0) || - ((strncmp(name, "scide_", 6) == 0) && (strcmp(name+6, gIdeName) != 0)) || - sc_IsNonHostPlatformDir(name)); -} - - -int sc_ResolveIfAlias(const char *path, char *returnPath, bool &isAlias, int length) -{ - isAlias = false; -#if defined(__APPLE__) && !defined(SC_IPHONE) - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSString *nsstringPath = [NSString stringWithCString: path encoding: NSUTF8StringEncoding]; - BOOL isDirectory; - // does the file exist? If not just copy and bail - if([[NSFileManager defaultManager] fileExistsAtPath: nsstringPath isDirectory: &isDirectory]) { - NSError *error; - - NSData *bookmark = [NSURL bookmarkDataWithContentsOfURL: [NSURL fileURLWithPath:nsstringPath isDirectory: isDirectory] error: &error]; - - // is it an alias? If not just copy and bail - if(bookmark) { - NSError *resolvedURLError; - BOOL isStale; - NSURL *resolvedURL = [NSURL URLByResolvingBookmarkData: bookmark options: NSURLBookmarkResolutionWithoutUI relativeToURL: nil bookmarkDataIsStale: &isStale error: &resolvedURLError]; - // does it actually lead to something? - if(isStale || (resolvedURL == NULL) ) { - printf("Error: Target missing for alias at %s\n", path); - return -1; - } - - NSString *resolvedString = [resolvedURL path]; - - const char *resolvedPath = [resolvedString cStringUsingEncoding: NSUTF8StringEncoding]; - isAlias = true; - strncpy(returnPath, resolvedPath, length); - return 0; - } - } - [pool release]; - -#endif - strcpy(returnPath, path); - return 0; -} - -// Support for Bundles - -#if defined(__APPLE__) && !defined(SC_IPHONE) // running on OS X - -// Support for stand-alone applications - -bool sc_IsStandAlone() -{ - return SC_StandAloneInfo::IsStandAlone(); -} - -void sc_GetResourceDirectory(char* pathBuf, int length) -{ - SC_StandAloneInfo::GetResourceDir(pathBuf, length); -} - - -void sc_AppendBundleName(char *str, int size) -{ - CFBundleRef mainBundle; - mainBundle = CFBundleGetMainBundle(); - if(mainBundle){ - CFDictionaryRef dictRef = CFBundleGetInfoDictionary(mainBundle); - CFStringRef strRef; - strRef = (CFStringRef)CFDictionaryGetValue(dictRef, CFSTR("CFBundleName")); - if(strRef){ - const char *bundleName = CFStringGetCStringPtr(strRef, CFStringGetSystemEncoding()); - if(bundleName) { - sc_AppendToPath(str, size, bundleName); - return; - } - } - } - sc_AppendToPath(str, size, "SuperCollider"); -} - -#elif defined(SC_IPHONE) - -bool sc_IsStandAlone() -{ - return false; -} - -void sc_GetResourceDirectory(char* pathBuf, int length) -{ - sc_GetUserAppSupportDirectory(pathBuf, length); -} - -#elif defined(__unix__) - -bool sc_IsStandAlone() -{ - return false; -} - -void sc_GetResourceDirectory(char* pathBuf, int length) -{ -#ifdef SC_DATA_DIR - strncpy(pathBuf, SC_DATA_DIR, length); -#else - strncpy(pathBuf, "/usr/share/SuperCollider", length); -#endif -} - -#elif defined(_WIN32) - -bool sc_IsStandAlone() -{ - return false; -} - -void sc_GetResourceDirectory(char* dest, int length) -{ - char buf[PATH_MAX]; - GetModuleFileName( NULL, buf, length ); - char *path = win32_dirname(buf); - strcpy(dest, path); -} - -#else - -bool sc_IsStandAlone() -{ - return false; -} - -static void sc_GetResourceDirectoryFromAppDirectory(char* pathBuf, int length) -{ - char * result = getcwd(pathBuf, length); - if (result != pathBuf) - throw std::runtime_error("cannot get current working directory"); -} - - -void sc_GetResourceDirectory(char* pathBuf, int length) -{ - return sc_GetResourceDirectoryFromAppDirectory(pathBuf, length); -} - -#endif - -// Support for Extensions - -// Get the user home directory. - -void sc_GetUserHomeDirectory(char *str, int size) -{ -#ifndef _WIN32 - const char *home = getenv("HOME"); - if(home!=NULL){ - strncpy(str, home, size); - }else{ - // cwd is not the user home directory; but this is better than leaving mem uninitialised. - strcpy(str, "./"); - } -#else - win32_GetKnownFolderPath(CSIDL_PROFILE, str, size); -#endif -} - - -// Get the System level data directory. - -void sc_GetSystemAppSupportDirectory(char *str, int size) -{ -#ifdef _WIN32 - win32_GetKnownFolderPath(CSIDL_COMMON_APPDATA, str, size); - sc_AppendToPath(str, size, "SuperCollider"); -#else - - strncpy(str, -#if defined(SC_DATA_DIR) - SC_DATA_DIR, -#elif defined(SC_IPHONE) - "/", -#elif defined(__APPLE__) - "/Library/Application Support", -#else - "/usr/local/share/SuperCollider", -#endif - size); - -#if defined(__APPLE__) - // Get the main bundle name for the app from the enclosed Info.plist - sc_AppendBundleName(str, size); -#endif - -#endif -} - - -// Get the User level data directory. - -void sc_GetUserAppSupportDirectory(char *str, int size) -{ - // XDG support according to http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - const char * xdg_data_home = getenv("XDG_DATA_HOME"); - if (xdg_data_home) { - strncpy(str, xdg_data_home, size); - sc_AppendToPath(str, size, "SuperCollider"); - return; - } - -#if defined(_WIN32) - win32_GetKnownFolderPath(CSIDL_LOCAL_APPDATA, str, size); - sc_AppendToPath(str, size, "SuperCollider"); -#else - - sc_GetUserHomeDirectory(str, size); - -#if defined(SC_IPHONE) - sc_AppendToPath(str, size, "Documents"); -#elif defined(__APPLE__) - // Get the main bundle name for the app - sc_AppendToPath(str, size, "Library/Application Support"); - sc_AppendBundleName(str, size); -#else - sc_AppendToPath(str, size, ".local/share/SuperCollider"); -#endif - -#endif -} - - -// Get the System level 'Extensions' directory. - -void sc_GetSystemExtensionDirectory(char *str, int size) -{ - sc_GetSystemAppSupportDirectory(str, size); - sc_AppendToPath(str, size, "Extensions"); -} - - -// Get the System level 'Extensions' directory. - -void sc_GetUserExtensionDirectory(char *str, int size) -{ - sc_GetUserAppSupportDirectory(str, size); - sc_AppendToPath(str, size, "Extensions"); -} - -// Get the directory for the configuration files. -void sc_GetUserConfigDirectory(char *str, int size) -{ - // XDG support according to http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - const char * xdg_config_home = getenv("XDG_CONFIG_HOME"); - if (xdg_config_home) { - strncpy(str, xdg_config_home, size); - sc_AppendToPath(str, size, "SuperCollider"); - return; - } - -#if defined(__linux__) || defined(__freebsd__) - sc_GetUserHomeDirectory(str, size); - sc_AppendToPath(str, size, ".config/SuperCollider"); -#else - sc_GetUserAppSupportDirectory(str, size); -#endif -} - - -// Directory access - -struct SC_DirHandle -{ -#ifdef _WIN32 - HANDLE mHandle; - WIN32_FIND_DATA mEntry; - bool mAtEnd; -#else - DIR* mHandle; - struct dirent* mEntry; -#endif -}; - -SC_DirHandle* sc_OpenDir(const char* dirname) -{ - SC_DirHandle* dir = new SC_DirHandle; - memset(dir, 0, sizeof(SC_DirHandle)); - -#ifdef _WIN32 - char allInDir[PATH_MAX]; - snprintf(allInDir, PATH_MAX, "%s\\*.*", dirname); - - dir->mHandle = ::FindFirstFile(allInDir, &dir->mEntry); - if (dir->mHandle == INVALID_HANDLE_VALUE) { - delete dir; - return 0; - } - - dir->mAtEnd = false; -#else - dir->mHandle = opendir(dirname); - if (!dir->mHandle) { - delete dir; - return 0; - } -#endif - - return dir; -} - -void sc_CloseDir(SC_DirHandle* dir) -{ -#ifdef _WIN32 - ::FindClose(dir->mHandle); -#else - closedir(dir->mHandle); -#endif - delete dir; -} - -bool sc_ReadDir(SC_DirHandle* dir, const char* dirname, char* path, bool& skipEntry) -{ -#ifdef _WIN32 - bool success = true; - - if (dir->mAtEnd) - return false; - - const char* entry = dir->mEntry.cFileName; - - if (sc_IsSpecialDirectory(entry) || (skipEntry && sc_SkipDirectory(entry))) { - skipEntry = true; - success = true; - } else { - skipEntry = false; - success = true; - } - - char entrypathname[PATH_MAX]; - strncpy(entrypathname, dirname, PATH_MAX); - sc_AppendToPath(entrypathname, PATH_MAX, dir->mEntry.cFileName); - - bool isAlias = false; - sc_ResolveIfAlias(entrypathname, path, isAlias, PATH_MAX); - - if (!::FindNextFile(dir->mHandle, &dir->mEntry)) { - dir->mAtEnd = true; - } - - return true; -#else - if (!dir->mHandle) - return false; - - dir->mEntry = readdir(dir->mHandle); - if (!dir->mEntry) - return false; - - const char* entry = dir->mEntry->d_name; - - if (sc_IsSpecialDirectory(entry) || (skipEntry && sc_SkipDirectory(entry))) { - skipEntry = true; - return true; - } else { - skipEntry = false; - } - - // construct path from dir entry - char entrypathname[PATH_MAX]; - strncpy(entrypathname, dirname, PATH_MAX); - sc_AppendToPath(entrypathname, PATH_MAX, dir->mEntry->d_name); - - // resolve path - bool isAlias = false; - if (sc_ResolveIfAlias(entrypathname, path, isAlias, strlen(entrypathname))<0) - { - skipEntry = true; - } - - return true; -#endif -} - - -// Globbing - -struct SC_GlobHandle -{ -#ifdef _WIN32 - HANDLE mHandle; - char mFolder[PATH_MAX]; - WIN32_FIND_DATA mEntry; - char mEntryPath[PATH_MAX]; - bool mAtEnd; -#else - glob_t mHandle; - size_t mEntry; -#endif -}; - -SC_GlobHandle* sc_Glob(const char* pattern) -{ - SC_GlobHandle* glob = new SC_GlobHandle; - -#ifdef _WIN32 - char patternWin[1024]; - - strncpy(patternWin, pattern, 1024); - patternWin[1023] = 0; - win32_ReplaceCharInString(patternWin, 1024, '/', '\\'); - - win32_ExtractContainingFolder(glob->mFolder, patternWin, PATH_MAX); - - glob->mHandle = ::FindFirstFile(patternWin, &glob->mEntry); - if (glob->mHandle == INVALID_HANDLE_VALUE) { - delete glob; - return 0; - } - - glob->mAtEnd = false; -#else - int flags = GLOB_MARK | GLOB_TILDE; -#ifdef __APPLE__ - flags |= GLOB_QUOTE; -#endif - - int err = ::glob(pattern, flags, NULL, &glob->mHandle); - if (err < 0) { - delete glob; - return 0; - } - - glob->mEntry = 0; -#endif - - return glob; -} - -void sc_GlobFree(SC_GlobHandle* glob) -{ -#ifdef _WIN32 - ::FindClose(glob->mHandle); -#else - globfree(&glob->mHandle); -#endif - delete glob; -} - -const char* sc_GlobNext(SC_GlobHandle* glob) -{ -#ifdef _WIN32 - if (glob->mAtEnd) - return 0; - strncpy(glob->mEntryPath, glob->mFolder, PATH_MAX); - sc_AppendToPath(glob->mEntryPath, PATH_MAX, glob->mEntry.cFileName); - if (!::FindNextFile(glob->mHandle, &glob->mEntry)) - glob->mAtEnd = true; - return glob->mEntryPath; -#else - if (glob->mEntry >= glob->mHandle.gl_pathc) - return 0; - return glob->mHandle.gl_pathv[glob->mEntry++]; -#endif -} diff -pruN 1:3.8.0~repack-2/common/SC_DirUtils.h 1:3.10.0+repack-0.1/common/SC_DirUtils.h --- 1:3.8.0~repack-2/common/SC_DirUtils.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_DirUtils.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,145 +0,0 @@ -/* - * Copyright (c) 2005 Tim Walters. All rights reserved. - * Created by Tim Walters on 10/19/05. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - */ - -#ifndef SC_DIR_UTILS_H_INCLUDED -#define SC_DIR_UTILS_H_INCLUDED - -#include -#include - -#ifdef _WIN32 -# include -# ifndef PATH_MAX -# define PATH_MAX _MAX_PATH -# endif -# include -# define snprintf _snprintf -#endif - -#include - -static inline bool stringCaseCompare(const char * a, const char * b) -{ -#if _POSIX_VERSION >= 200112L - return strcasecmp(a, b) == 0; -#else - return boost::iequals(a, b); -#endif -} - - -# ifndef MAXPATHLEN -# define MAXPATHLEN PATH_MAX -# endif - -#ifdef _WIN32 -#define SC_PATH_DELIMITER "\\" -#else -#define SC_PATH_DELIMITER "/" -#endif - -// General path utilities - -// Add 'component' to 'path' using the platform path separator. -void sc_AppendToPath(char *path, size_t max_size, const char *component); - -// Returns the expanded path with users home directory (also in newpath2) -char *sc_StandardizePath(const char *path, char *newpath2); - -// Return TRUE iff 'path' is a symbolic link. -bool sc_IsSymlink(const char *path); - -// Return TRUE iff 'dirname' is an existing directory. -bool sc_DirectoryExists(const char *dirname); - -// Returns TRUE iff 'name' is a directory pertaining to another platform. -bool sc_IsNonHostPlatformDir(const char *name); - -// Returns TRUE iff 'name' is to be ignored during compilation. -bool sc_SkipDirectory(const char *name); - -int sc_ResolveIfAlias(const char *path, char *returnPath, bool &isAlias, int length); - -extern const char * gIdeName; // string used for conditional compilation according to which IDE is in use this session. -// for example, if the value is "scapp" then folders "scide_scapp" will be included, all other "scide_*" excluded. - -// Support for Bundles - -void sc_GetResourceDirectory(char* pathBuf, int length); -bool sc_IsStandAlone(); - -#if defined(__APPLE__) && !defined(SC_IPHONE) // running on OS X -void sc_AppendBundleName(char *str, int size); -#endif -// Support for Extensions - -// Get the user home directory. -void sc_GetUserHomeDirectory(char *str, int size); - -// Get the System level data directory. -void sc_GetSystemAppSupportDirectory(char *str, int size); - -// Get the User level data directory. -void sc_GetUserAppSupportDirectory(char *str, int size); - -// Get the System level 'Extensions' directory. -void sc_GetSystemExtensionDirectory(char *str, int size); - -// Get the User level 'Extensions' directory. -void sc_GetUserExtensionDirectory(char *str, int size); - -// Get the directory for the configuration files. -void sc_GetUserConfigDirectory(char *str, int size); - -// Directory access - -// Abstract directory handle -struct SC_DirHandle; - -// Open directory dirname. Return NULL on failure. -SC_DirHandle* sc_OpenDir(const char *dirname); - -// Close directory dir. -void sc_CloseDir(SC_DirHandle *dir); - -// Get next entry from directory 'dir' with name 'dirname' and put it into 'path'. -// Skip compilation directories iff 'skipEntry' is TRUE. -// Return TRUE iff pointing to a valid dir entry. -// Return TRUE in 'skipEntry' iff entry should be skipped. -bool sc_ReadDir(SC_DirHandle *dir, const char *dirname, char *path, bool &skipEntry); - - -// Globbing - -// Abstract glob handle -struct SC_GlobHandle; - -// Create glob iterator from 'pattern'. Return NULL on failure. -SC_GlobHandle* sc_Glob(const char* pattern); - -// Free glob handle. -void sc_GlobFree(SC_GlobHandle* glob); - -// Return next path from glob iterator. -// Return NULL at end of stream. -const char* sc_GlobNext(SC_GlobHandle* glob); - -#endif // SC_DIR_UTILS_H_INCLUDED diff -pruN 1:3.8.0~repack-2/common/SC_Errors.h 1:3.10.0+repack-0.1/common/SC_Errors.h --- 1:3.8.0~repack-2/common/SC_Errors.h 2014-12-31 13:00:42.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Errors.h 2018-08-28 01:12:47.000000000 +0000 @@ -19,8 +19,7 @@ */ -#ifndef _SC_Errors_ -#define _SC_Errors_ +#pragma once typedef int SCErr; @@ -55,5 +54,3 @@ enum { kSCErr_NumErrors }; - -#endif diff -pruN 1:3.8.0~repack-2/common/SC_fftlib.cpp 1:3.10.0+repack-0.1/common/SC_fftlib.cpp --- 1:3.8.0~repack-2/common/SC_fftlib.cpp 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_fftlib.cpp 2018-08-28 01:12:47.000000000 +0000 @@ -33,7 +33,7 @@ For speed we keep this global, although #include #include "SC_fftlib.h" -#include "../server/supernova/utilities/malloc_aligned.hpp" +#include "malloc_aligned.hpp" #ifdef NOVA_SIMD #include "simd_binary_arithmetic.hpp" @@ -300,7 +300,9 @@ scfft * scfft_create(size_t fullsize, si void scfft_ensurewindow(unsigned short log2_fullsize, unsigned short log2_winsize, short wintype) { // Ensure we have enough space to do our calcs +#if SC_FFT_FFTW int old_log2n = largest_log2n; +#endif if(log2_fullsize > largest_log2n){ largest_log2n = log2_fullsize; largest_fftsize = 1 << largest_log2n; diff -pruN 1:3.8.0~repack-2/common/SC_Filesystem.hpp 1:3.10.0+repack-0.1/common/SC_Filesystem.hpp --- 1:3.8.0~repack-2/common/SC_Filesystem.hpp 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Filesystem.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -0,0 +1,305 @@ +/** + * \file SC_Filesystem.hpp + * + * \brief Filesystem utilities for SuperCollider. + * + * This header provides a singleton class, SC_Filesystem, which handles many + * important filesystem functions: + * - Getting and setting application directories (such as config, resource, and extension) + * - Expanding ~ to the home directory + * - Alias resolution + * - Globbing + * - Conversion between Path and UTF-8 encoded string + * + * \note This header replaced an older implementation by Tim Walters, SC_DirUtils.hpp. Most of the globbing and + * directory calculation code is his. + * + * $Authors: Brian Heim, Tim Walters $ + * + * \version Latest revision by Brian Heim, 2017 + * + * $Date: 2017-04-30 $ + * + * $Contact: brianlheim@gmail.com $ + * + * Created on: 2017-04-03 + * + * Original revision by Tim Walters, 2005-10-19. + */ +/* + * Copyright (C) Tim Walters, 2005. All rights reserved. + * Copyright (C) Brian Heim, 2017. All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +#pragma once + +#ifndef PATH_MAX +#define PATH_MAX MAX_PATH +#endif + +#ifndef MAXPATHLEN +#define MAXPATHLEN PATH_MAX +#endif + +/// Name of the folder used for system and user extensions. +#define SC_FOLDERNAME_EXTENSIONS "Extensions" + +/// Name of "SuperCollider" folder. Could probably pop this up another level of importance. +#define SC_FOLDERNAME_APPLICATION_NAME "SuperCollider" + +/// Default IDE name. +#define SC_DEFAULT_IDE_NAME "none" + +/// Name of the plugins subdirectory of the Resources dir +#define SC_PLUGIN_DIR_NAME "plugins" + +/// Extension for server plugins. +#ifndef SC_PLUGIN_EXT +# define SC_PLUGIN_EXT ".scx" +#endif + +#include // map +#include // std::transform +#include // std::string +#include // path + +#include "SC_Codecvt.hpp" // path_to_utf8_str + +/** \class SC_Filesystem + * + * \brief A singleton class providing SuperCollider filesystem utilities. + * + * - Getting and setting application directories (such as config, resource, and extension) + * - Expanding ~ to the home directory + * - Alias resolution + * - Globbing + * - Conversion between Path and UTF-8 encoded string + */ +class SC_Filesystem { +public: + //--------------------------------------------------------------------------------------// + //------------------------------ PUBLIC CLASS MEMBERS ----------------------------------// + //--------------------------------------------------------------------------------------// + + //---------------------------------- PUBLIC TYPES --------------------------------------// + + enum class DirName; + struct Glob; + + typedef boost::filesystem::path Path; ///< Path type. + typedef std::map DirMap; ///< Type of directory name-to-path map. + + /// SuperCollider common directory names. + enum class DirName { + SystemAppSupport, + SystemExtension, + UserHome, + UserAppSupport, + UserExtension, + UserConfig, + Resource, + MyDocuments // only on Windows, used for Platform.myDocumentsDir in sclang + }; + + //------------------------------- SINGLETON INSTANCE -----------------------------------// + + /// Singleton instance. + static SC_Filesystem& instance() + { + static SC_Filesystem instance; + return instance; + } + + //--------------------------- COMMON DIRECTORY MANAGEMENT ------------------------------// + + /// Get path associated with a common directory; the path is initialized if necessary. + Path getDirectory(const DirName& dn) + { + const DirMap::const_iterator& it = mDirectoryMap.find(dn); + if (it != mDirectoryMap.end()) { + return it->second; + } + mDirectoryMap[dn] = defaultDirectory(dn); + return mDirectoryMap[dn]; + } + + /// Set path associated with a common directory. + inline void setDirectory(const DirName& dn, const Path& p) { mDirectoryMap[dn] = p; } + + //-------------------------------- GENERAL UTILITIES -----------------------------------// + + /** \brief Checks whether a directory should be compiled. + * \param p a directory path + * \return True if the directory should not be traversed during compilation. + * + * Specifically, returns true if the directory name, ignoreing case, is equal to: + * - one of ".svn", ".git", or "_darcs" + * - one of "help" or "ignore" + * - a string starting with "scide_" but not ending with the current IDE name + * - one of "windows", "osx", "iphone", or "linux", but that is not the name of the current platform. + */ + bool shouldNotCompileDirectory(const Path& p) const + { + std::string dirname = SC_Codecvt::path_to_utf8_str(p.filename()); + std::transform(dirname.begin(), dirname.end(), dirname.begin(), ::tolower); + return dirname == "help" || dirname == "ignore" || dirname == ".svn" || + dirname == ".git" || dirname == "_darcs" || + isUnusedIdeDirectoryName(dirname) || + isNonHostPlatformDirectoryName(dirname); + } + + /// Expands a path starting with `~` to use the user's home directory. + Path expandTilde(const Path& p) + { + static const Path tilde("~"); + if (!p.empty() && *p.begin() == tilde) { + // If the first element in the path is tilde, just concatenate the rest of the path onto it + const Path homeDir = getDirectory(DirName::UserHome); + const std::string homeDir_utf8 = SC_Codecvt::path_to_utf8_str(homeDir); + const std::string inPath_utf8 = SC_Codecvt::path_to_utf8_str(p); + const std::string result = homeDir_utf8 + inPath_utf8.substr(1); + return SC_Codecvt::utf8_str_to_path(result); + } else { + return p; + } + } + + //---------------------------------- IDE UTILITIES -------------------------------------// + + /// Get the IDE name. "none" is the default. + const std::string& getIdeName() const { return mIdeName; } + + /// Set the IDE name. + const void setIdeName(const std::string& s) { mIdeName = s; } + + /// Returns true if the IDE name is "none" (the default) + const bool usingIde() const { return mIdeName != SC_DEFAULT_IDE_NAME; } + + //--------------------------------------------------------------------------------------// + //------------------------------ PUBLIC STATIC MEMBERS ---------------------------------// + //--------------------------------------------------------------------------------------// + + //-------------------------------- GENERAL UTILITIES -----------------------------------// + + /** \brief Resolves an alias on macOS. + * \param p a path to resolve + * \param isAlias set to true if p is an alias + * \return An empty path if resolution failed; otherwise, the resolved path. + * + * If the path was not an alias, a copy is returned. */ + // Could possibly be split into `isAlias` and `resolveAlias` to avoid + // unnecessary copying - bh + static Path resolveIfAlias(const Path& p, bool& isAlias); + + //--------------------------------- GLOB UTILITIES -------------------------------------// + + /** \brief Makes a glob. + * \param pattern a UTF-8 encoded string + * + * Constructs a Glob from a given pattern. Call globNext to get the next + * Path in the glob. Client is responsible for calling freeGlob. */ + static Glob* makeGlob(const char* pattern); + + /// Next available Path in the glob. Returns empty path to indicate end. + static Path globNext(Glob* g); + + /// Frees a Glob. + static void freeGlob(Glob* g); + +private: + //--------------------------------------------------------------------------------------// + //--------------------------------- PRIVATE MEMBERS ------------------------------------// + //--------------------------------------------------------------------------------------// + + //---------------------------- CONSTRUCTORS & ASSIGNMENT -------------------------------// + + SC_Filesystem(SC_Filesystem const&) = delete; + void operator=(SC_Filesystem const&) = delete; + + SC_Filesystem() : + mDirectoryMap(), + mIdeName(SC_DEFAULT_IDE_NAME) + { } + + //----------------------------------- IDE UTILITIES ------------------------------------// + + bool isUnusedIdeDirectoryName(const std::string& s) const + { + return s.size() > 6 && s.substr(0, 6) == "scide_" && s.substr(6) != getIdeName(); + } + + //------------------------------ PRIVATE STATIC MEMBERS --------------------------------// + + /** Of the four strings "windows", "osx", "linux", "iphone", returns true if `p` is one of the + * three that doesn't correspond to this platform. */ + static bool isNonHostPlatformDirectoryName(const std::string& p); + + static Path defaultDirectory(const DirName& dn) + { + switch (dn) { + case DirName::SystemAppSupport: + return defaultSystemAppSupportDirectory(); + case DirName::SystemExtension: + return defaultSystemExtensionDirectory(); + case DirName::UserHome: + return defaultUserHomeDirectory(); + case DirName::UserAppSupport: + return defaultUserAppSupportDirectory(); + case DirName::UserExtension: + return defaultUserExtensionDirectory(); + case DirName::UserConfig: + return defaultUserConfigDirectory(); + case DirName::Resource: + return defaultResourceDirectory(); +#ifdef _WIN32 + case DirName::MyDocuments: + return defaultMyDocumentsDirectory(); +#endif + default: + return Path(); + } + } + + static Path defaultSystemAppSupportDirectory(); + static Path defaultUserHomeDirectory(); + static Path defaultUserAppSupportDirectory(); + static Path defaultUserConfigDirectory(); + static Path defaultResourceDirectory(); + +#ifdef _WIN32 + // this function has no analogue on other OSs, yet. + static Path defaultMyDocumentsDirectory(); +#endif + + static Path defaultSystemExtensionDirectory() + { + const Path& p = defaultSystemAppSupportDirectory(); + return p.empty() ? p : p / SC_FOLDERNAME_EXTENSIONS; + } + + static Path defaultUserExtensionDirectory() + { + const Path& p = defaultUserAppSupportDirectory(); + return p.empty() ? p : p / SC_FOLDERNAME_EXTENSIONS; + } + + //------------------------------- PRIVATE DATA MEMBERS ---------------------------------// + + DirMap mDirectoryMap; + std::string mIdeName; +}; diff -pruN 1:3.8.0~repack-2/common/SC_Filesystem_iphone.cpp 1:3.10.0+repack-0.1/common/SC_Filesystem_iphone.cpp --- 1:3.8.0~repack-2/common/SC_Filesystem_iphone.cpp 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Filesystem_iphone.cpp 2018-07-17 03:17:00.000000000 +0000 @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2005 Tim Walters. All rights reserved. + * Copyright (c) 2017 Brian Heim. All rights reserved. + * Created by Tim Walters on 2005-10-19. + * + * Revision history: + * Changed from SC_DirUtils to SC_Filesystem (Brian Heim, 2017-04-03) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +/* + * SC_Filesystem implementation for iPhone. + */ +#ifdef SC_IPHONE + +#include "SC_Filesystem.hpp" + +// system +#include // ::glob, glob_t + +using Path = SC_Filesystem::Path; +using DirName = SC_Filesystem::DirName; +using DirMap = SC_Filesystem::DirMap; + +//============ DIRECTORY NAMES =============// +const char* LIBRARY_DIR_NAME = "Library"; +const char* DOCUMENTS_DIR_NAME = "Documents"; +const char* APPLICATION_SUPPORT_DIR_NAME = "Application Support"; +const Path ROOT_PATH = Path("/"); + +//============ PATH UTILITIES =============// + +Path SC_Filesystem::resolveIfAlias(const Path& p, bool& isAlias) { isAlias = false; return p; } + +//============ GLOB UTILITIES =============// + +struct SC_Filesystem::Glob +{ + glob_t mHandle; + size_t mEntry; +}; + +SC_Filesystem::Glob* SC_Filesystem::makeGlob(const char* pattern) +{ + Glob* glob = new Glob; + + const int flags = GLOB_MARK | GLOB_TILDE | GLOB_QUOTE; + const int err = ::glob(pattern, flags, nullptr, &glob->mHandle); + if (err < 0) { + delete glob; + return nullptr; + } + + glob->mEntry = 0; + return glob; +} + +void SC_Filesystem::freeGlob(Glob* glob) +{ + globfree(&glob->mHandle); + delete glob; +} + +Path SC_Filesystem::globNext(Glob* glob) +{ + if (glob->mEntry >= glob->mHandle.gl_pathc) + return Path(); + return Path(glob->mHandle.gl_pathv[glob->mEntry++]); +} + +//============= PRIVATE METHODS ==============// + +bool SC_Filesystem::isNonHostPlatformDirectoryName(const std::string& s) +{ + return s == "linux" || s == "windows" || s == "osx"; +} + +Path SC_Filesystem::defaultSystemAppSupportDirectory() +{ + // Note: original implementation called sc_AppendBundleName if defined(__APPLE__). + // However, that function is only defined when !defined(SC_IPHONE). I have taken + // the more conservative approach and avoided appending the bundle name here. -BH + return ROOT_PATH; +} + +Path SC_Filesystem::defaultUserHomeDirectory() +{ + const char *home = getenv("HOME"); + return Path(home ? home : ""); +} + +Path SC_Filesystem::defaultUserAppSupportDirectory() +{ + // Note: I have not added XDG support here because that seems highly unlikely on iPhone. -BH + const Path& p = defaultUserHomeDirectory(); + return p.empty() ? p : p / DOCUMENTS_DIR_NAME; +} + +Path SC_Filesystem::defaultUserConfigDirectory() +{ + // Note: I have not added XDG support here because that seems highly unlikely on iPhone. -BH + return defaultUserAppSupportDirectory(); +} + +Path SC_Filesystem::defaultResourceDirectory() +{ + return defaultUserAppSupportDirectory(); +} + +#endif // SC_IPHONE diff -pruN 1:3.8.0~repack-2/common/SC_Filesystem_macos.cpp 1:3.10.0+repack-0.1/common/SC_Filesystem_macos.cpp --- 1:3.8.0~repack-2/common/SC_Filesystem_macos.cpp 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Filesystem_macos.cpp 2018-07-17 03:17:00.000000000 +0000 @@ -0,0 +1,243 @@ +/* + * Copyright (c) 2005 Tim Walters. All rights reserved. + * Copyright (c) 2017 Brian Heim. All rights reserved. + * Created by Tim Walters on 2005-10-19. + * + * Revision history: + * Changed from SC_DirUtils to SC_Filesystem (Brian Heim, 2017-04-03) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +/* + * SC_Filesystem implementation for macOS. + */ +#if defined(__APPLE__) && !defined(SC_IPHONE) + +#include "SC_Filesystem.hpp" + +// boost +#include // path, parent_path() +#include // canonical, current_path() + +// system includes +#include +#include +#include +#include +#include + +#include // ::glob, glob_t +#include // _NSGetExecutablePath + +using Path = SC_Filesystem::Path; +using DirName = SC_Filesystem::DirName; +using DirMap = SC_Filesystem::DirMap; + +//============ DIRECTORY NAMES =============// +const char* LIBRARY_DIR_NAME = "Library"; +const char* APPLICATION_SUPPORT_DIR_NAME = "Application Support"; +const Path ROOT_PATH = Path("/"); + +//====== STATIC FUNC FORWARD DECLS =======// + +// Get the bundle name +static const char* getBundleName(); + +//============ PATH UTILITIES =============// + +Path SC_Filesystem::resolveIfAlias(const Path& p, bool& isAlias) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSString *nsstringPath = [NSString stringWithCString: p.c_str() encoding: NSUTF8StringEncoding]; + BOOL isDirectory; + + // does the file exist? If not just copy and bail + if ([[NSFileManager defaultManager] fileExistsAtPath: nsstringPath isDirectory: &isDirectory]) { + NSError *error; + NSData *bookmark = [NSURL bookmarkDataWithContentsOfURL: [NSURL fileURLWithPath:nsstringPath isDirectory: isDirectory] error: &error]; + + // is it an alias? + if (bookmark) { + isAlias = true; + NSError *resolvedURLError; + BOOL isStale; + NSURL *resolvedURL = [NSURL URLByResolvingBookmarkData: bookmark options: NSURLBookmarkResolutionWithoutUI relativeToURL: nil bookmarkDataIsStale: &isStale error: &resolvedURLError]; + // does it actually lead to something? + if (isStale || resolvedURL == nullptr) { + // Return original path. + return Path(); + } + + NSString *resolvedString = [resolvedURL path]; + const char *resolvedPath = [resolvedString cStringUsingEncoding: NSUTF8StringEncoding]; + return Path(resolvedPath); + } + } + + [pool release]; + isAlias = false; + return p; +} + +//============ GLOB UTILITIES =============// + +struct SC_Filesystem::Glob +{ + glob_t mHandle; + size_t mEntry; +}; + +SC_Filesystem::Glob* SC_Filesystem::makeGlob(const char* pattern) +{ + Glob* glob = new Glob; + + const int flags = GLOB_MARK | GLOB_TILDE | GLOB_QUOTE; + const int err = ::glob(pattern, flags, nullptr, &glob->mHandle); + if (err < 0) { + delete glob; + return nullptr; + } + + glob->mEntry = 0; + return glob; +} + +void SC_Filesystem::freeGlob(Glob* glob) +{ + globfree(&glob->mHandle); + delete glob; +} + +Path SC_Filesystem::globNext(Glob* glob) +{ + if (glob->mEntry >= glob->mHandle.gl_pathc) + return Path(); + return Path(glob->mHandle.gl_pathv[glob->mEntry++]); +} + +//============= PRIVATE METHODS ==============// + +bool SC_Filesystem::isNonHostPlatformDirectoryName(const std::string& s) +{ + return s == "linux" || s == "windows" || s == "iphone"; +} + +Path SC_Filesystem::defaultSystemAppSupportDirectory() +{ + // "/Library/Application Support/[SuperCollider]" + return ROOT_PATH / LIBRARY_DIR_NAME / APPLICATION_SUPPORT_DIR_NAME / getBundleName(); +} + +Path SC_Filesystem::defaultUserHomeDirectory() +{ + // "/Users/[username]" + const char *home = getenv("HOME"); + return Path(home ? home : ""); +} + +Path SC_Filesystem::defaultUserAppSupportDirectory() +{ + // XDG support + // see http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + const char* home = getenv("XDG_DATA_HOME"); + if (home) + return Path(home) / SC_FOLDERNAME_APPLICATION_NAME; + + const Path& p = defaultUserHomeDirectory(); + // "/Users/[username]/Library/Application Support/[SuperCollider]" + return p.empty() ? p : p / LIBRARY_DIR_NAME / APPLICATION_SUPPORT_DIR_NAME / getBundleName(); +} + +Path SC_Filesystem::defaultUserConfigDirectory() +{ + // XDG support + // see http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + const char* xdgConfigHome = getenv("XDG_CONFIG_HOME"); + + if (xdgConfigHome) + return Path(xdgConfigHome) / SC_FOLDERNAME_APPLICATION_NAME; + else + return defaultUserAppSupportDirectory(); +} + +Path SC_Filesystem::defaultResourceDirectory() +{ + Path ret; + CFStringEncoding encoding = kCFStringEncodingUTF8; + + CFURLRef enablerURL = CFBundleCopyResourceURL (CFBundleGetMainBundle(), + CFSTR("SCClassLibrary"), + NULL, + NULL + ); + if( !enablerURL ) { + enablerURL = CFBundleCopyResourceURL (CFBundleGetMainBundle(), + CFSTR("sclang.app"), + NULL, + NULL + ); + } + if ( enablerURL ) { + // If sclang or SuperCollider binary is run within the .app bundle, + // this is how we find the Resources path. + char relDir[PATH_MAX]; + CFStringRef rawUrlPath = CFURLCopyFileSystemPath(enablerURL, kCFURLPOSIXPathStyle); + CFStringRef rawPath = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@/.."), rawUrlPath); + CFStringGetCString(rawPath, relDir, PATH_MAX, encoding); + CFRelease( rawUrlPath ); + CFRelease( rawPath ); + CFRelease( enablerURL ); + ret = Path(relDir); + } else { + // when sclang is run from a symlink, the resource URL above will not be found, + // so we need to find the path of the executable. + uint32_t bufsize = PATH_MAX; + char relDir[PATH_MAX]; + if(_NSGetExecutablePath(relDir, &bufsize)==0) { + ret = boost::filesystem::canonical(relDir); // resolve symlink + ret = ret.parent_path(); + } else { + // in case it failed, fall back to current directory + ret = boost::filesystem::current_path(); + + } + } + ret = boost::filesystem::canonical(ret); // resolve lingering symlink + return ret; +} + +//============= STATIC FUNCTIONS =============// + +const char* getBundleName() +{ + CFBundleRef mainBundle; + mainBundle = CFBundleGetMainBundle(); + if (mainBundle) { + CFDictionaryRef dictRef = CFBundleGetInfoDictionary(mainBundle); + CFStringRef strRef; + strRef = (CFStringRef)CFDictionaryGetValue(dictRef, CFSTR("CFBundleName")); + if (strRef) { + const char *bundleName = CFStringGetCStringPtr(strRef, CFStringGetSystemEncoding()); + if (bundleName) { + return bundleName; + } + } + } + return SC_FOLDERNAME_APPLICATION_NAME; +} + +#endif // defined(__APPLE__) && !defined(SC_IPHONE) diff -pruN 1:3.8.0~repack-2/common/SC_Filesystem_unix.cpp 1:3.10.0+repack-0.1/common/SC_Filesystem_unix.cpp --- 1:3.8.0~repack-2/common/SC_Filesystem_unix.cpp 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Filesystem_unix.cpp 2018-07-17 03:17:00.000000000 +0000 @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2005 Tim Walters. All rights reserved. + * Copyright (c) 2017 Brian Heim. All rights reserved. + * Created by Tim Walters on 2005-10-19. + * + * Revision history: + * Changed from SC_DirUtils to SC_Filesystem (Brian Heim, 2017-04-03) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +/* + * SC_Filesystem implementation for Linux/FreeBSD. + */ +#if defined(__linux__) || defined(__FreeBSD__) + +#include "SC_Filesystem.hpp" + +// system +#include // ::glob, glob_t + +using Path = SC_Filesystem::Path; +using DirName = SC_Filesystem::DirName; +using DirMap = SC_Filesystem::DirMap; + +//============ DIRECTORY NAMES =============// +const char* SHARE_DIR_NAME = "share"; +const char* USER_DIR_NAME = "usr"; +const char* LOCAL_DIR_NAME = "local"; +const char* DOT_LOCAL = ".local"; +const char* DOT_CONFIG = ".config"; +const Path ROOT_PATH = Path("/"); + +//============ PATH UTILITIES =============// + +Path SC_Filesystem::resolveIfAlias(const Path& p, bool& isAlias) { isAlias = false; return p; } + +//============ GLOB UTILITIES =============// + +struct SC_Filesystem::Glob +{ + glob_t mHandle; + size_t mEntry; +}; + +SC_Filesystem::Glob* SC_Filesystem::makeGlob(const char* pattern) +{ + Glob* glob = new Glob; + const int flags = GLOB_MARK | GLOB_TILDE; + const int err = ::glob(pattern, flags, nullptr, &glob->mHandle); + if (err < 0) { + delete glob; + return nullptr; + } + + glob->mEntry = 0; + return glob; +} + +void SC_Filesystem::freeGlob(Glob* glob) +{ + globfree(&glob->mHandle); + delete glob; +} + +Path SC_Filesystem::globNext(Glob* glob) +{ + if (glob->mEntry >= glob->mHandle.gl_pathc) + return Path(); + return Path(glob->mHandle.gl_pathv[glob->mEntry++]); +} + +//============= PRIVATE METHODS ==============// + +bool SC_Filesystem::isNonHostPlatformDirectoryName(const std::string& s) +{ + return s == "osx" || s == "windows" || s == "iphone"; +} + +Path SC_Filesystem::defaultSystemAppSupportDirectory() +{ +#ifdef SC_DATA_DIR + return Path(SC_DATA_DIR); +#else + return ROOT_PATH / LOCAL_DIR_NAME / SHARE_DIR_NAME / SC_FOLDERNAME_APPLICATION_NAME; +#endif +} + +Path SC_Filesystem::defaultUserHomeDirectory() +{ + const char *home = getenv("HOME"); + return Path(home ? home : ""); +} + +Path SC_Filesystem::defaultUserAppSupportDirectory() +{ + const char *xdg_data_home = getenv("XDG_DATA_HOME"); + if (xdg_data_home) + return Path(xdg_data_home) / SC_FOLDERNAME_APPLICATION_NAME; + + const Path& p = defaultUserHomeDirectory(); + return p.empty() ? p : p / DOT_LOCAL / SHARE_DIR_NAME / SC_FOLDERNAME_APPLICATION_NAME; +} + +Path SC_Filesystem::defaultUserConfigDirectory() +{ + const char *xdg_config_home = getenv("XDG_CONFIG_HOME"); + if (xdg_config_home) + return Path(xdg_config_home) / SC_FOLDERNAME_APPLICATION_NAME; + + const Path& p = defaultUserHomeDirectory(); + return p.empty() ? p : p / DOT_CONFIG / SC_FOLDERNAME_APPLICATION_NAME; +} + +Path SC_Filesystem::defaultResourceDirectory() +{ +#ifdef SC_DATA_DIR + return Path(SC_DATA_DIR); +#else + return ROOT_PATH / USER_DIR_NAME / SHARE_DIR_NAME / SC_FOLDERNAME_APPLICATION_NAME; +#endif +} + +#endif // defined(__linux__) || defined(__FreeBSD__) diff -pruN 1:3.8.0~repack-2/common/SC_Filesystem_win.cpp 1:3.10.0+repack-0.1/common/SC_Filesystem_win.cpp --- 1:3.8.0~repack-2/common/SC_Filesystem_win.cpp 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Filesystem_win.cpp 2018-08-28 01:12:47.000000000 +0000 @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2005 Tim Walters. All rights reserved. + * Copyright (c) 2017 Brian Heim. All rights reserved. + * Created by Tim Walters on 2005-10-19. + * + * Revision history: + * Changed from SC_DirUtils to SC_Filesystem (Brian Heim, 2017-04-03) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +/* + * SC_Filesystem implementation for Windows. + */ +#ifdef _WIN32 + +#include "SC_Filesystem.hpp" +#include "SC_Codecvt.hpp" + +// boost +#include // is_directory + +// system +#include // SHGetKnownFolderPath + +using Path = SC_Filesystem::Path; +using DirName = SC_Filesystem::DirName; +using DirMap = SC_Filesystem::DirMap; + +//============ PATH UTILITIES =============// + +Path SC_Filesystem::resolveIfAlias(const Path& p, bool& isAlias) { isAlias = false; return p; } + +//============ GLOB UTILITIES =============// + +// Keep a buffer of one filename to return on the next call to nextGlob. +// This is because FindFirstFile already loads one filename. +struct SC_Filesystem::Glob +{ + HANDLE mHandle; // find handle + Path mFolder; // parent folder of the search path + WIN32_FIND_DATAW mEntry; + bool mAtEnd; // true if the NEXT call to nextGlob should fail + Path mFilename; // filename to return on the next call to nextGlob +}; + +SC_Filesystem::Glob* SC_Filesystem::makeGlob(const char* pattern) +{ + Glob* glob = new Glob; + + // use make_preferred() to change / -> \ on Windows + boost::filesystem::path path = SC_Codecvt::utf8_str_to_path(pattern).make_preferred(); + + // remove a trailing backslash. Even if searching with 'foo/.', this will + // change to 'foo' harmlessly. Use has_parent_path() because otherwise '.' + // (referring to the CWD) won't be recognized as a valid query. + if (path.filename_is_dot() && path.has_parent_path()) + path = path.parent_path(); + + glob->mHandle = ::FindFirstFileW(path.wstring().c_str(), &glob->mEntry); + if (glob->mHandle == INVALID_HANDLE_VALUE) { + delete glob; + return nullptr; + } + + glob->mFolder = path.parent_path(); + glob->mAtEnd = false; + return glob; +} + +void SC_Filesystem::freeGlob(Glob* glob) +{ + ::FindClose(glob->mHandle); + delete glob; +} + +Path SC_Filesystem::globNext(Glob* glob) +{ + bool isDirectory = false; + + // loop to ignore . and .. results + do { + if (glob->mAtEnd) + return Path(); + glob->mFilename = glob->mFolder / glob->mEntry.cFileName; + + // record whether it's a directory here, since we overwrite mEntry on the next step + isDirectory = (glob->mEntry.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) > 0; + + if (!::FindNextFileW(glob->mHandle, &glob->mEntry)) + glob->mAtEnd = true; + } while (glob->mFilename.filename_is_dot() || glob->mFilename.filename_is_dot_dot()); + + // add preferred separator (L'\\') for directories on Windows, to match + // POSIX globbing. boost::filesystem::is_directory won't work for this because + // in the case of input '.' and '..', the filename here is just a single folder, + // not a relative path, and so can't be correctly identified. Plus, it's faster + // to check the attributes than to make another system call. + return isDirectory ? glob->mFilename += boost::filesystem::path::preferred_separator + : glob->mFilename; +} + +//============= PRIVATE METHODS ==============// + +bool SC_Filesystem::isNonHostPlatformDirectoryName(const std::string& s) +{ + return s == "linux" || s == "osx" || s == "iphone"; +} + +Path SC_Filesystem::defaultSystemAppSupportDirectory() +{ + PWSTR wptr = nullptr; + const HRESULT hr = SHGetKnownFolderPath(FOLDERID_ProgramData, 0, nullptr, &wptr); + return FAILED(hr) ? Path() : Path(wptr) / SC_FOLDERNAME_APPLICATION_NAME; +} + +Path SC_Filesystem::defaultUserHomeDirectory() +{ + PWSTR wptr = nullptr; + const HRESULT hr = SHGetKnownFolderPath(FOLDERID_Profile, 0, nullptr, &wptr); + return FAILED(hr) ? Path() : Path(wptr); +} + +Path SC_Filesystem::defaultUserAppSupportDirectory() +{ + PWSTR wptr = nullptr; + const HRESULT hr = SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, nullptr, &wptr); + return FAILED(hr) ? Path() : Path(wptr) / SC_FOLDERNAME_APPLICATION_NAME; +} + +Path SC_Filesystem::defaultUserConfigDirectory() +{ + return defaultUserAppSupportDirectory(); +} + +Path SC_Filesystem::defaultMyDocumentsDirectory() +{ + PWSTR wptr = nullptr; + const HRESULT hr = SHGetKnownFolderPath(FOLDERID_Documents, 0, nullptr, &wptr); + return FAILED(hr) ? Path() : Path(wptr) / SC_FOLDERNAME_APPLICATION_NAME; +} + +Path SC_Filesystem::defaultResourceDirectory() +{ + WCHAR buf[MAX_PATH]; + GetModuleFileNameW(nullptr, buf, MAX_PATH); + return Path(buf).parent_path(); +} + +#endif // _WIN32 diff -pruN 1:3.8.0~repack-2/common/SC_List.h 1:3.10.0+repack-0.1/common/SC_List.h --- 1:3.8.0~repack-2/common/SC_List.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_List.h 2018-08-28 01:12:47.000000000 +0000 @@ -24,8 +24,7 @@ A doubly linked list template. */ -#ifndef _SC_List_ -#define _SC_List_ +#pragma once #include #include @@ -220,7 +219,3 @@ bool Link::SanityCheck() } return true; } - - - -#endif diff -pruN 1:3.8.0~repack-2/common/SC_Lock.h 1:3.10.0+repack-0.1/common/SC_Lock.h --- 1:3.8.0~repack-2/common/SC_Lock.h 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Lock.h 2018-08-28 01:12:47.000000000 +0000 @@ -18,9 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - -#ifndef _SC_Lock_ -#define _SC_Lock_ +#pragma once #include #include @@ -28,14 +26,12 @@ #include typedef std::mutex SC_Lock; +typedef std::thread SC_Thread; using std::mutex; using std::timed_mutex; using std::lock_guard; using std::unique_lock; using std::cv_status; typedef std::condition_variable_any condition_variable_any; -using std::thread; typedef SC_Lock mutex; - -#endif diff -pruN 1:3.8.0~repack-2/common/scope_buffer.hpp 1:3.10.0+repack-0.1/common/scope_buffer.hpp --- 1:3.8.0~repack-2/common/scope_buffer.hpp 2015-05-13 15:49:14.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/scope_buffer.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -18,8 +18,7 @@ // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA. -#ifndef SC_SCOPE_BUFFER_HPP -#define SC_SCOPE_BUFFER_HPP +#pragma once #include @@ -275,5 +274,3 @@ public: }; } /* namespace detail_server_shm */ - -#endif diff -pruN 1:3.8.0~repack-2/common/SC_OscUtils.hpp 1:3.10.0+repack-0.1/common/SC_OscUtils.hpp --- 1:3.8.0~repack-2/common/SC_OscUtils.hpp 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_OscUtils.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -18,8 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef SC_OSCUTILS_HPP -#define SC_OSCUTILS_HPP +#pragma once #include "SC_ReplyImpl.hpp" #include @@ -200,7 +199,7 @@ static void dumpOSC(int mode, int size, if (mode & 2) hexdump(size, inData); } - +#if 0 // debugging code static void DumpReplyAddress(ReplyAddress *inReplyAddress) { scprintf("mAddress %s\n", inReplyAddress->mAddress.to_string().c_str()); @@ -214,5 +213,4 @@ static void DumpReplyAddress(ReplyAddres scprintf("mReplyFunc %p\n", (void*)inReplyAddress->mReplyFunc); } - -#endif // SC_OSCUTILS_HPP +#endif diff -pruN 1:3.8.0~repack-2/common/sc_popen.cpp 1:3.10.0+repack-0.1/common/sc_popen.cpp --- 1:3.8.0~repack-2/common/sc_popen.cpp 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/sc_popen.cpp 2018-11-25 00:43:01.000000000 +0000 @@ -23,14 +23,6 @@ #include #include -// allows for linking into a dylib on darwin -#if defined(__APPLE__) && !defined(SC_IPHONE) - #include - #define environ (*_NSGetEnviron()) -#else - extern char **environ; -#endif - FILE * sc_popen(const char *command, pid_t *pidp, const char *type) { @@ -47,8 +39,8 @@ sc_popen(const char *command, pid_t *pid std::vector v2( str2.begin(), str2.end() ); v2.push_back('\0'); argv[2] = v2.data(); - argv[3] = nullptr; - + argv[3] = nullptr; + return sc_popen_argv(v0.data(), argv.data(), pidp, type); } @@ -104,7 +96,7 @@ sc_popen_argv(const char *filename, char (void)close(pdes[1]); } - execve(filename, argv, environ); + execvp(filename, argv); exit(127); /* NOTREACHED */ } @@ -148,6 +140,7 @@ sc_pclose(FILE *iop, pid_t mPid) #include #include #include "SC_Lock.h" +#include "SC_Codecvt.hpp" /* The process handle allows us to get the exit code after the process has died. It must be closed in sc_pclose; @@ -167,9 +160,8 @@ static SC_Lock processlist_mutex; #define THREAD_UNLOCK() processlist_mutex.unlock() FILE * -sc_popen(const char *cmd, pid_t *pid, const char *mode) +sc_popen(const char *utf8_cmd, pid_t *pid, const char *mode) { - STARTUPINFO si; PROCESS_INFORMATION pi; FILE *f = NULL; int fno; @@ -178,38 +170,38 @@ sc_popen(const char *cmd, pid_t *pid, co HANDLE father_in_dup, father_out_dup; HANDLE current_pid; int binary_mode; - char *new_cmd = NULL; struct process *cur; BOOL read_mode, write_mode; - if (cmd == NULL) { + if (utf8_cmd == NULL) { return NULL; } - new_cmd = (char *)malloc(strlen(cmd) + 10); - sprintf(new_cmd, "cmd /c %s", cmd); + std::wstring cmd = L"cmd /c " + SC_Codecvt::utf8_cstr_to_utf16_wstring(utf8_cmd); current_pid = GetCurrentProcess(); - ZeroMemory( &si, sizeof(STARTUPINFO) ); - si.cb = sizeof(STARTUPINFO); + STARTUPINFOW si; + ZeroMemory( &si, sizeof(STARTUPINFOW) ); + si.cb = sizeof(STARTUPINFOW); si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; si.hStdInput = GetStdHandle(STD_INPUT_HANDLE); si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); si.hStdError = GetStdHandle(STD_ERROR_HANDLE); + // if the mode contains 'b', use binary mode binary_mode = (strchr(mode, 'b') ? _O_BINARY : _O_TEXT); + // check whether the mode includes reading or writing read_mode = (strchr(mode, 'r') != 0); write_mode = (strchr(mode, 'w') != 0); - /* Opening the pipe for writing */ + // Opening the pipe for writing if (write_mode) { binary_mode |= _O_WRONLY; if (CreatePipe(&child_in, &father_out, NULL, 0) == FALSE) { fprintf(stderr, "popen: error CreatePipe\n"); - free(new_cmd); return NULL; } @@ -217,7 +209,6 @@ sc_popen(const char *cmd, pid_t *pid, co current_pid, &father_in_dup, 0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE) { fprintf(stderr, "popen: error DuplicateHandle father_out\n"); - free(new_cmd); return NULL; } si.hStdInput = father_in_dup; @@ -226,19 +217,17 @@ sc_popen(const char *cmd, pid_t *pid, co fno = _open_osfhandle((size_t)father_out, binary_mode); f = _fdopen(fno, mode); } - /* Opening the pipe for reading */ + // Opening the pipe for reading else if (read_mode) { binary_mode |= _O_RDONLY; if (CreatePipe(&father_in, &child_out, NULL, 0) == FALSE) { fprintf(stderr, "popen: error CreatePipe\n"); - free(new_cmd); return NULL; } if (DuplicateHandle(current_pid, child_out, current_pid, &father_out_dup, 0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE) { fprintf(stderr, "popen: error DuplicateHandle father_in\n"); - free(new_cmd); return NULL; } CloseHandle(child_out); @@ -248,39 +237,36 @@ sc_popen(const char *cmd, pid_t *pid, co } else { fprintf(stderr, "popen: invalid mode %s\n", mode); - free(new_cmd); return NULL; } - /* creating child process */ - if (CreateProcess(NULL, /* pointer to name of executable module */ - new_cmd, /* pointer to command line string */ + // creating child process + if (CreateProcessW(NULL, /* pointer to name of executable module */ + &cmd[0], /* pointer to command line string */ NULL, /* pointer to process security attributes */ NULL, /* pointer to thread security attributes */ TRUE, /* handle inheritance flag */ 0, /* creation flags */ NULL, /* pointer to environment */ NULL, /* pointer to current directory */ - &si, /* pointer to STARTUPINFO */ + &si, /* pointer to STARTUPINFOW */ &pi /* pointer to PROCESS_INFORMATION */ ) == FALSE) { fprintf(stderr, "popen: CreateProcess %x\n", GetLastError()); - free(new_cmd); fclose(f); return NULL; } - /* Only the process handle is needed, ignore errors */ + // Only the process handle is needed, ignore errors CloseHandle(pi.hThread); - /* Closing the unnecessary part of the pipe */ + // Closing the unnecessary part of the pipe if (read_mode) CloseHandle(father_out_dup); else if (write_mode) CloseHandle(father_in_dup); if ((cur = (struct process *)malloc(sizeof(struct process))) == NULL) { - free(new_cmd); fclose(f); CloseHandle(pi.hProcess); return NULL; @@ -293,8 +279,6 @@ sc_popen(const char *cmd, pid_t *pid, co processlist = cur; THREAD_UNLOCK(); - if (new_cmd) free(new_cmd); - *pid = pi.dwProcessId; return f; @@ -349,8 +333,7 @@ FILE * sc_popen_argv(const char *filename, char *const argv[], pid_t *pidp, const char *type) { printf("sc_popen_argv: not implemented\n"); - return (nullptr); - + return nullptr; } #endif diff -pruN 1:3.8.0~repack-2/common/sc_popen.h 1:3.10.0+repack-0.1/common/sc_popen.h --- 1:3.8.0~repack-2/common/sc_popen.h 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/sc_popen.h 2018-11-25 00:43:01.000000000 +0000 @@ -26,6 +26,11 @@ #define WTERMSIG(w) (w) #endif +/** \brief Opens a pipe to a separate process. + * + * This function assumes a UTF-8 encoded, narrow-char string. + */ FILE * sc_popen(const char *command, pid_t *pidp, const char *type); + FILE * sc_popen_argv(const char *filename, char *const argv[], pid_t *pidp, const char *type); int sc_pclose(FILE *iop, pid_t mPid); diff -pruN 1:3.8.0~repack-2/common/SC_ReplyImpl.hpp 1:3.10.0+repack-0.1/common/SC_ReplyImpl.hpp --- 1:3.8.0~repack-2/common/SC_ReplyImpl.hpp 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_ReplyImpl.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -19,8 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef SC_REPLYIMPL_HPP -#define SC_REPLYIMPL_HPP +#pragma once #include "SC_Reply.h" @@ -52,5 +51,3 @@ inline void SendReply(struct ReplyAddres { (inReplyAddr->mReplyFunc)(inReplyAddr, inBuf, inSize); } - -#endif // SC_REPLYIMPL_HPP diff -pruN 1:3.8.0~repack-2/common/SC_SndFileHelpers.hpp 1:3.10.0+repack-0.1/common/SC_SndFileHelpers.hpp --- 1:3.8.0~repack-2/common/SC_SndFileHelpers.hpp 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_SndFileHelpers.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -2,6 +2,7 @@ // // Copyright (c) 2002 James McCartney. All rights reserved. // Copyright (C) 2012 Tim Blechmann +// Copyright (C) 2017 Brian Heim // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -18,49 +19,61 @@ // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA. -#ifndef SC_SNDFILEHELPERS_HPP_INCLUDED -#define SC_SNDFILEHELPERS_HPP_INCLUDED +#pragma once #include "SC_Errors.h" #ifndef NO_LIBSNDFILE -#include "sndfile.h" + +// on Windows, enable Windows libsndfile prototypes in order to access sf_wchar_open. +// See sndfile.h, lines 739-752. Note that order matters: this has to be the first include of sndfile.h +#ifdef _WIN32 +# include "SC_Codecvt.hpp" // utf8_cstr_to_utf16_wstring +# include +# define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1 +#endif // _WIN32 +#include +#include + #include "string.h" -#include "SC_DirUtils.h" + +#include // iequals + +using boost::iequals; static inline int headerFormatFromString(const char *name) { if (!name) return SF_FORMAT_AIFF; - if (stringCaseCompare(name, "AIFF")) return SF_FORMAT_AIFF; - if (stringCaseCompare(name, "AIFC")) return SF_FORMAT_AIFF; - if (stringCaseCompare(name, "RIFF")) return SF_FORMAT_WAV; - if (stringCaseCompare(name, "WAVEX")) return SF_FORMAT_WAVEX; - if (stringCaseCompare(name, "WAVE")) return SF_FORMAT_WAV; - if (stringCaseCompare(name, "WAV" )) return SF_FORMAT_WAV; - if (stringCaseCompare(name, "Sun" )) return SF_FORMAT_AU; - if (stringCaseCompare(name, "IRCAM")) return SF_FORMAT_IRCAM; - if (stringCaseCompare(name, "NeXT")) return SF_FORMAT_AU; - if (stringCaseCompare(name, "raw")) return SF_FORMAT_RAW; - if (stringCaseCompare(name, "MAT4")) return SF_FORMAT_MAT4; - if (stringCaseCompare(name, "MAT5")) return SF_FORMAT_MAT5; - if (stringCaseCompare(name, "PAF")) return SF_FORMAT_PAF; - if (stringCaseCompare(name, "SVX")) return SF_FORMAT_SVX; - if (stringCaseCompare(name, "NIST")) return SF_FORMAT_NIST; - if (stringCaseCompare(name, "VOC")) return SF_FORMAT_VOC; - if (stringCaseCompare(name, "W64")) return SF_FORMAT_W64; - if (stringCaseCompare(name, "PVF")) return SF_FORMAT_PVF; - if (stringCaseCompare(name, "XI")) return SF_FORMAT_XI; - if (stringCaseCompare(name, "HTK")) return SF_FORMAT_HTK; - if (stringCaseCompare(name, "SDS")) return SF_FORMAT_SDS; - if (stringCaseCompare(name, "AVR")) return SF_FORMAT_AVR; - if (stringCaseCompare(name, "SD2")) return SF_FORMAT_SD2; - if (stringCaseCompare(name, "FLAC")) return SF_FORMAT_FLAC; + if (iequals(name, "AIFF")) return SF_FORMAT_AIFF; + if (iequals(name, "AIFC")) return SF_FORMAT_AIFF; + if (iequals(name, "RIFF")) return SF_FORMAT_WAV; + if (iequals(name, "WAVEX")) return SF_FORMAT_WAVEX; + if (iequals(name, "WAVE")) return SF_FORMAT_WAV; + if (iequals(name, "WAV" )) return SF_FORMAT_WAV; + if (iequals(name, "Sun" )) return SF_FORMAT_AU; + if (iequals(name, "IRCAM")) return SF_FORMAT_IRCAM; + if (iequals(name, "NeXT")) return SF_FORMAT_AU; + if (iequals(name, "raw")) return SF_FORMAT_RAW; + if (iequals(name, "MAT4")) return SF_FORMAT_MAT4; + if (iequals(name, "MAT5")) return SF_FORMAT_MAT5; + if (iequals(name, "PAF")) return SF_FORMAT_PAF; + if (iequals(name, "SVX")) return SF_FORMAT_SVX; + if (iequals(name, "NIST")) return SF_FORMAT_NIST; + if (iequals(name, "VOC")) return SF_FORMAT_VOC; + if (iequals(name, "W64")) return SF_FORMAT_W64; + if (iequals(name, "PVF")) return SF_FORMAT_PVF; + if (iequals(name, "XI")) return SF_FORMAT_XI; + if (iequals(name, "HTK")) return SF_FORMAT_HTK; + if (iequals(name, "SDS")) return SF_FORMAT_SDS; + if (iequals(name, "AVR")) return SF_FORMAT_AVR; + if (iequals(name, "SD2")) return SF_FORMAT_SD2; + if (iequals(name, "FLAC")) return SF_FORMAT_FLAC; // TODO allow other platforms to know vorbis once libsndfile 1.0.18 is established #if defined(__APPLE__) || defined(_WIN32) || LIBSNDFILE_1018 - if (stringCaseCompare(name, "vorbis")) return SF_FORMAT_VORBIS; + if (iequals(name, "vorbis")) return SF_FORMAT_VORBIS; #endif - if (stringCaseCompare(name, "CAF")) return SF_FORMAT_CAF; - if (stringCaseCompare(name, "RF64")) return SF_FORMAT_RF64; + if (iequals(name, "CAF")) return SF_FORMAT_CAF; + if (iequals(name, "RF64")) return SF_FORMAT_RF64; return 0; } @@ -105,13 +118,57 @@ static inline int sndfileFormatInfoFromS return kSCErr_None; } -#else +// ------------------------------ platform-specific functions ------------------------------ +#ifdef _WIN32 + +inline SNDFILE* sndfileOpen(LPCWSTR wpath, int mode, SF_INFO *sfinfo) +{ + return sf_wchar_open(wpath, mode, sfinfo); +} + +// This safely opens a sound file using a raw cstring on any platform +inline SNDFILE* sndfileOpenFromCStr(const char *path, int mode, SF_INFO *sfinfo) +{ + // convert to wchar first + const std::wstring path_w = SC_Codecvt::utf8_cstr_to_utf16_wstring(path); + return sndfileOpen(path_w.c_str(), mode, sfinfo); +} + +// Safely creates a handle using a raw cstring on any platform +inline SndfileHandle makeSndfileHandle( + const char *path, int mode = SFM_READ, int format = 0, int channels = 0, int samplerate = 0) +{ + const std::wstring path_w = SC_Codecvt::utf8_cstr_to_utf16_wstring(path); + return SndfileHandle(path_w.c_str(), mode, format, channels, samplerate); +} + +#else // not _WIN32 + +inline SNDFILE* sndfileOpen(const char *path, int mode, SF_INFO *sfinfo) +{ + return sf_open(path, mode, sfinfo); +} + +// simple forward +inline SNDFILE* sndfileOpenFromCStr(const char *path, int mode, SF_INFO *sfinfo) +{ + return sndfileOpen(path, mode, sfinfo); +} + +// simple forward +inline SndfileHandle makeSndfileHandle( + const char *path, int mode = SFM_READ, int format = 0, int channels = 0, int samplerate = 0) +{ + return SndfileHandle(path, mode, format, channels, samplerate); +} + +#endif // _WIN32 + +#else // not NO_LIBSNDFILE static inline int sndfileFormatInfoFromStrings(struct SF_INFO *info, const char *headerFormatString, const char *sampleFormatString) { return kSCErr_Failed; } -#endif - -#endif /* SC_SNDFILEHELPERS_HPP_INCLUDED */ +#endif /* NO_LIBSNDFILE */ diff -pruN 1:3.8.0~repack-2/common/SC_StandAloneInfo_Darwin.cpp 1:3.10.0+repack-0.1/common/SC_StandAloneInfo_Darwin.cpp --- 1:3.8.0~repack-2/common/SC_StandAloneInfo_Darwin.cpp 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_StandAloneInfo_Darwin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -#if defined(__APPLE__) || defined(SC_IPHONE) - -#include -#include -#include // for strncpy -#include // for _NSGetExecutablePath -#include -#include -#include - -#include -#include -//#include - -#include "SC_StandAloneInfo_Darwin.h" - -bool SC_StandAloneInfo::haveCheckedBundleStatus; -char SC_StandAloneInfo::dirPath[PATH_MAX]; - -void SC_StandAloneInfo::SC_StandAloneInfoInit() { - char relDir[PATH_MAX]; - CFStringEncoding encoding = kCFStringEncodingASCII; - if(!haveCheckedBundleStatus) { - haveCheckedBundleStatus = true; - - CFURLRef enablerURL = CFBundleCopyResourceURL ( - CFBundleGetMainBundle(), - CFSTR("SCClassLibrary"), - NULL, - NULL - ); - if( !enablerURL ) { - enablerURL = CFBundleCopyResourceURL ( - CFBundleGetMainBundle(), - CFSTR("sclang.app"), - NULL, - NULL - ); - } - if ( enablerURL ) { - // If sclang or SuperCollider binary is run within the .app bundle, - // this is how we find the Resources path. - CFStringRef rawUrlPath = CFURLCopyFileSystemPath(enablerURL, kCFURLPOSIXPathStyle); - CFStringRef rawPath = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@/.."), rawUrlPath); - CFStringGetCString(rawPath, relDir, PATH_MAX, encoding); - CFRelease( rawUrlPath ); - CFRelease( rawPath ); - CFRelease( enablerURL ); - } else { - // when sclang is run from a symlink, the resource URL above will not be found, - // so we need to find the path of the executable. - uint32_t bufsize = PATH_MAX, *bufsizep = &bufsize; - if(_NSGetExecutablePath(relDir, bufsizep)==0) { - realpath(relDir, dirPath); // resolve symlink - char *dir = dirname(dirPath); - strcpy(dirPath, dir); - return; - } else { - // in case it failed, fall back to current directory - getcwd(dirPath, PATH_MAX); - } - } - realpath(relDir, dirPath); - } -} - -bool SC_StandAloneInfo::IsStandAlone() { -#ifdef SC_STANDALONE - return true; -#else - return false; -#endif -} - -void SC_StandAloneInfo::GetResourceDir(char* pathBuf, int length) -{ - if ( !haveCheckedBundleStatus ) - { - SC_StandAloneInfoInit(); - } - strncpy(pathBuf, dirPath, length); -} - -#endif diff -pruN 1:3.8.0~repack-2/common/SC_StandAloneInfo_Darwin.h 1:3.10.0+repack-0.1/common/SC_StandAloneInfo_Darwin.h --- 1:3.8.0~repack-2/common/SC_StandAloneInfo_Darwin.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_StandAloneInfo_Darwin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -#if defined(__APPLE__) || defined(SC_IPHONE) - -#ifndef _SC_StandAloneInfo_ -#define _SC_StandAloneInfo_ -#endif - -class SC_StandAloneInfo; - -class SC_StandAloneInfo -{ -private: - static bool sIsStandAlone; - static bool haveCheckedBundleStatus; - static char dirPath[PATH_MAX]; - - static void SC_StandAloneInfoInit(); -public: - static bool IsStandAlone(); - static void GetResourceDir(char* pathBuf, int length); -}; -#endif diff -pruN 1:3.8.0~repack-2/common/SC_StringParser.h 1:3.10.0+repack-0.1/common/SC_StringParser.h --- 1:3.8.0~repack-2/common/SC_StringParser.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_StringParser.h 2018-08-28 01:12:47.000000000 +0000 @@ -18,8 +18,7 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 // USA -#ifndef _SC_StringParser_ -#define _SC_StringParser_ +#pragma once #define SC_MAX_TOKEN_LENGTH 256 @@ -41,6 +40,3 @@ public: bool AtEnd() const; const char *NextToken(); }; - -#endif - diff -pruN 1:3.8.0~repack-2/common/SC_SyncCondition.h 1:3.10.0+repack-0.1/common/SC_SyncCondition.h --- 1:3.8.0~repack-2/common/SC_SyncCondition.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_SyncCondition.h 2018-08-28 01:12:47.000000000 +0000 @@ -18,9 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - -#ifndef _SC_SyncCondition_ -#define _SC_SyncCondition_ +#pragma once #include "SC_Lock.h" @@ -81,5 +79,3 @@ private: SC_Lock mutex; int read, write; }; - -#endif diff -pruN 1:3.8.0~repack-2/common/scsynthsend.h 1:3.10.0+repack-0.1/common/scsynthsend.h --- 1:3.8.0~repack-2/common/scsynthsend.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/scsynthsend.h 2018-08-28 01:12:47.000000000 +0000 @@ -18,8 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef _scpacket_ -#define _scpacket_ +#pragma once #include "SC_Endian.h" #include "SC_Types.h" @@ -157,7 +156,3 @@ struct scpacket { typedef scpacket<> small_scpacket; typedef scpacket<65516> big_scpacket; - - -#endif - diff -pruN 1:3.8.0~repack-2/common/SC_TextUtils.cpp 1:3.10.0+repack-0.1/common/SC_TextUtils.cpp --- 1:3.8.0~repack-2/common/SC_TextUtils.cpp 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_TextUtils.cpp 2018-07-17 03:17:00.000000000 +0000 @@ -19,6 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "SC_TextUtils.hpp" #include #define OPENCURLY '{' diff -pruN 1:3.8.0~repack-2/common/SC_TextUtils.hpp 1:3.10.0+repack-0.1/common/SC_TextUtils.hpp --- 1:3.8.0~repack-2/common/SC_TextUtils.hpp 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_TextUtils.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -19,12 +19,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef SC_TEXTUTILS_HPP -#define SC_TEXTUTILS_HPP +#pragma once // strips out all the RichTextFile crap int rtf2txt(char* txt); int html2txt(char* txt); - - -#endif // SC_TEXTUTILS_HPP diff -pruN 1:3.8.0~repack-2/common/SC_VFP11.h 1:3.10.0+repack-0.1/common/SC_VFP11.h --- 1:3.8.0~repack-2/common/SC_VFP11.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_VFP11.h 2018-08-28 01:12:47.000000000 +0000 @@ -1,5 +1,4 @@ -#ifndef _SC_VFP11_ -#define _SC_VFP11_ +#pragma once #include @@ -293,7 +292,3 @@ inline void vcopy(float *dest, float *a, "cc", "memory"); #endif } - - - -#endif diff -pruN 1:3.8.0~repack-2/common/SC_Win32Utils.h 1:3.10.0+repack-0.1/common/SC_Win32Utils.h --- 1:3.8.0~repack-2/common/SC_Win32Utils.h 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/SC_Win32Utils.h 2018-08-28 01:12:47.000000000 +0000 @@ -18,8 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef _SC_WIN32UTILS_H -#define _SC_WIN32UTILS_H +#pragma once #ifdef _WIN32 @@ -49,9 +48,9 @@ #define basename win32_basename #define dirname win32_dirname #define pipe win32_pipe -typedef int pid_t; #if _MSC_VER +typedef int pid_t; #define snprintf _snprintf #endif @@ -73,4 +72,3 @@ int win32_pipewrite(int s, char *buf, in #endif #endif //_WIN32 -#endif // SC_WIN32UTILS_H diff -pruN 1:3.8.0~repack-2/common/server_shm.hpp 1:3.10.0+repack-0.1/common/server_shm.hpp --- 1:3.8.0~repack-2/common/server_shm.hpp 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/common/server_shm.hpp 2018-08-28 01:12:47.000000000 +0000 @@ -17,8 +17,7 @@ // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA. -#ifndef SERVER_SHM_HPP -#define SERVER_SHM_HPP +#pragma once #include "scope_buffer.hpp" @@ -53,8 +52,6 @@ public: typedef bi::vector scope_buffer_vector; server_shared_memory(managed_shared_memory & segment, int control_busses, int num_scope_buffers = 128): - num_control_busses(control_busses), - scope_buffers(scope_buffer_ptr_allocator(segment.get_segment_manager())) { control_busses_ = (float*)segment.allocate(control_busses * sizeof(float)); @@ -96,7 +93,6 @@ public: private: string shmem_name; - int num_control_busses; sh_float_ptr control_busses_; // control busses scope_buffer_vector scope_buffers; }; @@ -206,5 +202,3 @@ using detail_server_shm::server_shared_m using detail_server_shm::scope_buffer_writer; using detail_server_shm::scope_buffer_reader; using detail_server_shm::scope_buffer; - -#endif /* SERVER_SHM_HPP */ diff -pruN 1:3.8.0~repack-2/CONTRIBUTING.md 1:3.10.0+repack-0.1/CONTRIBUTING.md --- 1:3.8.0~repack-2/CONTRIBUTING.md 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/CONTRIBUTING.md 2018-11-25 01:48:54.000000000 +0000 @@ -0,0 +1,157 @@ +# Contributing to SuperCollider + +First and foremost, thank you! We appreciate that you want to contribute to SuperCollider. Your time is valuable, and your contributions mean a lot to us. + +#### What does "contributing" mean? + +Creating an issue is the simplest form of contributing to a project. But there are many ways to contribute, including the following: + +- Updating or correcting documentation +- Fixing an open issue +- Requesting a feature +- Reporting a bug +- Translating the IDE into a language you know (see [Additional resources](#Additional-resources) below) + +If you're new to this project, check out the issues tagged ["good first issue"](https://github.com/supercollider/supercollider/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) – fixing one of these is a great way to get started as a contributor! + +If you'd like to learn more about contributing in general, the [Guide to Idiomatic Contributing](https://github.com/jonschlinkert/idiomatic-contributing) has a lot of useful information. + +#### Showing support for SuperCollider + +Please keep in mind that open source software is built by people like you, who spend their free time creating things the rest the community can use. + +Don't have time to contribute? No worries, here are some other ways to show your support for SuperCollider: + +- Star the [project](https://github.com/supercollider/supercollider) on Github +- Send a message on the [sc-dev](http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/mailing_list/MailingListOptions.jtp?forum=2681767) mailing list +- Join us on [Slack](https://slackin-apxbmqnfui.now.sh/) +- Join the [Facebook group](https://www.facebook.com/groups/supercollider/) +- Tweet your support for SuperCollider + +## Getting Started + +- Make sure you have a [GitHub account](https://github.com/signup/free) +- Fork the repository on GitHub + +## Issues + +### Before creating an issue + +Try to follow these guidelines: + +- **Investigate the issue**: What is the minimum effort or code required to produce the issue? Does it happen every time? Can you get it to happen on someone else's computer? Someone else's operating system? +- **See if a ticket already exists**: Search SuperCollider's [open issues](https://github.com/supercollider/supercollider/issues). If an issue for your problem already exists, leave your comments in the issue's thread. Make sure you give your version and system info plus any information that you don't see already noted in the ticket. +- **Ask the community**: If you're unsure about how to investigate or recreate an issue, it may help to ask the [sc-dev](http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/mailing_list/MailingListOptions.jtp?forum=2681767) or [sc-users](http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/mailing_list/MailingListOptions.jtp?forum=2676391) mailing lists. You can also try asking on [Slack](https://scsynth.slack.com) or on the [Facebook group](https://www.facebook.com/groups/supercollider/). +- **Proceed in creating your issue** Be sure to create your issue in the appropriate repository. Note that [sc3-plugins](https://github.com/supercollider/sc3-plugins) are maintained in their own repository separate from SuperCollider. + +### Creating an issue + +Please be as descriptive as possible when creating an issue. In order for us to better answer your questions and effectively address your issue, please provide the following information: + +- **version**: Note the version of SuperCollider are you using +- **system**: Note your operating system and version +- **extensions, plugins, helpers, etc.** (if applicable): List any extensions or modifications you are using +- **error messages**: Paste all error messages *in their entirety* into the issue, or use a [gist](https://gist.github.com/) if the messages are very long. + +## Pull Requests + +### Before making changes + +- Create a fork of the SuperCollider repository. +- Clone the repo and its submodules locally: + + git clone --recursive https://github.com/your-name/supercollider.git + + - If you have created the fork before, bring it up-to-date with the SuperCollider repository. See [Updating your fork](#Updating-your-fork) below for details. +- Create a topic branch from where you want to base your work. + - Your topic branch should be based on `develop`. + - Our branch naming convention is `topic/branch-description`: for example, `topic/fix-sinosc` or `topic/document-object`. + - To quickly create a topic branch based on develop: `git checkout -b topic/my-fix develop`. + - Please avoid working directly on the `develop` branch. + - Please do not work off of the `master` branch, which is stable and only includes releases. +- As time passes, make sure to keep your fork updated - see [Updating your fork](#Updating-your-fork) below. + +### Making changes + +- Make commits of logical units. +- Please refer to [Code Style Guide](https://github.com/supercollider/supercollider/wiki/Code-style-guidelines). Note that code style, such as whitespace conventions, depend on the language (`C++` vs `SuperCollider` vs `SCDoc Markup`) +- Make sure your commit messages are descriptive and in the proper format. + - Commit messages follow the schema "category: content", e.g. `docs: Make the example in CONTRIBUTING imperative and concrete`, or `help: Update RunningSum2 help file`, or `class library: do this and that`, or `plugins: add missing function definition`. + - A more complete example: + + docs: Make the example in CONTRIBUTING imperative and concrete + + Without this patch applied the example commit message in the CONTRIBUTING + document is not a concrete example. This is a problem because the + contributor is left to imagine what the commit message should look like + based on a description rather than an example. This patch fixes the + problem by making the example concrete and imperative. + + The first line is a real life imperative statement which optionally identifies + the component being changed. The body describes the behavior without the patch, + why this is a problem, and how the patch fixes the problem when applied. + +- Make sure you have added the necessary tests for your changes. +- Make sure you have documented your changes, if necessary. + +### Submitting changes as Pull Requests + +- Push your changes to a topic branch in your fork of the SuperCollider repository. If you are working locally, do this with `git push -u origin topic/branch-description`. `origin` should be the remote of your fork; check with `git remote -v`. +- Submit a pull request to the SuperCollider repository. +- The core team looks at pull requests on a regular basis in a public meeting that is held on a weekly basis. The meeting times are announced on the sc-dev mailing list. +- You may receive feedback and requests for changes. We expect changes to be made in a timely manner. We may close pull requests if they aren't showing any activity. + +### Updating your fork + +In order to keep your fork up-to-date, you need to point it to the main SuperCollider repository. This is done by adding the main repository as a remote, usually called `upstream`. **Please note:** naming the main repository `upstream` is just a convention, not a requirement. If you already have a differently named remote pointing to the main SuperCollider repository, you can use that name instead. +- If you haven't yet added the `upstream` remote, you can add it by doing the following: + - Check the list of remotes: `git remote -v`. The output should look like this: + + origin https://github.com/your-name/supercollider.git (fetch) + origin https://github.com/your-name/supercollider.git (push) + + - Add a new remote called `upstream`, pointing to the SuperCollider repository: + + git remote add upstream https://github.com/supercollider/supercollider.git + + - Check the list of remotes again: `git remote -v`. Now the output should look like this: + + origin https://github.com/your-name/supercollider.git (fetch) + origin https://github.com/your-name/supercollider.git (push) + upstream https://github.com/supercollider/supercollider (fetch) + upstream https://github.com/supercollider/supercollider (push) + + - You can now proceed to update your fork. +- If you've already added the `upstream` remote, you can update your fork by doing the following: + - Be sure to have all local changes committed before proceeding with the update + - Fetch changes made to the `upstream` repository: `git fetch upstream` + - Checkout the `develop` branch: `git checkout develop` + - Pull changes into the `develop` branch: `git pull upstream develop`. Your `develop` branch is now up-to-date. + - If you've already created your topic branch, you can update it with the changes in `develop` by either rebasing or pulling - see [Notes on rebasing](#Notes-on-rebasing). + - If you haven't yet created your topic branch, proceed to creating it as described in the [Pull Requests](#Pull-Requests) section. + +### Notes on rebasing + +Rebasing is one way to integrate changes from one branch onto another, in this case `develop` onto your `topic/branch-description`. You don't usually need to `rebase` unless there have been changes to the code you're working on in `upstream/develop`. If you need to rebase, use `git rebase develop topic/branch-description`. Note that if you rebase after already having pushed your branch, it will make your local branch diverge from the remote `origin` copy. In that case you have two options: +- rebase, after which you'll need to force push: `git checkout topic/branch-description` followed by `git push origin -f` + - This will change the commit history and is not recommended if there is more than one person working on the branch; however, it will create a clean commit history with only your commits in the pull request. +- don't rebase, but instead `git checkout topic/branch-description`, then `git pull`, followed by `git push origin` + - The result will be that your pull request will include your commits in addition to all other commits to `develop` since your branch was created (without changing the commit history). + +## Additional resources + +More information can be found on the [git workflow wiki page](https://github.com/supercollider/supercollider/wiki/git-workflow-and-guidelines). + +You can also refer to Github's guide to [forking a repository](https://help.github.com/articles/fork-a-repo/) and to [syncing a fork](https://help.github.com/articles/syncing-a-fork/). + +Instructions on adding translation files for the IDE can be found in [DEVELOPING.md](./DEVELOPING.md). + +## Above and beyond + +Here are some tips for creating idiomatic issues. Taking just a little bit extra time will make your issue easier to read, easier to resolve, more likely to be found by others who have the same or similar issue in the future. + +- Read the [Guide to Idiomatic Contributing](https://github.com/jonschlinkert/idiomatic-contributing) +- Take some time to learn basic markdown. This [markdown cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) is super helpful, as is the GitHub guide to [basic markdown](https://help.github.com/articles/markdown-basics/). +- Learn about [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/). And if you want to really go above and beyond, read [mastering markdown](https://guides.github.com/features/mastering-markdown/). +- Use backticks to wrap code. This ensures that code will retain its format, making it much more readable to others +- Use syntax highlighting by adding "supercollider" or the appropriate language name after the first "code fence" ("\`\`\`supercollider") diff -pruN 1:3.8.0~repack-2/debian/changelog 1:3.10.0+repack-0.1/debian/changelog --- 1:3.8.0~repack-2/debian/changelog 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/changelog 2018-12-24 15:31:59.000000000 +0000 @@ -1,3 +1,46 @@ +supercollider (1:3.10.0+repack-0.1) unstable; urgency=medium + + * Non-maintainer upload. + * upgraded to the newest upstream source + * refreshed quilt patches + * added a new patch to fix an error in upstream code + (file server/supernova/utilities/time_tag.hp): the result + of get_nanoseconds() had to be type-casted to long. + Closes: #914640 + * added build-dependencies on qtwebengine5-dev, libqt5websockets5-dev, + libqt5svg5-dev + * delete quilt patch 'supernova-i686-march-flag.patch', which defeats + the configuration step. + * modified the path to a documentation file for installation + * modified emacsen configuration files to fit the patterns found + with ELPA. This prevents the installation with xemacs and emacs <= 23. + Closes: #916858 + * expanded Files-Excluded with 'HelpSource/lib/*.min.js' in d/copyright + * added install overrides to create symlinks for + - HelpSource/lib/codemirror-5.39.2.min.js + - HelpSource/lib/codemirror-addon-simple-5.39.2.min.js + - HelpSource/lib/jquery.min.js + + -- Georges Khaznadar Mon, 24 Dec 2018 16:31:59 +0100 + +supercollider (1:3.9.3+repack-1) UNPUBLISHED; urgency=medium + + * upgraded to the newest upstream source + * modified the watch file to add the suffix +repack instead of -repack + so the deb release is not lesser than the upstream package, which + might be misleading + * updated debian patches; two of them are refreshed (fuzzy patching + was successful), the others deletes since they were already integrated + upstream. + * modified d/supercollider-vim.install since the only stuff related to + vim is built under editors/, and much of the files installed in the + previous debian release are missing from the build tree; this results + probably in a useless package for supercollider-vim. + * disabled the use of ccache by patching CMakeLists.txt; this has no + backdraw for debuilding since the compilation is done only once. + + -- Georges Khaznadar Sun, 21 Oct 2018 21:15:07 +0200 + supercollider (1:3.8.0~repack-2) unstable; urgency=medium * Demote Depends of supercollider-language on supercollider-server to a Recommends. @@ -458,7 +501,7 @@ supercollider (20051211-1) unstable; urg * Prevent byte-compilation for xemacs (closes: #338169, #342358) * sclang is now to be compiled only on supported platforms (closes: #276212, #290339) - * 10fix_emacs_help.dpatch: fix path for Help + * 10fix_emacs_help.dpatch: fix path for Help -- Paul Brossier Mon, 12 Dec 2005 10:12:21 +0000 @@ -560,7 +603,7 @@ supercollider (040926-3) unstable; urgen supercollider (040926-2) unstable; urgency=low - * Asked for supercollider to be added to Packages-arch-specific + * Asked for supercollider to be added to Packages-arch-specific and for the 64-bit arch to be removed from archive (see: #276212) * Back to Architecture: any in debian/control (closes: #274240) @@ -634,16 +677,16 @@ supercollider (040709-1) unstable; urgen * Updated README.Debian * Completed supercollider.desktop entries * Cvs update - * Added workaround 'cd SC_SYNTHDEF_PATH' to both wrapper + * Added workaround 'cd SC_SYNTHDEF_PATH' to both wrapper -- Paul Brossier Mon, 12 Jul 2004 18:40:06 +0100 supercollider (040513-2) unstable; urgency=low - * Fixed clz.h (thanks again Guenter) + * Fixed clz.h (thanks again Guenter) * added missing build deps (thanks G.Geiger) * fixed sclang.wrapper - + -- Paul Brossier Tue, 8 Jun 2004 17:04:06 +0100 supercollider (040513-1) unstable; urgency=low diff -pruN 1:3.8.0~repack-2/debian/control 1:3.10.0+repack-0.1/debian/control --- 1:3.8.0~repack-2/debian/control 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/control 2018-12-24 15:31:59.000000000 +0000 @@ -1,9 +1,9 @@ Source: supercollider Section: sound Priority: optional -Vcs-Git: https://anonscm.debian.org/git/pkg-multimedia/supercollider.git -Vcs-Browser: https://anonscm.debian.org/git/pkg-multimedia/supercollider.git -Maintainer: Debian Multimedia Packages Maintainers +Vcs-Git: https://salsa.debian.org/multimedia-team/supercollider.git +Vcs-Browser: https://salsa.debian.org/multimedia-team/supercollider +Maintainer: Debian Multimedia Maintainers Uploaders: Alexandre Quessy , Dan Stowell , Felipe Sateler @@ -30,6 +30,9 @@ Build-Depends: qtdeclarative5-dev, libqt5opengl5-dev, libqt5webkit5-dev, + qtwebengine5-dev, + libqt5websockets5-dev, + libqt5svg5-dev, qtpositioning5-dev, libqt5sensors5-dev, libboost-dev (>= 1.57), diff -pruN 1:3.8.0~repack-2/debian/copyright 1:3.10.0+repack-0.1/debian/copyright --- 1:3.8.0~repack-2/debian/copyright 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/copyright 2018-12-24 15:31:59.000000000 +0000 @@ -1,4 +1,4 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: SuperCollider Upstream-Contact: SuperCollider Development Team Source: http://supercollider.github.io/ @@ -10,6 +10,7 @@ Files-Excluded: external_libraries/icu external_libraries/portaudio*/bindings/cpp/build HelpSource/prettify.js + HelpSource/lib/*.min.js Files: * Copyright: 2002-2007, James McCartney diff -pruN 1:3.8.0~repack-2/debian/patches/adding-functional-header-in-PyrSerialPrim.cpp.patch 1:3.10.0+repack-0.1/debian/patches/adding-functional-header-in-PyrSerialPrim.cpp.patch --- 1:3.8.0~repack-2/debian/patches/adding-functional-header-in-PyrSerialPrim.cpp.patch 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/adding-functional-header-in-PyrSerialPrim.cpp.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -From: hlolli -Date: Mon, 10 Jul 2017 18:32:22 +0200 -Subject: adding functional header in PyrSerialPrim.cpp - ---- - lang/LangPrimSource/PyrSerialPrim.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lang/LangPrimSource/PyrSerialPrim.cpp b/lang/LangPrimSource/PyrSerialPrim.cpp -index 7935255..45933af 100644 ---- a/lang/LangPrimSource/PyrSerialPrim.cpp -+++ b/lang/LangPrimSource/PyrSerialPrim.cpp -@@ -36,6 +36,7 @@ - #include - #include - #include -+#include - - #include - #include diff -pruN 1:3.8.0~repack-2/debian/patches/Disable-128bit-float-constants.patch 1:3.10.0+repack-0.1/debian/patches/Disable-128bit-float-constants.patch --- 1:3.8.0~repack-2/debian/patches/Disable-128bit-float-constants.patch 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/Disable-128bit-float-constants.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -From: Felipe Sateler -Date: Wed, 16 Nov 2016 18:42:00 -0300 -Subject: Disable 128bit float constants. - -They conflict with --std=c++11 (ie, additional flags are required), -but are not used, so just skip that ---- - lang/LangPrimSource/PyrMathPrim.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lang/LangPrimSource/PyrMathPrim.cpp b/lang/LangPrimSource/PyrMathPrim.cpp -index 16ca148..8a3b15a 100644 ---- a/lang/LangPrimSource/PyrMathPrim.cpp -+++ b/lang/LangPrimSource/PyrMathPrim.cpp -@@ -34,6 +34,7 @@ - #include "SC_Endian.h" - #include "SCBase.h" - -+#define BOOST_MATH_DISABLE_FLOAT128 1 - #include "boost/math/special_functions.hpp" - - const int INT_MAX_BY_PyrSlot = INT_MAX / sizeof(PyrSlot); diff -pruN 1:3.8.0~repack-2/debian/patches/disable-ccache.patch 1:3.10.0+repack-0.1/debian/patches/disable-ccache.patch --- 1:3.8.0~repack-2/debian/patches/disable-ccache.patch 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/disable-ccache.patch 2018-12-24 15:31:59.000000000 +0000 @@ -0,0 +1,25 @@ +disabled the use of ccache, to prevent FTBFS; as the compilation is done once +it has no backdraws to make the debian package. +Index: supercollider/CMakeLists.txt +=================================================================== +--- supercollider.orig/CMakeLists.txt ++++ supercollider/CMakeLists.txt +@@ -150,12 +150,12 @@ add_definitions(-DBOOST_CHRONO_HEADER_ON + ############################################# + # Detect CCache + +-find_program(CCacheExectuable ccache) +-if( CCacheExectuable ) +- # only used with >=cmake-3.4 +- set( CMAKE_C_COMPILER_LAUNCHER "${CCacheExectuable}" ) +- set( CMAKE_CXX_COMPILER_LAUNCHER "${CCacheExectuable}" ) +-endif() ++## find_program(CCacheExecutable ccache) ++## if( CCacheExecutable ) ++## # only used with >=cmake-3.4 ++## set( CMAKE_C_COMPILER_LAUNCHER "${CCacheExecutable}" ) ++## set( CMAKE_CXX_COMPILER_LAUNCHER "${CCacheExecutable}" ) ++## endif() + + ############################################# + # Options diff -pruN 1:3.8.0~repack-2/debian/patches/DiskIO_UGens-include-functional.patch 1:3.10.0+repack-0.1/debian/patches/DiskIO_UGens-include-functional.patch --- 1:3.8.0~repack-2/debian/patches/DiskIO_UGens-include-functional.patch 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/DiskIO_UGens-include-functional.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -From: Brian Heim -Date: Tue, 4 Jul 2017 13:26:00 -0400 -Subject: DiskIO_UGens: include - -std::bind is in according to the C++ ISO standard, and -gcc7.1 enforces this. ---- - server/plugins/DiskIO_UGens.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/server/plugins/DiskIO_UGens.cpp b/server/plugins/DiskIO_UGens.cpp -index b695b70..a6a8764 100644 ---- a/server/plugins/DiskIO_UGens.cpp -+++ b/server/plugins/DiskIO_UGens.cpp -@@ -28,6 +28,7 @@ - - #include - #include -+#include - #include - - #include diff -pruN 1:3.8.0~repack-2/debian/patches/fix-numeric-type.patch 1:3.10.0+repack-0.1/debian/patches/fix-numeric-type.patch --- 1:3.8.0~repack-2/debian/patches/fix-numeric-type.patch 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/fix-numeric-type.patch 2018-12-24 15:31:59.000000000 +0000 @@ -0,0 +1,15 @@ +fixed a type inconsistency: forced the result of get_nanoseconds() to +double before the division by 1000. +Index: supercollider/server/supernova/utilities/time_tag.hpp +=================================================================== +--- supercollider.orig/server/supernova/utilities/time_tag.hpp ++++ supercollider/server/supernova/utilities/time_tag.hpp +@@ -229,7 +229,7 @@ public: + #ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG + time_duration offset = seconds(get_secs() - ntp_offset) + nanoseconds(get_nanoseconds()); + #else +- time_duration offset = seconds(get_secs() - ntp_offset) + microseconds(get_nanoseconds()/1000); ++ time_duration offset = seconds(get_secs() - ntp_offset) + microseconds((long) get_nanoseconds()/1000); + #endif + return ptime(base, offset); + } diff -pruN 1:3.8.0~repack-2/debian/patches/PyrSched.cpp-include-functional-to-fix-FTBFS.patch 1:3.10.0+repack-0.1/debian/patches/PyrSched.cpp-include-functional-to-fix-FTBFS.patch --- 1:3.8.0~repack-2/debian/patches/PyrSched.cpp-include-functional-to-fix-FTBFS.patch 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/PyrSched.cpp-include-functional-to-fix-FTBFS.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -From: Adrian Bunk -Date: Thu, 7 Sep 2017 19:38:46 -0300 -Subject: PyrSched.cpp: #include to fix FTBFS - -Bug-Debian: https://bugs.debian.org/853671 ---- - lang/LangPrimSource/PyrSched.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lang/LangPrimSource/PyrSched.cpp b/lang/LangPrimSource/PyrSched.cpp -index 7d33518..2f5908e 100644 ---- a/lang/LangPrimSource/PyrSched.cpp -+++ b/lang/LangPrimSource/PyrSched.cpp -@@ -37,6 +37,7 @@ - #include - #include - #include -+#include - - #if defined(__APPLE__) || defined(__linux__) - # include diff -pruN 1:3.8.0~repack-2/debian/patches/Remove-autodetection-of-raspberry-cpus.patch 1:3.10.0+repack-0.1/debian/patches/Remove-autodetection-of-raspberry-cpus.patch --- 1:3.8.0~repack-2/debian/patches/Remove-autodetection-of-raspberry-cpus.patch 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/Remove-autodetection-of-raspberry-cpus.patch 2018-12-24 15:31:59.000000000 +0000 @@ -10,12 +10,12 @@ Bug-Debian: https://bugs.debian.org/8783 CMakeLists.txt | 15 --------------- 1 file changed, 15 deletions(-) -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f42ed30..615e52a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -318,21 +318,6 @@ if(MINGW) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign -fno-strict-aliasing") +Index: supercollider/CMakeLists.txt +=================================================================== +--- supercollider.orig/CMakeLists.txt ++++ supercollider/CMakeLists.txt +@@ -355,21 +355,6 @@ elseif(MINGW) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign") endif() -# support for building on Raspberry Pi 1/2/3 and BBB diff -pruN 1:3.8.0~repack-2/debian/patches/series 1:3.10.0+repack-0.1/debian/patches/series --- 1:3.8.0~repack-2/debian/patches/series 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/series 2018-12-24 15:31:59.000000000 +0000 @@ -1,6 +1,3 @@ -supernova-i686-march-flag.patch -Disable-128bit-float-constants.patch -adding-functional-header-in-PyrSerialPrim.cpp.patch -DiskIO_UGens-include-functional.patch -PyrSched.cpp-include-functional-to-fix-FTBFS.patch Remove-autodetection-of-raspberry-cpus.patch +disable-ccache.patch +fix-numeric-type.patch diff -pruN 1:3.8.0~repack-2/debian/patches/supernova-i686-march-flag.patch 1:3.10.0+repack-0.1/debian/patches/supernova-i686-march-flag.patch --- 1:3.8.0~repack-2/debian/patches/supernova-i686-march-flag.patch 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/patches/supernova-i686-march-flag.patch 2018-12-24 15:31:59.000000000 +0000 @@ -6,11 +6,11 @@ Subject: Fix supernova build on x86 server/supernova/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) -diff --git a/server/supernova/CMakeLists.txt b/server/supernova/CMakeLists.txt -index c71a8dd..fda7d1d 100644 ---- a/server/supernova/CMakeLists.txt -+++ b/server/supernova/CMakeLists.txt -@@ -149,6 +149,10 @@ else() +Index: supercollider/server/supernova/CMakeLists.txt +=================================================================== +--- supercollider.orig/server/supernova/CMakeLists.txt ++++ supercollider/server/supernova/CMakeLists.txt +@@ -155,6 +155,10 @@ else() target_link_libraries(libsupernova boost_system boost_filesystem boost_program_options) endif() diff -pruN 1:3.8.0~repack-2/debian/rules 1:3.10.0+repack-0.1/debian/rules --- 1:3.8.0~repack-2/debian/rules 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/rules 2018-12-24 15:31:59.000000000 +0000 @@ -51,6 +51,9 @@ override_dh_auto_install: # this needs to be an absolute not relative softlink, # because supercollider copies it around. hence not using dh_link for this. ln -sf /usr/share/javascript/prettify/prettify.js $(CURDIR)/debian/tmp/usr/share/SuperCollider/HelpSource/prettify.js + ln -sf /usr/share/javascript/codemirror/codemirror.js $(CURDIR)/debian/tmp/usr/share/SuperCollider/HelpSource/lib/codemirror-5.39.2.min.js + ln -sf /usr/share/javascript/codemirror/addon/mode/simple.js $(CURDIR)/debian/tmp/usr/share/SuperCollider/HelpSource/lib/codemirror-addon-simple-5.39.2.min.js + ln -sf /usr/share/javascript/jquery/jquery.min.js $(CURDIR)/debian/tmp/usr/share/SuperCollider/HelpSource/lib/jquery.min.js install -d $(CURDIR)/debian/tmp/usr/share/applications install -m 644 debian/scel.desktop $(CURDIR)/debian/tmp/usr/share/applications install -m 644 debian/scvim.desktop $(CURDIR)/debian/tmp/usr/share/applications diff -pruN 1:3.8.0~repack-2/debian/supercollider-emacs.docs 1:3.10.0+repack-0.1/debian/supercollider-emacs.docs --- 1:3.8.0~repack-2/debian/supercollider-emacs.docs 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/supercollider-emacs.docs 2018-12-24 15:31:59.000000000 +0000 @@ -1 +1 @@ -editors/scel/README.md +editors/sc-el/README.md diff -pruN 1:3.8.0~repack-2/debian/supercollider-emacs.emacsen-install 1:3.10.0+repack-0.1/debian/supercollider-emacs.emacsen-install --- 1:3.8.0~repack-2/debian/supercollider-emacs.emacsen-install 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/supercollider-emacs.emacsen-install 2018-12-24 15:31:59.000000000 +0000 @@ -8,38 +8,51 @@ FLAVOR=$1 PACKAGE=SuperCollider -if [ ${FLAVOR} = emacs ]; then exit 0; fi +case $FLAVOR in + emacs) + exit 0 + ;; + emacs2[0123]*) + echo install/${PACKAGE}: Skipping obsolete emacs ${FLAVOR} + exit 0 + ;; + xemacs*) + echo install/${PACKAGE}: Skipping unsupported emacs ${FLAVOR} + exit 0 + ;; + *) + echo install/${PACKAGE}: Handling install of emacsen flavor ${FLAVOR} + + #FLAVORTEST=`echo $FLAVOR | cut -c-6` + #if [ ${FLAVORTEST} = xemacs ] ; then + # SITEFLAG="-no-site-file" + #else + # SITEFLAG="--no-site-file" + #fi + FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + + ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} + ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + + # Install-info-altdir does not actually exist. + # Maybe somebody will write it. + if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz + fi + + install -m 755 -d ${ELCDIR} + cd ${ELDIR} + FILES=`echo *.el` + cp ${FILES} ${ELCDIR} + cd ${ELCDIR} -echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} - -#FLAVORTEST=`echo $FLAVOR | cut -c-6` -#if [ ${FLAVORTEST} = xemacs ] ; then -# SITEFLAG="-no-site-file" -#else -# SITEFLAG="--no-site-file" -#fi -FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" - -ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} -ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} - -# Install-info-altdir does not actually exist. -# Maybe somebody will write it. -if test -x /usr/sbin/install-info-altdir; then - echo install/${PACKAGE}: install Info links for ${FLAVOR} - install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz -fi - -install -m 755 -d ${ELCDIR} -cd ${ELDIR} -FILES=`echo *.el` -cp ${FILES} ${ELCDIR} -cd ${ELCDIR} - -cat << EOF > path.el + cat << EOF > path.el (setq load-path (cons "." load-path) byte-compile-warnings nil) EOF -${FLAVOR} ${FLAGS} ${FILES} -rm -f *.el path.el + ${FLAVOR} ${FLAGS} ${FILES} + rm -f *.el path.el + + exit 0 +esac -exit 0 diff -pruN 1:3.8.0~repack-2/debian/supercollider-emacs.emacsen-remove 1:3.10.0+repack-0.1/debian/supercollider-emacs.emacsen-remove --- 1:3.8.0~repack-2/debian/supercollider-emacs.emacsen-remove 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/supercollider-emacs.emacsen-remove 2018-12-24 15:31:59.000000000 +0000 @@ -4,12 +4,25 @@ FLAVOR=$1 PACKAGE=SuperCollider -if [ ${FLAVOR} != emacs ]; then - if test -x /usr/sbin/install-info-altdir; then - echo remove/${PACKAGE}: removing Info links for ${FLAVOR} - install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/supercollider.info.gz - fi +case $FLAVOR in + emacs) + exit 0 + ;; + emacs2[0123]*) + echo remove/${PACKAGE}: Skipping obsolete emacs ${FLAVOUR} + exit 0 + ;; + xemacs*) + echo remove/${PACKAGE}: Skipping unsupported emacs ${FLAVOUR} + exit 0 + ;; + *) + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/supercollider.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +esac - echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} - rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} -fi diff -pruN 1:3.8.0~repack-2/debian/supercollider-vim.docs 1:3.10.0+repack-0.1/debian/supercollider-vim.docs --- 1:3.8.0~repack-2/debian/supercollider-vim.docs 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/supercollider-vim.docs 2018-12-24 15:31:59.000000000 +0000 @@ -1,2 +1,2 @@ editors/scvim/README.md -editors/scvim/SCVim.scd +#editors/scvim/SCVim.scd diff -pruN 1:3.8.0~repack-2/debian/supercollider-vim.install 1:3.10.0+repack-0.1/debian/supercollider-vim.install --- 1:3.8.0~repack-2/debian/supercollider-vim.install 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/supercollider-vim.install 2018-12-24 15:31:59.000000000 +0000 @@ -1,7 +1,7 @@ -usr/bin/sclangpipe_app -usr/bin/scvim -usr/share/vim -usr/share/scvim -usr/share/SuperCollider/Extensions/scvim +#usr/bin/sclangpipe_app +#usr/bin/scvim +#usr/share/vim +#usr/share/scvim +#usr/share/SuperCollider/Extensions/scvim #debian/supercollider-vim.yaml usr/share/vim/registry/ usr/share/applications/scvim.desktop diff -pruN 1:3.8.0~repack-2/debian/watch 1:3.10.0+repack-0.1/debian/watch --- 1:3.8.0~repack-2/debian/watch 2017-10-13 00:20:37.000000000 +0000 +++ 1:3.10.0+repack-0.1/debian/watch 2018-12-24 15:31:59.000000000 +0000 @@ -1,4 +1,4 @@ version=3 -opts=repack,repacksuffix=~repack,dversionmangle=s/~repack(-?[0-9]+)?$//,uversionmangle=s/-?([a-zA-Z]+[0-9])/~$1/ \ +opts=repack,repacksuffix=+repack,dversionmangle=s/\+repack(-?[0-9]+)?$//,uversionmangle=s/-?([a-zA-Z]+[0-9])/+$1/ \ https://github.com/supercollider/supercollider/releases/latest .*/SuperCollider-(\d\S*)-Source-linux\.tar\.bz2 diff -pruN 1:3.8.0~repack-2/DEVELOPING.md 1:3.10.0+repack-0.1/DEVELOPING.md --- 1:3.8.0~repack-2/DEVELOPING.md 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/DEVELOPING.md 2018-11-25 00:43:01.000000000 +0000 @@ -0,0 +1,366 @@ +Purpose +======= + +This document provides useful information for developers and maintainers of SuperCollider. It's a yellow-pages of sorts. + +Practices +========= + +Git Workflow +------------ + +You can find full information about our git workflow +[here](https://github.com/supercollider/supercollider/wiki/git-workflow-and-guidelines). In summary, we use the +_git-flow_ branching model with `master` as the stable branch, `develop` as unstable, and `x.y` branches for release +branches. + +Milestones +---------- + +We use four tags to keep track of issues: + +- Next patch (example: "3.9.1") +- Some patch (example: "3.9.x") +- Next minor (example: "3.10") +- Some minor (example: "3.x") + +Patch-milestoned issues are those that will require bug fixes, while minor-milestoned issues are things like new +features and major changes that are better left for a minor release. The "Next patch"/"Next minor" milestones mark those +issues that we've decided _must_ be addressed before the next respective release. They're either the most painful bugs +or most requested features. + +When, in the example milestones above, 3.10 is released, we would move all 3.9.x-milestoned issues to 3.10.x, +and then collectively decide which issues ought to move from 3.x to 3.11 and from 3.10.x to 3.10.1. + +Deprecation +----------- + +SuperCollider class library deprecations are currently made on a case-by-case basis using the `Object:-deprecated` +method. When a method or class is deprecated, it is moved to `SCClassLibrary/deprecated`. Deprecations are removed on a +case-by-case basis with each minor (3.x) release. + +Standards for New UGens +======================= + +UGens proposed for inclusion in the main SuperCollider project should meet more rigorous standards than those found "in +the wild." These are standards the community has agreed upon for new UGens: + +- **General software quality concerns:** + - UGens in core should never break backward compatibility. + - UGens should be fully documented, with a clear explanation of what it does and an appropriate collection of + examples. Be sure to document which UGen inputs are modulatable at which rates. + - UGens should be efficient. SuperCollider takes pride in being easy on the CPU, and UGens should help support that + reputation. + - The UGen should be deemed useful enough to the general SC user base. + - Each UGen should be in a separate C++ source file (or multiple source files if it's really that long). + - Don't leave any unnecessary print statements lying around. +- **Safety:** + - Check input rates in the sclang class. + - UGens should be real-time safe. Ross Bencina's ["Real-time audio programming 101"] + (http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing) is required reading. + Here is a quick and incomplete blacklist of dangerous features: + - `malloc`/`free`/`new`: use `RTAlloc` instead. + - `throw`/`catch`: use return codes instead. + - `dynamic_cast` + - System calls. These are complicated to handle and require use of an NRT thread. + - Any calls to `RTAlloc` should check the result for `NULL`. This usually happens when there + isn't enough real-time memory left. The server will crash if this check is not made. + - The Ctor sample should be initialized. If this is not done, very nasty bugs can occur. + - Zap dangerous values (subnormals, infinities, nans) in feedback loops to zero. SC provides a + `zapgremlins` function that does this for you. +- **Utility:** + - UGens should have both `.ar` and `.kr` methods if applicable. + - Sample rate and block size independence should be maintained if applicable. For example, audio UGens shouldn't sound + radically different if the sample rate is increased. + - For audio UGens, control-rate inputs should be interpolated if applicable. + - Don't arbitrarily make certain inputs nonmodulatable just for programming convenience -- carefully anticipate what's + worth modulating. Either way, don't forget to document it. +- **Modernization and deprecated features:** + - When writing a new UGen from scratch, it is recommended to use the modern C++ style seen in `SC_PlugIn.hpp`. + - Don't use `mul` and `add` arguments. These were originally introduced for efficiency, but now `Foo.ar * 2 + 1` gets + optimized into a `MulAdd`. + - Don't use a `doneAction` argument. Set the done flag instead. + +Tools +===== + +Continuous Integration and Skipping Commits +------------------------------------------- + +We have CI provided by AppVeyor (Windows) and Travis (Linux, macOS). If a commit changes _only_ +non-schelp documentation, _without_ renaming, adding, or removing files, you may want to consider +adding `[skip ci]` to the commit message so it does not waste CI resources. + +S3 Build Hosting +---------------- + +Builds of all commits to branches on the main project repository are uploaded to Amazon's S3 hosting service. These +builds are available for macOS, Windows x86, and Windows x86-64. To download the latest build of a branch named +`topic/foo`, the URLs are of the form: + +* http://supercollider.s3.amazonaws.com/builds/supercollider/supercollider/osx/topic/foo-latest.html +* http://supercollider.s3.amazonaws.com/builds/supercollider/supercollider/win32/topicfoo-latest.html +* http://supercollider.s3.amazonaws.com/builds/supercollider/supercollider/win64/topicfoo-latest.html + +Note that for the Windows builds only, the branch name is stripped of forward slashes. + +To find a build for a specific commit (assuming it exists), use the full SHA hash of the commit. For example, the +binaries for commit +[8c3563a8065cb623087f267dfe50e228224a4572](https://github.com/supercollider/supercollider/commit/8c3563a8065cb623087f267dfe50e228224a4572) +are at: + +* http://supercollider.s3.amazonaws.com/builds/supercollider/supercollider/osx/SC-8c3563a8065cb623087f267dfe50e228224a4572.zip +* http://supercollider.s3.amazonaws.com/builds/supercollider/supercollider/win32/SC-Windows-x86-8c3563a8065cb623087f267dfe50e228224a4572.zip +* http://supercollider.s3.amazonaws.com/builds/supercollider/supercollider/win64/SC-Windows-x64-8c3563a8065cb623087f267dfe50e228224a4572.zip + +A build for a specific commit may not always be available: for instance, if the build was cancelled early or failed to +complete. + +Boost Update Script +------------------- + +Location: `external_libraries/extract_boost.sh`, `external_libraries/boost_sc_changes.patch` + +### Purpose + +Update Boost libraries packaged with SuperCollider, and apply the SuperCollider organization's patches for Boost. + +### Usage + +Should be run as soon as possible after a new release of Boost. See instructions in `external_libraries/README_BOOST.md` +for more information. + +QtGUI Debug Capability +---------------------- + +### Purpose + +Print verbose debug messages while diagnosing issues with the Qt GUI features. + +### Usage + +Only enabled on a debug build. + +```sclang +QtGUI.debugLevel_(0) // 0 = no output, 3 = verbose +``` + +Test Suite +---------- + +### Purpose + +Unit testing suite for SuperCollider language core library + +### Usage + +If developing on a version older than 3.9.0, download `UnitTesting` quark separately. Add the test suite folder to your +SuperCollider compile paths. Recompile. Run `UnitTest.runAll`, or run tests from the GUI via `UnitTest.gui`. + +### Continuous automatic red/green testing via guard-sclang + +Rather than manually running appropriate tests after editing a library class or a `UnitTest` class, you can use +[aspiers/guard-sclang](https://github.com/aspiers/guard-sclang) which will watch for file changes and automatically run +tests in reaction to them. The steps to set this up are as follows: + +- Make sure you have Ruby installed. +- Make sure you have [Bundler](http://bundler.io/) installed (usually this is as simple as running `gem install bundler`). +- Make sure `sclang` is somewhere on your `$PATH`. +- `cd $supercollider_source/tools/guard` +- `bundle install` + +Now you should be ready to launch Guard via: + + bundle exec guard + +Then start hacking on SuperCollider classes, and enjoy the immediate feedback! + +The mapping between implementation classes and test classes is defined in `tools/guard/Guardfile`. This is currently by +far from perfect, because it naively assumes a 1:1 mapping between class `Foo` and test class `TestFoo`. However it +should be easy to make it more intelligent, even if you don't know Ruby; please feel free to contribute improvements! + +`SC_DOC_RENDER` Target +---------------------- + +### Purpose + +Render all schelp documents to HTML to check for warnings and errors. + +### Usage + +During configuration, pass `-DSC_DOC_RENDER=ON` to CMake. This provides a target called `doc` which can be built to +render all schelp documents: + + cmake .. -DSC_DOC_RENDER=ON # + cmake --build . --target doc + +qpm Test Runner +--------------- + +qpm is a Python-based Quarks package manager and test runner for SuperCollider. It is used by our CI services to run the +SuperCollider-based test suite. See https://github.com/scztt/qpm/tree/qpm-unit for more information. + +Changelog-to-schelp script +-------------------------- + +Location: https://gist.github.com/brianlheim/443ae188dee8f7a85e7f34c04cc66d2b + +### Purpose + +Converts a changelog in markdown format into schelp format. A little extra work required but saves a lot of tedium. See +script for usage. + +sclang Lexer, Parser, & Compiler Regression Test Suite +------------------------------------------------------ + +TODO + +Specific Contribution Workflows +=============================== + +Updating translation files +-------------------------- + +To update translation files for the IDE, you'll first need to make sure Qt's `lupdate` program is in your path, then +build the `update_ide_translations` CMake target. This will overwrite the `.ts` files in `editors/sc-ide/translations` +to reflect the most recent source code. + +Adding IDE translations +----------------------- + +Use [Qt Linguist](http://doc.qt.io/qt-5/qtlinguist-index.html) to update the `.ts` files in +`editors/sc-ide/translations`. Qt Linguist can be included when you install Qt Creator or a general Qt distribution. + +### Adding a new translation language + +If you can't find the language you want to add translations for, first make sure you have `lupdate` and Qt Linguist, then: + +1. Determine its two-letter [language code](https://www.loc.gov/standards/iso639-2/php/code_list.php). +2. Add a new filename for it in `editors/sc-ide/CMakeLists.txt`, in the section marked `# Translation files`. +3. Re-run the CMake generation phase (in your `build` directory, execute `cmake ..`) +4. Build the `update_ide_translations` CMake target to generate a `.ts` file +5. Add translations using Qt Linguist. + +Adding to QtCollider widgets +---------------------------- + +These instructions detail how to add functionality to existing QtCollider widgets (such as TreeView and Knob). Each +widget typically corresponds to a single Qt class, and the simplest way to add functionality is by providing access to +an existing C++ function of the Qt widget. + +1. Locate the C++ source for the widget in `/QtCollider/widgets/`. +2. Add the signature for the function in the header file. +3. Add the implementation for the function in the implementation file. +4. Locate the SC source for the widget in `/SCClassLibrary/Common/GUI/Base/`. +5. Add a suitably named new method in the class file that calls down to the QtCollider widget using `invokeMethod`. +6. Document the method in the corresponding schelp file in `/HelpSource/Classes/`. + +Technical note: not all types can be transcoded between SuperCollider and QtCollider widgets. However, all primitive +types, some collection types, and a few class types are supported. The code which controls this can be found in +`QtCollider::MetaType::find( PyrSlot * )`. + +### Example + +[PR #3560](https://github.com/supercollider/supercollider/pull/3560) demonstrates how to do this by adding +`setColumnWidth` to `TreeView`: + +1. The C++ files are `/QtCollider/widgets/QcTreeWidget.{cpp,h}` +2. The function signature is: + +```cpp +Q_INVOKABLE void setColumnWidth( int column, int width ); +``` + +3. The implementation simply calls up to `QTreeView`: + +```cpp +void QcTreeWidget::setColumnWidth( int column, int width ) +{ + QTreeWidget::setColumnWidth( column, width ); +} +``` + +4. The SC file is `/SCClassLibrary/Common/GUI/Base/QTreeView.sc` +5. The new method simply forwards arguments to `invokeMethod`: + +```supercollider +setColumnWidth { arg column, width; + this.invokeMethod( \setColumnWidth, [column, width] ) +} +``` + +6. The documentation is added to `/HelpSource/Classes/TreeView.schelp`: + +``` +METHOD:: setColumnWidth + +ARGUMENT:: column + The integer index of the column to modify +ARGUMENT:: width + Integer width in pixels +``` + +Project Structure +================= + +- **`.github`**: PR and issue template for GitHub +- **`.travis`**: scripts for Travis CI +- **`cmake_modules`**: Find and Config modules for CMake +- **`common`**: C++ files needed by multiple components of the project +- **`editors`**: Files for `scide` and editor extensions + - **`sc-el`**: the SuperCollider Emacs package, `scel` + - **`sc-ide`**: source for `scide` + - **`sced`**: source for the SuperCollider `gedit` plugin, `sced` + - **`scvim`**: the SuperCollider Vim package, `scvim` +- **`examples`**: SuperCollider code examples, packaged into release assets +- **`external_libraries`**: C and C++ third-party libraries + - **`boost`**: root of Boost C++ sources + - **`boost_sync`**: contains [Boost::sync](https://github.com/boostorg/sync), a synchronization lib which was never + integrated into Boost proper. + - **`hidapi`**: [HID API](http://www.signal11.us/oss/hidapi/) project, which `sclang` uses for HID capability. Our + fork is significantly patched for cross-platform compatibility. + - **`icu`**: IBM's [ICU](http://site.icu-project.org/) library + - **`jackey`**: a simple header for Jack that makes working with Jack Metadata easier. Used by `scsynth` and + `supernova`, but not in current builds (only when `SC_JACK_USE_METADATA_API` is defined, may be old work that was + never completed) + - **`libsndfile`**: header for [`libsndfile`](http://www.mega-nerd.com/libsndfile/), for working with audio file + formats. Used by `sclang` and the servers + - **`nova-simd`**: `nova-simd`, a framework for SIMD vector functions + - **`nova-tt`**: `nova-tt`, a library for cross-platform thread synchronization + - **`oscpack_1_1_0`**: [Oscpack](http://www.rossbencina.com/code/oscpack), a library for working with OSC packets. + - **`portaudio_sc_org`**: SC's fork of [PortAudio](http://www.portaudio.com/), which has been modded for + cross-platform work + - **`portmidi`**: [PortMIDI](http://portmedia.sourceforge.net/portmidi/), a cross-platform library for MIDI I/O + - **`simplejson-2.3.2`**: [simplejson](https://pypi.python.org/pypi/simplejson/), a Python package used by `sced` + - **`yaml-cpp`**: [yaml-cpp](https://github.com/jbeder/yaml-cpp), a C++ library for YAML +- **`HelpSource`**: schelp source for SCDoc +- **`icons`**: contains icon files for the project +- **`include`**: C++ headers for client code, including server plugins +- **`lang`**: C++ source for `sclang` + - **`LangSource`**: sources for the core of the language, including the interpreter + - **`LangPrimSource`**: sources for SuperCollider primitive functions. Loosely organized by functionality. +- **`package`**: tools for preparing and packaging release assets, including changelog-related scripts +- **`platform`**: various platform-specific bits +- **`QtCollider`**: sources for the Qt GUI extensions to `sclang` +- **`SCClassLibrary`**: SuperCollider sources for the core class library +- **`SCDoc`**: C++ sources for SCDoc, the .schelp parser +- **`server`**: C++ sources for `scsynth`, `supernova`, and server plugins + - **`plugins`**: sources for server plugins (UGens) + - **`scsynth`**: sources for scsynth + - **`supernova`**: sources for supernova +- **`sounds`**: sound files, packaged into release assets +- **`testsuite`**: test files + - **`classlibrary`**: SuperCollider-language tests for the core class library + - **`sclang`**: tests for `sclang` + - **`server`**: C++ tests for `scsynth` and `supernova` +- **`tools`**: various tools useful for maintainers + +Important files in the root directory are: + +- **`.appveyor.yml`**: config file for AppVeyor CI +- **`.travis.yml`**: config file for Travis CI +- **`build_sclang_cfg.in`**: config file used for the special `SC_DOC_RENDER` build target +- **`CMakeLists.txt`**: main CMake file +- **`README_*`**: readmes for various platforms +- **`SCVersion.txt`**: the master versioning document. The version number is stored here and nowhere else. +- **`travis_test_run_proto.json`**: config file used by qpm to run tests in CI diff -pruN 1:3.8.0~repack-2/editors/CMakeLists.txt 1:3.10.0+repack-0.1/editors/CMakeLists.txt --- 1:3.8.0~repack-2/editors/CMakeLists.txt 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/CMakeLists.txt 2018-08-28 01:12:47.000000000 +0000 @@ -15,7 +15,7 @@ if(SC_IDE) endif() if(SC_EL) - add_subdirectory(scel) + add_subdirectory(sc-el) endif() if(SC_ED) diff -pruN 1:3.8.0~repack-2/editors/sced/CMakeLists.txt 1:3.10.0+repack-0.1/editors/sced/CMakeLists.txt --- 1:3.8.0~repack-2/editors/sced/CMakeLists.txt 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sced/CMakeLists.txt 2018-07-17 03:17:00.000000000 +0000 @@ -14,10 +14,10 @@ if(NOT WIN32 AND SC_ED EQUAL 2) DESTINATION share/gtksourceview-2.0/language-specs) install(FILES data/sced.gedit-plugin - DESTINATION lib/gedit-2/plugins) + DESTINATION lib${LIB_SUFFIX}/gedit-2/plugins) install(DIRECTORY sced - DESTINATION lib/gedit-2/plugins) + DESTINATION lib${LIB_SUFFIX}/gedit-2/plugins) elseif(NOT WIN32 AND SC_ED EQUAL 3) @@ -29,7 +29,7 @@ elseif(NOT WIN32 AND SC_ED EQUAL 3) DESTINATION share/gtksourceview-3.0/language-specs) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sced3/supercollider.plugin sced3/supercollider.py - DESTINATION lib/gedit/plugins) + DESTINATION lib${LIB_SUFFIX}/gedit/plugins) elseif(WIN32) diff -pruN 1:3.8.0~repack-2/editors/scel/CMakeLists.txt 1:3.10.0+repack-0.1/editors/scel/CMakeLists.txt --- 1:3.8.0~repack-2/editors/scel/CMakeLists.txt 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -add_subdirectory(el) -add_subdirectory(sc) \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/el/CMakeLists.txt 1:3.10.0+repack-0.1/editors/scel/el/CMakeLists.txt --- 1:3.8.0~repack-2/editors/scel/el/CMakeLists.txt 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -option(SC_EL_BYTECOMPILE "Build emacs-based IDE." ON) -mark_as_advanced(SC_EL_BYTECOMPILE) - -file(GLOB scel_sources - RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.el) - -set(PKG_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/SuperCollider) - -configure_file(sclang-vars.el.in - ${CMAKE_CURRENT_BINARY_DIR}/sclang-vars.el) - -foreach (el ${scel_sources}) - configure_file(${el} ${CMAKE_CURRENT_BINARY_DIR}/${el}) -endforeach() - -set(all_scel_sources ${scel_sources} sclang-vars.el) - -if (SC_EL_BYTECOMPILE) - find_program(EMACS_EXECUTABLE emacs) - if(NOT EMACS_EXECUTABLE) - message(SEND_ERROR "Emacs could not be found.\n (If emacs interface is not required, then set SC_EL=no)") - endif() - - foreach (el ${all_scel_sources}) - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${el}c - COMMAND ${EMACS_EXECUTABLE} -batch - -L ${CMAKE_CURRENT_BINARY_DIR} - -f batch-byte-compile - ${CMAKE_CURRENT_BINARY_DIR}/${el} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${el} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Creating byte-compiled Emacs lisp ${CMAKE_CURRENT_BINARY_DIR}/${el}c") - - add_custom_target(${el}c ALL - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${el}c) - - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${el}c - DESTINATION share/emacs/site-lisp/SuperCollider) - endforeach() -else() - install (FILES ${scel_sources} ${CMAKE_CURRENT_BINARY_DIR}/sclang-vars.el - DESTINATION share/emacs/site-lisp/SuperCollider) -endif() diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-browser.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-browser.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-browser.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-browser.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,183 +0,0 @@ -;; copyright 2003 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(require 'sclang-util) -(require 'view nil t) - -;; TODO: better factoring -;; derive from view mode, make mode-map pluggable -;; define derived mode for completion, definition, help - -(defun sclang-browser-fill-keymap (map) - (define-key map "\r" 'sclang-browser-follow-link) - (define-key map [mouse-2] 'sclang-browser-mouse-follow-link) - (define-key map "\t" 'sclang-browser-next-link) - (define-key map [backtab] 'sclang-browser-previous-link) - (define-key map [(shift tab)] 'sclang-browser-previous-link) - (define-key map [?q] 'sclang-browser-quit) - map) - -(defvar sclang-browser-mode-map (sclang-browser-fill-keymap (make-sparse-keymap))) -(defvar sclang-browser-mode-hook nil) -(defvar sclang-browser-show-hook nil) -(defvar sclang-browser-link-function nil - "buffer local") -(defvar sclang-browser-return-method nil - "buffer local") - -(defun sclang-browser-beginning-of-link () - (interactive) - (when (get-text-property (point) 'sclang-browser-link) - (while (and (not (bobp)) - (get-text-property (point) 'sclang-browser-link)) - (forward-char -1)) - (unless (bobp) (forward-char 1)) - (point))) - -(defun sclang-browser-next-link (&optional n) - (interactive) - (let* ((n (or n 1)) - (prop 'sclang-browser-link) - (fwd (>= n 0)) - (orig (point)) - (beg (if fwd (point-min) (point-max))) - (end (if fwd (point-max) (point-min))) - (inc (if fwd 1 -1)) - pos) - (when (get-text-property (point) prop) - (while (and (/= (point) beg) - (get-text-property (point) prop)) - (forward-char inc)) - (if (= (point) beg) (goto-char end))) - (while (not (eq pos orig)) - (cond ((get-text-property (point) prop) - (sclang-browser-beginning-of-link) - (setq pos orig)) - (t - (if (= (point) end) (goto-char beg)) - (forward-char inc) - (setq pos (point))))))) - -(defun sclang-browser-previous-link () - (interactive) - (sclang-browser-next-link -1)) - -(defun sclang-browser-follow-link (&optional pos) - (interactive) - (let* ((pos (or pos (point))) - (data (get-text-property pos 'sclang-browser-link))) - (when (consp data) - (let ((fun (or (car data) sclang-browser-link-function)) - (arg (cdr data))) - (when (functionp fun) - (condition-case nil - (funcall fun arg) - (error (sclang-message "Error in link function") nil))))))) - -(defun sclang-browser-mouse-follow-link (event) - (interactive "e") - (let* ((start (event-start event)) - (window (car start)) - (pos (cadr start))) - (with-current-buffer (window-buffer window) - (sclang-browser-follow-link pos)))) - -(defun sclang-browser-mode () - "Major mode for viewing hypertext and navigating references in it. -Entry to this mode runs the normal hook `sclang-browser-mode-hook'. -Commands: -\\{sclang-browser-mode-map}" - (interactive) - (kill-all-local-variables) - (use-local-map sclang-browser-mode-map) - (set-keymap-parent sclang-browser-mode-map view-mode-map) - (setq mode-name "Browser") - (setq major-mode 'sclang-browser-mode) - (set (make-local-variable 'sclang-browser-link-function) nil) - (set (make-local-variable 'sclang-browser-return-method) nil) - (set (make-local-variable 'font-lock-defaults) nil) - (view-mode) - (set (make-local-variable 'minor-mode-overriding-map-alist) - (list (cons 'view-mode sclang-browser-mode-map))) - (set (make-local-variable 'view-no-disable-on-exit) t) - (run-hooks 'sclang-browser-mode-hook)) - -(defun sclang-browser-mode-setup () - (sclang-browser-mode) - (setq buffer-read-only nil)) - -(defun sclang-browser-mode-finish () - (toggle-read-only 1) - (setq view-return-to-alist - (list (cons (selected-window) sclang-browser-return-method))) - (run-hooks 'sclang-browser-show-hook)) - -(defun sclang-browser-quit () - (interactive) - (when (eq major-mode 'sclang-browser-mode) - (kill-buffer (current-buffer)))) - -(defun sclang-browser-make-link (link-text &optional link-data link-function) - (let ((map (make-sparse-keymap))) - (propertize link-text - 'mouse-face 'highlight - ;;'help-echo "mouse-2: follow link" - ;;'keymap map - 'sclang-browser-link (cons link-function link-data) - ;;'sclang-browser-link-data link-data - ;;'sclang-browser-link-function link-function))) - ))) - -(defun sclang-display-browser (buffer-name output-function) - "header: what to insert in the buffer - link-list: list of (link-text link-function link-data) - link-function: function with args (link-text link-data)" - (let ((temp-buffer-setup-hook '(sclang-browser-mode-setup)) - (temp-buffer-show-hook '(sclang-browser-mode-finish))) - (with-output-to-temp-buffer buffer-name - (with-current-buffer standard-output - ;; record return method - (setq sclang-browser-return-method - (cond ((special-display-p (buffer-name standard-output)) - ;; If the help output buffer is a special display buffer, - ;; don't say anything about how to get rid of it. - ;; First of all, the user will do that with the window - ;; manager, not with Emacs. - ;; Secondly, the buffer has not been displayed yet, - ;; so we don't know whether its frame will be selected. - (cons (selected-window) t)) - (display-buffer-reuse-frames - (cons (selected-window) 'quit-window)) - ((not (one-window-p t)) - (cons (selected-window) 'quit-window)) - (pop-up-windows - (cons (selected-window) t)) - (t - (list (selected-window) (window-buffer) - (window-start) (window-point))))) - (funcall output-function))))) - -(defmacro with-sclang-browser (buffer-name &rest body) - `(sclang-display-browser ,buffer-name (lambda () ,@body))) - -;; ===================================================================== -;; module setup -;; ===================================================================== - -(provide 'sclang-browser) - -;; EOF \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-dev.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-dev.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-dev.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-dev.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - - -(eval-when-compile - (require 'sclang-util) - (require 'sclang-interp) - ) - - - -(sclang-set-command-handler - 'openDevSource - (lambda (file) - ) - ) - -(defun sclang-edit-dev-source () - "Edit the help file at the development location." -; (sclang-document-name . (prSetTitle (buffer-name))) - (interactive) - (sclang-perform-command 'openDevSource (buffer-file-name)) - ) - -(provide 'sclang-dev) - -;(defun sclang-open-dev-source (file) -; "Open the help file at the development location." -; (if (sclang-html-file-p file) -; (html-mode) -; ;; (find-file file) -; ) -; (if ( sclang-sc-file-p file ) -; (sclang-mode) -; ) -; ) - diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-document.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-document.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-document.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-document.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -;; copyright 2003 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(provide 'sclang-document) - -;; EOF \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang.el 1:3.10.0+repack-0.1/editors/scel/el/sclang.el --- 1:3.8.0~repack-2/editors/scel/el/sclang.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -;;; sclang.el --- IDE for working with the SuperCollider language -;; copyright 2003 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -;;; Code: -(defgroup sclang nil - "IDE for working with the SuperCollider language." - :group 'languages) - -(defgroup sclang-mode nil - "Major mode for working with SuperCollider source code." - :group 'sclang) - -(defgroup sclang-minor-mode nil - "Minor mode for working with SuperCollider source code." - :group 'sclang) - -(defgroup sclang-interface nil - "Interface to the SuperCollider process." - :group 'sclang) - -(defgroup sclang-programs nil - "Paths to programs used by sclang-mode." - :group 'sclang-interface) - -(defgroup sclang-options nil - "Options for the SuperCollider process." - :group 'sclang-interface) - -(defun sclang-customize () - "Customize sclang variables." - (interactive) - (customize-group 'sclang)) - -(eval-and-compile - (require 'cl)) - -(eval-and-compile - (let ((load-path - (if (and (boundp 'byte-compile-dest-file) - (stringp byte-compile-dest-file)) - (cons (file-name-directory byte-compile-dest-file) load-path) - load-path))) - (require 'sclang-util) - (require 'sclang-browser) - (require 'sclang-interp) - (require 'sclang-language) - (require 'sclang-document) - (require 'sclang-mode) - (require 'sclang-minor-mode) - (require 'sclang-help) - (require 'sclang-server) - (require 'sclang-widgets))) - -(provide 'sclang) - -;;; sclang.el ends here diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-help.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-help.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-help.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-help.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,661 +0,0 @@ -;; copyright 2003 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(eval-when-compile - (require 'cl) - (require 'font-lock)) - -;; (require 'w3m) ;; not needed during compilation -(require 'sclang-util) -(require 'sclang-interp) -(require 'sclang-language) -(require 'sclang-mode) -(require 'sclang-vars) -(require 'sclang-minor-mode) - -(defcustom sclang-help-directory "~/SuperCollider/Help" - "*Directory where the SuperCollider help files are kept. OBSOLETE." - :group 'sclang-interface - :version "21.3" - :type 'directory - :options '(:must-match)) - -(defcustom sclang-help-path (list sclang-system-help-dir - "~/.local/share/SuperCollider/Help") - "*List of directories where SuperCollider help files are kept." - :group 'sclang-interface - :version "21.4" - :type '(repeat directory)) - -(defconst sclang-extension-path (list sclang-system-extension-dir - "~/.local/share/SuperCollider/Extensions") - "List of SuperCollider extension directories.") - -(defcustom sclang-help-fill-column fill-column - "*Column beyond which automatic line-wrapping in RTF help files should happen." - :group 'sclang-interface - :version "21.3" - :type 'integer) - -(defcustom sclang-rtf-editor-program "ted" - "*Name of an RTF editor program used to edit SuperCollider help files." - :group 'sclang-programs - :version "21.3" - :type 'string) - -(defcustom sclang-html-editor-program "html" - "*Name of an HTML editor program used to edit SuperCollider help files." - :group 'sclang-programs - :version "21.3" - :type 'string) - -;; dynamically change certain html-tags when displaying in w3m-browser: - -(defcustom sclang-help-filters - '(("p\\.p\\([0-9]+\\)" . "#p\\1") - ("

\\(.*\\)

" . "
\\2
")) - "list of pairs of (regexp . filter) defining html-tags to be replaced by the function sclang-help-substitute-for-filters" - :group 'sclang-interface - :type '(repeat (cons (string :tag "match") (string :tag "replacement")))) - -(defun sclang-help-substitute-for-filters (&rest args) - "substitute various tags in SCs html-docs" - (mapcar #'(lambda (filter) - (let ((regexp (car filter)) - (to-string (cdr filter))) - (goto-char (point-min)) - (while (re-search-forward regexp nil t) - (replace-match to-string nil nil)))) - sclang-help-filters)) - -;; w3m's content-filtering system -(setq w3m-use-filter t) - -(eval-after-load "w3m-filter" - '(add-to-list 'w3m-filter-rules - ;; run on all files read by w3m... - '(".*" sclang-help-substitute-for-filters))) - - -(defvar sclang-help-topic-alist nil - "Alist mapping help topics to file names.") - -(defvar sclang-help-topic-history nil - "List of recently invoked help topics.") -;; (defvar sclang-help-topic-ring-length 32) -;; (defvar sclang-help-topic-ring (make-ring sclang-help-topic-ring-length)) - -(defconst sclang-special-help-topics - '(("/" . "division") - ("-" . "subtraction")) - "Alist of help topics with transcoded filenames.") - -(defvar sclang-help-file nil) -(defvar sclang-current-help-file nil) -(make-variable-buffer-local 'sclang-help-file) - -(defconst sclang-help-file-regexp - "\\(\\(\\(\\.help\\)?\\.\\(rtf\\|scd\\|html\\|htm\\)\\)\\|\\(\\.help\\.sc\\.html\\.htm\\)\\|\\.rtfd/TXT\\.rtf\\.html\\.htm\\)$" - "Regular expression matching help files.") - -;; ===================================================================== -;; utilities -;; ===================================================================== - -(defun sclang-get-help-file (topic) - (let ((topic (or (cdr (assoc topic sclang-special-help-topics)) topic))) - (cdr (assoc topic sclang-help-topic-alist)))) - -(defun sclang-get-help-topic (file) - (let ((topic (car (rassoc file sclang-help-topic-alist)))) - (or (car (rassoc topic sclang-special-help-topics)) topic))) - -(defun sclang-help-buffer-name (topic) - (sclang-make-buffer-name (concat "Help:" topic))) - -(defun sclang-rtf-file-p (file) - (let ((case-fold-search t)) - (string-match ".*\\.rtf$" file))) - -;; ========= ADDITION for HTML help files -(defun sclang-html-file-p (file) - (let ((case-fold-search t)) - (string-match ".*\\.html?$" file))) - -(defun sclang-sc-file-p (file) - (let ((case-fold-search t)) - (string-match ".*\\.sc$" file))) - -(defun sclang-scd-file-p (file) - (let ((case-fold-search t)) - (string-match ".*\\.scd$" file))) - -(defun sclang-help-file-p (file) - (string-match sclang-help-file-regexp file)) - -(defun sclang-help-topic-name (file) - (if (string-match sclang-help-file-regexp file) - (cons (file-name-nondirectory (replace-match "" nil nil file 1)) - file))) - -;; ===================================================================== -;; rtf parsing -;; ===================================================================== - -(defconst sclang-rtf-face-change-token "\0") - -(defun sclang-fill-rtf-syntax-table (table) - ;; character quote - (modify-syntax-entry ?\\ "/" table) - (modify-syntax-entry ?\" "." table) - (modify-syntax-entry ?\{ "(" table) - (modify-syntax-entry ?\} ")" table) - (modify-syntax-entry ?\( "." table) - (modify-syntax-entry ?\) "." table) - (modify-syntax-entry ?\[ "." table) - (modify-syntax-entry ?\] "." table) - table) - -(defvar sclang-rtf-syntax-table (sclang-fill-rtf-syntax-table (make-syntax-table)) - "Syntax table used for RTF parsing.") - -(defvar sclang-rtf-font-map '((Helvetica . variable-pitch) - (Helvetica-Bold . variable-pitch) - (Monaco . nil))) - -(defstruct sclang-rtf-state - output font-table font face pos) - -(macrolet ((rtf-p (pos) `(plist-get (text-properties-at ,pos) 'rtf-p))) - (defun sclang-rtf-p (pos) (rtf-p pos)) - (defun sclang-code-p (pos) (not (rtf-p pos)))) - -(defmacro with-sclang-rtf-state-output (state &rest body) - `(with-current-buffer (sclang-rtf-state-output ,state) - ,@body)) - -(defmacro sclang-rtf-state-add-font (state font-id font-name) - `(push (cons ,font-id (intern ,font-name)) (sclang-rtf-state-font-table ,state))) - -(defmacro sclang-rtf-state-apply (state) - (let ((pos (gensym)) - (font (gensym)) - (face (gensym))) - `(with-current-buffer (sclang-rtf-state-output ,state) - (let ((,pos (or (sclang-rtf-state-pos ,state) (point-min))) - (,font (cdr (assq - (cdr (assoc - (sclang-rtf-state-font ,state) - (sclang-rtf-state-font-table ,state))) - sclang-rtf-font-map))) - (,face (sclang-rtf-state-face ,state))) - (when (> (point) ,pos) - (if ,font - (add-text-properties - ,pos (point) - (list 'rtf-p t 'rtf-face (append (list ,font) ,face)))) - (setf (sclang-rtf-state-pos ,state) (point))))))) - -(defmacro sclang-rtf-state-set-font (state font) - `(progn - (sclang-rtf-state-apply ,state) - (setf (sclang-rtf-state-font ,state) ,font))) - -(defmacro sclang-rtf-state-push-face (state face) - (let ((list (gensym))) - `(let ((,list (sclang-rtf-state-face state))) - (sclang-rtf-state-apply ,state) - (unless (memq ,face ,list) - (setf (sclang-rtf-state-face ,state) - (append ,list (list ,face))))))) - -(defmacro sclang-rtf-state-pop-face (state face) - (let ((list (gensym))) - `(let* ((,list (sclang-rtf-state-face ,state))) - (sclang-rtf-state-apply ,state) - (setf (sclang-rtf-state-face ,state) (delq ,face ,list))))) - -(defun sclang-parse-rtf (state) - (while (not (eobp)) - (cond ((looking-at "{") - ;; container - (let ((beg (point))) - (with-syntax-table sclang-rtf-syntax-table - (forward-list 1)) - (save-excursion - (save-restriction - (narrow-to-region (1+ beg) (1- (point))) - (goto-char (point-min)) - (sclang-parse-rtf-container state) - (widen))))) - ((or (looking-at "\\\\\\([{}\\\n]\\)") - (looking-at "\\\\\\([^\\ \n]+\\) ?")) - ;; control - (let ((end (match-end 0))) - (sclang-parse-rtf-control state (match-string 1)) - (goto-char end))) - ((looking-at "\\([^{\\\n]+\\)") - ;; normal text - (let ((end (match-end 0)) - (match (match-string 1))) - (with-sclang-rtf-state-output state (insert match)) - (goto-char end))) - (t - ;; never reached (?) - (forward-char 1))))) - -(defun sclang-parse-rtf-container (state) - (cond ((looking-at "\\\\rtf1") ; document - (goto-char (match-end 0)) - (sclang-parse-rtf state)) - ((looking-at "\\\\fonttbl") ; font table - (goto-char (match-end 0)) - (while (looking-at "\\\\\\(f[0-9]+\\)[^ ]* \\([^;]*\\);[^\\]*") - (sclang-rtf-state-add-font state (match-string 1) (match-string 2)) - (goto-char (match-end 0)))) - ((looking-at "{\\\\NeXTGraphic \\([^\\]+\\.[a-z]+\\)") ; inline graphic - (let* ((file (match-string 1)) - (image (and file (create-image (expand-file-name file))))) - (with-sclang-rtf-state-output - state - (if image - (insert-image image) - (sclang-rtf-state-push-face state 'italic) - (insert file) - (sclang-rtf-state-pop-face state 'italic))))) - )) - -(defun sclang-parse-rtf-control (state ctrl) - (let ((char (aref ctrl 0))) - (cond ((memq char '(?{ ?} ?\\)) - (with-sclang-rtf-state-output state (insert char))) - ((or (eq char ?\n) - (string= ctrl "par")) - (sclang-rtf-state-apply state) - (with-sclang-rtf-state-output - state - (when (sclang-rtf-p (line-beginning-position)) - (fill-region (line-beginning-position) (line-end-position) - t t)) - (insert ?\n))) - ((string= ctrl "tab") - (with-sclang-rtf-state-output state (insert ?\t))) - ((string= ctrl "b") - (sclang-rtf-state-push-face state 'bold)) - ((string= ctrl "b0") - (sclang-rtf-state-pop-face state 'bold)) - ((string-match "^f[0-9]+$" ctrl) - (sclang-rtf-state-set-font state ctrl)) - ))) - -(defun sclang-convert-rtf-buffer (output) - (let ((case-fold-search nil) - (fill-column sclang-help-fill-column)) - (save-excursion - (goto-char (point-min)) - (when (looking-at "{\\\\rtf1") - (let ((state (make-sclang-rtf-state))) - (setf (sclang-rtf-state-output state) output) - (sclang-parse-rtf state) - (sclang-rtf-state-apply state)))))) - -;; ===================================================================== -;; help mode -;; ===================================================================== - -(defun sclang-fill-help-syntax-table (table) - ;; make ?- be part of symbols for selection and sclang-symbol-at-point - (modify-syntax-entry ?- "_" table)) - -(defun sclang-fill-help-mode-map (map) - (define-key map "\C-c}" 'bury-buffer) - (define-key map "\C-c\C-v" 'sclang-edit-help-file)) - -(defmacro sclang-help-mode-limit-point-to-code (&rest body) - (let ((min (gensym)) - (max (gensym)) - (res (gensym))) - `(if (and (sclang-code-p (point)) - (not (or (bobp) (eobp))) - (sclang-code-p (1- (point))) - (sclang-code-p (1+ (point)))) - (let ((,min (previous-single-property-change (point) 'rtf-p (current-buffer) (point-min))) - (,max (next-single-property-change (point) 'rtf-p (current-buffer) (point-max)))) - (let ((,res (progn ,@body))) - (cond ((< (point) ,min) (goto-char ,min) nil) - ((> (point) ,max) (goto-char ,max) nil) - (t ,res))))))) - -(defun sclang-help-mode-beginning-of-defun (&optional arg) - (interactive "p") - (sclang-help-mode-limit-point-to-code (sclang-beginning-of-defun arg))) - -(defun sclang-help-mode-end-of-defun (&optional arg) - (interactive "p") - (sclang-help-mode-limit-point-to-code (sclang-end-of-defun arg))) - -(defun sclang-help-mode-fontify-region (start end loudly) - (flet ((fontify-code - (start end loudly) - (funcall 'font-lock-default-fontify-region start end loudly)) - (fontify-non-code - (start end loudly) - (while (< start end) - (let ((value (plist-get (text-properties-at start) 'rtf-face)) - (end (next-single-property-change start 'rtf-face (current-buffer) end))) - (add-text-properties start end (list 'face (append '(variable-pitch) (list value)))) - (setq start end))))) - (let ((modified (buffer-modified-p)) (buffer-undo-list t) - (inhibit-read-only t) (inhibit-point-motion-hooks t) - (inhibit-modification-hooks t) - deactivate-mark buffer-file-name buffer-file-truename - (pos start)) - (unwind-protect - (while (< pos end) - (let ((end (next-single-property-change pos 'rtf-p (current-buffer) end))) - (if (sclang-rtf-p pos) - (fontify-non-code pos end loudly) - (fontify-code pos end loudly)) - (setq pos end))) - (when (and (not modified) (buffer-modified-p)) - (set-buffer-modified-p nil)))))) - - -(defun sclang-help-mode-indent-line () - (if (sclang-code-p (point)) - (sclang-indent-line) - (insert "\t"))) - -(define-derived-mode sclang-help-mode sclang-mode "SCLangHelp" - "Major mode for displaying SuperCollider help files. -\\{sclang-help-mode-map}" - (let ((file (or (buffer-file-name) - (and (boundp 'sclang-current-help-file) - sclang-current-help-file)))) - (when file - (set-visited-file-name nil) - (setq buffer-auto-save-file-name nil) - (save-excursion - (when (sclang-rtf-file-p file) - (let ((tmp-buffer (generate-new-buffer " *RTF*")) - (modified-p (buffer-modified-p))) - (unwind-protect - (progn - (sclang-convert-rtf-buffer tmp-buffer) - (toggle-read-only 0) - (erase-buffer) - (insert-buffer-substring tmp-buffer)) - (and (buffer-modified-p) (not modified-p) (set-buffer-modified-p nil)) - (kill-buffer tmp-buffer)))))) - (set (make-local-variable 'sclang-help-file) file) - (setq font-lock-defaults - (append font-lock-defaults - '((font-lock-fontify-region-function . sclang-help-mode-fontify-region)))) - (set (make-local-variable 'beginning-of-defun-function) 'sclang-help-mode-beginning-of-defun) - (set (make-local-variable 'indent-line-function) 'sclang-help-mode-indent-line) - )) - -;; ===================================================================== -;; help file access -;; ===================================================================== - -(defun sclang-skip-help-directory-p (path) - "Answer t if PATH should be skipped during help file indexing." - (let ((directory (file-name-nondirectory path))) - (reduce (lambda (a b) (or a b)) - (mapcar (lambda (regexp) (string-match regexp directory)) - '("^\.$" "^\.\.$" "^CVS$" "^\.svn$" "^_darcs$"))))) - -(defun sclang-filter-help-directories (list) - "Remove paths to be skipped from LIST of directories." - (remove-if (lambda (x) - (or (not (file-directory-p x)) - (sclang-skip-help-directory-p x))) - list)) - -(defun sclang-directory-files-save (directory &optional full match nosort) - "Return a list of names of files in DIRECTORY, or nil on error." - (condition-case nil - (directory-files directory full match nosort) - (error nil))) - -;; (defun sclang-extension-help-directories () -;; "Build a list of help directories for extensions." -;; (flet ((flatten (seq) -;; (if (null seq) -;; seq -;; (if (listp seq) -;; (reduce 'append (mapcar #'flatten seq)) -;; (list seq))))) -;; (flatten -;; (mapcar -;; (lambda (dir) -;; (mapcar -;; (lambda (dir) -;; (remove-if-not -;; 'file-directory-p -;; (sclang-directory-files-save dir t "^[Hh][Ee][Ll][Pp]$" t))) -;; (sclang-filter-help-directories (sclang-directory-files-save dir t)))) -;; sclang-extension-path)))) - -;; (defun sclang-help-directories () -;; "Answer list of help directories to be indexed." -;; (append sclang-help-path (sclang-extension-help-directories))) - -(defun sclang-help-directories () - "Answer list of help directories to be indexed." - (append sclang-help-path sclang-extension-path)) - -(defun sclang-make-help-topic-alist (dirs result) - "Build a help topic alist from directories in DIRS, with initial RESULT." - (if dirs - (let* ((files (sclang-directory-files-save (car dirs) t)) - (topics (remove-if 'null (mapcar 'sclang-help-topic-name files))) - (new-dirs (sclang-filter-help-directories files))) - (sclang-make-help-topic-alist - (append new-dirs (cdr dirs)) - (append topics result))) - (sort result (lambda (a b) (string< (car a) (car b)))))) - -(defun sclang-index-help-topics () - "Build an index of help topics searching in the various help file locations." - (interactive) - (setq sclang-help-topic-alist nil) - (let ((case-fold-search nil) - (max-specpdl-size 10000) - (max-lisp-eval-depth 10000)) - (sclang-message "Indexing help topics ...") - (setq sclang-help-topic-alist - (sclang-make-help-topic-alist (sclang-help-directories) nil)) - (sclang-message "Indexing help topics ... Done"))) - -(defun sclang-edit-html-help-file () - "Edit the help file associated with the current buffer. -Switches w3m to edit mode (actually HTML mode)." - (interactive) - (w3m-edit-current-url) - ) - -(defun sclang-edit-help-code () - "Edit the help file to make code variations. -Switches to text mode with sclang-minor-mode." - (interactive) - (w3m-copy-buffer) -;; (text-mode) - (sclang-mode) - (toggle-read-only) - (rename-buffer "*SC_Help:CodeEdit*") - ) - - -(defun sclang-edit-help-file () - "Edit the help file associated with the current buffer. -Either visit file internally (.sc) or start external editor (.rtf)." - (interactive) - (if (and (boundp 'sclang-help-file) sclang-help-file) - (let ((file sclang-help-file)) - (if (file-exists-p file) - (if (sclang-rtf-file-p file) - (start-process (sclang-make-buffer-name (format "HelpEditor:%s" file)) - nil sclang-rtf-editor-program file) - (find-file file)) - (if (sclang-html-file-p file) - (w3m-edit-current-url) - ;; (find-file file) - ) - (sclang-message "Help file not found"))) - (sclang-message "Buffer has no associated help file"))) - -(defun sclang-help-topic-at-point () - "Answer the help topic at point, or nil if not found." - (save-excursion - (with-syntax-table sclang-help-mode-syntax-table - (let (beg end) - (skip-syntax-backward "w_") - (setq beg (point)) - (skip-syntax-forward "w_") - (setq end (point)) - (goto-char beg) - (car (assoc (buffer-substring-no-properties beg end) - sclang-help-topic-alist)))))) - -(defun sclang-goto-help-browser () - "Switch to the *w3m* buffer to browse help files" - (interactive) - (let* ((buffer-name "*w3m*") - (buffer (get-buffer buffer-name))) - (if buffer - (switch-to-buffer buffer) - ;; else - (let* ((buffer-name "*SC_Help:w3m*") - (buffer2 (get-buffer buffer-name))) - (if buffer2 - (switch-to-buffer buffer2) - ;; else - (sclang-find-help "Help") - ) - ) - ) - (if buffer - (with-current-buffer buffer - (rename-buffer "*SC_Help:w3m*") - (sclang-help-minor-mode) - ;;(setq buffer-read-only false) - ) - ) -; (if buffer -; -; ) - ) - ) - -(defun sclang-find-help (topic) - (interactive - (list - (let ((topic (or (and mark-active (buffer-substring-no-properties (region-beginning) (region-end))) - (sclang-help-topic-at-point) - "Help"))) - (completing-read (format "Help topic%s: " (if (sclang-get-help-file topic) - (format " (default %s)" topic) "")) - sclang-help-topic-alist nil t nil 'sclang-help-topic-history topic)))) - (let ((file (sclang-get-help-file topic))) - (if file - (if (file-exists-p file) - (let* ((buffer-name (sclang-help-buffer-name topic)) - (buffer (get-buffer buffer-name))) - (unless buffer - (if (sclang-html-file-p file) - (w3m-find-file file) - ;; (sclang-goto-help-browser) - ;; not a sclang-html file - (setq buffer (get-buffer-create buffer-name)) - (with-current-buffer buffer - (insert-file-contents file) - (let ((sclang-current-help-file file) - (default-directory (file-name-directory file))) - (sclang-help-mode)) - (set-buffer-modified-p nil))) - (switch-to-buffer buffer)) - (if (sclang-html-file-p file) - (sclang-goto-help-browser)) - ) - (sclang-message "Help file not found") nil) - (sclang-message "No help for \"%s\"" topic) nil))) - - -(defun sclang-open-help-gui () - "Open SCDoc Help Browser" - (interactive) - (sclang-eval-string (sclang-format "Help.gui")) - ) - -(defvar sclang-scdoc-topics (make-hash-table :size 16385) - "List of all scdoc topics.") - -(sclang-set-command-handler - 'helpSymbols - (lambda (list-of-symbols) - (mapcar (lambda (arg) - (puthash arg nil sclang-scdoc-topics)) - list-of-symbols) - )) - -(defun sclang-find-help-in-gui (topic) - "Search for topic in SCDoc Help Browser" - (interactive - (list - (let ((topic (sclang-symbol-at-point))) - (completing-read (format "Help topic%s: " (if topic - (format " (default %s)" topic) - "")) - sclang-scdoc-topics nil nil nil 'sclang-help-topic-history topic))) - ) - (if topic - (sclang-eval-string (sclang-format "HelpBrowser.openHelpFor(%o)" topic)) - (sclang-eval-string (sclang-format "Help.gui")) - ) - ) - - -;; ===================================================================== -;; module setup -;; ===================================================================== - -(add-hook 'sclang-library-startup-hook - (lambda () - (sclang-perform-command 'helpSymbols) - (condition-case nil - (sclang-index-help-topics) - (error nil)))) - -(add-hook 'sclang-library-shutdown-hook - (lambda () - (clrhash sclang-scdoc-topics))) - -(add-to-list 'auto-mode-alist '("\\.rtf$" . sclang-help-mode)) -;; ========= ADDITION for HTML help files?? ============ -;; (add-to-list 'auto-mode-alist '("\\.html$" . sclang-help-mode)) -;; (setq mm-text-html-renderer 'w3m) -;; (setq mm-inline-text-html-with-images t) -;; (setq mm-inline-text-html-with-w3m-keymap nil) -;; ===================================================== -(sclang-fill-help-syntax-table sclang-help-mode-syntax-table) -(sclang-fill-help-mode-map sclang-help-mode-map) - -(provide 'sclang-help) - -;; EOF diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-interp.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-interp.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-interp.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-interp.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,748 +0,0 @@ -;; copyright 2003-2005 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(eval-when-compile - (require 'cl) - (require 'sclang-util) - (require 'compile) - ) - -;; ===================================================================== -;; post buffer access -;; ===================================================================== - -;; FIXME: everything will fail when renaming the post buffer! - -(defconst sclang-post-buffer (sclang-make-buffer-name "PostBuffer") - "Name of the SuperCollider process output buffer.") - -(defconst sclang-bullet-latin-1 (string-to-char (decode-coding-string "\xa5" 'utf-8)) - "Character for highlighting errors (latin-1).") - -(defconst sclang-bullet-utf-8 (string-to-char (decode-coding-string "\xe2\x80\xa2" 'utf-8)) - "Character for highlighting errors (utf-8).") - -(defconst sclang-parse-error-regexp - "^\\(WARNING\\|ERROR\\): .*\n[\t ]*in file '\\([^']\+\\)'\n[\t ]*line \\([0-9]\+\\) char \\([0-9]\+\\)" - "Regular expression matching parse errors during library compilation.") - -(defcustom sclang-max-post-buffer-size 0 - "*Maximum number of characters to insert in post buffer. -Zero means no limit." - :group 'sclang-interface - :version "21.3" - :type 'integer) - -(defcustom sclang-auto-scroll-post-buffer nil - "*Automatically scroll post buffer on output regardless of point position. -Default behavior is to only scroll when point is not at end of buffer." - :group 'sclang-interface - :version "21.3" - :type 'boolean) - -(defun sclang-get-post-buffer () - (get-buffer-create sclang-post-buffer)) - -(defmacro with-sclang-post-buffer (&rest body) - `(with-current-buffer (sclang-get-post-buffer) - ,@body)) - -;; (defun sclang-post-string (string) -;; (with-sclang-post-buffer -;; (let ((eobp (mapcar (lambda (w) -;; (cons w (= (window-point w) (point-max)))) -;; (get-buffer-window-list (current-buffer) nil t)))) -;; (save-excursion -;; ;; insert STRING into process buffer -;; (goto-char (point-max)) -;; (insert string)) -;; (dolist (assoc eobp) -;; (when (cdr assoc) -;; (save-selected-window -;; (let ((window (car assoc))) -;; (select-window window) -;; (set-window-point window (point-max)) -;; (recenter -1)))))))) - -;; (defun sclang-post-string (string &optional proc) -;; (let* ((buffer (process-buffer proc)) -;; (window (display-buffer buffer))) -;; (with-current-buffer buffer -;; (let ((moving (= (point) (process-mark proc)))) -;; (save-excursion -;; ;; Insert the text, advancing the process marker. -;; (goto-char (process-mark proc)) -;; (insert string) -;; (set-marker (process-mark proc) (point))) -;; (when moving -;; (goto-char (process-mark proc)) -;; (set-window-point window (process-mark proc))))))) - -(defun sclang-show-post-buffer (&optional eob-p) - "Show SuperCollider process buffer. -If EOB-P is non-nil, positions cursor at end of buffer." - (interactive "P") - (with-sclang-post-buffer - (let ((window (display-buffer (current-buffer)))) - (when eob-p - (goto-char (point-max)) - (save-selected-window - (set-window-point window (point-max))))))) - -(defun sclang-clear-post-buffer () - "Clear the output buffer." - (interactive) - (with-sclang-post-buffer (erase-buffer))) - -(defun sclang-init-post-buffer () - "Initialize post buffer." - (get-buffer-create sclang-post-buffer) - (with-sclang-post-buffer - ;; setup sclang mode - (sclang-mode) - (set (make-local-variable 'font-lock-fontify-region-function) - (lambda (&rest args))) - ;; setup compilation mode - (compilation-minor-mode) - (set (make-variable-buffer-local 'compilation-error-screen-columns) nil) - (set (make-variable-buffer-local 'compilation-error-regexp-alist) - (cons (list sclang-parse-error-regexp 2 3 4) compilation-error-regexp-alist)) - (set (make-variable-buffer-local 'compilation-parse-errors-function) - (lambda (limit-search find-at-least) - (compilation-parse-errors limit-search find-at-least))) - (set (make-variable-buffer-local 'compilation-parse-errors-filename-function) - (lambda (file-name) - file-name))) - (sclang-clear-post-buffer) - (sclang-show-post-buffer)) - -;; ===================================================================== -;; interpreter interface -;; ===================================================================== - -(defconst sclang-process "SCLang" - "Name of the SuperCollider interpreter subprocess.") - -(defcustom sclang-program "sclang" - "*Name of the SuperCollider interpreter program." - :group 'sclang-programs - :version "21.3" - :type 'string) - -(defcustom sclang-runtime-directory "" - "*Path to the SuperCollider runtime directory." - :group 'sclang-options - :version "21.3" - :type 'directory - :options '(:must-match)) - -(defcustom sclang-library-configuration-file "" - "*Path of the library configuration file." - :group 'sclang-options - :version "21.3" - :type 'file - :options '(:must-match)) - -(defcustom sclang-heap-size "" - "*Initial heap size." - :group 'sclang-options - :version "21.3" - :type 'string) - -(defcustom sclang-heap-growth "" - "*Heap growth." - :group 'sclang-options - :version "21.3" - :type 'string) - -(defcustom sclang-udp-port -1 - "*UDP listening port." - :group 'sclang-options - :version "21.3" - :type 'integer) - -(defcustom sclang-main-run nil - "*Call Main.run on startup." - :group 'sclang-options - :version "21.3" - :type 'boolean) - -(defcustom sclang-main-stop nil - "*Call Main.stop on shutdown." - :group 'sclang-options - :version "21.3" - :type 'boolean) - -;; ===================================================================== -;; helper functions -;; ===================================================================== - -(defun sclang-get-process () - (get-process sclang-process)) - -;; ===================================================================== -;; library startup/shutdown -;; ===================================================================== - -(defvar sclang-library-initialized-p nil) - -(defcustom sclang-library-startup-hook nil - "*Hook run after initialization of the SCLang process." - :group 'sclang-interface - :type 'hook) - -(defcustom sclang-library-shutdown-hook nil - "*Hook run before deletion of the SCLang process." - :group 'sclang-interface - :type 'hook) - -;; library initialization works like this: -;; -;; * emacs starts sclang with SCLANG_COMMAND_FIFO set in the environment -;; * sclang opens fifo for communication with emacs during class tree -;; initialization -;; * sclang sends '_init' command -;; * '_init' command handler calls sclang-on-library-startup to complete -;; initialization - -(defun sclang-library-initialized-p () - (and (sclang-get-process) - sclang-library-initialized-p)) - -(defun sclang-on-library-startup () - (sclang-message "Initializing library...") - (setq sclang-library-initialized-p t) - (run-hooks 'sclang-library-startup-hook) - (sclang-message "Initializing library...done")) - -(defun sclang-on-library-shutdown () - (when sclang-library-initialized-p - (run-hooks 'sclang-library-shutdown-hook) - (setq sclang-library-initialized-p nil) - (sclang-message "Shutting down library..."))) - -;; ===================================================================== -;; process hooks -;; ===================================================================== - -(defun sclang-process-sentinel (proc msg) - (with-sclang-post-buffer - (goto-char (point-max)) - (insert - (if (and (bolp) (eolp)) "\n" "\n\n") - (format "*** %s %s ***" proc (substring msg 0 -1)) - "\n\n")) - (when (memq (process-status proc) '(exit signal)) - (sclang-on-library-shutdown) - (sclang-stop-command-process))) - -(defun sclang-process-filter (process string) - (let ((buffer (process-buffer process))) - (with-current-buffer buffer - (when (and (> sclang-max-post-buffer-size 0) - (> (buffer-size) sclang-max-post-buffer-size)) - (erase-buffer)) - (let ((move-point (or sclang-auto-scroll-post-buffer - (= (point) (process-mark process))))) - (save-excursion - ;; replace mac-roman bullet with unicode character - (subst-char-in-string sclang-bullet-latin-1 sclang-bullet-utf-8 string t) - ;; insert the text, advancing the process marker. - (goto-char (process-mark process)) - (insert string) - (set-marker (process-mark process) (point))) - (when move-point - (goto-char (process-mark process)) - (walk-windows - (lambda (window) - (when (eq buffer (window-buffer window)) - (set-window-point window (process-mark process)))) - nil t)))))) - -;; ===================================================================== -;; process startup/shutdown -;; ===================================================================== - -(defun sclang-memory-option-p (string) - (let ((case-fold-search nil)) - (string-match "^[1-9][0-9]*[km]?$" string))) - -(defun sclang-port-option-p (number) - (and (>= number 0) (<= number #XFFFF))) - -(defun sclang-make-options () - (let ((default-directory "") - (res ())) - (flet ((append-option - (option &optional value) - (setq res (append res (list option) (and value (list value)))))) - (if (file-directory-p sclang-runtime-directory) - (append-option "-d" (expand-file-name sclang-runtime-directory))) - (if (file-exists-p sclang-library-configuration-file) - (append-option "-l" (expand-file-name sclang-library-configuration-file))) - (if (sclang-memory-option-p sclang-heap-size) - (append-option "-m" sclang-heap-size)) - (if (sclang-memory-option-p sclang-heap-growth) - (append-option "-g" sclang-heap-growth)) - (if (sclang-port-option-p sclang-udp-port) - (append-option "-u" (number-to-string sclang-udp-port))) - (if sclang-main-run - (append-option "-r")) - (if sclang-main-stop - (append-option "-s")) - (append-option "-iscel") - res))) - -(defun sclang-start () - "Start SuperCollider process." - (interactive) - (sclang-stop) - (sclang-on-library-shutdown) - (sit-for 1) - (sclang-init-post-buffer) - (sclang-start-command-process) - (let ((process-connection-type nil)) - (let ((proc (apply 'start-process - sclang-process sclang-post-buffer - sclang-program (sclang-make-options)))) - (set-process-sentinel proc 'sclang-process-sentinel) - (set-process-filter proc 'sclang-process-filter) - (set-process-coding-system proc 'mule-utf-8 'mule-utf-8) - (set-process-query-on-exit-flag proc nil) - proc))) - -(defun sclang-kill () - "Kill SuperCollider process." - (interactive) - (when (sclang-get-process) - (kill-process sclang-process) - (delete-process sclang-process))) - -(defun sclang-stop () - "Stop SuperCollider process." - (interactive) - (when (sclang-get-process) - (process-send-eof sclang-process) - (let ((tries 4) - (i 0)) - (while (and (sclang-get-process) - (< i tries)) - (incf i) - (sit-for 0.5)))) - (sclang-kill) - (sclang-stop-command-process)) - -(defun sclang-recompile () - "Recompile class library." - (interactive) - (when (sclang-get-process) - (process-send-string sclang-process "\x18") - )) - -;; ===================================================================== -;; command process -;; ===================================================================== - -(defcustom sclang-mkfifo-program "mkfifo" - "*Name of the \"mkfifo\" program. - -Change this if \"mkfifo\" has a non-standard name or location." - :group 'sclang-programs - :type 'string) - -(defcustom sclang-cat-program "cat" - "*Name of the \"cat\" program. - -Change this if \"cat\" has a non-standard name or location." - :group 'sclang-programs - :type 'string) - -(defconst sclang-command-process "SCLang Command" - "Subprocess for receiving command results from sclang.") - -(defconst sclang-cmd-helper-proc "SCLang Command Helper" - "Dummy subprocess that will keep the command fifo open for writing - so reading does not fail automatically when sclang closes its own - writing end of the fifo") - -(defvar sclang-command-fifo nil - "FIFO for communicating with the subprocess.") - -(defun sclang-delete-command-fifo () - (and sclang-command-fifo - (file-exists-p sclang-command-fifo) - (delete-file sclang-command-fifo))) - -(defun sclang-release-command-fifo () - (sclang-delete-command-fifo) - (setq sclang-command-fifo nil)) - -(defun sclang-create-command-fifo () - (setq sclang-command-fifo (make-temp-name - (expand-file-name - "sclang-command-fifo." temporary-file-directory))) - (sclang-delete-command-fifo) - (let ((res (call-process sclang-mkfifo-program - nil t t - sclang-command-fifo))) - (unless (eq 0 res) - (message "SCLang: Couldn't create command fifo") - (setq sclang-command-fifo nil)))) - -(defun sclang-start-command-process () - (sclang-create-command-fifo) - (when sclang-command-fifo - ;; start the dummy process to keep the fifo open - (let ((process-connection-type nil)) - (let ((proc (start-process-shell-command - sclang-cmd-helper-proc nil - (concat sclang-cat-program " > " sclang-command-fifo)))) - (set-process-query-on-exit-flag proc nil))) - ;; sclang gets the fifo path via the environment - (setenv "SCLANG_COMMAND_FIFO" sclang-command-fifo) - (let ((process-connection-type nil)) - (let ((proc (start-process - sclang-command-process nil - sclang-cat-program sclang-command-fifo))) - (set-process-filter proc 'sclang-command-process-filter) - ;; this is important. use a unibyte stream without eol - ;; conversion for communication. - (set-process-coding-system proc 'no-conversion 'no-conversion) - (set-process-query-on-exit-flag proc nil))) - (unless (get-process sclang-command-process) - (message "SCLang: Couldn't start command process")))) - -(defun sclang-stop-command-process () - (when (get-process sclang-cmd-helper-proc) - (kill-process sclang-cmd-helper-proc) - (delete-process sclang-cmd-helper-proc)) - ;; the real command process should now quit automatically, - ;; since there is no more writers to the command fifo - (sclang-release-command-fifo)) - -(defvar sclang-command-process-previous nil - "Unprocessed command process output.") - -(defun sclang-command-process-filter (proc string) - (when sclang-command-process-previous - (setq string (concat sclang-command-process-previous string))) - (let (end) - (while (and (> (length string) 3) - (>= (length string) - (setq end (+ 4 (sclang-string-to-int32 string))))) - (sclang-handle-command-result (car (read-from-string string 4 end))) - (setq string (substring string end)))) - (setq sclang-command-process-previous string)) - -;; ===================================================================== -;; command interface -;; ===================================================================== - -;; symbol property: sclang-command-handler - -(defun sclang-set-command-handler (symbol function) - (put symbol 'sclang-command-handler function)) - -(defun sclang-perform-command (symbol &rest args) - (sclang-eval-string (sclang-format - "Emacs.lispPerformCommand(%o, %o, true)" - symbol args))) - -(defun sclang-perform-command-no-result (symbol &rest args) - (sclang-eval-string (sclang-format - "Emacs.lispPerformCommand(%o, %o, false)" - symbol args))) - -(defun sclang-default-command-handler (fun arg) - "Default command handler. -Displays short message on error." - (condition-case nil - (funcall fun arg) - (error (sclang-message "Error in command handler") nil))) - -(defun sclang-debug-command-handler (fun arg) - "Debugging command handler. -Enters debugger on error." - (let ((debug-on-error t) - (debug-on-signal t)) - (funcall fun arg))) - -(defvar sclang-command-handler 'sclang-default-command-handler - "Function called when handling command result.") - -(defun sclang-toggle-debug-command-handler (&optional arg) - "Toggle debugging of command handler. -With arg, activate debugging iff arg is positive." - (interactive "P") - (setq sclang-command-handler - (if (or (and arg (> arg 0)) - (eq sclang-command-handler 'sclang-debug-command-handler)) - 'sclang-default-command-handler - 'sclang-default-command-handler)) - (sclang-message "Command handler debugging %s." - (if (eq sclang-command-handler 'sclang-debug-command-handler) - "enabled" - "disabled"))) - -(defun sclang-handle-command-result (list) - (condition-case nil - (let ((fun (get (nth 0 list) 'sclang-command-handler)) - (arg (nth 1 list)) - (id (nth 2 list))) - (when (functionp fun) - (let ((res (funcall sclang-command-handler fun arg))) - (when id - (sclang-eval-string - (sclang-format "Emacs.lispHandleCommandResult(%o, %o)" id res)))))) - (error nil))) - -;; ===================================================================== -;; code evaluation -;; ===================================================================== - -(defconst sclang-token-interpret-cmd-line (char-to-string #X1b)) -(defconst sclang-token-interpret-print-cmd-line (char-to-string #X0c)) - -(defcustom sclang-eval-line-forward t - "*If non-nil `sclang-eval-line' advances to the next line." - :group 'sclang-interface - :type 'boolean) - -(defun sclang-send-string (token string &optional force) - (let ((proc (sclang-get-process))) - (when (and proc (or (sclang-library-initialized-p) force)) - (process-send-string proc (concat string token)) - string))) - -(defun sclang-eval-string (string &optional print-p) - "Send STRING to the sclang process for evaluation and print the result -if PRINT-P is non-nil. Return STRING if successful, otherwise nil." - (sclang-send-string - (if print-p sclang-token-interpret-print-cmd-line sclang-token-interpret-cmd-line) - string)) - -(defun sclang-eval-expression (string &optional silent-p) - "Execute STRING as SuperCollider code." - (interactive "sEval: \nP") - (sclang-eval-string string (not silent-p))) - -(defun sclang-eval-line (&optional silent-p) - "Execute the current line as SuperCollider code." - (interactive "P") - (let ((string (sclang-line-at-point))) - (when string - (sclang-eval-string string (not silent-p))) - (and sclang-eval-line-forward - (/= (line-end-position) (point-max)) - (forward-line 1)) - string)) - -(defun sclang-eval-region (&optional silent-p) - "Execute the region as SuperCollider code." - (interactive "P") - (sclang-eval-string - (buffer-substring-no-properties (region-beginning) (region-end)) - (not silent-p))) - -(defun sclang-eval-region-or-line (&optional silent-p) - (interactive "P") - (if (and transient-mark-mode mark-active) - (sclang-eval-region silent-p) - (sclang-eval-line silent-p))) - -(defun sclang-eval-defun (&optional silent-p) - (interactive "P") - (let ((string (sclang-defun-at-point))) - (when (and string (string-match "^(" string)) - (sclang-eval-string string (not silent-p)) - string))) - -(defun sclang-eval-document (&optional silent-p) - "Execute the whole document as SuperCollider code." - (interactive "P") - (save-excursion - (mark-whole-buffer) - (sclang-eval-string - (buffer-substring-no-properties (region-beginning) (region-end)) - (not silent-p)))) - -(defvar sclang-eval-results nil - "Save results of sync SCLang evaluation.") - -(sclang-set-command-handler - 'evalSCLang - (lambda (arg) (push arg sclang-eval-results))) - -(defun sclang-eval-sync (string) - "Eval STRING in sclang and return result as a lisp value." - (let ((proc (get-process sclang-command-process))) - (if (and (processp proc) (eq (process-status proc) 'run)) - (let ((time (current-time)) (tick 10000) elt) - (sclang-perform-command 'evalSCLang string time) - (while (and (> (decf tick) 0) - (not (setq elt (find time sclang-eval-results - :key #'car :test #'equal)))) - (accept-process-output proc 0 100)) - (if elt - (prog1 (if (eq (nth 1 elt) 'ok) - (nth 2 elt) - (setq sclang-eval-results (delq elt sclang-eval-results)) - (signal 'sclang-error (nth 2 elt))) - (setq sclang-eval-results (delq elt sclang-eval-results))) - (error "SCLang sync eval timeout"))) - (error "SCLang Command process not running")))) - -;; ===================================================================== -;; searching -;; ===================================================================== - -;; (defun sclang-help-file-paths () -;; "Return a list of help file paths." - - -;; (defun sclang-grep-help-files () -;; (interactive) -;; (let ((sclang-grep-prompt "Search help files: ") -;; (sclang-grep-files (mapcar 'cdr sclang-help-topic-alist))) -;; (call-interactively 'sclang-grep-files))) - -;; (defvar sclang-grep-history nil) - -;; (defcustom sclang-grep-case-fold-search t -;; "*Non-nil if sclang-grep-files should ignore case." -;; :group 'sclang-interface -;; :version "21.4" -;; :type 'boolean) - -;; (defvar sclang-grep-files nil) -;; (defvar sclang-grep-prompt "Grep: ") - -;; (defun sclang-grep-files (regexp) -;; (interactive -;; (let ((grep-default (or (when current-prefix-arg (sclang-symbol-at-point)) -;; (car sclang-grep-history)))) -;; (list (read-from-minibuffer sclang-grep-prompt -;; grep-default -;; nil nil 'sclang-grep-history)))) -;; (grep-compute-defaults) -;; (grep (concat grep-program -;; " -n" -;; (and sclang-grep-case-fold-search " -i") -;; " -e" regexp -;; " " (mapconcat 'shell-quote-argument sclang-grep-files " ")))) - -;; ===================================================================== -;; workspace -;; ===================================================================== - -(defcustom sclang-show-workspace-on-startup t - "*If non-nil show the workspace buffer on library startup." - :group 'sclang-interface - :type 'boolean) - -(defconst sclang-workspace-buffer (sclang-make-buffer-name "Workspace")) - -(defun sclang-fill-workspace-mode-map (map) - (define-key map "\C-c}" 'bury-buffer)) - -(defun sclang-switch-to-workspace () - (interactive) - (let ((buffer (get-buffer sclang-workspace-buffer))) - (unless buffer - (setq buffer (get-buffer-create sclang-workspace-buffer)) - (with-current-buffer buffer - (sclang-mode) - (let ((map (make-sparse-keymap))) - (set-keymap-parent map sclang-mode-map) - (sclang-fill-workspace-mode-map map) - (use-local-map map)) - (let ((line (concat "// " (make-string 69 ?=) "\n"))) - (insert line) - (insert "// SuperCollider Workspace\n") - (insert line) -;; (insert "// using HTML Help: C-c C-h as usual, then switch to w3m buffer\n") -;; (insert "// and do M-x sclang-minor-mode in order te enable sclang code execution\n") -;; (insert line) - (insert "\n")) - (set-buffer-modified-p nil) - ;; cwd to sclang-runtime-directory - (if (and sclang-runtime-directory - (file-directory-p sclang-runtime-directory)) - (setq default-directory sclang-runtime-directory)))) - (switch-to-buffer buffer))) - -(add-hook 'sclang-library-startup-hook - (lambda () (and sclang-show-workspace-on-startup - (sclang-switch-to-workspace)))) - -;; ===================================================================== -;; language control -;; ===================================================================== - -(defun sclang-main-run () - (interactive) - (sclang-eval-string "thisProcess.run")) - -(defun sclang-main-stop () - (interactive) - (sclang-eval-string "thisProcess.stop")) - -;; ===================================================================== -;; default command handlers -;; ===================================================================== - -(sclang-set-command-handler '_init (lambda (arg) (sclang-on-library-startup))) - -(sclang-set-command-handler - '_eval - (lambda (expr) - (when (stringp expr) - (eval (read expr))))) - -;; ===================================================================== -;; module setup -;; ===================================================================== - -;; shutdown process cleanly -(add-hook 'kill-emacs-hook (lambda () (sclang-stop))) - -;; add command line switches -(add-to-list 'command-switch-alist - (cons "-sclang" - (lambda (switch) - (sclang-start)))) - -(add-to-list 'command-switch-alist - (cons "-sclang-debug" - (lambda (switch) - (sclang-toggle-debug-command-handler 1)))) - -(add-to-list 'command-switch-alist - (cons "-scmail" - (lambda (switch) - (sclang-start) - (when command-line-args-left - (let ((file (pop command-line-args-left))) - (with-current-buffer (get-buffer-create sclang-workspace-buffer) - (and (file-exists-p file) (insert-file-contents file)) - (set-buffer-modified-p nil) - (sclang-mode) - (switch-to-buffer (current-buffer)))))))) - -(provide 'sclang-interp) - -;; EOF diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-keys.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-keys.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-keys.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-keys.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -;; copyright 2003 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -;; (defvar sclang-key-table (make-char-table 'foo)) - -;; (defun sclang-define-key (char beg end) -;; (interactive) -;; (sclang-eval-string (sclang-format "Emacs.defineKey(%o, %o)" char code)) -;; (define-key (char-to-string char) sclang-key-mode-map 'sclang-execute-key)) - -;; (defun sclang-execute-key (char) -;; (sclang-eval-string (sclang-format "Emacs.executeKey(%o)" char))) - -(eval-and-compile (require 'sclang-util) - (require 'sclang-interp)) - -(defun sclang-read-keys () - (interactive) - (let (char) - (clear-this-command-keys) - (while t - (setq char (read-event)) - (clear-this-command-keys) - (when (characterp char) - (message "%s (%d)" (char-to-string char) char) - (sclang-eval-string (format "Emacs.keys.at(%d).value(%d)" char char)))))) - -;; EOF - diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-language.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-language.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-language.el 2015-05-13 15:49:15.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-language.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,802 +0,0 @@ -;; copyright 2003-2005 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(eval-when-compile - (require 'cl)) - -(require 'sclang-browser) -(require 'sclang-interp) -(require 'sclang-util) - -;; ===================================================================== -;; regexp utilities -;; ===================================================================== - -(defun sclang-regexp-group (regexp &optional addressable) - "Enclose REGEXP in grouping parentheses. - -If ADDRESSABLE is non-nil the group match data can be addressed -separately after matching." - (concat "\\(" (unless addressable "?:") regexp "\\)")) - -(defun sclang-regexp-concat (&rest regexps) - "Concatenate REGEXPS by grouping. - -The expressions are joined as alternatives with the \\| operator." - (mapconcat 'sclang-regexp-group regexps "\\|")) - -;; ===================================================================== -;; some useful regular expressions -;; ===================================================================== - -(defconst sclang-symbol-regexp - "\\(?:\\sw\\|\\s_\\)*" - "Regular expression matching symbols.") - -(defconst sclang-identifier-regexp - (concat "[a-zA-Z]" sclang-symbol-regexp) - "Regular expression matching valid identifiers.") - -(defconst sclang-method-name-special-chars - "-!%&*+/<=>?@|" - "Regular expression matching special method name characters.") - -(defconst sclang-method-name-plain-regexp - (concat sclang-identifier-regexp "_?") - "Regular expression matching regular method names.") - -(defconst sclang-method-name-special-regexp - (concat - "[" (regexp-quote sclang-method-name-special-chars) "]+") - "Regular expression matching method names composed of special characters.") - -(defconst sclang-method-name-regexp - (sclang-regexp-concat - sclang-method-name-special-regexp - sclang-method-name-plain-regexp) - "Regular expression matching method names.") - -(defconst sclang-class-name-regexp - "\\(?:Meta_\\)?[A-Z]\\(?:\\sw\\|\\s_\\)*" - "Regular expression matching class names.") - -(defconst sclang-primitive-name-regexp - (concat "_[A-Z]" sclang-symbol-regexp) - "Regular expression matching primitive names.") - -(defconst sclang-symbol-name-regexp - (sclang-regexp-concat - sclang-method-name-regexp - sclang-class-name-regexp) - "Regular expression matching class and method names.") - -(defconst sclang-class-definition-regexp - (concat "^\\s *\\(" - sclang-class-name-regexp - "\\)\\(?:\\s *:\\s *\\(" - sclang-class-name-regexp - "\\)\\)?[[:space:]]*{") - "Regular expression matching class definitions.") - -(defconst sclang-method-definition-regexp - (concat "^\\s *\\*?\\(" sclang-method-name-regexp "\\)\\s *{") - "Regular expression matching method definitions.") - -(defconst sclang-block-regexp - "^\\((\\)\\s *\\(?:/[/*]?.*\\)?" - "Regular expression matching the beginning of a code block. - -A block is enclosed by parentheses where the opening parenthesis must -be at the beginning of a line to avoid ambiguities.") - -(defconst sclang-beginning-of-defun-regexp - (sclang-regexp-concat - sclang-class-definition-regexp - sclang-block-regexp) - "Regular expression matching the beginning of defuns. - -The match is either the start of a class definition -\(`sclang-class-definition-regexp') or the beginning of a code block -enclosed by parenthesis (`sclang-block-regexp').") - -(defconst sclang-method-definition-spec-regexp - (concat (sclang-regexp-group sclang-class-name-regexp t) - "-" - (sclang-regexp-group sclang-method-name-regexp t)) - "Regular expression matching definition specifications. - -A specification is of the form -.") - -;; ===================================================================== -;; regexp building -;; ===================================================================== - -(defun sclang-make-class-definition-regexp (name) - "Return a regular expression matching the class definition NAME." - (concat "\\(" (regexp-quote name) "\\)" - "\\(?:\\s *:\\s *\\(" sclang-class-name-regexp "\\)\\)?" - "[[:space:]]*{")) - -(defun sclang-make-class-extension-regexp (name) - "Return a regular expression matching the class extension NAME." - (concat "\\+\\s *\\(" (regexp-quote name) "\\)" - "\\s *{")) - -(defun sclang-make-method-definition-regexp (name) - "Return a regular expression matching the method definition NAME." - (concat "\\(" (regexp-quote name) "\\)\\s *{")) - -;; ===================================================================== -;; string matching -;; ===================================================================== - -(defun sclang-string-match (regexp string) - "Match REGEXP with STRING while preserving case." - (let ((case-fold-search nil)) - (string-match regexp string))) - -(defun sclang-symbol-match (symbol-regexp string) - (sclang-string-match (concat "^" symbol-regexp "$") string)) - -;; ===================================================================== -;; symbol name predicates -;; ===================================================================== - -(defun sclang-class-name-p (string) - (sclang-symbol-match sclang-class-name-regexp string)) - -(defun sclang-meta-class-name-p (string) - (and (sclang-class-name-p string) - (sclang-string-match "^Meta_" string))) - -(defun sclang-method-name-p (string) - (sclang-symbol-match sclang-method-name-regexp string)) - -(defun sclang-symbol-name-p (string) - (sclang-symbol-match sclang-symbol-name-regexp string)) - -(defun sclang-method-name-setter-p (method-name) - (string-match "_$" method-name)) - -(defun sclang-method-name-getter-p (method-name) - (not (sclang-method-name-setter-p method-name))) - -;; ===================================================================== -;; symbol name manipulation -;; ===================================================================== - -(defun sclang-method-name-setter (method-name) - (if (sclang-method-name-setter-p method-name) - method-name - (concat method-name "_"))) - -(defun sclang-method-name-getter (method-name) - (if (sclang-method-name-setter-p method-name) - (substring method-name 0 (1- (length method-name))) - method-name)) - -;; ===================================================================== -;; symbol table access -;; ===================================================================== - -(defcustom sclang-use-symbol-table t - "*Retrieve symbol table upon library initialization. - -Symbol table retrieval is performed each time the library is -recompiled. This takes some time and the symbol table has to be held -in memory, so it might be necessary to disable this option on -low-resource systems." - :group 'sclang-interface - :version "21.3" - :type 'boolean) - -(defvar sclang-symbol-table nil - "List of all defined symbols.") - -(defvar sclang-symbol-history nil - "List of recent symbols read from the minibuffer.") - -(defvar sclang-symbol-table-file nil) - -(sclang-set-command-handler - 'symbolTable - (lambda (arg) - (when (and sclang-use-symbol-table arg) - (setq sclang-symbol-table (sort arg 'string<)) - (sclang-update-font-lock)))) - -(add-hook 'sclang-library-startup-hook - (lambda () - (when sclang-use-symbol-table - (let ((file (make-temp-file "sclang-symbol-table."))) - (when (and file (file-exists-p file)) - (setq sclang-symbol-table-file file) - (sclang-perform-command 'symbolTable file)))))) - -(add-hook 'sclang-library-shutdown-hook - (lambda () - (setq sclang-symbol-table nil) - (sclang-update-font-lock))) - -(defun sclang-get-symbol-completion-table () - (mapcar (lambda (s) (cons s nil)) sclang-symbol-table)) - -(defun sclang-make-symbol-completion-predicate (predicate) - (and predicate (lambda (assoc) (funcall predicate (car assoc))))) - -(defun sclang-get-symbol (string) - (if (and sclang-use-symbol-table sclang-symbol-table) - (car (member string sclang-symbol-table)) - string)) - -(defun sclang-read-symbol (prompt &optional default predicate require-match inherit-input-method) - (if sclang-use-symbol-table - (flet ((make-minibuffer-local-map - (parent-keymap) - (let ((map (make-sparse-keymap))) - (set-keymap-parent map parent-keymap) - ;; override keys bound to valid symbols - (define-key map [??] 'self-insert-command) - map))) - (let ((symbol (sclang-get-symbol default)) - (minibuffer-local-completion-map (make-minibuffer-local-map - minibuffer-local-completion-map)) - (minibuffer-local-must-match-map (make-minibuffer-local-map - minibuffer-local-completion-map))) - (completing-read (sclang-make-prompt-string prompt symbol) - (sclang-get-symbol-completion-table) - (sclang-make-symbol-completion-predicate predicate) - require-match nil - 'sclang-symbol-history symbol - inherit-input-method))) - (read-string (sclang-make-prompt-string prompt default) nil - 'sclang-symbol-history default inherit-input-method))) - -;; ===================================================================== -;; buffer movement -;; ===================================================================== - -(defun sclang-point-in-comment-p () - "Return non-nil if point is inside a comment. - -Use font-lock information if font-lock-mode is enabled." - (if (and (boundp 'font-lock-mode) (eval 'font-lock-mode)) - ;; use available information in font-lock-mode - (eq (get-text-property (point) 'face) 'font-lock-comment-face) - ;; else parse from the beginning - (save-excursion - (let ((beg (point))) - (beginning-of-defun) - (not (null (nth 4 (parse-partial-sexp (point) beg)))))))) - -(defun sclang-beginning-of-defun (&optional arg) - (interactive "p") - (let ((case-fold-search nil) - (arg (or arg (prefix-numeric-value current-prefix-arg))) - (orig (point)) - (success t)) - (while (and success (> arg 0)) - (setq success (re-search-backward sclang-beginning-of-defun-regexp - nil 'move)) - (when (and success (not (sclang-point-in-comment-p))) - (goto-char (match-beginning 0)) - (setq arg (1- arg)))) - (while (and success (< arg 0)) - (setq success (re-search-forward sclang-beginning-of-defun-regexp nil t)) - (when (and success (not (sclang-point-in-comment-p))) - (goto-char (match-end 0)) - (setq arg (1+ arg)))) - (when success - (beginning-of-line) - (cond ((looking-at sclang-block-regexp) (goto-char (1- (match-end 1)))) - ((looking-at sclang-class-definition-regexp) (goto-char (1- (match-end 0))))) - t))) - -(defun sclang-point-in-defun-p () - "Return non-nil if point is inside a defun. -Return value is nil or (beg end) of defun." - (save-excursion - (let ((orig (point)) - beg end) - (and (progn (end-of-line) (beginning-of-defun-raw 1) t) - (setq beg (point)) - (condition-case nil (forward-list 1) (error nil)) - (setq end (point)) - (list beg end))))) - -(defun sclang-end-of-defun (&optional arg) - (interactive "p") - (let ((case-fold-search nil) - (arg (or arg (prefix-numeric-value current-prefix-arg))) - (success t) - n cur) - (while (and success (> arg 0)) - (setq n (if (sclang-point-in-defun-p) 1 -1)) - (setq cur (point)) - (if (and (sclang-beginning-of-defun n) - (condition-case nil (forward-list 1) (error nil))) - (progn - (setq arg (1- arg))) - (goto-char cur) - (setq success nil))) - (while (and success (< arg 0)) - (setq n (if (sclang-point-in-defun-p) 2 1)) - (setq cur (point)) - (if (and (sclang-beginning-of-defun n) - (condition-case nil (forward-list 1) (error nil))) - (progn - (backward-char 1) - (setq arg (1+ arg))) - (goto-char cur) - (setq success nil))) - (when success - (forward-line 1) t))) - -;; ===================================================================== -;; buffer object access -;; ===================================================================== - -(defun sclang-symbol-at-point (&optional symbol-name-regexp) - "Return the symbol at point, or nil if not a valid symbol. - -The argument SYMBOL-NAME-REGEXP can be used to specify the type of -symbol matched, candidates are `sclang-symbol-name-regexp' and -`sclang-primitive-name-regexp', the default is -`sclang-symbol-name-regexp'." - (save-excursion - (with-syntax-table sclang-mode-syntax-table - (let ((case-fold-search nil) - beg end) - (cond ((looking-at sclang-method-name-special-regexp) - (skip-chars-backward sclang-method-name-special-chars) - (setq beg (point)) - (skip-chars-forward sclang-method-name-special-chars) - (setq end (point))) - (t - (skip-syntax-backward "w_") - (setq beg (point)) - (skip-syntax-forward "w_") - (setq end (point)))) - (goto-char beg) - (if (looking-at (or symbol-name-regexp sclang-symbol-name-regexp)) - (buffer-substring-no-properties beg end)))))) - -(defun sclang-line-at-point () - "Return the line at point." - (buffer-substring-no-properties (line-beginning-position) (line-end-position))) - -(defun sclang-defun-at-point () - "Return the defun at point. - -A defun may either be a class definition or a code block, see -`sclang-beginning-of-defun-regexp'." - (save-excursion - (with-syntax-table sclang-mode-syntax-table - (multiple-value-bind (beg end) (sclang-point-in-defun-p) - (and beg end (buffer-substring-no-properties beg end)))))) - -;; ===================================================================== -;; symbol completion -;; ===================================================================== - -(defun sclang-complete-symbol (&optional predicate) - "Perform completion on symbol preceding point. -Compare that symbol against the known symbols. - -When called from a program, optional arg PREDICATE is a predicate -determining which symbols are considered. -If PREDICATE is nil, the context determines which symbols are -considered. If the symbol starts with an upper case letter, -class name completion is performed, otherwise only selector names -are considered." - (interactive) - (let* ((buffer (current-buffer)) - (end (point)) - (beg (save-excursion - (backward-sexp 1) - (skip-syntax-forward "'") - (point))) - (pattern (buffer-substring-no-properties beg end)) - (case-fold-search nil) - (table (sclang-get-symbol-completion-table)) - (predicate (or predicate - (if (sclang-class-name-p pattern) - 'sclang-class-name-p - 'sclang-method-name-p))) - (completion (try-completion pattern table (lambda (assoc) (funcall predicate (car assoc)))))) - (cond ((eq completion t)) - ((null completion) - (sclang-message "Can't find completion for '%s'" pattern) - (ding)) - ((not (string= pattern completion)) - (delete-region beg end) - (insert completion)) - (t - (sclang-message "Making completion list...") - (let* ((list (all-completions pattern table (lambda (assoc) (funcall predicate (car assoc))))) - (win (selected-window)) - (buffer-name (sclang-make-buffer-name "Completions")) - (same-window-buffer-names (list buffer-name))) - (setq list (sort list 'string<)) - (with-sclang-browser - buffer-name - (add-hook 'sclang-browser-show-hook (lambda () (sclang-browser-next-link))) - (setq sclang-browser-link-function - (lambda (arg) - (sclang-browser-quit) - (with-current-buffer (car arg) - (delete-region (car (cdr arg)) (point)) - (insert (cdr (cdr arg)))))) - ;; (setq view-exit-action 'kill-buffer) - (insert (format "Completions for '%s':\n\n" pattern)) - (dolist (x list) - (insert (sclang-browser-make-link x (cons buffer (cons beg x)))) - (insert " \n")))) - (sclang-message "Making completion list...%s" "done"))))) - -;; ===================================================================== -;; introspection -;; ===================================================================== - -(defcustom sclang-definition-marker-ring-length 32 - "*Length of marker ring `sclang-definition-marker-ring'." - :group 'sclang-interface - :version "21.3" - :type 'integer) - -(defvar sclang-definition-marker-ring - (make-ring sclang-definition-marker-ring-length) - "Ring of markers which are locations from which \\[sclang-find-definitions] was invoked.") - -;; really do that? -(add-hook 'sclang-library-startup-hook - (lambda () - (setq sclang-definition-marker-ring - (make-ring sclang-definition-marker-ring-length)))) - -(defun sclang-open-definition (name file pos &optional pos-func) - (let ((buffer (find-file file))) - (when (bufferp buffer) - (with-current-buffer buffer - (goto-char (or pos (point-min))) - (when (and nil (functionp pos-func)) - (let ((pos (funcall pos-func name))) - (and pos (goto-char pos)))))) - buffer)) - -(defun sclang-pop-definition-mark () - "Pop back to where \\[sclang-find-definition] or \\[sclang-find-reference] was last invoked." - (interactive) - (unless (ring-empty-p sclang-definition-marker-ring) - (let ((marker (ring-remove sclang-definition-marker-ring 0))) - (switch-to-buffer (or (marker-buffer marker) - (error "The marked buffer has been deleted"))) - (goto-char (marker-position marker)) - (set-marker marker nil nil)))) - -(defun sclang-browse-definitions (name definitions buffer-name header &optional pos-func) - (if (cdr definitions) - (let ((same-window-buffer-names (list buffer-name))) - (with-sclang-browser - buffer-name - ;; (setq view-exit-action 'kill-buffer) - (setq sclang-browser-link-function - (lambda (data) - (sclang-browser-quit) - (apply 'sclang-open-definition data))) - (add-hook 'sclang-browser-show-hook (lambda () (sclang-browser-next-link))) - (insert header) - (insert "\n") - (let ((max-width 0) - format-string) - (dolist (def definitions) - (setq max-width (max (length (file-name-nondirectory (nth 1 def))) max-width))) - (setq format-string (format "%%-%ds %%s" max-width)) - (dolist (def definitions) - (let ((string (format format-string - (propertize (file-name-nondirectory (nth 1 def)) 'face 'bold) - (nth 0 def))) - (data (list name (nth 1 def) (nth 2 def) pos-func))) - (insert (sclang-browser-make-link string data)) - (insert "\n")))))) - ;; single definition: jump directly - (let ((def (car definitions))) - (sclang-open-definition name (nth 1 def) (nth 2 def) pos-func)))) - -(defun sclang-find-definitions (name) - "Find all definitions of symbol NAME." - (interactive - (list - (if current-prefix-arg - (read-string "Find definition: ") - (sclang-read-symbol "Find definitions of: " - (sclang-symbol-at-point) nil t)))) - (if (sclang-symbol-match sclang-method-definition-spec-regexp name) - (sclang-perform-command 'openDefinition name) - (if (sclang-get-symbol name) - (progn - (ring-insert sclang-definition-marker-ring (point-marker)) - (if (sclang-class-name-p name) - (sclang-perform-command 'classDefinitions name) - (sclang-perform-command 'methodDefinitions name))) - (sclang-message "'%s' is undefined" name)))) - -(sclang-set-command-handler - 'openDefinition - (lambda (assoc) - (let ((name (car assoc)) - (data (cdr assoc))) - (if data - (sclang-open-definition nil (car data) (cadr data)) - (sclang-message "'%s' is undefined" name))))) - -(sclang-set-command-handler - 'classDefinitions - (lambda (assoc) - (let ((name (car assoc)) - (data (cdr assoc))) - (if data - (sclang-browse-definitions - name data - "*Definitions*" (format "Definitions of '%s'\n" name) - (lambda (name) - (let ((case-fold-search nil)) - ;; point is either - ;; - at a class definition - ;; - inside a class extension - ;; so jump to the class name - (when (or (looking-at (sclang-make-class-definition-regexp name)) - (re-search-backward (sclang-make-class-extension-regexp name) nil t)) - (match-beginning 1))))) - (sclang-message "No definitions of '%s'" name))))) - -(sclang-set-command-handler - 'methodDefinitions - (lambda (assoc) - (let ((name (car assoc)) - (data (cdr assoc))) - (if data - (sclang-browse-definitions - name data - "*Definitions*" (format "Definitions of '%s'\n" name) - (lambda (name) - (let ((case-fold-search nil)) - (when (re-search-forward (sclang-make-method-definition-regexp name)) - (match-beginning 1))))) - (sclang-message "No definitions of '%s'" name))))) - -(defun sclang-find-references (name) - "Find all references to symbol NAME." - (interactive - (list - (sclang-read-symbol "Find references to: " - (sclang-symbol-at-point) nil t))) - (if (sclang-get-symbol name) - (progn - (ring-insert sclang-definition-marker-ring (point-marker)) - (sclang-perform-command 'methodReferences name)) - (sclang-message "'%s' is undefined" name))) - -(sclang-set-command-handler - 'methodReferences - (lambda (assoc) - (let ((name (car assoc)) - (data (cdr assoc))) - (if data - (sclang-browse-definitions - name data - "*References*" (format "References to '%s'\n" name) - (lambda (name) - (let ((case-fold-search nil)) - (when (re-search-forward (regexp-quote name)) - (match-beginning 0))))) - (sclang-message "No references to '%s'" name))))) - -(defun sclang-show-method-args () - "whooha. in full effect." - (interactive) - (let ((regexp (concat - sclang-class-name-regexp - "[ \t\n]*\\(?:\\.[ \t\n]*\\(" - sclang-method-name-regexp - "\\)\\)?[ \t\n]*(")) - (case-fold-search nil) - (beg (point))) - (save-excursion - (while (and (re-search-backward regexp nil t) - (let ((class (save-match-data (sclang-get-symbol (sclang-symbol-at-point))))) - (goto-char (1- (match-end 0))) - (if (condition-case nil - (save-excursion - (forward-list 1) - (> (point) beg)) - (error t)) - (let ((method (sclang-get-symbol (or (match-string-no-properties 1) "new")))) - (and class method - (sclang-perform-command 'methodArgs class method) - nil)) - (goto-char (match-beginning 0)) t))))))) - -(sclang-set-command-handler - 'methodArgs - (lambda (args) - (and args (message "%s" args)))) - -(defun sclang-dump-full-interface (class) - "Dump interface of CLASS." - (interactive - (list - (let* ((symbol (sclang-symbol-at-point)) - (class (and (sclang-get-symbol symbol) - (sclang-class-name-p symbol) - symbol))) - (sclang-read-symbol "Dump interface of: " - class 'sclang-class-name-p t)))) - (sclang-eval-string (format "%s.dumpFullInterface" class))) - -(defun sclang-dump-interface (class) - "Dump interface of CLASS." - (interactive - (list - (let* ((symbol (sclang-symbol-at-point)) - (class (and (sclang-get-symbol symbol) - (sclang-class-name-p symbol) - symbol))) - (sclang-read-symbol "Dump interface of: " - class 'sclang-class-name-p t)))) - (sclang-eval-string (format "%s.dumpInterface" class))) - -;; ===================================================================== -;; cscope interface -;; ===================================================================== - -(defcustom sclang-source-directory nil - "Toplevel SuperCollider source directory. - -This variable is used by `sclang-find-primitive' to locate the cscope -database." - :group 'sclang-interface - :version "21.4.1" - :type 'directory - :options '(must-match)) - -(defun sclang-find-primitive (name) - "Find primitive name a cscope database. - -The database is searched in `sclang-source-directory', or the -current-directory, iff `sclang-source-directoy' is nil." - (interactive - (let ((default (sclang-symbol-at-point sclang-primitive-name-regexp))) - (list (read-string (sclang-make-prompt-string "Find primitive: " default) - nil nil default)))) - (if (require 'xcscope nil t) - (let ((cscope-initial-directory sclang-source-directory)) - (cscope-find-this-text-string - (if (string-match "^_" name) name (concat "_" name)))) - (sclang-message "cscope not available"))) - -;; ===================================================================== -;; sc-code formatting -;; ===================================================================== - -(defun sclang-list-to-string (list) - (mapconcat 'sclang-object-to-string list ", ")) - -(defconst false 'false) - -(defun sclang-object-to-string (obj) - (cond ((null obj) - "nil") - ((eq false obj) - "false") - ((eq t obj) - "true") - ((symbolp obj) - (format "'%s'" obj)) - ((listp obj) - (format "[ %s ]" (sclang-list-to-string obj))) - (t (format "%S" obj)))) - -(defun sclang-format (string &rest args) - "format chars: - %s - print string - %o - print object - %l - print argument list" - (let ((case-fold-search nil) - (i 0)) - (save-match-data - (while (and (< i (length string)) - (string-match "%[los%]" string i)) - (let* ((start (car (match-data))) - (format (aref string (1+ start))) - (arg (if args - (pop args) - (error "Not enough arguments for format string"))) - (repl (cond ((eq ?o format) - (sclang-object-to-string arg)) - ((eq ?l format) - (if (listp arg) - (sclang-list-to-string arg) - (sclang-object-to-string arg))) - ((eq ?s format) - (format "%s" arg)) - ((eq ?% format) - (push arg args) - "%")))) - (setq string (replace-match repl t t string)) - (setq i (+ start (length repl))))))) - string) - -(defun sclang-format-pseq (items) - "Format ITEMS (a flat list of numbers or symbols) as a possibly nested Pseq. -Looks for all repetitive patterns in ITEMS recursively. Therefore, it is -computationally expensive, especially when ITEMS is a long list. If you don't -want smart pattern guessing, use `sclang-format' directly to format your Pseq." - (flet ((find-reps (items) - (let (r) - (while items - (let ((ret (car items)) - (skip 1) - (rep (length items))) - (catch 'match-found - (while (>= rep 2) - (let ((i (/ (length items) rep))) - (while (> i 0) - (let ((sublst (subseq items 0 i))) - (when (catch 'equal - (let ((a items)) - (loop repeat rep do - (let ((b sublst)) - (while b - (unless (eql (car b) (car a)) - (throw 'equal nil)) - (setq a (cdr a) - b (cdr b))))) - t)) - (setq ret (cons rep (if (> i 5) - (find-reps sublst) - sublst)) - skip (* i rep)) - (throw 'match-found t)) - (decf i)))) - (decf rep))) - (accept-process-output nil 0 100) - (message "Processed...%S" ret) ;; invent better progress info - (setq r (append r (list ret)) - items (nthcdr skip items)))) - r)) - (elem-to-string (elem) - (cond - ((consp elem) - (concat "Pseq([ " - (mapconcat #'elem-to-string (cdr elem) ", ") - (format " ], %d)" (car elem)))) - (t (sclang-object-to-string elem))))) - (let ((compressed (find-reps items))) - (if (and (= (length compressed) 1) (consp (car compressed))) - (elem-to-string (car compressed)) - (concat "Pseq([ " - (mapconcat #'elem-to-string compressed ", ") - " ], 1)"))))) - -;; ===================================================================== -;; module setup -;; ===================================================================== - -(provide 'sclang-language) - -;; EOF diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-menu.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-menu.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-menu.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-menu.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -;; copyright 2003 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -;; (sclang-set-command-handler -;; '_updateMenu -;; (lambda (arg) -;; (message "menu: %s" arg))) - -(provide 'sclang-menu) \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-minor-mode.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-minor-mode.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-minor-mode.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-minor-mode.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -;;; sclang-minor-mode for use in help files -;;; SuperCollider -;;; (c) 2007, Marije Baalman - nescivi -;;; -;;; This program is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2 of the License, or -;;; (at your option) any later version. -;;; -;;; This program is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with this program; if not, write to the Free Software -;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -(eval-when-compile - (require 'sclang-util) - (require 'sclang-mode) - ) - - -(easy-mmode-define-minor-mode sclang-minor-mode - "Toggle sclang-minor-mode. -With no argument, this command toggles the mode. -Non-null prefix argument turns on the mode. -Null prefix argument turns off the mode. - -When sclang-minor-mode is enabled, you can execute -sclang code with the normal command C-c C-c and C-c C-d." - ;; The initial value. - nil - ;; The indicator for the mode line. - " sclang" - ;; The minor mode bindings. - '(("\C-c\C-c" . sclang-eval-region-or-line) - ("\C-c\C-d" . sclang-eval-region) - ("\C-\M-x" . sclang-eval-defun) - ("\C-c\C-h" . sclang-find-help) - ("\C-\M-h" . sclang-goto-help-browser) - ("\C-c\C-s" . sclang-main-stop) - ("\C-c\C-k" . sclang-edit-dev-source) -)) - -(provide 'sclang-minor-mode) - -(easy-mmode-define-minor-mode sclang-help-minor-mode - "Toggle sclang-minor-mode. -With no argument, this command toggles the mode. -Non-null prefix argument turns on the mode. -Null prefix argument turns off the mode. - -When sclang-help-minor-mode is enabled, you can execute -sclang code with the normal command C-c C-c and C-c C-d." - ;; The initial value. - nil - ;; The indicator for the mode line. - " sclang-help" - ;; The minor mode bindings. - '(("\C-c\C-c" . sclang-eval-region-or-line) - ("\C-c\C-d" . sclang-eval-region) - ("\C-\M-x" . sclang-eval-defun) - ("\C-c\C-h" . sclang-find-help) - ("\C-c\C-s" . sclang-main-stop) - ("\C-c\C-v" . sclang-edit-html-help-file) - ("E" . sclang-edit-help-code) - ("\C-c\C-k" . sclang-edit-dev-source) -)) - -(provide 'sclang-help-minor-mode) - -(add-hook 'sclang-help-minor-mode-hook 'sclang-minor-hooks) -(add-hook 'sclang-minor-mode-hook 'sclang-minor-hooks) - -(defun sclang-minor-hooks () - (sclang-init-document) - (sclang-make-document) - ) diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-mode.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-mode.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-mode.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-mode.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,702 +0,0 @@ -;; copyright 2003-2005 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(eval-when-compile - (require 'cl) - (load "cl-seq" nil t) - (require 'font-lock) - (require 'sclang-util)) - -(require 'sclang-interp) -(require 'sclang-language) -(require 'sclang-dev) - -(defun sclang-fill-syntax-table (table) - ;; string - (modify-syntax-entry ?\" "\"" table) - (modify-syntax-entry ?\' "\"" table) ; no string syntax class for single quotes - ;; expression prefix - (modify-syntax-entry ?~ "'" table) - ;; escape - (modify-syntax-entry ?\\ "\\" table) - ;; character quote - (modify-syntax-entry ?$ "/" table) - ;; symbol - (modify-syntax-entry ?_ "_" table) - ;; symbol/punctuation - (modify-syntax-entry ?! "." table) - (modify-syntax-entry ?% "." table) - (modify-syntax-entry ?& "." table) - (modify-syntax-entry ?* ". 23n" table) - (modify-syntax-entry ?+ "." table) - (modify-syntax-entry ?- "." table) - (modify-syntax-entry ?/ ". 124b" table) - (modify-syntax-entry ?< "." table) - (modify-syntax-entry ?= "." table) - (modify-syntax-entry ?> "." table) - (modify-syntax-entry ?? "." table) - (modify-syntax-entry ?@ "." table) - (modify-syntax-entry ?| "." table) - ;; punctuation - (modify-syntax-entry ?: "." table) - (modify-syntax-entry ?\; "." table) - (modify-syntax-entry ?^ "." table) - ;; parenthesis - (modify-syntax-entry ?\( "()" table) - (modify-syntax-entry ?\) ")(" table) - (modify-syntax-entry ?\[ "(]" table) - (modify-syntax-entry ?\] ")[" table) - (modify-syntax-entry ?\{ "(}" table) - (modify-syntax-entry ?\} "){" table) - ;; comment end - (modify-syntax-entry ?\n "> b" table) - ;; Give CR the same syntax as newline, for selective-display - (modify-syntax-entry ?\^m "> b" table) - ;; return table - table) - -(defun sclang-mode-make-menu (title) - (easy-menu-create-menu - title - '( - ["Start Interpreter" sclang-start :included (not (sclang-library-initialized-p))] - ["Restart Interpreter" sclang-start :included (sclang-library-initialized-p)] - ["Recompile Class Library" sclang-recompile :included (sclang-library-initialized-p)] - ["Stop Interpreter" sclang-stop :included (sclang-get-process)] - ["Kill Interpreter" sclang-kill :included (sclang-get-process)] - "-" - ["Show Post Buffer" sclang-show-post-buffer] - ["Clear Post Buffer" sclang-clear-post-buffer] - "-" - ["Switch To Workspace" sclang-switch-to-workspace] - "-" - ["Evaluate Region" sclang-eval-region] - ["Evaluate Line" sclang-eval-region-or-line] - ["Evaluate Defun" sclang-eval-defun] - ["Evaluate Expression ..." sclang-eval-expression] - ["Evaluate Document" sclang-eval-document] - "-" - ["Find Definitions ..." sclang-find-definitions] - ["Find References ..." sclang-find-references] - ["Pop Mark" sclang-pop-definition-mark] - ["Show Method Arguments" sclang-show-method-args] - ["Complete keyword" sclang-complete-symbol] - ["Dump Interface" sclang-dump-interface] - ["Dump Full Interface" sclang-dump-full-interface] - "-" - ["Index Help Topics" sclang-index-help-topics] - ["Find Help ..." sclang-find-help] - ["Switch to Help Browser" sclang-goto-help-browser] - ["Open Help GUI" sclang-open-help-gui] - "-" - ["Run Main" sclang-main-run] - ["Stop Main" sclang-main-stop] - ["Show Server Panels" sclang-show-server-panel] - ))) - -(defun sclang-fill-mode-map (map) - ;; process control - (define-key map "\C-c\C-l" 'sclang-recompile) - (define-key map "\C-c\C-o" 'sclang-start) - ;; post buffer control - (define-key map "\C-c<" 'sclang-clear-post-buffer) - (define-key map "\C-c>" 'sclang-show-post-buffer) - ;; workspace access - (define-key map "\C-c\C-w" 'sclang-switch-to-workspace) - ;; code evaluation - (define-key map "\C-c\C-c" 'sclang-eval-region-or-line) - (define-key map "\C-c\C-d" 'sclang-eval-region) - (define-key map "\C-\M-x" 'sclang-eval-defun) - (define-key map "\C-c\C-e" 'sclang-eval-expression) - (define-key map "\C-c\C-f" 'sclang-eval-document) - ;; language information - (define-key map "\C-c\C-n" 'sclang-complete-symbol) - (define-key map "\M-\t" 'sclang-complete-symbol) - (define-key map "\C-c:" 'sclang-find-definitions) - (define-key map "\C-c;" 'sclang-find-references) - (define-key map "\C-c}" 'sclang-pop-definition-mark) - (define-key map "\C-c\C-m" 'sclang-show-method-args) - (define-key map "\C-c{" 'sclang-dump-full-interface) - (define-key map "\C-c[" 'sclang-dump-interface) - ;; documentation access - (define-key map "\C-c\C-h" 'sclang-find-help) - (define-key map "\C-\M-h" 'sclang-goto-help-browser) - (define-key map "\C-c\C-y" 'sclang-open-help-gui) - (define-key map "\C-ch" 'sclang-find-help-in-gui) - ;; language control - (define-key map "\C-c\C-r" 'sclang-main-run) - (define-key map "\C-c\C-s" 'sclang-main-stop) - (define-key map "\C-c\C-p" 'sclang-show-server-panel) - (define-key map "\C-c\C-k" 'sclang-edit-dev-source) - ;; electric characters - (define-key map "}" 'sclang-electric-brace) - (define-key map ")" 'sclang-electric-brace) - (define-key map "]" 'sclang-electric-brace) - (define-key map "/" 'sclang-electric-slash) - (define-key map "*" 'sclang-electric-star) - ;; menu - (let ((title "SCLang")) - (define-key map [menu-bar sclang] (cons title (sclang-mode-make-menu title)))) - ;; return map - map) - -;; ===================================================================== -;; font-lock support -;; ===================================================================== - -(defconst sclang-font-lock-keyword-list - '( - "arg" - "classvar" - "const" - "super" - "this" - "thisFunction" - "thisFunctionDef" - "thisMethod" - "thisProcess" - "thisThread" - "var" - ) - "*List of keywords to highlight in SCLang mode.") - -(defconst sclang-font-lock-builtin-list - '( - "false" - "inf" - "nil" - "true" - ) - "*List of builtins to highlight in SCLang mode.") - -(defconst sclang-font-lock-method-list - '( - "ar" - "for" - "forBy" - "if" - "ir" - "kr" - "tr" - "loop" - "while" - ) - "*List of methods to highlight in SCLang mode.") - -(defconst sclang-font-lock-error-list - '( - "die" - "error" - "exit" - "halt" - "verboseHalt" - "warn" - ) - "*List of methods signalling errors or warnings.") - -(defvar sclang-font-lock-class-keywords nil) - -(defvar sclang-font-lock-keywords-1 nil - "Subdued level highlighting for SCLang mode.") - -(defvar sclang-font-lock-keywords-2 nil - "Medium level highlighting for SCLang mode.") - -(defvar sclang-font-lock-keywords-3 nil - "Gaudy level highlighting for SCLang mode.") - -(defvar sclang-font-lock-keywords nil - "Default expressions to highlight in SCLang mode.") - -(defconst sclang-font-lock-defaults '((sclang-font-lock-keywords - sclang-font-lock-keywords-1 - sclang-font-lock-keywords-2 - sclang-font-lock-keywords-3 - ) - nil nil - nil - beginning-of-defun - )) - -(defun sclang-font-lock-syntactic-face (state) - (cond ((eq (nth 3 state) ?') - ;; symbol - 'font-lock-constant-face) - ((nth 3 state) - ;; string - 'font-lock-string-face) - ((nth 4 state) - ;; comment - 'font-lock-comment-face))) - -(defun sclang-font-lock-class-keyword-matcher (limit) - (let ((regexp (or sclang-font-lock-class-keywords - (concat "\\<" sclang-class-name-regexp "\\>"))) - (case-fold-search nil)) - (re-search-forward regexp limit t))) - -(defun sclang-set-font-lock-keywords () - (setq - ;; level 1 - sclang-font-lock-keywords-1 - (list - ;; keywords - (cons (regexp-opt sclang-font-lock-keyword-list'words) - 'font-lock-keyword-face) - ;; builtins - (cons (regexp-opt sclang-font-lock-builtin-list 'words) - 'font-lock-builtin-face) - ;; pi is a special case - (cons "\\<\\([0-9]+\\(\\.\\)\\)pi\\>" 'font-lock-builtin-face) - ;; constants - (cons "\\s/\\s\\?." 'font-lock-constant-face) ; characters - (cons (concat "\\\\\\(" sclang-symbol-regexp "\\)") - 'font-lock-constant-face) ; symbols - ) - ;; level 2 - sclang-font-lock-keywords-2 - (append - sclang-font-lock-keywords-1 - (list - ;; variables - (cons (concat "\\s'\\(" sclang-identifier-regexp "\\)") - 'font-lock-variable-name-face) ; environment variables - (cons (concat "\\<\\(" sclang-identifier-regexp "\\)\\>:") ; keyword arguments - 'font-lock-variable-name-face) - ;; method definitions - (cons sclang-method-definition-regexp - (list 1 'font-lock-function-name-face)) - ;; methods - (cons (regexp-opt sclang-font-lock-method-list 'words) - 'font-lock-function-name-face) - ;; errors - (cons (regexp-opt sclang-font-lock-error-list 'words) - 'font-lock-warning-face) - )) - ;; level 3 - sclang-font-lock-keywords-3 - (append - sclang-font-lock-keywords-2 - (list - ;; classes - (cons 'sclang-font-lock-class-keyword-matcher 'font-lock-type-face) -;; (cons (concat "\\<" sclang-class-name-regexp "\\>") 'font-lock-type-face) - )) - ;; default level - sclang-font-lock-keywords sclang-font-lock-keywords-1 - )) - -(defun sclang-update-font-lock () - "Update font-lock information in all sclang-mode buffers." - (setq sclang-font-lock-class-keywords - (and sclang-symbol-table - (let* ((list (remove-if - (lambda (x) (or (not (sclang-class-name-p x)) - (sclang-string-match "^Meta_" x))) - sclang-symbol-table)) - ;; need to set this for large numbers of classes - (max-specpdl-size (* (length list) 2))) - (condition-case nil - (concat "\\<\\(?:Meta_\\)?\\(?:" (regexp-opt list) "\\)\\>") - (error nil))))) - ;; too expensive - ;; (dolist (buffer (buffer-list)) - ;; (with-current-buffer buffer - ;; (and (eq major-mode 'sclang-mode) - ;; (eq t (car font-lock-keywords)) - ;; (setq font-lock-keywords (cdr font-lock-keywords))))) - (if (eq major-mode 'sclang-mode) - (font-lock-fontify-buffer))) - -;; ===================================================================== -;; indentation -;; ===================================================================== - -(defcustom sclang-indent-level 4 - "*Indentation offset for SCLang statements." - :group 'sclang-mode - :type 'integer) - -(defun sclang-indent-line () - "Indent current line as sclang code. -Return the amount the indentation changed by." - (let ((indent (calculate-sclang-indent)) - beg shift-amt - (case-fold-search nil) - (pos (- (point-max) (point)))) - (beginning-of-line) - (setq beg (point)) - (skip-chars-forward " \t") - (setq shift-amt (- indent (current-column))) - (if (zerop shift-amt) - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos))) - (delete-region beg (point)) - (indent-to indent) - ;; if initial point was within line's indentation, position - ;; after the indentation, else stay at same point in text. - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos)))) - shift-amt)) - -(defun calculate-sclang-indent (&optional parse-start) - "Return appropriate indentation for current line as sclang code. -Returns the column to indent to." - (save-excursion - (beginning-of-line) - (let ((indent-point (point)) - (case-fold-search nil) - state) - (if parse-start - (goto-char parse-start) - (beginning-of-defun)) - (while (< (point) indent-point) - (setq state (parse-partial-sexp (point) indent-point 0))) - (let* ((containing-sexp (nth 1 state)) - (inside-string-p (nth 3 state)) - (inside-comment-p (nth 4 state))) - (cond (inside-string-p - ;; inside string: no change - (current-indentation)) - ((integerp inside-comment-p) - ;; inside comment - (let ((base (if containing-sexp - (save-excursion - (goto-char containing-sexp) - (+ (current-indentation) sclang-indent-level)) - 0)) - (offset (* sclang-indent-level - (- inside-comment-p - (if (save-excursion - (back-to-indentation) - (looking-at "\\*/")) - 1 0))))) - (+ base offset))) - ((null containing-sexp) - ;; top-level: no indentation - 0) - (t - (back-to-indentation) - (let ((open-paren (and (looking-at "\\s)") - (matching-paren (char-after)))) - (indent (current-indentation))) - (goto-char containing-sexp) - (if (or (not open-paren) (eq open-paren (char-after))) - (cond ((progn (beginning-of-line) (looking-at sclang-block-regexp)) 0) - (open-paren (current-indentation)) - (t (+ (current-indentation) sclang-indent-level))) - ;; paren mismatch: do nothing - indent)))))))) - -;; ===================================================================== -;; electric character commands -;; ===================================================================== - -(defun sclang-electric-brace (arg) - (interactive "*P") - (self-insert-command (prefix-numeric-value arg)) - (and (save-excursion - (beginning-of-line) - (looking-at "\\s *\\s)")) - (indent-according-to-mode))) - -(defun sclang-electric-slash (arg) - (interactive "*P") - (let* ((char (char-before)) - (indent-p (or (eq char ?/) - (eq char ?*)))) - (self-insert-command (prefix-numeric-value arg)) - (if indent-p (indent-according-to-mode)))) - -(defun sclang-electric-star (arg) - (interactive "*P") - (let ((indent-p (eq (char-before) ?/))) - (self-insert-command (prefix-numeric-value arg)) - (if indent-p (indent-according-to-mode)))) - -;; ===================================================================== -;; document interface -;; ===================================================================== - -(defvar sclang-document-id nil) -(defvar sclang-document-state nil) -(defvar sclang-document-envir nil) - -(defvar sclang-document-counter 0) -(defvar sclang-document-list nil) -(defvar sclang-current-document nil - "Currently active document.") - -(defvar sclang-document-idle-timer nil) - -(defconst sclang-document-property-map - '((sclang-document-name . (prSetTitle (buffer-name))) - (sclang-document-path . (prSetFileName (buffer-file-name))) - (sclang-document-listener-p . (prSetIsListener (eq (current-buffer) (sclang-get-post-buffer)))) - (sclang-document-editable-p . (prSetEditable (not buffer-read-only))) - (sclang-document-edited-p . (prSetEdited (buffer-modified-p))))) - -(defmacro sclang-next-document-id () - `(incf sclang-document-counter)) - -(defun sclang-document-list () - sclang-document-list) - -(defun sclang-document-id (buffer) - (cdr (assq 'sclang-document-id (buffer-local-variables buffer)))) - -(defun sclang-document-p (buffer) - (integerp (sclang-document-id buffer))) - -(defmacro with-sclang-document (buffer &rest body) - `(when (sclang-document-p buffer) - (with-current-buffer buffer - ,@body))) - -(defun sclang-get-document (id) - (find-if (lambda (doc) (eq id (sclang-document-id doc))) - (sclang-document-list))) - -(defun sclang-init-document () - (set (make-local-variable 'sclang-document-id) (sclang-next-document-id)) - (set (make-local-variable 'sclang-document-envir) nil) - (dolist (assoc sclang-document-property-map) - (set (make-local-variable (car assoc)) nil)) - (pushnew (current-buffer) sclang-document-list)) - -(defun sclang-document-update-property-1 (assoc &optional force) - (when (consp assoc) - (let* ((key (car assoc)) - (prop (cdr assoc)) - (prev-value (eval key)) - (cur-value (eval (cadr prop)))) - (when (or force (not (equal prev-value cur-value))) - (set key cur-value) - (sclang-perform-command-no-result - 'documentSetProperty sclang-document-id - (car prop) cur-value))))) - -(defun sclang-document-update-property (key &optional force) - (sclang-document-update-property-1 (assq key sclang-document-property-map) force)) - -(defun sclang-document-update-properties (&optional force) - (dolist (assoc sclang-document-property-map) - (sclang-document-update-property-1 assoc force))) - -(defun sclang-make-document () - (sclang-perform-command-no-result 'documentNew sclang-document-id) - (sclang-document-update-properties t)) - -(defun sclang-close-document (buffer) - (with-sclang-document - buffer - (setq sclang-document-list (delq buffer sclang-document-list)) - (sclang-perform-command-no-result - 'documentClosed sclang-document-id))) - -(defun sclang-set-current-document (buffer &optional force) - (when (or force (not (eq buffer sclang-current-document))) - (setq sclang-current-document buffer) - (sclang-perform-command-no-result 'documentSetCurrent (sclang-document-id buffer)) - t)) - -(defun sclang-document-library-startup-hook-function () - (dolist (buffer (sclang-document-list)) - (with-current-buffer buffer - (sclang-make-document))) - (sclang-set-current-document (current-buffer) t)) - -(defun sclang-document-kill-buffer-hook-function () - (sclang-close-document (current-buffer))) - -(defun sclang-document-post-command-hook-function () - (when (and (sclang-library-initialized-p) - (sclang-document-p (current-buffer))) - (sclang-document-update-properties)) - (sclang-set-current-document (current-buffer))) - -(defun sclang-document-change-major-mode-hook-function () - (sclang-close-document (current-buffer))) - -;; ===================================================================== -;; command handlers -;; ===================================================================== - -(sclang-set-command-handler - '_documentOpen - (lambda (arg) - (multiple-value-bind (file-name region-start region-length) arg - (let ((buffer (get-file-buffer file-name))) - (unless buffer - (setf buffer (find-file-noselect file-name))) - (when buffer - (unless (sclang-document-p buffer) - (with-current-buffer buffer (sclang-mode))) - (goto-char (max (point-min) (min (point-max) region-start))) - ;; TODO: how to activate region in transient-mark-mode? - (sclang-document-id buffer)))))) - -(sclang-set-command-handler - '_documentNew - (lambda (arg) - (multiple-value-bind (name str make-listener) arg - (let ((buffer (generate-new-buffer name))) - (with-current-buffer buffer - (insert str) - (set-buffer-modified-p nil) - (sclang-mode)) - (sclang-document-id buffer))))) - -(sclang-set-command-handler - '_documentClose - (lambda (arg) - (let ((doc (and (integerp arg) (sclang-get-document arg)))) - (and doc (kill-buffer doc))) - nil)) - -(sclang-set-command-handler - '_documentRename - (lambda (arg) - (multiple-value-bind (id name) arg - (when (stringp name) - (let ((doc (and (integerp id) (sclang-get-document id)))) - (when doc - (with-current-buffer doc - (rename-buffer name t) - (sclang-document-update-property 'sclang-document-name)))))) - nil)) - -(sclang-set-command-handler - '_documentSetEditable - (lambda (arg) - (multiple-value-bind (id flag) arg - (let ((doc (and (integerp id) (sclang-get-document id)))) - (when doc - (with-current-buffer doc - (setq buffer-read-only (not flag)) - (sclang-document-update-property 'sclang-editable-p))))) - nil)) - -(sclang-set-command-handler - '_documentSwitchTo - (lambda (arg) - (let ((doc (and (integerp arg) (sclang-get-document arg)))) - (and doc (switch-to-buffer doc))) - nil)) - -(sclang-set-command-handler - '_documentPutString -(lambda (arg) - (multiple-value-bind (id str) arg - (let ((doc (and (integerp id) (sclang-get-document id)))) - (when doc - (with-current-buffer doc - (insert str) - ) - nil))))) - -(sclang-set-command-handler - '_documentPopTo - (lambda (arg) - (let ((doc (and (integerp arg) (sclang-get-document arg)))) - (and doc (display-buffer doc))) - nil)) - -;; ===================================================================== -;; sclang-mode -;; ===================================================================== - -(defun sclang-mode-set-local-variables () - (set (make-local-variable 'require-final-newline) nil) - ;; indentation - (set (make-local-variable 'indent-line-function) - 'sclang-indent-line) - (set (make-local-variable 'tab-width) 4) - (set (make-local-variable 'indent-tabs-mode) t) - ;; comment formatting - (set (make-local-variable 'comment-start) "// ") - (set (make-local-variable 'comment-end) "") - (set (make-local-variable 'comment-column) 40) - (set (make-local-variable 'comment-start-skip) "/\\*+ *\\|//+ *") - ;; "\\(^\\|\\s-\\);?// *") - (set (make-local-variable 'comment-multi-line) t) - ;; parsing and movement - (set (make-local-variable 'parse-sexp-ignore-comments) t) - (set (make-local-variable 'beginning-of-defun-function) - 'sclang-beginning-of-defun) - (set (make-local-variable 'end-of-defun-function) - 'sclang-end-of-defun) - ;; paragraph formatting - ;; (set (make-local-variable 'paragraph-start) (concat "$\\|" page-delimiter)) - ;; mostly copied from c++-mode, seems to work - (set (make-local-variable 'paragraph-start) - "[ \t]*\\(//+\\|\\**\\)[ \t]*$\\|^ ") - (set (make-local-variable 'paragraph-separate) paragraph-start) - (set (make-local-variable 'paragraph-ignore-fill-prefix) t) - (set (make-local-variable 'adaptive-fill-mode) t) - (set (make-local-variable 'adaptive-fill-regexp) - "[ \t]*\\(//+\\|\\**\\)[ \t]*\\([ \t]*\\([-|#;>*]+[ \t]*\\|(?[0-9]+[.)][ \t]*\\)*\\)") - ;; font lock - (set (make-local-variable 'font-lock-syntactic-face-function) - 'sclang-font-lock-syntactic-face) - (set (make-local-variable 'font-lock-defaults) - sclang-font-lock-defaults) - ;; --- - nil) - -(defvar sclang-mode-map (sclang-fill-mode-map (make-sparse-keymap)) - "Keymap used in SuperCollider mode.") - -(defvar sclang-mode-syntax-table (sclang-fill-syntax-table (make-syntax-table)) - "Syntax table used in SuperCollider mode.") - -(defcustom sclang-mode-hook nil - "*Hook run when entering SCLang mode." - :group 'sclang-mode - :type 'hook) - -(defun sclang-mode () - "Major mode for editing SuperCollider language code. -\\{sclang-mode-map} -" - (interactive) - (kill-all-local-variables) - (set-syntax-table sclang-mode-syntax-table) - (use-local-map sclang-mode-map) - (setq mode-name "SCLang") - (setq major-mode 'sclang-mode) - (sclang-mode-set-local-variables) - (sclang-set-font-lock-keywords) - (sclang-init-document) - (sclang-make-document) - (run-hooks 'sclang-mode-hook)) - -;; ===================================================================== -;; module initialization -;; ===================================================================== - -(add-to-list 'auto-mode-alist '("\\.\\(sc\\|scd\\)$" . sclang-mode)) -(add-to-list 'interpreter-mode-alist '("sclang" . sclang-mode)) - -(add-hook 'sclang-library-startup-hook 'sclang-document-library-startup-hook-function) -(add-hook 'kill-buffer-hook 'sclang-document-kill-buffer-hook-function) -(add-hook 'post-command-hook 'sclang-document-post-command-hook-function) -(add-hook 'change-major-mode-hook 'sclang-document-change-major-mode-hook-function) - -(provide 'sclang-mode) - -;; EOF diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-server.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-server.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-server.el 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-server.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,281 +0,0 @@ -;; copyright 2003-2005 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(eval-when-compile - (require 'cl) - (require 'sclang-util) - (require 'sclang-interp) - (require 'sclang-language) - (require 'sclang-mode)) - -(defcustom sclang-server-panel "Server.default.makeWindow" - "*Expression to execute when `sclang-show-server-panel' is invoked." - :group 'sclang-interface - :type '(choice (const "Server.default.makeWindow") - (const "\\SCUM.asClass.do { \\SCUM.asClass.desktop.showServerPanel }") - string)) - -(defvar sclang-server-alist nil - "Alist of currently defined synthesis servers.") - -(defvar sclang-default-server nil - "Default synthesis server.") - -(defvar sclang-current-server nil - "Currently selected synthesis server.") - -(defvar sclang-current-server-initialized nil - "Non nil when the current server has been initialized from the default server.") - -(defconst sclang-server-running-face - (let ((face (make-face 'sclang-server-running-face))) - (set-face-foreground face "red") - face) - "Face for highlighting a server's running state in the mode-line.") - -(defun sclang-get-server (&optional name) - (unless name (setq name sclang-current-server)) - (cdr (assq name sclang-server-alist))) - -(defun sclang-set-server (&optional name) - (unless name (setq name sclang-current-server)) - (setq sclang-current-server - (car (or (assq name sclang-server-alist) - (car sclang-server-alist))))) - -(sclang-set-command-handler - '_updateServer - (lambda (arg) - (setq sclang-server-alist - (sort (cdr arg) (lambda (a b) (string< (car a) (car b))))) - (setq sclang-default-server (car arg)) - (unless sclang-current-server-initialized - ;; only set the current server automatically once after startup - (setq sclang-current-server-initialized t) - (sclang-set-server sclang-default-server)) - (sclang-update-server-info))) - -(defun sclang-next-server () - "Select next server for display." - (interactive) - (sclang-set-server) - (let ((list (or (cdr (member-if (lambda (assoc) - (eq (car assoc) sclang-current-server)) - sclang-server-alist)) - sclang-server-alist))) - (setq sclang-current-server (car (car list)))) - (sclang-update-server-info)) - -(defun sclang-mouse-next-server (event) - "Select next server for display." - (interactive "e") - (sclang-next-server)) - -(defun sclang-server-running-p (&optional name) - (plist-get (sclang-get-server name) 'running)) - -(defun sclang-server-booting-p (&optional name) - (plist-get (sclang-get-server name) 'booting)) - -(defun sclang-create-server-menu (title) - (easy-menu-create-menu - title - '( - ["Boot" sclang-server-boot] - ["Quit" sclang-server-quit] - "-" - ["Free All" sclang-server-free-all :active (sclang-server-running-p)] - ["Make Default" sclang-server-make-default] - ))) - -(defun sclang-server-fill-mouse-map (map prefix) - (define-key map (vector prefix 'mouse-1) 'sclang-mouse-next-server) - (define-key map (vector prefix 'down-mouse-3) (sclang-create-server-menu "Commands")) - map) - -(defvar sclang-server-mouse-map (sclang-server-fill-mouse-map (make-sparse-keymap) 'mode-line) - "Keymap used for controlling servers in the mode line.") - -(defun sclang-server-fill-key-map (map) - "Fill server prefix map." - (define-key map [?b] 'sclang-server-boot) - (define-key map [?d] 'sclang-server-display-default) - (define-key map [?f] 'sclang-server-free-all) - (define-key map [?m] 'sclang-server-make-default) - (define-key map [?n] 'sclang-next-server) - (define-key map [?o] 'sclang-server-dump-osc) - (define-key map [?p] 'sclang-show-server-panel) - (define-key map [?q] 'sclang-server-quit) - (flet ((fill-record-map (map) - (define-key map [?n] 'sclang-server-prepare-for-record) - (define-key map [?p] 'sclang-server-pause-recording) - (define-key map [?r] 'sclang-server-record) - (define-key map [?s] 'sclang-server-stop-recording) - map)) - (define-key map [?r] (fill-record-map (make-sparse-keymap)))) - map) - -(defvar sclang-server-key-map (sclang-server-fill-key-map (make-sparse-keymap)) - "Keymap used for controlling servers.") - -(defun sclang-get-server-info-string () - "Return a mode-line string for the current server." - (let* ((name (if sclang-current-server (symbol-name sclang-current-server) "-------")) - (server (sclang-get-server)) - (running-p (if server (plist-get server 'running))) - (string (propertize - name - 'face (if running-p sclang-server-running-face) - 'help-echo "mouse-1: next server, mouse-3: command menu" - 'keymap sclang-server-mouse-map)) - ;; (make-mode-line-mouse-map 'mouse-1 'sclang-mouse-next-server))) - (address (if (and server (not (eq (plist-get server 'type) 'internal))) - (format " (%s)" (plist-get server 'address)) - "")) - (info (if running-p - (mapcar 'number-to-string - (plist-get (sclang-get-server) 'info)) - '("---" "---" "----" "----" "----" "----")))) - (apply 'format "%s%s %3s|%3s %% u: %4s s: %4s g: %4s d: %4s" string address info))) - -(defvar sclang-server-info-string (sclang-get-server-info-string) - "Info string used in the post buffer mode line.") - -(defun sclang-update-server-info () - (interactive) - (sclang-set-server) - (setq sclang-server-info-string (sclang-get-server-info-string)) - (force-mode-line-update t)) - -;; ===================================================================== -;; language control -;; ===================================================================== - -(defun sclang-perform-server-command (command &rest args) - (sclang-eval-string - (sclang-format "Server.named.at(%o.asSymbol).performList(\\tryPerform, %o.asSymbol.asArray ++ %o)" - sclang-current-server command args) - nil)) - -(defun sclang-server-boot () - "Boot the current server." - (interactive) - (sclang-perform-server-command "boot")) - -(defun sclang-server-reboot () - "Reboot the current server." - (interactive) - (sclang-perform-server-command "reboot")) - -(defun sclang-server-quit () - "Quit the current server." - (interactive) - (sclang-perform-server-command "quit")) - -(defun sclang-server-free-all () - "Free all nodes on the current server." - (interactive) - (sclang-perform-server-command "freeAll")) - -(defun sclang-server-display-default () - "Display default server." - (interactive) - (when sclang-default-server - (sclang-set-server sclang-default-server) - (sclang-update-server-info))) - -(defun sclang-server-make-default () - "Make current server the default server." - (interactive) - (when sclang-current-server - (sclang-eval-string - (sclang-format " -var server; -server = Server.named.at(%o); -if (server.notNil) { - Server.default = server; - thisProcess.interpreter.s = server; - \"Default server: %\n\".postf(server.name); -}; -" sclang-current-server)) - nil)) - -(defun sclang-server-dump-osc (&optional code) - "Set the current server's dump OSC mode." - (interactive "P") - (sclang-perform-server-command "dumpOSC" - (cond ((consp code) 0) - ((null code) 1) - (t code)))) - -(defun sclang-server-prepare-for-record (&optional path) - "Prepare current server for recording a sound file." - (interactive - (list - (and current-prefix-arg (read-file-name "Record to file: ")))) - (sclang-perform-server-command "prepareForRecord" path)) - -(defun sclang-server-record () - "Record a sound file on the current server." - (interactive) - (sclang-perform-server-command "record")) - -(defun sclang-server-pause-recording () - "Pause recording on the current server." - (interactive) - (sclang-perform-server-command "pauseRecording")) - -(defun sclang-server-stop-recording () - "Stop recording on the current server." - (interactive) - (sclang-perform-server-command "stopRecording")) - -(defun sclang-set-server-latency (lat) - "Set the current server's `latency' instance variable." - (interactive "nSet latency: ") - (sclang-perform-server-command "latency_" lat)) - -(defun sclang-show-server-latency () - "Show the current server's latency." - (interactive) - (let ((server (sclang-get-server))) - (message "%s" (and server (plist-get server 'latency))))) - -(defun sclang-show-server-panel () - "Show graphical server panel if available." - (interactive) - (sclang-eval-string sclang-server-panel)) - -;; ===================================================================== -;; module setup -;; ===================================================================== - -(add-hook 'sclang-mode-hook - (lambda () - ;; install server mode line in post buffer - (when (string= (buffer-name) sclang-post-buffer) - (setq mode-line-format '("-" sclang-server-info-string))) - ;; install server prefix keymap - (define-key sclang-mode-map "\C-c\C-p" sclang-server-key-map))) - -(add-hook 'sclang-library-shutdown-hook - (lambda () - (setq sclang-current-server-initialized nil))) - -(provide 'sclang-server) - -;; EOF diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-util.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-util.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-util.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-util.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -;; copyright 2003-2005 stefan kersten -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2 of the -;; License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -;; USA - -(defun sclang-message (string &rest args) - (message "SCLang: %s" (apply 'format string args))) - -(defun sclang-make-buffer-name (string &optional private-p) - (concat (and private-p " ") "*SCLang:" string "*")) - -(defun sclang-make-prompt-string (prompt default) - (if (and default (string-match "\\(:\\)\\s *" prompt)) - (replace-match - (format " (default %s):" default) - 'fixedcase 'literal prompt 1) - prompt)) - -(defun sclang-string-to-int32 (str) - "Convert first 4 bytes of str (network byteorder) to 32 bit integer." - (logior (lsh (logand (aref str 0) #XFF) 24) - (lsh (logand (aref str 1) #XFF) 16) - (lsh (logand (aref str 2) #XFF) 8) - (logand (aref str 3) #XFF))) - -(defun sclang-int32-to-string (n) - "Convert 32 bit integer n to 4 byte string (network byte order)." - (let ((str (make-string 4 0))) - (aset str 0 (logand (lsh n -24) #XFF)) - (aset str 1 (logand (lsh n -16) #XFF)) - (aset str 2 (logand (lsh n -8) #XFF)) - (aset str 3 (logand n #XFF)) - str)) - -(defun sclang-compress-newlines (&optional buffer) - (with-current-buffer (or buffer (current-buffer)) - (save-excursion - (goto-char (point-min)) - (while (not (eobp)) - (if (and (bolp) (eolp) - (save-excursion - (forward-line -1) - (and (bolp) (eolp)))) - (delete-char 1) - (forward-line 1)))))) - -(eval-when-compile - (defmacro sclang-save-buffer-state (varlist &rest body) - "Bind variables according to VARLIST and eval BODY restoring buffer state." - `(let* ,(append varlist - '((modified (buffer-modified-p)) (buffer-undo-list t) - (inhibit-read-only t) (inhibit-point-motion-hooks t) - (inhibit-modification-hooks t) - deactivate-mark buffer-file-name buffer-file-truename)) - (unwind-protect - ,@body - (when (and (not modified) (buffer-modified-p)) - (set-buffer-modified-p nil)))))) - -;; (defun sclang-create-image (file-name &rest props) -;; (when (file-exists-p file-name) -;; (let ((coding-system-for-read 'no-conversion) -;; (coding-system-for-write 'no-conversion) -;; (inhibit-quit t)) -;; (with-temp-buffer -;; (when (equal 0 (call-process "anytopnm" file-name (list (current-buffer) nil))) -;; (apply -;; 'create-image -;; (buffer-substring-no-properties (point-min) (point-max)) -;; nil t props)))))) - -(provide 'sclang-util) - -;; EOF \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-vars.el.in 1:3.10.0+repack-0.1/editors/scel/el/sclang-vars.el.in --- 1:3.8.0~repack-2/editors/scel/el/sclang-vars.el.in 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-vars.el.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -;;; sclang-vars.el --- Variables with build-time defaults - -;; Copyright (C) 2005 Free Software Foundation, Inc. - -;; Author: Mario Lang - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Code: - -(defconst sclang-system-data-dir "@PKG_DATA_DIR@" - "Installation dependent data directory.") - -(defconst sclang-system-help-dir "@PKG_DATA_DIR@/Help" - "Installation dependent help directory.") - -(defconst sclang-system-extension-dir "@PKG_DATA_DIR@/Extensions" - "Installation dependent extension directory.") - -(provide 'sclang-vars) -;;; sclang-vars.el ends here diff -pruN 1:3.8.0~repack-2/editors/scel/el/sclang-widgets.el 1:3.10.0+repack-0.1/editors/scel/el/sclang-widgets.el --- 1:3.8.0~repack-2/editors/scel/el/sclang-widgets.el 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/el/sclang-widgets.el 1970-01-01 00:00:00.000000000 +0000 @@ -1,164 +0,0 @@ -;;; sclang-widgets.el --- Widget definitions for SCLang - -;; Copyright (C) 2005 Free Software Foundation, Inc. - -;; Author: mlang -;; Keywords: comm - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Commentary: - -;; - -;;; Code: - -(eval-when-compile (require 'sclang-util) - (require 'sclang-language)) -(eval-and-compile (require 'sclang-interp)) - -(defvar sclang-widgets nil) -(make-variable-buffer-local 'sclang-widgets) - -;; Button (not used yet) - -(define-widget 'sclang-button 'item - "A button." - :create #'sclang-widget-button-create - :action #'sclang-widget-button-action) - -(defun sclang-widget-button-create (widget) - "Create WIDGET at point in the current buffer." - (widget-specify-insert - (let ((from (point)) - button-begin button-end) - (setq button-begin (point)) - (insert (widget-get-indirect widget :button-prefix)) - - (princ (nth (widget-get widget :value) (widget-get widget :states)) (current-buffer)) - - (insert (widget-get-indirect widget :button-suffix)) - (setq button-end (point)) - - ;; Specify button, and insert value. - (and button-begin button-end - (widget-specify-button widget button-begin button-end))) - (let ((from (point-min-marker)) - (to (point-max-marker))) - (set-marker-insertion-type from t) - (set-marker-insertion-type to nil) - (widget-put widget :from from) - (widget-put widget :to to))) - (widget-clear-undo)) - -(defun sclang-widget-button-action (widget event) - (widget-value-set widget - (if (>= (widget-get widget :value) (1- (length (widget-get widget :states)))) - 0 - (1+ (widget-get widget :value)))) - (sclang-eval-string - (sclang-format "EmacsWidget.idmap[%o].valueFromEmacs(%o)" - (widget-get widget :id) (widget-get widget :value)))) - -(sclang-set-command-handler - '_widgetSetStates - (lambda (arg) - (multiple-value-bind (buffer id states value) arg - (with-current-buffer (get-buffer buffer) - (let ((widget (cdr (find id sclang-widgets :key 'car)))) - (widget-put widget :states states) - (widget-value-set widget value) - value))))) - -(define-widget 'sclang-slider 'default - "Slider widget." - :size 20 - :create #'sclang-widget-slider-create - :button-prefix "[" - :button-suffix "]" - :value 0.5 - :value-get #'widget-value-value-get - :value-set #'sclang-widget-slider-value-set - :action (lambda (widget event) - (let ((pos (if event (posn-point (event-start event)) (point)))) - (widget-value-set widget (/ (float (- pos (widget-get widget :from))) (widget-get widget :size)))))) - -(defun sclang-widget-slider-create (widget) - "Create WIDGET at point in the current buffer." - (widget-specify-insert - (let ((from (point)) - (inhibit-redisplay t) - button-begin button-end) - (setq button-begin (point)) - (insert (widget-get-indirect widget :button-prefix)) - - (insert-char ?- (widget-get widget :size)) - (backward-char (1+ (widget-put widget :current-pos (- (widget-get widget :size) (round (* (widget-get widget :value) (widget-get widget :size))))))) - (delete-char 1) (insert "|") - (goto-char (point-max)) - (insert (widget-get-indirect widget :button-suffix)) - (setq button-end (point)) - - ;; Specify button - (and button-begin button-end - (widget-specify-button widget button-begin button-end))) - (let ((from (point-min-marker)) - (to (point-max-marker))) - (set-marker-insertion-type from t) - (set-marker-insertion-type to nil) - (widget-put widget :from from) - (widget-put widget :to to))) - (widget-clear-undo)) - -(defun sclang-widget-slider-value-set (widget value) - (save-excursion - (let ((inhibit-read-only t)) - (goto-char (widget-get widget :from)) - (forward-char (widget-get widget :current-pos)) - (insert "-") (delete-char 1) - (widget-put widget :value value) - (goto-char (widget-get widget :from)) - (let ((n (round (* value (widget-get widget :size))))) - (widget-put widget :current-pos n) - (forward-char n) - (insert "|") (delete-char 1))))) - -;; Class Tree - -(require 'tree-widget) -(define-widget 'sclang-class-tree 'tree-widget - "Widget for displaying the SCLang Class Tree." - :dynargs #'sclang-widget-class-tree-dynargs) - -(defun sclang-widget-class-tree-dynargs (widget) - (sclang-eval-sync (sclang-format "EmacsClassTree.dynargs(%o)" - (widget-get widget :tag)))) - -(define-widget 'sclang-file-position 'item - "File position link for the SCLang Class Tree widget." - :format "%[%t%]\n" - :action (lambda (widget event) - (find-file-other-window (widget-get widget :filename)) - (goto-char (widget-get widget :char-pos)))) - -(defun sclang-class-tree (class-name) - "Display a tree-view of the sub-classes and methods of CLASS-NAME." - (interactive - (list (sclang-read-symbol "Class: " "Object" #'sclang-class-name-p))) - (sclang-eval-string (format "EmacsClassBrowser(%s)" class-name))) - -(provide 'sclang-widgets) -;;; sclang-widgets.el ends here diff -pruN 1:3.8.0~repack-2/editors/scel/README.md 1:3.10.0+repack-0.1/editors/scel/README.md --- 1:3.8.0~repack-2/editors/scel/README.md 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ -Scel -==== - -SuperCollider/Emacs interface - - -Installation requirements -------------------------- - -For the HTML help system, you will need emacs-w3m support. - - -Installation (default) ----------------------- - -By default emacs-lisp files are installed in - -`$prefix/share/emacs/site-lisp` - -SuperCollider files are put in - -`$prefix/share/SuperCollider/Extensions/scel` - -The only thing you need to do is loading the sclang interface in your `~/.emacs`: - -``` -(require 'sclang) -``` - -For the HTML help system to fully function also add -``` -(require 'w3m) -``` - - -Installation (detailed) ------------------------ - -Put all `*.el` files in emacs' load-path. e.g. if you put them in -`~/emacs/`, add the following lines to `~/.emacs` (or whatever your init -file is called): - -``` -(add-to-list 'load-path "~/emacs") -(require 'sclang) -``` - -for the HTML help system to fully function also add -``` -(require 'w3m) -``` - -now put all `*.sc` files in sclang's library path, e.g. if you put them -in a non-standard location, such as `~/SuperCollider/Emacs`, add the -following to `~/.config/SuperCollider/sclang.conf.yaml`: - -``` -includePaths: - [~/SuperCollider/Emacs] -``` - -(note normally this is not needed as they are put into sclang's library -path during installation with scons). - - -Usage ------ - -In order to automatically start sclang when invoking emacs, use the following command line: - -``` -$> emacs -sclang -``` - -you're now ready to edit, inspect and execute sclang code! - - -Getting help ------------- - -Inside an sclang-mode buffer (e.g. by editing a .sc file), execute - -`C-h m` - -and a window with key bindings in sclang-mode will pop up. - -`C-x C-h` lets you search for a help file - -`C-M-h` opens or switches to the Help browser (if no Help file has been opened, the default Help file will be opened). - -`E` copies the buffer, puts it in text mode and sclang-minor-mode, to enable you to edit the code parts to try out variations of the provided code in the help file. With `C-M-h` you can then return to the Help browser and browse further from the Help file. - -`C-c C-e` allows you to edit the source of the HTML file, for example if you want to improve it and commit it to the repository. - -To enable moving around in the help file with arrow keys add the following -in your `~/.emacs`: - -``` -(eval-after-load "w3m" - '(progn - (define-key w3m-mode-map [left] 'backward-char) - (define-key w3m-mode-map [right] 'forward-char) - (define-key w3m-mode-map [up] 'previous-line) - (define-key w3m-mode-map [down] 'next-line))) -``` - -This ensures that the arrow keys are just for moving through the document, and not from hyperlink to hyperlink, which is the default in w3m-mode. - - -Customization -------------- - -To fine-tune the installation from within emacs' graphical customization interface, type: - -`M-x sclang-customize` - -In particular, you will have to customize `sclang-runtime-directory'. - - -Server control --------------- - -In the post buffer window, right-click on the server name; by default the two servers `internal` and `localhost` are available. You will get a menu with common server control operations. - -To select another server, step through the server list by left-clicking on the server name. - -Servers instantiated from the language will automatically be available -in the mode line. \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/sc/CMakeLists.txt 1:3.10.0+repack-0.1/editors/scel/sc/CMakeLists.txt --- 1:3.8.0~repack-2/editors/scel/sc/CMakeLists.txt 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -file(GLOB scel_sources - RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.sc) - - -install(FILES ${scel_sources} - DESTINATION share/SuperCollider/Extensions/scide_scel) diff -pruN 1:3.8.0~repack-2/editors/scel/sc/Document.sc 1:3.10.0+repack-0.1/editors/scel/sc/Document.sc --- 1:3.8.0~repack-2/editors/scel/sc/Document.sc 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/Document.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,587 +0,0 @@ -// Since SC v3.2 dev, Document is an ABSTRACT class. Can't be instantiated directly. -// Subclasses provide the editor-specific implementation, e.g. CocoaDocument for the standard Mac interface. -// Subclasses also (in their SC code files) add a "implementationClass" method to Document to tell it to use them. - -Document { - - classvar current; - classvar initAction; - - classvar <>autoRun = true; - - classvar <>implementationClass; - - //don't change the order of these vars: - var keyDownAction, <>keyUpAction, <>mouseUpAction; - var <>toFrontAction, <>endFrontAction, <>onClose, <>mouseDownAction; - - var = 0 } - } { start = start - 1 }; - while { - str[end] !== Char.nl and: { end < max } - } { end = end + 1 }; - ^str.copyRange(start + 1, end); - } - -//actions: - - didBecomeKey { - this.class.current = this; - this.saveCurrentEnvironment; - toFrontAction.value(this); - } - - didResignKey { - endFrontAction.value(this); - this.restoreCurrentEnvironment; - } - - mouseUp{ | x, y, modifiers, buttonNumber, clickCount, clickPos | - mouseUpAction.value(this, x, y, modifiers, buttonNumber, clickCount) - } - - keyDown { | character, modifiers, unicode, keycode | - this.class.globalKeyDownAction.value(this,character, modifiers, unicode, keycode); - keyDownAction.value(this,character, modifiers, unicode, keycode); - } - - keyUp { | character, modifiers, unicode, keycode | - this.class.globalKeyUpAction.value(this,character, modifiers, unicode, keycode); - keyUpAction.value(this,character, modifiers, unicode, keycode); - } - - == { | doc | - ^if(this.path.isNil or: { doc.path.isNil }) { doc === this } { - this.path == doc.path - } - } - - hash { - ^(this.path ? this).hash - } - - *defaultUsesAutoInOutdent_ {|bool| - Document.implementationClass.prDefaultUsesAutoInOutdent_(bool) - } - - usesAutoInOutdent_ {|bool| - this.prUsesAutoInOutdent_(bool) - } - - *prDefaultUsesAutoInOutdent_{|bool| - this.subclassResponsibility(thisMethod); - } - - *prPostColor_{ |color| - this.subclassResponsibility(thisMethod); - } - - prUsesAutoInOutdent_{|bool| - ^this.subclassResponsibility(thisMethod); - } - - -// private implementation - - prIsEditable_{ | editable=true | - ^this.subclassResponsibility(thisMethod) - } - prSetTitle { | argName | - ^this.subclassResponsibility(thisMethod) - } - prGetTitle { - ^this.subclassResponsibility(thisMethod) - } - prGetFileName { - ^this.subclassResponsibility(thisMethod) - } - prSetFileName { | apath | - ^this.subclassResponsibility(thisMethod) - } - prGetBounds { | argBounds | - ^this.subclassResponsibility(thisMethod) - } - - prSetBounds { | argBounds | - ^this.subclassResponsibility(thisMethod) - } - - text { - ^this.subclassResponsibility(thisMethod) - } - selectedText { - ^this.subclassResponsibility(thisMethod) - } - selectUnderlinedText { | clickPos | - ^this.subclassResponsibility(thisMethod) - } - - linkAtClickPos { | clickPos | - ^this.subclassResponsibility(thisMethod) - } - - rangeText { | rangestart=0, rangesize=1 | - ^this.subclassResponsibility(thisMethod) - } - - prclose { - ^this.subclassResponsibility(thisMethod) - } - - closed { - onClose.value(this); // call user function - this.restoreCurrentEnvironment; - allDocuments.remove(this); - dataptr = nil; - } - - prinsertText { | dataPtr, txt | - ^this.subclassResponsibility(thisMethod) - } - insertTextRange { | string, rangestart, rangesize | - ^this.subclassResponsibility(thisMethod) - } - - prAdd { - allDocuments = allDocuments.add(this); - this.editable = true; - if (autoRun) { - if (this.rangeText(0,7) == "/*RUN*/") - { - this.text.interpret; - } - }; - current = this; - initAction.value(this); - - } - - //this is called after recompiling the lib - *prnumberOfOpen { - ^this.subclassResponsibility(thisMethod) - } - *numberOfOpen { - thisProcess.platform.when(\_NumberOfOpenTextWindows) { - ^this.prnumberOfOpen - } { ^allDocuments.size }; - ^0 - } - - *newFromIndex { | idx | - ^super.new.initByIndex(idx) - } - initByIndex { | idx | - //allDocuments = allDocuments.add(this); - var doc; - doc = this.prinitByIndex(idx); - if(doc.isNil,{^nil}); - this.prAdd; - } - prinitByIndex { | idx | - ^this.subclassResponsibility(thisMethod) - } - - //this is called from the menu: open, new - *prGetLast { - ^Document.implementationClass.prBasicNew.initLast - } - - initLast { - ^this.subclassResponsibility(thisMethod) - } - - prGetLastIndex { - ^this.subclassResponsibility(thisMethod) - } - - // private open - initFromPath { | path, selectionStart, selectionLength | - var stpath; - // path = apath; - stpath = this.class.standardizePath(path); - this.propen(stpath, selectionStart, selectionLength); - if(dataptr.isNil,{ - this.class.allDocuments.do{ |d| - if(d.path == stpath.absolutePath){ - ^d - } - }; - ^nil - }); - this.background_(Color.white); - ^this.prAdd; - } - propen { | path, selectionStart=0, selectionLength=0 | - ^this.subclassResponsibility(thisMethod) - } - - // private newTextWindow - initByString{ | argTitle, str, makeListener | - - this.prinitByString(argTitle, str, makeListener); - this.background_(Color.white); - if(dataptr.isNil,{^nil}); - this.prAdd; - this.title = argTitle; - - } - prinitByString { | title, str, makeListener | - ^this.subclassResponsibility(thisMethod) - } - - // other private - // if -1 whole doc - - prSetBackgroundColor { | color | - ^this.subclassResponsibility(thisMethod) - } - prGetBackgroundColor { | color | - ^this.subclassResponsibility(thisMethod) - } - prSetSelectedBackgroundColor { | color | - ^this.subclassResponsibility(thisMethod); - } - prGetSelectedBackgroundColor { | color | - ^this.subclassResponsibility(thisMethod); - } - selectedRangeLocation { - ^this.subclassResponsibility(thisMethod) - } - selectedRangeSize { - ^this.subclassResponsibility(thisMethod) - } - - prSelectLine { | line | - ^this.subclassResponsibility(thisMethod) - } - - *prGetIndexOfListener { - if (this.implementationClass.isNil) { - ^nil - }; - - if (this.implementationClass.respondsTo(\prGetIndexOfListener)) { - ^this.implementationClass.prGetIndexOfListener - } { - ^nil - } - } - - //---not yet implemented - // ~/Documents - // /Volumes - // Music/Patches - - //*reviewUnsavedDocumentsWithAlertTitle - //*saveAllDocuments - //*recentDocumentPaths - //save - //saveAs - //print - // - //hasPath was loaded - - -// Environment handling Document with its own envir must set and restore currentEnvironment on entry and exit. -// Requires alteration of *open, *new, closed, didBecomeKey, and didResignKey - - envir_ { | ev | - envir = ev; - if (this.class.current == this) { - if(envir.isNil) { - this.restoreCurrentEnvironment - } { - if (savedEnvir.isNil) { - this.saveCurrentEnvironment - } - } - } - } - - restoreCurrentEnvironment { - if (savedEnvir.notNil) { - currentEnvironment = savedEnvir; - savedEnvir = nil; - } - } - - saveCurrentEnvironment { - if (envir.notNil) { - savedEnvir = currentEnvironment; - currentEnvironment = envir; - } - } - - *prBasicNew { - ^super.new - } -} diff -pruN 1:3.8.0~repack-2/editors/scel/sc/EmacsBuffer.sc 1:3.10.0+repack-0.1/editors/scel/sc/EmacsBuffer.sc --- 1:3.8.0~repack-2/editors/scel/sc/EmacsBuffer.sc 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/EmacsBuffer.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,325 +0,0 @@ -// Emacs Widget library bindings for SCLang - -EmacsBuffer { // Represents an Emacs buffer - classvar all; - var onClose, action; - *new {|buffer, tag| - ^super.new(buffer, 'push-button', ':tag', tag, ':action', - [\lambda, [\widget, \event], - ['sclang-eval-string', - ['sclang-format', "EmacsWidget.idmap[%o].action.value", - ['widget-get', \widget, ':id']]]]) - } -} - -EmacsEditableField : EmacsWidget { - var <>action; - *new {|buffer, tag, value=""| - ^super.new(buffer, 'editable-field', ':tag', tag, - ':format', "%{%t%}: %v", - ':action', - [\lambda, [\widget, \event], - ['sclang-eval-string', - ['sclang-format', "EmacsWidget.idmap[%o].action.value(%o)", - ['widget-get', \widget, ':id'], - ['widget-value', \widget]]]], - value) - } -} - -EmacsNumber : EmacsWidget { - var <>action, <>spec, ', \val, ['widget-get', \widget, ':max']], - [\error, "Too much"]], - [['<', \val, ['widget-get', \widget, ':min']], - [\error, "Too less"]], - [\t, - ['sclang-eval-string', - ['sclang-format', "EmacsWidget.idmap[%o].valueFromEmacs(%o)", - ['widget-get', \widget, ':id'], \val]]]]]], - value).action_(action).spec_(spec).initValue(value) - } - valueFromEmacs {|argValue| - value = argValue; - action.value(value) - } - value_ {|argValue| - Emacs.evalLispExpression( - buffer.use( - ['save-excursion', - ['widget-value-set', [\cdr, [\find, id, 'sclang-widgets', ':key', [\quote, \car]]], argValue], - ['widget-setup']], - argValue).asLispString, - {|result|value=result}) - } - initValue {|argValue|value=argValue} -} - -EmacsButton : EmacsWidget { - var <>action, ', \size, [\length, \string]], - [\cond, - [[\eq, \align, [\quote, \left]], - [\concat, \string, ['make-string', ['-', \size, [\length, \string]], $ ]]], - [[\eq, \align, [\quote, \right]], - [\concat, ['make-string', ['-', \size, [\length, \string]], $ ], \string]], - [[\eq, \align, [\quote, \center]], - [\let, [[\half, ['/', ['-', \size, [\length, \string]], 2]]], - [\if, ['=', ['+', [\length, \string], ['*', \half, 2]], \size], - [\concat, ['make-string', \half, $ ], \string, ['make-string', \half, $ ]], - [\concat, ['make-string', \half, $ ], \string, ['make-string', \half, $ ], " "]]]]]]]]]], - string).initValue(size?string.size,align,string) - } - string_ {|argString| - string = argString.asString; - this.wValueSet(string); - } - size_ {|argSize| - this.wPut(\size, size=argSize, {this.wValueSet(string)}) - } - align_ {|argAlign| - this.wPut(\align, align=argAlign, {this.wValueSet(string)}) - } - initValue {|argSize,argAlign,argValue|size=argSize;align=argAlign;string=argValue} -} - -EmacsClassTree : EmacsWidget { - *new {|buffer, className, open=true| - ^super.new(buffer, 'sclang-class-tree', ':tag', className.asString, - ':open', if(open){\t}{\nil}, - ':node', [\quote, ['sclang-file-position', - ':filename', className.asSymbol.asClass.filenameSymbol.asString, - ':char-pos', className.asSymbol.asClass.charPos+1, - ':tag', className.asString]]) - } - *dynargs {|className| - var class; - class = className.asSymbol.asClass; - ^(class.subclasses.asArray.copy.sort{|a,b|a.name <= b.name}.collect{|sc| - ['sclang-class-tree', ':tag', sc.name.asString, - ':node', ['sclang-file-position', - ':filename', sc.filenameSymbol.asString, - ':char-pos', sc.charPos+1, - ':tag', sc.name.asString]]}) - ++ - (class.class.methods.asArray.copy.sort({|a,b| a.name <= b.name }).collect{|m| - ['sclang-file-position', - ':filename', m.filenameSymbol.asString, - ':char-pos', m.charPos+1, - ':tag', "*"++m.name.asString]}) - ++ - (class.methods.asArray.copy.sort({|a,b| a.name <= b.name }).collect{|m| - ['sclang-file-position', - ':filename', m.filenameSymbol.asString, - ':char-pos', m.charPos+1, - ':tag', m.name.asString]}) - } -} - -EmacsClassBrowser { - var w, classTree; - *new {|class| - ^super.newCopyArgs(EmacsBuffer("*"++class.asClass.name++"*")).init(class); - } - init {|class| - classTree=EmacsClassTree(w, class); - w.gotoBob.front; - } -} diff -pruN 1:3.8.0~repack-2/editors/scel/sc/EmacsDocument.sc 1:3.10.0+repack-0.1/editors/scel/sc/EmacsDocument.sc --- 1:3.8.0~repack-2/editors/scel/sc/EmacsDocument.sc 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/EmacsDocument.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,321 +0,0 @@ -// copyright 2003 stefan kersten -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -// USA - -EmacsDocument { -// : Document - - classvar documentMap, <>current; - var <>sceld; - var title, path; - var -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -// USA - -EmacsInterface { - classvar handlers; - - *initClass { - handlers = IdentityDictionary.new; - this.initDefaultHandlers; - } - - *put { | name, function | - handlers.put(name.asSymbol, function); - } - *at { | name | - ^handlers.at(name) - } - - *performCommand { | name, args | -// [\performCommand, name, args].postln; - ^handlers.atFail(name, { ^nil }).valueArray(args) - } - - *makeSubListSorter { | index selector('<') | - ^{ | a b | a[index].perform(selector, b[index]) } - } - - *initDefaultHandlers { - this - .put(\symbolTable, { | fileName | - var result, dt; - - dt = { - result = IdentitySet(16384); - Class.allClasses.do { | class | - if (class.isMetaClass.not) { - result.add(class.name); - }; - class.methods.do { | method | - result.add(method.name); - }; - }; - - result = result.collectAs(_.asString, Array) - }.bench(false); - - "Emacs: Built symbol table in % seconds\n".postf(dt.asStringPrec(3)); - - result - }) - .put(\openDefinition, { | name | - var class, method, res; - #class, method = name.split($-); - class = class.asSymbol.asClass; - if (class.notNil) { - if (method.isNil) { - res = [class.filenameSymbol.asString, class.charPos + 1]; - } { - method = class.findMethod(method.asSymbol); - if (method.notNil) { - res = [method.filenameSymbol.asString, method.charPos + 1]; - }; - }; - }; - name -> res - }) - .put(\classDefinitions, { | name | - var result, class, files; - - result = SortedList(8, this.makeSubListSorter(0, '<')); - - if ((class = name.asSymbol.asClass).notNil) { - files = IdentitySet.new; - result.add([ - " " ++ name, - class.filenameSymbol.asString, - class.charPos + 1 - ]); - files.add(class.filenameSymbol); - class.methods.do { | method | - if (files.includes(method.filenameSymbol).not) { - result = result.add([ - "+ " ++ name, - method.filenameSymbol.asString, - method.charPos + 1 - ]); - files.add(method.filenameSymbol); - } - } - }; - - name -> result - }) - .put(\methodDefinitions, { | name | - var result, symbol, getter, setter; - - result = SortedList(8, this.makeSubListSorter(0, '<')); - symbol = name.asSymbol; - - Class.allClasses.do { | class | - class.methods.do { | method | - if (method.name === symbol) { - result.add([ - class.name ++ "-" ++ name, - method.filenameSymbol.asString, - method.charPos + 1 - ]) - } - } - }; - - name -> result - }) - .put(\methodReferences, { | name | - var result, references, methods; - - result = SortedList(8, this.makeSubListSorter(0, '<')); - references = Class.findAllReferences(name.asSymbol); - - if (references.notNil) { - methods = IdentitySet.new; - references.do { | funcDef | - var homeContext; - homeContext = funcDef.homeContext; - if (homeContext.isKindOf(Method)) { - methods.add(homeContext); - }; - }; - methods.do { | method | - result.add([ - method.ownerClass.name ++ "-" ++ method.name, - method.filenameSymbol.asString, - method.charPos + 1 - ]) - } - }; - - name -> result - }) - .put(\methodArgs, { | className, methodName | - var stream, class, method; - var args, varArgs, lastIndex; - - stream = CollStream.new; - class = className.asSymbol.asClass; - - if (class.notNil) { - method = class.class.findRespondingMethodFor(methodName.asSymbol); - if (method.notNil and: { method.argNames.notNil }) { - args = method.argNames.copyToEnd(1); - varArgs = method.varArgs; - lastIndex = args.lastIndex; - - args.do({ | name, i | - var default; - if (varArgs and: { i == lastIndex }) { - stream << " ... "; - }{ - if (i != 0) { stream << ", " }; - }; - stream << name; - default = method.prototypeFrame[i+1]; - if (default.notNil) { - stream << "=" << default; - }; - }); - } - }; - - stream.collection; - }) - .put('evalSCLang', #{|expr, time| - {[time, \ok, expr.interpret]} - .try{|e| - [time, \error, e.errorString] - } - }) - .put( \openDevSource, { | name | - var devpath = thisProcess.platform.devLoc( name ); - // devpath.postln; - Document.open( devpath ).front; - name -> devpath - }) - .put( \helpSymbols, { - var result, dt; - - dt = { - result = IdentitySet.new(16384); - SCDoc.helpSourceDirs.do {|dir| - ("find -L"+dir.escapeChar($ )+"-type f -name '*.schelp' -not -name '*.ext.schelp'") - .unixCmdGetStdOutLines.do {|file| - result.add(file[dir.size+1 ..].drop(-7)) - } - }; - - Class.allClasses.do { | class | - if (class.isMetaClass.not) { - result.add(class.name.asString); - }; - class.methods.do { | method | - result.add(method.name.asString); - }; - }; - - result = result.asArray - }.bench(false); - "Emacs: Index help topics in % seconds\n".postf(dt.asStringPrec(3)); - result - }); - } -} - -Emacs { - classvar outStream, outFile, requestHandlers, requestAllocator; - classvar keys; - classvar [ - 'running', server.serverRunning, - 'type', - if (server.inProcess) {\internal} {if (server.isLocal) {\local} {\remote}}, - 'address', server.addr.ip, - 'client-id', server.clientID, - 'latency', server.latency, - 'notified', server.notified, - 'dump-mode', server.dumpMode, - 'info', [ - (server.avgCPU ? 0.0).round(0.1), - (server.peakCPU ? 0.0).round(0.1), - server.numUGens ? 0, - server.numSynths ? 0, - server.numGroups ? 0, - server.numSynthDefs ? 0 - ] - ]); - }; - this.sendToLisp(\_updateServer, result) - } -} - -// EOF \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/sc/extBuffer.sc 1:3.10.0+repack-0.1/editors/scel/sc/extBuffer.sc --- 1:3.8.0~repack-2/editors/scel/sc/extBuffer.sc 2016-08-22 08:12:21.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/extBuffer.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,232 +0,0 @@ -+ Server { - makeEmacsWindow { arg w; - var active, booter, killer, makeDefault, running, booting, stopped; - var recorder, scoper; - var countsViews, ctlr; - var dumping=false, startDump, stopDump, stillRunning; - - if (emacsbuf.notNil, { ^emacsbuf.front }); - - if(w.isNil,{ - w = emacsbuf = EmacsBuffer("*" ++ name.asString ++ " server*"); - }); - - if(isLocal,{ - booter = EmacsButton(w, ["Boot","Quit"]); - booter.action = { arg value; - if(value == 1, { - booting.value; - this.boot; - }); - if(value == 0,{ - this.quit; - }); - }; - booter.value=this.serverRunning.binaryValue; - - killer = EmacsButton(w, ["K"], { Server.killAll }); - killer.enabled = false; - }); - - active = EmacsText(w, this.name.asString, 12, \center); - // active.background = Color.black; - if(this.serverRunning,running,stopped); - - makeDefault = EmacsButton(w, ["-> default"], { - thisProcess.interpreter.s = this; - Server.default = this; - }); - - w.newline; - - recorder = EmacsButton(w, ["prepare rec","record >","stop []"], { - if (recorder.value == 1) { - this.prepareForRecord; - }{ - if (recorder.value == 2) { this.record } { this.stopRecording }; - }; - }); - - recorder.enabled = false; - - stillRunning = { - SystemClock.sched(0.2, { this.stopAliveThread }); - }; - w.defineKey("n", { this.queryAllNodes }) - .defineKey(" ", { if(this.serverRunning.not) { this.boot } }) - .defineKey("d", { - startDump = { - this.dumpOSC(1); - this.stopAliveThread; - dumping = true; - CmdPeriod.add(stillRunning); - }; - stopDump = { - this.dumpOSC(0); - this.startAliveThread; - dumping = false; - CmdPeriod.remove(stillRunning); - }; - if(dumping, stopDump, startDump) - }); - - if (isLocal, { - running = { - // active.stringColor_(Color.red); - booter.value=1; - recorder.enabled = true; - killer.enabled = true; - }; - stopped = { - // active.stringColor_(Color.grey(0.3)); - booter.value=0; - recorder.value=0; - recorder.enabled = false; - killer.enabled = false; - }; - booting = { - // active.stringColor_(Color.yellow(0.9)); - //booter.setProperty(\value,0); - }; - - w.onClose = { - emacsbuf = nil; - ctlr.remove; - }; - },{ - running = { - // active.background = Color.red; - recorder.enabled = true; - }; - stopped = { - // active.background = Color.black; - recorder.value=0; - recorder.enabled = false; - }; - booting = { - // active.background = Color.yellow; - }; - w.onClose = { - this.stopAliveThread; - ctlr.remove; - }; - }); - if(this.serverRunning,running,stopped); - - w.newline; - - countsViews = - #[ - "Avg CPU: ", "Peak CPU: ", - "UGens: ", "Synths: ", "Groups: ", "SynthDefs: " - ].collect({ arg name, i; - var label,numView, pctView; - label = EmacsText(w, name, 12, \right); - - if (i < 2, { - numView = EmacsText(w, "?", 5, \right); - pctView = EmacsText(w, "%"); - },{ - numView = EmacsText(w, "?", 6, \left); - }); - if (i == 1) { w.newline }; - numView - }); - - ctlr = SimpleController(this) - .put(\serverRunning, { if(this.serverRunning,running,stopped) }) - .put(\counts,{ - countsViews.at(0).string = this.avgCPU.round(0.1); - countsViews.at(1).string = this.peakCPU.round(0.1); - countsViews.at(2).string = this.numUGens; - countsViews.at(3).string = this.numSynths; - countsViews.at(4).string = this.numGroups; - countsViews.at(5).string = this.numSynthDefs; - }) - .put(\cmdPeriod,{ - recorder.value=0; - }); - w.gotoBob; - w.front; - this.startAliveThread; - } -} - -+ SynthDesc { - makeEmacsWindow { - var w, s, startButton, sliders; - var id, cmdPeriodFunc; - var synthDesc; - var usefulControls, numControls; - var getSliderValues; - - s = Server.default; - - usefulControls = controls.select {|controlName, i| - var ctlname; - ctlname = controlName.name; - (ctlname != "?") && (ctlname != "gate") - }; - - numControls = usefulControls.size; - sliders = Array.newClear(numControls); - - id = s.nextNodeID; // generate a note id. - - // make the window - w = EmacsBuffer("*SynthDesc"+name++"*"); - // add a button to start and stop the sound. - startButton = EmacsButton(w, ["Start","Stop"]); - w.newline; - getSliderValues = { - var envir; - - envir = (); - usefulControls.do {|controlName, i| - var ctlname; - ctlname = controlName.name.asSymbol; - envir.put(ctlname, sliders[i].value); - }; - envir.use { - msgFunc.valueEnvir - }; - }; - - startButton.action = {|value| - if (value == 1) { - // start sound - s.sendBundle(s.latency, ["/s_new", name, id, 0, 0] ++ getSliderValues.value); - }; - if (value == 0) { - if (hasGate) { - // set gate to zero to cause envelope to release - s.sendMsg("/n_set", id, "gate", 0); - }{ - s.sendMsg("/n_free", id); - }; - }; - }; - - // create controls for all parameters - usefulControls.do {|controlName, i| - var ctlname, ctlname2, capname, spec; - ctlname = controlName.name; - capname = ctlname.copy; - capname[0] = capname[0].toUpper; - spec = ctlname.asSymbol.asSpec; - sliders[i] = EmacsNumber(w, capname, spec?ControlSpec(-1e8,1e8), - {|ez| s.sendMsg("/n_set", id, ctlname, ez); }, controlName.defaultValue); - }; - - // set start button to zero upon a cmd-period - cmdPeriodFunc = { startButton.value = 0; }; - CmdPeriod.add(cmdPeriodFunc); - - // stop the sound when window closes and remove cmdPeriodFunc. - w.onClose = { - s.sendMsg("/n_free", id); - CmdPeriod.remove(cmdPeriodFunc); - }; - w.front; // make window visible and front window. - } -} diff -pruN 1:3.8.0~repack-2/editors/scel/sc/extClassBrowser.sc 1:3.10.0+repack-0.1/editors/scel/sc/extClassBrowser.sc --- 1:3.8.0~repack-2/editors/scel/sc/extClassBrowser.sc 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/extClassBrowser.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -+ ClassBrowser{ - openSVN{ |svnAddr| - Emacs.evalLispExpression(['w3m-browse-url', svnAddr].asLispString); - } -} \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/sc/extString.sc 1:3.10.0+repack-0.1/editors/scel/sc/extString.sc --- 1:3.8.0~repack-2/editors/scel/sc/extString.sc 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/extString.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -// copyright 2003 stefan kersten -// 2007-9 marije baalman -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -// USA - -+ String{ - - openHelpFileEmacs { - if ( Emacs.initialized) { - Emacs.evalLispExpression(['sclang-find-help', this].asLispString); - } - } - - openHTMLFileEmacs { - if ( Emacs.initialized) { - // this.findHelpFile; - Emacs.evalLispExpression(['w3m-browse-url', this].asLispString); - } - } -} - -// EOF diff -pruN 1:3.8.0~repack-2/editors/scel/sc/homeContext.sc 1:3.10.0+repack-0.1/editors/scel/sc/homeContext.sc --- 1:3.8.0~repack-2/editors/scel/sc/homeContext.sc 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/homeContext.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -+ FunctionDef { - homeContext { - ^if (context.isNil) { this } { context.homeContext } - } -} diff -pruN 1:3.8.0~repack-2/editors/scel/sc/ScelDocument.sc 1:3.10.0+repack-0.1/editors/scel/sc/ScelDocument.sc --- 1:3.8.0~repack-2/editors/scel/sc/ScelDocument.sc 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/ScelDocument.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,359 +0,0 @@ -// copyright 2007 Marije Baalman (nescivi AT gmail DOT com) -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -// USA - -ScelDocument : Document{ - var currentString; - - *new{ | title = "Untitled", string = "", makeListener = false, toFront=true | - // "ScelDocument.new".postln; - ^super.prBasicNew.init( title, string, makeListener, toFront ); - } - - *open{ | path, selectionStart = 0, selectionLength = 0, toFront=true | - ^super.prBasicNew.initFromPath( path, selectionStart, selectionLength, toFront ); - } - - *newFromEmacs{ |doc| - ^this.prBasicNew.prinitFromEmacs( doc ); - } - - prinitFromEmacs{ |doc| - thisdoc = doc; - thisdoc.sceld = this; - checkCurrent = { |doc| if ( EmacsDocument.current === doc, { this.didBecomeKey } ); }; - checkCurrent.value( doc ); - ^this; - } - - initFromPath{ | path, selectionStart = 0, selectionLength = 0, toFront=true| - checkCurrent = { |doc| if ( EmacsDocument.current === doc, { this.didBecomeKey } ); }; - cFuncs = [checkCurrent]; - path_p = path; - title_p = path; - EmacsDocument.prNewFromPath(path, selectionStart, selectionLength, { |doc| thisdoc = doc; thisdoc.sceld = this; cFuncs.do{ |it| it.value(doc); } } ); - if ( toFront, { this.front } ); - ^this - } - - init{ |title, string, makeListener, toFront| - // "ScelDocument.init".postln; - checkCurrent = { |doc| if ( EmacsDocument.current === doc, { this.didBecomeKey } ); }; - cFuncs = [checkCurrent]; - title_p = title; - EmacsDocument.prNewFromString(title, string, makeListener, { |doc| thisdoc = doc; thisdoc.sceld = this; cFuncs.do{ |it| it.value(doc)} }); - if ( toFront, { this.front } ); - ^this - } - - string_ { | argName, rangestart = -1, rangesize = 1 | - if ( thisdoc.notNil, { - thisdoc.string_( argName, rangestart, rangesize ) - },{ - cFuncs = cFuncs ++ { this.string_( argName ) }; - }); - } - - title_ { | argName, completFunc | - if ( thisdoc.notNil, { - thisdoc.title_( argName, completFunc ) - },{ - cFuncs = cFuncs ++ { this.title_( argName, completFunc ) }; - }); - } - - title{ - if ( thisdoc.notNil, { - ^thisdoc.title; - },{ - ^("***"++title_p++"***") - }); - } - - // printing - printOn { | stream | - super.printOn(stream); - stream << $( << this.title << $); - } - - prGetFileName { - if ( thisdoc.notNil, { - ^thisdoc.path; - },{ - ^path_p; - }); - } - prSetFileName { | argPath | - "sceldoc.prSetFileName".postln; - if ( thisdoc.notNil, { - thisdoc.prSetFileName( argPath ); - },{ - cFuncs = cFuncs ++ { this.prSetFileName( argPath ) }; - }); - } - - prSetFileName_ { | argPath | - "sceldoc.prSetFileName_".postln; - path_p = argPath; - } - - path_{ |path| - "sceldoc.path".postln; - this.prSetFileName( path ); - // if ( thisdoc.notNil, { thisdoc.path_( path ) },{ completionFuncs = completionFuncs ++ { this.path_( path ) }; }); - // ^this - } - - front { - if ( thisdoc.notNil, { - thisdoc.front - },{ - cFuncs = cFuncs ++ { this.front }; - }); - } - - unfocusedFront { - if ( thisdoc.notNil, { - thisdoc.unfocusedFront; - },{ - cFuncs = cFuncs ++ { this.unfocusedFront }; - }); - } - syntaxColorize { - if ( thisdoc.notNil, { - thisdoc.syntaxColorize; - },{ - cFuncs = cFuncs ++ { this.syntaxColorize }; - }); - } - prisEditable_{ | flag = true | - if ( thisdoc.notNil, { - thisdoc.prisEditable_( flag ); - },{ - cFuncs = cFuncs ++ { this.prisEditable_( flag ) }; - }); - editable = flag; - } - - removeUndo{ - if ( thisdoc.notNil, { - thisdoc.removeUndo - },{ - cFuncs = cFuncs ++ { this.removeUndo }; - }); - } - - envir_ { | environment | - envir = environment; - if (this === current) { - envir.push; - } - } - - didBecomeKey { - if (envir.notNil) { - envir.push; - }; - super.didBecomeKey; - EmacsDocument.current = this; - } - - didResignKey { - if (envir === currentEnvironment) { - envir.pop; - }; - super.didResignKey; - } - - // envir_ { | environment | thisdoc.envir_( environment ) } - // didBecomeKey { thisdoc.didBecomeKey } - // didResignKey { thisdoc.didResignKey } - - closed { - thisdoc.prRemove; - onClose.value(this); // call user function - // allDocuments.remove(this); - // dataptr = nil; - } - - isEdited { - if ( thisdoc.notNil, { - ^thisdoc.isEdited - },{ - ^false; - }); - } - // isFront { thisdoc.isFront } - editable_{arg abool=true; this.prisEditable_( abool ) } - - /* should maybe be this: - path{ - if ( thisdoc.notNil, { - ^^thisdoc.prGetFileName; - },{ - ^path_p; - }); - */ - - path{^thisdoc.prGetFileName } - - *addToList{ |doc| - var key, sceld; - // "adding to List".postln; - key = allDocuments.detectIndex( { |it| it.thisdoc === doc } ); - if ( key.isNil, - { - sceld = ScelDocument.newFromEmacs( doc ); - allDocuments = allDocuments.add(sceld); - initAction.value(sceld); - }); - } - *removeFromList{ |doc| - var toremove; - toremove = allDocuments.detectIndex( { |it| it.thisdoc === doc } ); - if ( toremove.notNil, - { - allDocuments.removeAt(toremove); - }); - } - - prclose { - if ( thisdoc.notNil,{ - thisdoc.prclose - },{ - cFuncs = cFuncs ++ { this.prclose }; - }); - } - - string {arg rangestart, rangesize = 1; - // var cond; - currentString = nil; - thisdoc.string( rangestart, { |v| currentString = v }, rangesize ); -// cond = Condition.new( { currentString.notNil } ); -// cond.wait; - // while ( { currentString.isNil }, {"wait for string".postln;} ); - "Asynchronous: retrieve the result with .currentString".postln; - ^currentString; - } - - currentLine { - // var cond; - currentString = nil; - thisdoc.currentLine( { |v| currentString = v } ); -// cond = Condition.new( { currentString.notNil } ); -// cond.wait; - // while ( { currentString.isNil }, {"wait for string".postln;} ); - "Asynchronous: retrieve the result with .currentString".postln; - ^currentString; - } - - currentWord { - // var cond; - currentString = nil; - thisdoc.currentWord( { |v| currentString = v } ); -// cond = Condition.new( { currentString.notNil } ); -// cond.wait; - // while ( { currentString.isNil }, {"wait for string".postln;} ); - "Asynchronous: retrieve the result with .currentString".postln; - ^currentString; - } - - currentBlock { - // var cond; - currentString = nil; - thisdoc.currentBlock( { |v| currentString = v } ); -// cond = Condition.new( { currentString.notNil } ); -// cond.wait; - // while ( { currentString.isNil }, {"wait for string".postln;} ); - "Asynchronous: retrieve the result with .currentString".postln; - ^currentString; - } - - - text { - ^this.string; - } - rangeText { arg rangestart=0, rangesize=1; - ^this.string( rangestart, rangesize ); - } - - dataptr { ^thisdoc.tryPerform(\dataptr) } - - // not implemented: - selectRange { arg start=0, length=0; } - background_ {arg color, rangestart= -1, rangesize = 0; - } - stringColor_ {arg color, rangeStart = -1, rangeSize = 0; - } - - prGetBounds { | bounds | ^bounds } - prSetBounds { } - setFont { } - setTextColor { } - selectedText { - ^"" - } - prinsertText { arg dataptr, txt; - } - insertTextRange { arg string, rangestart, rangesize; - } - setBackgroundColor { } - selectedRangeLocation { - ^0 - } - selectedRangeSize { - ^0 - } - prselectLine { arg line; - } - - bounds_{ - } - - *current { - var cur = EmacsDocument.current; - if ( cur.isNil ){ - ^cur; - }{ - ^cur.sceld; - } - } - - *prGetIndexOfListener{ - ^this.allDocuments.detectIndex( { |doc| doc.title == "*SCLang:PostBuffer*" } ); - } - - // invalid methods - initByIndex { - ^this.shouldNotImplement(thisMethod) - } - prinitByIndex { - ^this.shouldNotImplement(thisMethod) - } - initLast { - ^this.shouldNotImplement(thisMethod) - } - prGetLastIndex { - ^this.shouldNotImplement(thisMethod) - } - *postColor_{ - } -} \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/scel/sc/storeLispOn.sc 1:3.10.0+repack-0.1/editors/scel/sc/storeLispOn.sc --- 1:3.8.0~repack-2/editors/scel/sc/storeLispOn.sc 2014-04-10 09:24:24.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/scel/sc/storeLispOn.sc 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ -// copyright 2003 stefan kersten -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -// USA - -+ Object { - asLispString { - var stream; - stream = CollStream.new; - this.storeLispOn(stream); - ^stream.collection - } - asLispExpression { - ^this.asLispString - } - storeLispOn { arg stream; - stream << "#<" << this << ">" - } -} - -+ Symbol { - storeLispOn { arg stream; - stream.putAll(this.asString) - } -} - -+ String { - asLispExpression { - ^this - } - storeLispOn { arg stream; - // note, extra space after \\ is for emacs paren matching - // not syntactically significant - stream.put($").putAll(this.escapeChar($\\ ).escapeChar($")).put($") - } -} - -+ Char { - storeLispOn { arg stream; - stream.putAll("?"++this) - } -} - -+ Color { - storeLispOn { arg stream; - ("#"++(red*255).asInteger.asHexString(2) - ++(green*255).asInteger.asHexString(2) - ++(blue*255).asInteger.asHexString(2)).storeLispOn(stream) - } -} - -+ Number { - storeLispOn { arg stream; - stream << this - } -} - -+ Nil { - storeLispOn { arg stream; - stream << "nil" - } -} - -+ True { - storeLispOn { arg stream; - stream.put($t) - } -} - -+ False { - storeLispOn { arg stream; - nil.storeLispOn(stream) - } -} - -+ Association { - storeLispOn { arg stream; - stream.put($(); - this.key.storeLispOn(stream); - stream.space.put($.).space; - this.value.storeLispOn(stream); - stream.put($)); - } -} - -+ Collection { - lispDo { arg function; - this.do(function); - } - - storeLispOn { arg stream; - stream.put($(); - this.lispDo { arg x, i; - if (i != 0) { stream.space }; - x.storeLispOn(stream); - }; - stream.put($)); - } -} - -+ Dictionary { - lispDo { arg function; - this.associationsDo(function) - } -} - -// EOF \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/sc-el/CMakeLists.txt 1:3.10.0+repack-0.1/editors/sc-el/CMakeLists.txt --- 1:3.8.0~repack-2/editors/sc-el/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/CMakeLists.txt 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,2 @@ +add_subdirectory(el) +add_subdirectory(sc) \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/CMakeLists.txt 1:3.10.0+repack-0.1/editors/sc-el/el/CMakeLists.txt --- 1:3.8.0~repack-2/editors/sc-el/el/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/CMakeLists.txt 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,43 @@ +option(SC_EL_BYTECOMPILE "Build emacs-based IDE." ON) +mark_as_advanced(SC_EL_BYTECOMPILE) + +file(GLOB scel_sources + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.el) + +set(PKG_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/SuperCollider) + +configure_file(sclang-vars.el.in + ${CMAKE_CURRENT_BINARY_DIR}/sclang-vars.el) + +foreach (el ${scel_sources}) + configure_file(${el} ${CMAKE_CURRENT_BINARY_DIR}/${el}) +endforeach() + +set(all_scel_sources ${scel_sources} sclang-vars.el) + +if (SC_EL_BYTECOMPILE) + find_program(EMACS_EXECUTABLE emacs) + if(NOT EMACS_EXECUTABLE) + message(SEND_ERROR "Emacs could not be found.\n (If emacs interface is not required, then set SC_EL=no)") + endif() + + foreach (el ${all_scel_sources}) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${el}c + COMMAND ${EMACS_EXECUTABLE} -batch + -L ${CMAKE_CURRENT_BINARY_DIR} + -f batch-byte-compile + ${CMAKE_CURRENT_BINARY_DIR}/${el} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${el} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Creating byte-compiled Emacs lisp ${CMAKE_CURRENT_BINARY_DIR}/${el}c") + + add_custom_target(${el}c ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${el}c) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${el}c + DESTINATION share/emacs/site-lisp/SuperCollider) + endforeach() +else() + install (FILES ${scel_sources} ${CMAKE_CURRENT_BINARY_DIR}/sclang-vars.el + DESTINATION share/emacs/site-lisp/SuperCollider) +endif() diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang-browser.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-browser.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang-browser.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-browser.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,183 @@ +;; copyright 2003 stefan kersten +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + +(require 'sclang-util) +(require 'view nil t) + +;; TODO: better factoring +;; derive from view mode, make mode-map pluggable +;; define derived mode for completion, definition, help + +(defun sclang-browser-fill-keymap (map) + (define-key map "\r" 'sclang-browser-follow-link) + (define-key map [mouse-2] 'sclang-browser-mouse-follow-link) + (define-key map "\t" 'sclang-browser-next-link) + (define-key map [backtab] 'sclang-browser-previous-link) + (define-key map [(shift tab)] 'sclang-browser-previous-link) + (define-key map [?q] 'sclang-browser-quit) + map) + +(defvar sclang-browser-mode-map (sclang-browser-fill-keymap (make-sparse-keymap))) +(defvar sclang-browser-mode-hook nil) +(defvar sclang-browser-show-hook nil) +(defvar sclang-browser-link-function nil + "buffer local") +(defvar sclang-browser-return-method nil + "buffer local") + +(defun sclang-browser-beginning-of-link () + (interactive) + (when (get-text-property (point) 'sclang-browser-link) + (while (and (not (bobp)) + (get-text-property (point) 'sclang-browser-link)) + (forward-char -1)) + (unless (bobp) (forward-char 1)) + (point))) + +(defun sclang-browser-next-link (&optional n) + (interactive) + (let* ((n (or n 1)) + (prop 'sclang-browser-link) + (fwd (>= n 0)) + (orig (point)) + (beg (if fwd (point-min) (point-max))) + (end (if fwd (point-max) (point-min))) + (inc (if fwd 1 -1)) + pos) + (when (get-text-property (point) prop) + (while (and (/= (point) beg) + (get-text-property (point) prop)) + (forward-char inc)) + (if (= (point) beg) (goto-char end))) + (while (not (eq pos orig)) + (cond ((get-text-property (point) prop) + (sclang-browser-beginning-of-link) + (setq pos orig)) + (t + (if (= (point) end) (goto-char beg)) + (forward-char inc) + (setq pos (point))))))) + +(defun sclang-browser-previous-link () + (interactive) + (sclang-browser-next-link -1)) + +(defun sclang-browser-follow-link (&optional pos) + (interactive) + (let* ((pos (or pos (point))) + (data (get-text-property pos 'sclang-browser-link))) + (when (consp data) + (let ((fun (or (car data) sclang-browser-link-function)) + (arg (cdr data))) + (when (functionp fun) + (condition-case nil + (funcall fun arg) + (error (sclang-message "Error in link function") nil))))))) + +(defun sclang-browser-mouse-follow-link (event) + (interactive "e") + (let* ((start (event-start event)) + (window (car start)) + (pos (cadr start))) + (with-current-buffer (window-buffer window) + (sclang-browser-follow-link pos)))) + +(defun sclang-browser-mode () + "Major mode for viewing hypertext and navigating references in it. +Entry to this mode runs the normal hook `sclang-browser-mode-hook'. +Commands: +\\{sclang-browser-mode-map}" + (interactive) + (kill-all-local-variables) + (use-local-map sclang-browser-mode-map) + (set-keymap-parent sclang-browser-mode-map view-mode-map) + (setq mode-name "Browser") + (setq major-mode 'sclang-browser-mode) + (set (make-local-variable 'sclang-browser-link-function) nil) + (set (make-local-variable 'sclang-browser-return-method) nil) + (set (make-local-variable 'font-lock-defaults) nil) + (view-mode) + (set (make-local-variable 'minor-mode-overriding-map-alist) + (list (cons 'view-mode sclang-browser-mode-map))) + (set (make-local-variable 'view-no-disable-on-exit) t) + (run-hooks 'sclang-browser-mode-hook)) + +(defun sclang-browser-mode-setup () + (sclang-browser-mode) + (setq buffer-read-only nil)) + +(defun sclang-browser-mode-finish () + (toggle-read-only 1) + (setq view-return-to-alist + (list (cons (selected-window) sclang-browser-return-method))) + (run-hooks 'sclang-browser-show-hook)) + +(defun sclang-browser-quit () + (interactive) + (when (eq major-mode 'sclang-browser-mode) + (kill-buffer (current-buffer)))) + +(defun sclang-browser-make-link (link-text &optional link-data link-function) + (let ((map (make-sparse-keymap))) + (propertize link-text + 'mouse-face 'highlight + ;;'help-echo "mouse-2: follow link" + ;;'keymap map + 'sclang-browser-link (cons link-function link-data) + ;;'sclang-browser-link-data link-data + ;;'sclang-browser-link-function link-function))) + ))) + +(defun sclang-display-browser (buffer-name output-function) + "header: what to insert in the buffer + link-list: list of (link-text link-function link-data) + link-function: function with args (link-text link-data)" + (let ((temp-buffer-setup-hook '(sclang-browser-mode-setup)) + (temp-buffer-show-hook '(sclang-browser-mode-finish))) + (with-output-to-temp-buffer buffer-name + (with-current-buffer standard-output + ;; record return method + (setq sclang-browser-return-method + (cond ((special-display-p (buffer-name standard-output)) + ;; If the help output buffer is a special display buffer, + ;; don't say anything about how to get rid of it. + ;; First of all, the user will do that with the window + ;; manager, not with Emacs. + ;; Secondly, the buffer has not been displayed yet, + ;; so we don't know whether its frame will be selected. + (cons (selected-window) t)) + (display-buffer-reuse-frames + (cons (selected-window) 'quit-window)) + ((not (one-window-p t)) + (cons (selected-window) 'quit-window)) + (pop-up-windows + (cons (selected-window) t)) + (t + (list (selected-window) (window-buffer) + (window-start) (window-point))))) + (funcall output-function))))) + +(defmacro with-sclang-browser (buffer-name &rest body) + `(sclang-display-browser ,buffer-name (lambda () ,@body))) + +;; ===================================================================== +;; module setup +;; ===================================================================== + +(provide 'sclang-browser) + +;; EOF \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang-dev.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-dev.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang-dev.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-dev.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,49 @@ +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + + +(eval-when-compile + (require 'sclang-util) + (require 'sclang-interp) + ) + + + +(sclang-set-command-handler + 'openDevSource + (lambda (file) + ) + ) + +(defun sclang-edit-dev-source () + "Edit the help file at the development location." +; (sclang-document-name . (prSetTitle (buffer-name))) + (interactive) + (sclang-perform-command 'openDevSource (buffer-file-name)) + ) + +(provide 'sclang-dev) + +;(defun sclang-open-dev-source (file) +; "Open the help file at the development location." +; (if (sclang-html-file-p file) +; (html-mode) +; ;; (find-file file) +; ) +; (if ( sclang-sc-file-p file ) +; (sclang-mode) +; ) +; ) + diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang-document.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-document.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang-document.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-document.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,20 @@ +;; copyright 2003 stefan kersten +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + +(provide 'sclang-document) + +;; EOF \ No newline at end of file diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,71 @@ +;;; sclang.el --- IDE for working with the SuperCollider language +;; copyright 2003 stefan kersten +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + +;;; Code: +(defgroup sclang nil + "IDE for working with the SuperCollider language." + :group 'languages) + +(defgroup sclang-mode nil + "Major mode for working with SuperCollider source code." + :group 'sclang) + +(defgroup sclang-minor-mode nil + "Minor mode for working with SuperCollider source code." + :group 'sclang) + +(defgroup sclang-interface nil + "Interface to the SuperCollider process." + :group 'sclang) + +(defgroup sclang-programs nil + "Paths to programs used by sclang-mode." + :group 'sclang-interface) + +(defgroup sclang-options nil + "Options for the SuperCollider process." + :group 'sclang-interface) + +(defun sclang-customize () + "Customize sclang variables." + (interactive) + (customize-group 'sclang)) + +(eval-and-compile + (require 'cl)) + +(eval-and-compile + (let ((load-path + (if (and (boundp 'byte-compile-dest-file) + (stringp byte-compile-dest-file)) + (cons (file-name-directory byte-compile-dest-file) load-path) + load-path))) + (require 'sclang-util) + (require 'sclang-browser) + (require 'sclang-interp) + (require 'sclang-language) + (require 'sclang-document) + (require 'sclang-mode) + (require 'sclang-minor-mode) + (require 'sclang-help) + (require 'sclang-server) + (require 'sclang-widgets))) + +(provide 'sclang) + +;;; sclang.el ends here diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang-help.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-help.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang-help.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-help.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,661 @@ +;; copyright 2003 stefan kersten +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + +(eval-when-compile + (require 'cl) + (require 'font-lock)) + +;; (require 'w3m) ;; not needed during compilation +(require 'sclang-util) +(require 'sclang-interp) +(require 'sclang-language) +(require 'sclang-mode) +(require 'sclang-vars) +(require 'sclang-minor-mode) + +(defcustom sclang-help-directory "~/SuperCollider/Help" + "*Directory where the SuperCollider help files are kept. OBSOLETE." + :group 'sclang-interface + :version "21.3" + :type 'directory + :options '(:must-match)) + +(defcustom sclang-help-path (list sclang-system-help-dir + "~/.local/share/SuperCollider/Help") + "*List of directories where SuperCollider help files are kept." + :group 'sclang-interface + :version "21.4" + :type '(repeat directory)) + +(defconst sclang-extension-path (list sclang-system-extension-dir + "~/.local/share/SuperCollider/Extensions") + "List of SuperCollider extension directories.") + +(defcustom sclang-help-fill-column fill-column + "*Column beyond which automatic line-wrapping in RTF help files should happen." + :group 'sclang-interface + :version "21.3" + :type 'integer) + +(defcustom sclang-rtf-editor-program "ted" + "*Name of an RTF editor program used to edit SuperCollider help files." + :group 'sclang-programs + :version "21.3" + :type 'string) + +(defcustom sclang-html-editor-program "html" + "*Name of an HTML editor program used to edit SuperCollider help files." + :group 'sclang-programs + :version "21.3" + :type 'string) + +;; dynamically change certain html-tags when displaying in w3m-browser: + +(defcustom sclang-help-filters + '(("p\\.p\\([0-9]+\\)" . "#p\\1") + ("

\\(.*\\)

" . "
\\2
")) + "list of pairs of (regexp . filter) defining html-tags to be replaced by the function sclang-help-substitute-for-filters" + :group 'sclang-interface + :type '(repeat (cons (string :tag "match") (string :tag "replacement")))) + +(defun sclang-help-substitute-for-filters (&rest args) + "substitute various tags in SCs html-docs" + (mapcar #'(lambda (filter) + (let ((regexp (car filter)) + (to-string (cdr filter))) + (goto-char (point-min)) + (while (re-search-forward regexp nil t) + (replace-match to-string nil nil)))) + sclang-help-filters)) + +;; w3m's content-filtering system +(setq w3m-use-filter t) + +(eval-after-load "w3m-filter" + '(add-to-list 'w3m-filter-rules + ;; run on all files read by w3m... + '(".*" sclang-help-substitute-for-filters))) + + +(defvar sclang-help-topic-alist nil + "Alist mapping help topics to file names.") + +(defvar sclang-help-topic-history nil + "List of recently invoked help topics.") +;; (defvar sclang-help-topic-ring-length 32) +;; (defvar sclang-help-topic-ring (make-ring sclang-help-topic-ring-length)) + +(defconst sclang-special-help-topics + '(("/" . "division") + ("-" . "subtraction")) + "Alist of help topics with transcoded filenames.") + +(defvar sclang-help-file nil) +(defvar sclang-current-help-file nil) +(make-variable-buffer-local 'sclang-help-file) + +(defconst sclang-help-file-regexp + "\\(\\(\\(\\.help\\)?\\.\\(rtf\\|scd\\|html\\|htm\\)\\)\\|\\(\\.help\\.sc\\.html\\.htm\\)\\|\\.rtfd/TXT\\.rtf\\.html\\.htm\\)$" + "Regular expression matching help files.") + +;; ===================================================================== +;; utilities +;; ===================================================================== + +(defun sclang-get-help-file (topic) + (let ((topic (or (cdr (assoc topic sclang-special-help-topics)) topic))) + (cdr (assoc topic sclang-help-topic-alist)))) + +(defun sclang-get-help-topic (file) + (let ((topic (car (rassoc file sclang-help-topic-alist)))) + (or (car (rassoc topic sclang-special-help-topics)) topic))) + +(defun sclang-help-buffer-name (topic) + (sclang-make-buffer-name (concat "Help:" topic))) + +(defun sclang-rtf-file-p (file) + (let ((case-fold-search t)) + (string-match ".*\\.rtf$" file))) + +;; ========= ADDITION for HTML help files +(defun sclang-html-file-p (file) + (let ((case-fold-search t)) + (string-match ".*\\.html?$" file))) + +(defun sclang-sc-file-p (file) + (let ((case-fold-search t)) + (string-match ".*\\.sc$" file))) + +(defun sclang-scd-file-p (file) + (let ((case-fold-search t)) + (string-match ".*\\.scd$" file))) + +(defun sclang-help-file-p (file) + (string-match sclang-help-file-regexp file)) + +(defun sclang-help-topic-name (file) + (if (string-match sclang-help-file-regexp file) + (cons (file-name-nondirectory (replace-match "" nil nil file 1)) + file))) + +;; ===================================================================== +;; rtf parsing +;; ===================================================================== + +(defconst sclang-rtf-face-change-token "\0") + +(defun sclang-fill-rtf-syntax-table (table) + ;; character quote + (modify-syntax-entry ?\\ "/" table) + (modify-syntax-entry ?\" "." table) + (modify-syntax-entry ?\{ "(" table) + (modify-syntax-entry ?\} ")" table) + (modify-syntax-entry ?\( "." table) + (modify-syntax-entry ?\) "." table) + (modify-syntax-entry ?\[ "." table) + (modify-syntax-entry ?\] "." table) + table) + +(defvar sclang-rtf-syntax-table (sclang-fill-rtf-syntax-table (make-syntax-table)) + "Syntax table used for RTF parsing.") + +(defvar sclang-rtf-font-map '((Helvetica . variable-pitch) + (Helvetica-Bold . variable-pitch) + (Monaco . nil))) + +(defstruct sclang-rtf-state + output font-table font face pos) + +(macrolet ((rtf-p (pos) `(plist-get (text-properties-at ,pos) 'rtf-p))) + (defun sclang-rtf-p (pos) (rtf-p pos)) + (defun sclang-code-p (pos) (not (rtf-p pos)))) + +(defmacro with-sclang-rtf-state-output (state &rest body) + `(with-current-buffer (sclang-rtf-state-output ,state) + ,@body)) + +(defmacro sclang-rtf-state-add-font (state font-id font-name) + `(push (cons ,font-id (intern ,font-name)) (sclang-rtf-state-font-table ,state))) + +(defmacro sclang-rtf-state-apply (state) + (let ((pos (gensym)) + (font (gensym)) + (face (gensym))) + `(with-current-buffer (sclang-rtf-state-output ,state) + (let ((,pos (or (sclang-rtf-state-pos ,state) (point-min))) + (,font (cdr (assq + (cdr (assoc + (sclang-rtf-state-font ,state) + (sclang-rtf-state-font-table ,state))) + sclang-rtf-font-map))) + (,face (sclang-rtf-state-face ,state))) + (when (> (point) ,pos) + (if ,font + (add-text-properties + ,pos (point) + (list 'rtf-p t 'rtf-face (append (list ,font) ,face)))) + (setf (sclang-rtf-state-pos ,state) (point))))))) + +(defmacro sclang-rtf-state-set-font (state font) + `(progn + (sclang-rtf-state-apply ,state) + (setf (sclang-rtf-state-font ,state) ,font))) + +(defmacro sclang-rtf-state-push-face (state face) + (let ((list (gensym))) + `(let ((,list (sclang-rtf-state-face state))) + (sclang-rtf-state-apply ,state) + (unless (memq ,face ,list) + (setf (sclang-rtf-state-face ,state) + (append ,list (list ,face))))))) + +(defmacro sclang-rtf-state-pop-face (state face) + (let ((list (gensym))) + `(let* ((,list (sclang-rtf-state-face ,state))) + (sclang-rtf-state-apply ,state) + (setf (sclang-rtf-state-face ,state) (delq ,face ,list))))) + +(defun sclang-parse-rtf (state) + (while (not (eobp)) + (cond ((looking-at "{") + ;; container + (let ((beg (point))) + (with-syntax-table sclang-rtf-syntax-table + (forward-list 1)) + (save-excursion + (save-restriction + (narrow-to-region (1+ beg) (1- (point))) + (goto-char (point-min)) + (sclang-parse-rtf-container state) + (widen))))) + ((or (looking-at "\\\\\\([{}\\\n]\\)") + (looking-at "\\\\\\([^\\ \n]+\\) ?")) + ;; control + (let ((end (match-end 0))) + (sclang-parse-rtf-control state (match-string 1)) + (goto-char end))) + ((looking-at "\\([^{\\\n]+\\)") + ;; normal text + (let ((end (match-end 0)) + (match (match-string 1))) + (with-sclang-rtf-state-output state (insert match)) + (goto-char end))) + (t + ;; never reached (?) + (forward-char 1))))) + +(defun sclang-parse-rtf-container (state) + (cond ((looking-at "\\\\rtf1") ; document + (goto-char (match-end 0)) + (sclang-parse-rtf state)) + ((looking-at "\\\\fonttbl") ; font table + (goto-char (match-end 0)) + (while (looking-at "\\\\\\(f[0-9]+\\)[^ ]* \\([^;]*\\);[^\\]*") + (sclang-rtf-state-add-font state (match-string 1) (match-string 2)) + (goto-char (match-end 0)))) + ((looking-at "{\\\\NeXTGraphic \\([^\\]+\\.[a-z]+\\)") ; inline graphic + (let* ((file (match-string 1)) + (image (and file (create-image (expand-file-name file))))) + (with-sclang-rtf-state-output + state + (if image + (insert-image image) + (sclang-rtf-state-push-face state 'italic) + (insert file) + (sclang-rtf-state-pop-face state 'italic))))) + )) + +(defun sclang-parse-rtf-control (state ctrl) + (let ((char (aref ctrl 0))) + (cond ((memq char '(?{ ?} ?\\)) + (with-sclang-rtf-state-output state (insert char))) + ((or (eq char ?\n) + (string= ctrl "par")) + (sclang-rtf-state-apply state) + (with-sclang-rtf-state-output + state + (when (sclang-rtf-p (line-beginning-position)) + (fill-region (line-beginning-position) (line-end-position) + t t)) + (insert ?\n))) + ((string= ctrl "tab") + (with-sclang-rtf-state-output state (insert ?\t))) + ((string= ctrl "b") + (sclang-rtf-state-push-face state 'bold)) + ((string= ctrl "b0") + (sclang-rtf-state-pop-face state 'bold)) + ((string-match "^f[0-9]+$" ctrl) + (sclang-rtf-state-set-font state ctrl)) + ))) + +(defun sclang-convert-rtf-buffer (output) + (let ((case-fold-search nil) + (fill-column sclang-help-fill-column)) + (save-excursion + (goto-char (point-min)) + (when (looking-at "{\\\\rtf1") + (let ((state (make-sclang-rtf-state))) + (setf (sclang-rtf-state-output state) output) + (sclang-parse-rtf state) + (sclang-rtf-state-apply state)))))) + +;; ===================================================================== +;; help mode +;; ===================================================================== + +(defun sclang-fill-help-syntax-table (table) + ;; make ?- be part of symbols for selection and sclang-symbol-at-point + (modify-syntax-entry ?- "_" table)) + +(defun sclang-fill-help-mode-map (map) + (define-key map "\C-c}" 'bury-buffer) + (define-key map "\C-c\C-v" 'sclang-edit-help-file)) + +(defmacro sclang-help-mode-limit-point-to-code (&rest body) + (let ((min (gensym)) + (max (gensym)) + (res (gensym))) + `(if (and (sclang-code-p (point)) + (not (or (bobp) (eobp))) + (sclang-code-p (1- (point))) + (sclang-code-p (1+ (point)))) + (let ((,min (previous-single-property-change (point) 'rtf-p (current-buffer) (point-min))) + (,max (next-single-property-change (point) 'rtf-p (current-buffer) (point-max)))) + (let ((,res (progn ,@body))) + (cond ((< (point) ,min) (goto-char ,min) nil) + ((> (point) ,max) (goto-char ,max) nil) + (t ,res))))))) + +(defun sclang-help-mode-beginning-of-defun (&optional arg) + (interactive "p") + (sclang-help-mode-limit-point-to-code (sclang-beginning-of-defun arg))) + +(defun sclang-help-mode-end-of-defun (&optional arg) + (interactive "p") + (sclang-help-mode-limit-point-to-code (sclang-end-of-defun arg))) + +(defun sclang-help-mode-fontify-region (start end loudly) + (flet ((fontify-code + (start end loudly) + (funcall 'font-lock-default-fontify-region start end loudly)) + (fontify-non-code + (start end loudly) + (while (< start end) + (let ((value (plist-get (text-properties-at start) 'rtf-face)) + (end (next-single-property-change start 'rtf-face (current-buffer) end))) + (add-text-properties start end (list 'face (append '(variable-pitch) (list value)))) + (setq start end))))) + (let ((modified (buffer-modified-p)) (buffer-undo-list t) + (inhibit-read-only t) (inhibit-point-motion-hooks t) + (inhibit-modification-hooks t) + deactivate-mark buffer-file-name buffer-file-truename + (pos start)) + (unwind-protect + (while (< pos end) + (let ((end (next-single-property-change pos 'rtf-p (current-buffer) end))) + (if (sclang-rtf-p pos) + (fontify-non-code pos end loudly) + (fontify-code pos end loudly)) + (setq pos end))) + (when (and (not modified) (buffer-modified-p)) + (set-buffer-modified-p nil)))))) + + +(defun sclang-help-mode-indent-line () + (if (sclang-code-p (point)) + (sclang-indent-line) + (insert "\t"))) + +(define-derived-mode sclang-help-mode sclang-mode "SCLangHelp" + "Major mode for displaying SuperCollider help files. +\\{sclang-help-mode-map}" + (let ((file (or (buffer-file-name) + (and (boundp 'sclang-current-help-file) + sclang-current-help-file)))) + (when file + (set-visited-file-name nil) + (setq buffer-auto-save-file-name nil) + (save-excursion + (when (sclang-rtf-file-p file) + (let ((tmp-buffer (generate-new-buffer " *RTF*")) + (modified-p (buffer-modified-p))) + (unwind-protect + (progn + (sclang-convert-rtf-buffer tmp-buffer) + (toggle-read-only 0) + (erase-buffer) + (insert-buffer-substring tmp-buffer)) + (and (buffer-modified-p) (not modified-p) (set-buffer-modified-p nil)) + (kill-buffer tmp-buffer)))))) + (set (make-local-variable 'sclang-help-file) file) + (setq font-lock-defaults + (append font-lock-defaults + '((font-lock-fontify-region-function . sclang-help-mode-fontify-region)))) + (set (make-local-variable 'beginning-of-defun-function) 'sclang-help-mode-beginning-of-defun) + (set (make-local-variable 'indent-line-function) 'sclang-help-mode-indent-line) + )) + +;; ===================================================================== +;; help file access +;; ===================================================================== + +(defun sclang-skip-help-directory-p (path) + "Answer t if PATH should be skipped during help file indexing." + (let ((directory (file-name-nondirectory path))) + (reduce (lambda (a b) (or a b)) + (mapcar (lambda (regexp) (string-match regexp directory)) + '("^\.$" "^\.\.$" "^CVS$" "^\.svn$" "^_darcs$"))))) + +(defun sclang-filter-help-directories (list) + "Remove paths to be skipped from LIST of directories." + (remove-if (lambda (x) + (or (not (file-directory-p x)) + (sclang-skip-help-directory-p x))) + list)) + +(defun sclang-directory-files-save (directory &optional full match nosort) + "Return a list of names of files in DIRECTORY, or nil on error." + (condition-case nil + (directory-files directory full match nosort) + (error nil))) + +;; (defun sclang-extension-help-directories () +;; "Build a list of help directories for extensions." +;; (flet ((flatten (seq) +;; (if (null seq) +;; seq +;; (if (listp seq) +;; (reduce 'append (mapcar #'flatten seq)) +;; (list seq))))) +;; (flatten +;; (mapcar +;; (lambda (dir) +;; (mapcar +;; (lambda (dir) +;; (remove-if-not +;; 'file-directory-p +;; (sclang-directory-files-save dir t "^[Hh][Ee][Ll][Pp]$" t))) +;; (sclang-filter-help-directories (sclang-directory-files-save dir t)))) +;; sclang-extension-path)))) + +;; (defun sclang-help-directories () +;; "Answer list of help directories to be indexed." +;; (append sclang-help-path (sclang-extension-help-directories))) + +(defun sclang-help-directories () + "Answer list of help directories to be indexed." + (append sclang-help-path sclang-extension-path)) + +(defun sclang-make-help-topic-alist (dirs result) + "Build a help topic alist from directories in DIRS, with initial RESULT." + (if dirs + (let* ((files (sclang-directory-files-save (car dirs) t)) + (topics (remove-if 'null (mapcar 'sclang-help-topic-name files))) + (new-dirs (sclang-filter-help-directories files))) + (sclang-make-help-topic-alist + (append new-dirs (cdr dirs)) + (append topics result))) + (sort result (lambda (a b) (string< (car a) (car b)))))) + +(defun sclang-index-help-topics () + "Build an index of help topics searching in the various help file locations." + (interactive) + (setq sclang-help-topic-alist nil) + (let ((case-fold-search nil) + (max-specpdl-size 10000) + (max-lisp-eval-depth 10000)) + (sclang-message "Indexing help topics ...") + (setq sclang-help-topic-alist + (sclang-make-help-topic-alist (sclang-help-directories) nil)) + (sclang-message "Indexing help topics ... Done"))) + +(defun sclang-edit-html-help-file () + "Edit the help file associated with the current buffer. +Switches w3m to edit mode (actually HTML mode)." + (interactive) + (w3m-edit-current-url) + ) + +(defun sclang-edit-help-code () + "Edit the help file to make code variations. +Switches to text mode with sclang-minor-mode." + (interactive) + (w3m-copy-buffer) +;; (text-mode) + (sclang-mode) + (toggle-read-only) + (rename-buffer "*SC_Help:CodeEdit*") + ) + + +(defun sclang-edit-help-file () + "Edit the help file associated with the current buffer. +Either visit file internally (.sc) or start external editor (.rtf)." + (interactive) + (if (and (boundp 'sclang-help-file) sclang-help-file) + (let ((file sclang-help-file)) + (if (file-exists-p file) + (if (sclang-rtf-file-p file) + (start-process (sclang-make-buffer-name (format "HelpEditor:%s" file)) + nil sclang-rtf-editor-program file) + (find-file file)) + (if (sclang-html-file-p file) + (w3m-edit-current-url) + ;; (find-file file) + ) + (sclang-message "Help file not found"))) + (sclang-message "Buffer has no associated help file"))) + +(defun sclang-help-topic-at-point () + "Answer the help topic at point, or nil if not found." + (save-excursion + (with-syntax-table sclang-help-mode-syntax-table + (let (beg end) + (skip-syntax-backward "w_") + (setq beg (point)) + (skip-syntax-forward "w_") + (setq end (point)) + (goto-char beg) + (car (assoc (buffer-substring-no-properties beg end) + sclang-help-topic-alist)))))) + +(defun sclang-goto-help-browser () + "Switch to the *w3m* buffer to browse help files" + (interactive) + (let* ((buffer-name "*w3m*") + (buffer (get-buffer buffer-name))) + (if buffer + (switch-to-buffer buffer) + ;; else + (let* ((buffer-name "*SC_Help:w3m*") + (buffer2 (get-buffer buffer-name))) + (if buffer2 + (switch-to-buffer buffer2) + ;; else + (sclang-find-help "Help") + ) + ) + ) + (if buffer + (with-current-buffer buffer + (rename-buffer "*SC_Help:w3m*") + (sclang-help-minor-mode) + ;;(setq buffer-read-only false) + ) + ) +; (if buffer +; +; ) + ) + ) + +(defun sclang-find-help (topic) + (interactive + (list + (let ((topic (or (and mark-active (buffer-substring-no-properties (region-beginning) (region-end))) + (sclang-help-topic-at-point) + "Help"))) + (completing-read (format "Help topic%s: " (if (sclang-get-help-file topic) + (format " (default %s)" topic) "")) + sclang-help-topic-alist nil t nil 'sclang-help-topic-history topic)))) + (let ((file (sclang-get-help-file topic))) + (if file + (if (file-exists-p file) + (let* ((buffer-name (sclang-help-buffer-name topic)) + (buffer (get-buffer buffer-name))) + (unless buffer + (if (sclang-html-file-p file) + (w3m-find-file file) + ;; (sclang-goto-help-browser) + ;; not a sclang-html file + (setq buffer (get-buffer-create buffer-name)) + (with-current-buffer buffer + (insert-file-contents file) + (let ((sclang-current-help-file file) + (default-directory (file-name-directory file))) + (sclang-help-mode)) + (set-buffer-modified-p nil))) + (switch-to-buffer buffer)) + (if (sclang-html-file-p file) + (sclang-goto-help-browser)) + ) + (sclang-message "Help file not found") nil) + (sclang-message "No help for \"%s\"" topic) nil))) + + +(defun sclang-open-help-gui () + "Open SCDoc Help Browser" + (interactive) + (sclang-eval-string (sclang-format "Help.gui")) + ) + +(defvar sclang-scdoc-topics (make-hash-table :size 16385) + "List of all scdoc topics.") + +(sclang-set-command-handler + 'helpSymbols + (lambda (list-of-symbols) + (mapcar (lambda (arg) + (puthash arg nil sclang-scdoc-topics)) + list-of-symbols) + )) + +(defun sclang-find-help-in-gui (topic) + "Search for topic in SCDoc Help Browser" + (interactive + (list + (let ((topic (sclang-symbol-at-point))) + (completing-read (format "Help topic%s: " (if topic + (format " (default %s)" topic) + "")) + sclang-scdoc-topics nil nil nil 'sclang-help-topic-history topic))) + ) + (if topic + (sclang-eval-string (sclang-format "HelpBrowser.openHelpFor(%o)" topic)) + (sclang-eval-string (sclang-format "Help.gui")) + ) + ) + + +;; ===================================================================== +;; module setup +;; ===================================================================== + +(add-hook 'sclang-library-startup-hook + (lambda () + (sclang-perform-command 'helpSymbols) + (condition-case nil + (sclang-index-help-topics) + (error nil)))) + +(add-hook 'sclang-library-shutdown-hook + (lambda () + (clrhash sclang-scdoc-topics))) + +(add-to-list 'auto-mode-alist '("\\.rtf$" . sclang-help-mode)) +;; ========= ADDITION for HTML help files?? ============ +;; (add-to-list 'auto-mode-alist '("\\.html$" . sclang-help-mode)) +;; (setq mm-text-html-renderer 'w3m) +;; (setq mm-inline-text-html-with-images t) +;; (setq mm-inline-text-html-with-w3m-keymap nil) +;; ===================================================== +(sclang-fill-help-syntax-table sclang-help-mode-syntax-table) +(sclang-fill-help-mode-map sclang-help-mode-map) + +(provide 'sclang-help) + +;; EOF diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang-interp.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-interp.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang-interp.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-interp.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,748 @@ +;; copyright 2003-2005 stefan kersten +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + +(eval-when-compile + (require 'cl) + (require 'sclang-util) + (require 'compile) + ) + +;; ===================================================================== +;; post buffer access +;; ===================================================================== + +;; FIXME: everything will fail when renaming the post buffer! + +(defconst sclang-post-buffer (sclang-make-buffer-name "PostBuffer") + "Name of the SuperCollider process output buffer.") + +(defconst sclang-bullet-latin-1 (string-to-char (decode-coding-string "\xa5" 'utf-8)) + "Character for highlighting errors (latin-1).") + +(defconst sclang-bullet-utf-8 (string-to-char (decode-coding-string "\xe2\x80\xa2" 'utf-8)) + "Character for highlighting errors (utf-8).") + +(defconst sclang-parse-error-regexp + "^\\(WARNING\\|ERROR\\): .*\n[\t ]*in file '\\([^']\+\\)'\n[\t ]*line \\([0-9]\+\\) char \\([0-9]\+\\)" + "Regular expression matching parse errors during library compilation.") + +(defcustom sclang-max-post-buffer-size 0 + "*Maximum number of characters to insert in post buffer. +Zero means no limit." + :group 'sclang-interface + :version "21.3" + :type 'integer) + +(defcustom sclang-auto-scroll-post-buffer nil + "*Automatically scroll post buffer on output regardless of point position. +Default behavior is to only scroll when point is not at end of buffer." + :group 'sclang-interface + :version "21.3" + :type 'boolean) + +(defun sclang-get-post-buffer () + (get-buffer-create sclang-post-buffer)) + +(defmacro with-sclang-post-buffer (&rest body) + `(with-current-buffer (sclang-get-post-buffer) + ,@body)) + +;; (defun sclang-post-string (string) +;; (with-sclang-post-buffer +;; (let ((eobp (mapcar (lambda (w) +;; (cons w (= (window-point w) (point-max)))) +;; (get-buffer-window-list (current-buffer) nil t)))) +;; (save-excursion +;; ;; insert STRING into process buffer +;; (goto-char (point-max)) +;; (insert string)) +;; (dolist (assoc eobp) +;; (when (cdr assoc) +;; (save-selected-window +;; (let ((window (car assoc))) +;; (select-window window) +;; (set-window-point window (point-max)) +;; (recenter -1)))))))) + +;; (defun sclang-post-string (string &optional proc) +;; (let* ((buffer (process-buffer proc)) +;; (window (display-buffer buffer))) +;; (with-current-buffer buffer +;; (let ((moving (= (point) (process-mark proc)))) +;; (save-excursion +;; ;; Insert the text, advancing the process marker. +;; (goto-char (process-mark proc)) +;; (insert string) +;; (set-marker (process-mark proc) (point))) +;; (when moving +;; (goto-char (process-mark proc)) +;; (set-window-point window (process-mark proc))))))) + +(defun sclang-show-post-buffer (&optional eob-p) + "Show SuperCollider process buffer. +If EOB-P is non-nil, positions cursor at end of buffer." + (interactive "P") + (with-sclang-post-buffer + (let ((window (display-buffer (current-buffer)))) + (when eob-p + (goto-char (point-max)) + (save-selected-window + (set-window-point window (point-max))))))) + +(defun sclang-clear-post-buffer () + "Clear the output buffer." + (interactive) + (with-sclang-post-buffer (erase-buffer))) + +(defun sclang-init-post-buffer () + "Initialize post buffer." + (get-buffer-create sclang-post-buffer) + (with-sclang-post-buffer + ;; setup sclang mode + (sclang-mode) + (set (make-local-variable 'font-lock-fontify-region-function) + (lambda (&rest args))) + ;; setup compilation mode + (compilation-minor-mode) + (set (make-variable-buffer-local 'compilation-error-screen-columns) nil) + (set (make-variable-buffer-local 'compilation-error-regexp-alist) + (cons (list sclang-parse-error-regexp 2 3 4) compilation-error-regexp-alist)) + (set (make-variable-buffer-local 'compilation-parse-errors-function) + (lambda (limit-search find-at-least) + (compilation-parse-errors limit-search find-at-least))) + (set (make-variable-buffer-local 'compilation-parse-errors-filename-function) + (lambda (file-name) + file-name))) + (sclang-clear-post-buffer) + (sclang-show-post-buffer)) + +;; ===================================================================== +;; interpreter interface +;; ===================================================================== + +(defconst sclang-process "SCLang" + "Name of the SuperCollider interpreter subprocess.") + +(defcustom sclang-program "sclang" + "*Name of the SuperCollider interpreter program." + :group 'sclang-programs + :version "21.3" + :type 'string) + +(defcustom sclang-runtime-directory "" + "*Path to the SuperCollider runtime directory." + :group 'sclang-options + :version "21.3" + :type 'directory + :options '(:must-match)) + +(defcustom sclang-library-configuration-file "" + "*Path of the library configuration file." + :group 'sclang-options + :version "21.3" + :type 'file + :options '(:must-match)) + +(defcustom sclang-heap-size "" + "*Initial heap size." + :group 'sclang-options + :version "21.3" + :type 'string) + +(defcustom sclang-heap-growth "" + "*Heap growth." + :group 'sclang-options + :version "21.3" + :type 'string) + +(defcustom sclang-udp-port -1 + "*UDP listening port." + :group 'sclang-options + :version "21.3" + :type 'integer) + +(defcustom sclang-main-run nil + "*Call Main.run on startup." + :group 'sclang-options + :version "21.3" + :type 'boolean) + +(defcustom sclang-main-stop nil + "*Call Main.stop on shutdown." + :group 'sclang-options + :version "21.3" + :type 'boolean) + +;; ===================================================================== +;; helper functions +;; ===================================================================== + +(defun sclang-get-process () + (get-process sclang-process)) + +;; ===================================================================== +;; library startup/shutdown +;; ===================================================================== + +(defvar sclang-library-initialized-p nil) + +(defcustom sclang-library-startup-hook nil + "*Hook run after initialization of the SCLang process." + :group 'sclang-interface + :type 'hook) + +(defcustom sclang-library-shutdown-hook nil + "*Hook run before deletion of the SCLang process." + :group 'sclang-interface + :type 'hook) + +;; library initialization works like this: +;; +;; * emacs starts sclang with SCLANG_COMMAND_FIFO set in the environment +;; * sclang opens fifo for communication with emacs during class tree +;; initialization +;; * sclang sends '_init' command +;; * '_init' command handler calls sclang-on-library-startup to complete +;; initialization + +(defun sclang-library-initialized-p () + (and (sclang-get-process) + sclang-library-initialized-p)) + +(defun sclang-on-library-startup () + (sclang-message "Initializing library...") + (setq sclang-library-initialized-p t) + (run-hooks 'sclang-library-startup-hook) + (sclang-message "Initializing library...done")) + +(defun sclang-on-library-shutdown () + (when sclang-library-initialized-p + (run-hooks 'sclang-library-shutdown-hook) + (setq sclang-library-initialized-p nil) + (sclang-message "Shutting down library..."))) + +;; ===================================================================== +;; process hooks +;; ===================================================================== + +(defun sclang-process-sentinel (proc msg) + (with-sclang-post-buffer + (goto-char (point-max)) + (insert + (if (and (bolp) (eolp)) "\n" "\n\n") + (format "*** %s %s ***" proc (substring msg 0 -1)) + "\n\n")) + (when (memq (process-status proc) '(exit signal)) + (sclang-on-library-shutdown) + (sclang-stop-command-process))) + +(defun sclang-process-filter (process string) + (let ((buffer (process-buffer process))) + (with-current-buffer buffer + (when (and (> sclang-max-post-buffer-size 0) + (> (buffer-size) sclang-max-post-buffer-size)) + (erase-buffer)) + (let ((move-point (or sclang-auto-scroll-post-buffer + (= (point) (process-mark process))))) + (save-excursion + ;; replace mac-roman bullet with unicode character + (subst-char-in-string sclang-bullet-latin-1 sclang-bullet-utf-8 string t) + ;; insert the text, advancing the process marker. + (goto-char (process-mark process)) + (insert string) + (set-marker (process-mark process) (point))) + (when move-point + (goto-char (process-mark process)) + (walk-windows + (lambda (window) + (when (eq buffer (window-buffer window)) + (set-window-point window (process-mark process)))) + nil t)))))) + +;; ===================================================================== +;; process startup/shutdown +;; ===================================================================== + +(defun sclang-memory-option-p (string) + (let ((case-fold-search nil)) + (string-match "^[1-9][0-9]*[km]?$" string))) + +(defun sclang-port-option-p (number) + (and (>= number 0) (<= number #XFFFF))) + +(defun sclang-make-options () + (let ((default-directory "") + (res ())) + (flet ((append-option + (option &optional value) + (setq res (append res (list option) (and value (list value)))))) + (if (file-directory-p sclang-runtime-directory) + (append-option "-d" (expand-file-name sclang-runtime-directory))) + (if (file-exists-p sclang-library-configuration-file) + (append-option "-l" (expand-file-name sclang-library-configuration-file))) + (if (sclang-memory-option-p sclang-heap-size) + (append-option "-m" sclang-heap-size)) + (if (sclang-memory-option-p sclang-heap-growth) + (append-option "-g" sclang-heap-growth)) + (if (sclang-port-option-p sclang-udp-port) + (append-option "-u" (number-to-string sclang-udp-port))) + (if sclang-main-run + (append-option "-r")) + (if sclang-main-stop + (append-option "-s")) + (append-option "-iscel") + res))) + +(defun sclang-start () + "Start SuperCollider process." + (interactive) + (sclang-stop) + (sclang-on-library-shutdown) + (sit-for 1) + (sclang-init-post-buffer) + (sclang-start-command-process) + (let ((process-connection-type nil)) + (let ((proc (apply 'start-process + sclang-process sclang-post-buffer + sclang-program (sclang-make-options)))) + (set-process-sentinel proc 'sclang-process-sentinel) + (set-process-filter proc 'sclang-process-filter) + (set-process-coding-system proc 'mule-utf-8 'mule-utf-8) + (set-process-query-on-exit-flag proc nil) + proc))) + +(defun sclang-kill () + "Kill SuperCollider process." + (interactive) + (when (sclang-get-process) + (kill-process sclang-process) + (delete-process sclang-process))) + +(defun sclang-stop () + "Stop SuperCollider process." + (interactive) + (when (sclang-get-process) + (process-send-eof sclang-process) + (let ((tries 4) + (i 0)) + (while (and (sclang-get-process) + (< i tries)) + (incf i) + (sit-for 0.5)))) + (sclang-kill) + (sclang-stop-command-process)) + +(defun sclang-recompile () + "Recompile class library." + (interactive) + (when (sclang-get-process) + (process-send-string sclang-process "\x18") + )) + +;; ===================================================================== +;; command process +;; ===================================================================== + +(defcustom sclang-mkfifo-program "mkfifo" + "*Name of the \"mkfifo\" program. + +Change this if \"mkfifo\" has a non-standard name or location." + :group 'sclang-programs + :type 'string) + +(defcustom sclang-cat-program "cat" + "*Name of the \"cat\" program. + +Change this if \"cat\" has a non-standard name or location." + :group 'sclang-programs + :type 'string) + +(defconst sclang-command-process "SCLang Command" + "Subprocess for receiving command results from sclang.") + +(defconst sclang-cmd-helper-proc "SCLang Command Helper" + "Dummy subprocess that will keep the command fifo open for writing + so reading does not fail automatically when sclang closes its own + writing end of the fifo") + +(defvar sclang-command-fifo nil + "FIFO for communicating with the subprocess.") + +(defun sclang-delete-command-fifo () + (and sclang-command-fifo + (file-exists-p sclang-command-fifo) + (delete-file sclang-command-fifo))) + +(defun sclang-release-command-fifo () + (sclang-delete-command-fifo) + (setq sclang-command-fifo nil)) + +(defun sclang-create-command-fifo () + (setq sclang-command-fifo (make-temp-name + (expand-file-name + "sclang-command-fifo." temporary-file-directory))) + (sclang-delete-command-fifo) + (let ((res (call-process sclang-mkfifo-program + nil t t + sclang-command-fifo))) + (unless (eq 0 res) + (message "SCLang: Couldn't create command fifo") + (setq sclang-command-fifo nil)))) + +(defun sclang-start-command-process () + (sclang-create-command-fifo) + (when sclang-command-fifo + ;; start the dummy process to keep the fifo open + (let ((process-connection-type nil)) + (let ((proc (start-process-shell-command + sclang-cmd-helper-proc nil + (concat sclang-cat-program " > " sclang-command-fifo)))) + (set-process-query-on-exit-flag proc nil))) + ;; sclang gets the fifo path via the environment + (setenv "SCLANG_COMMAND_FIFO" sclang-command-fifo) + (let ((process-connection-type nil)) + (let ((proc (start-process + sclang-command-process nil + sclang-cat-program sclang-command-fifo))) + (set-process-filter proc 'sclang-command-process-filter) + ;; this is important. use a unibyte stream without eol + ;; conversion for communication. + (set-process-coding-system proc 'no-conversion 'no-conversion) + (set-process-query-on-exit-flag proc nil))) + (unless (get-process sclang-command-process) + (message "SCLang: Couldn't start command process")))) + +(defun sclang-stop-command-process () + (when (get-process sclang-cmd-helper-proc) + (kill-process sclang-cmd-helper-proc) + (delete-process sclang-cmd-helper-proc)) + ;; the real command process should now quit automatically, + ;; since there is no more writers to the command fifo + (sclang-release-command-fifo)) + +(defvar sclang-command-process-previous nil + "Unprocessed command process output.") + +(defun sclang-command-process-filter (proc string) + (when sclang-command-process-previous + (setq string (concat sclang-command-process-previous string))) + (let (end) + (while (and (> (length string) 3) + (>= (length string) + (setq end (+ 4 (sclang-string-to-int32 string))))) + (sclang-handle-command-result (car (read-from-string string 4 end))) + (setq string (substring string end)))) + (setq sclang-command-process-previous string)) + +;; ===================================================================== +;; command interface +;; ===================================================================== + +;; symbol property: sclang-command-handler + +(defun sclang-set-command-handler (symbol function) + (put symbol 'sclang-command-handler function)) + +(defun sclang-perform-command (symbol &rest args) + (sclang-eval-string (sclang-format + "Emacs.lispPerformCommand(%o, %o, true)" + symbol args))) + +(defun sclang-perform-command-no-result (symbol &rest args) + (sclang-eval-string (sclang-format + "Emacs.lispPerformCommand(%o, %o, false)" + symbol args))) + +(defun sclang-default-command-handler (fun arg) + "Default command handler. +Displays short message on error." + (condition-case nil + (funcall fun arg) + (error (sclang-message "Error in command handler") nil))) + +(defun sclang-debug-command-handler (fun arg) + "Debugging command handler. +Enters debugger on error." + (let ((debug-on-error t) + (debug-on-signal t)) + (funcall fun arg))) + +(defvar sclang-command-handler 'sclang-default-command-handler + "Function called when handling command result.") + +(defun sclang-toggle-debug-command-handler (&optional arg) + "Toggle debugging of command handler. +With arg, activate debugging iff arg is positive." + (interactive "P") + (setq sclang-command-handler + (if (or (and arg (> arg 0)) + (eq sclang-command-handler 'sclang-debug-command-handler)) + 'sclang-default-command-handler + 'sclang-default-command-handler)) + (sclang-message "Command handler debugging %s." + (if (eq sclang-command-handler 'sclang-debug-command-handler) + "enabled" + "disabled"))) + +(defun sclang-handle-command-result (list) + (condition-case nil + (let ((fun (get (nth 0 list) 'sclang-command-handler)) + (arg (nth 1 list)) + (id (nth 2 list))) + (when (functionp fun) + (let ((res (funcall sclang-command-handler fun arg))) + (when id + (sclang-eval-string + (sclang-format "Emacs.lispHandleCommandResult(%o, %o)" id res)))))) + (error nil))) + +;; ===================================================================== +;; code evaluation +;; ===================================================================== + +(defconst sclang-token-interpret-cmd-line (char-to-string #X1b)) +(defconst sclang-token-interpret-print-cmd-line (char-to-string #X0c)) + +(defcustom sclang-eval-line-forward t + "*If non-nil `sclang-eval-line' advances to the next line." + :group 'sclang-interface + :type 'boolean) + +(defun sclang-send-string (token string &optional force) + (let ((proc (sclang-get-process))) + (when (and proc (or (sclang-library-initialized-p) force)) + (process-send-string proc (concat string token)) + string))) + +(defun sclang-eval-string (string &optional print-p) + "Send STRING to the sclang process for evaluation and print the result +if PRINT-P is non-nil. Return STRING if successful, otherwise nil." + (sclang-send-string + (if print-p sclang-token-interpret-print-cmd-line sclang-token-interpret-cmd-line) + string)) + +(defun sclang-eval-expression (string &optional silent-p) + "Execute STRING as SuperCollider code." + (interactive "sEval: \nP") + (sclang-eval-string string (not silent-p))) + +(defun sclang-eval-line (&optional silent-p) + "Execute the current line as SuperCollider code." + (interactive "P") + (let ((string (sclang-line-at-point))) + (when string + (sclang-eval-string string (not silent-p))) + (and sclang-eval-line-forward + (/= (line-end-position) (point-max)) + (forward-line 1)) + string)) + +(defun sclang-eval-region (&optional silent-p) + "Execute the region as SuperCollider code." + (interactive "P") + (sclang-eval-string + (buffer-substring-no-properties (region-beginning) (region-end)) + (not silent-p))) + +(defun sclang-eval-region-or-line (&optional silent-p) + (interactive "P") + (if (and transient-mark-mode mark-active) + (sclang-eval-region silent-p) + (sclang-eval-line silent-p))) + +(defun sclang-eval-defun (&optional silent-p) + (interactive "P") + (let ((string (sclang-defun-at-point))) + (when (and string (string-match "^(" string)) + (sclang-eval-string string (not silent-p)) + string))) + +(defun sclang-eval-document (&optional silent-p) + "Execute the whole document as SuperCollider code." + (interactive "P") + (save-excursion + (mark-whole-buffer) + (sclang-eval-string + (buffer-substring-no-properties (region-beginning) (region-end)) + (not silent-p)))) + +(defvar sclang-eval-results nil + "Save results of sync SCLang evaluation.") + +(sclang-set-command-handler + 'evalSCLang + (lambda (arg) (push arg sclang-eval-results))) + +(defun sclang-eval-sync (string) + "Eval STRING in sclang and return result as a lisp value." + (let ((proc (get-process sclang-command-process))) + (if (and (processp proc) (eq (process-status proc) 'run)) + (let ((time (current-time)) (tick 10000) elt) + (sclang-perform-command 'evalSCLang string time) + (while (and (> (decf tick) 0) + (not (setq elt (find time sclang-eval-results + :key #'car :test #'equal)))) + (accept-process-output proc 0 100)) + (if elt + (prog1 (if (eq (nth 1 elt) 'ok) + (nth 2 elt) + (setq sclang-eval-results (delq elt sclang-eval-results)) + (signal 'sclang-error (nth 2 elt))) + (setq sclang-eval-results (delq elt sclang-eval-results))) + (error "SCLang sync eval timeout"))) + (error "SCLang Command process not running")))) + +;; ===================================================================== +;; searching +;; ===================================================================== + +;; (defun sclang-help-file-paths () +;; "Return a list of help file paths." + + +;; (defun sclang-grep-help-files () +;; (interactive) +;; (let ((sclang-grep-prompt "Search help files: ") +;; (sclang-grep-files (mapcar 'cdr sclang-help-topic-alist))) +;; (call-interactively 'sclang-grep-files))) + +;; (defvar sclang-grep-history nil) + +;; (defcustom sclang-grep-case-fold-search t +;; "*Non-nil if sclang-grep-files should ignore case." +;; :group 'sclang-interface +;; :version "21.4" +;; :type 'boolean) + +;; (defvar sclang-grep-files nil) +;; (defvar sclang-grep-prompt "Grep: ") + +;; (defun sclang-grep-files (regexp) +;; (interactive +;; (let ((grep-default (or (when current-prefix-arg (sclang-symbol-at-point)) +;; (car sclang-grep-history)))) +;; (list (read-from-minibuffer sclang-grep-prompt +;; grep-default +;; nil nil 'sclang-grep-history)))) +;; (grep-compute-defaults) +;; (grep (concat grep-program +;; " -n" +;; (and sclang-grep-case-fold-search " -i") +;; " -e" regexp +;; " " (mapconcat 'shell-quote-argument sclang-grep-files " ")))) + +;; ===================================================================== +;; workspace +;; ===================================================================== + +(defcustom sclang-show-workspace-on-startup t + "*If non-nil show the workspace buffer on library startup." + :group 'sclang-interface + :type 'boolean) + +(defconst sclang-workspace-buffer (sclang-make-buffer-name "Workspace")) + +(defun sclang-fill-workspace-mode-map (map) + (define-key map "\C-c}" 'bury-buffer)) + +(defun sclang-switch-to-workspace () + (interactive) + (let ((buffer (get-buffer sclang-workspace-buffer))) + (unless buffer + (setq buffer (get-buffer-create sclang-workspace-buffer)) + (with-current-buffer buffer + (sclang-mode) + (let ((map (make-sparse-keymap))) + (set-keymap-parent map sclang-mode-map) + (sclang-fill-workspace-mode-map map) + (use-local-map map)) + (let ((line (concat "// " (make-string 69 ?=) "\n"))) + (insert line) + (insert "// SuperCollider Workspace\n") + (insert line) +;; (insert "// using HTML Help: C-c C-h as usual, then switch to w3m buffer\n") +;; (insert "// and do M-x sclang-minor-mode in order te enable sclang code execution\n") +;; (insert line) + (insert "\n")) + (set-buffer-modified-p nil) + ;; cwd to sclang-runtime-directory + (if (and sclang-runtime-directory + (file-directory-p sclang-runtime-directory)) + (setq default-directory sclang-runtime-directory)))) + (switch-to-buffer buffer))) + +(add-hook 'sclang-library-startup-hook + (lambda () (and sclang-show-workspace-on-startup + (sclang-switch-to-workspace)))) + +;; ===================================================================== +;; language control +;; ===================================================================== + +(defun sclang-main-run () + (interactive) + (sclang-eval-string "thisProcess.run")) + +(defun sclang-main-stop () + (interactive) + (sclang-eval-string "thisProcess.stop")) + +;; ===================================================================== +;; default command handlers +;; ===================================================================== + +(sclang-set-command-handler '_init (lambda (arg) (sclang-on-library-startup))) + +(sclang-set-command-handler + '_eval + (lambda (expr) + (when (stringp expr) + (eval (read expr))))) + +;; ===================================================================== +;; module setup +;; ===================================================================== + +;; shutdown process cleanly +(add-hook 'kill-emacs-hook (lambda () (sclang-stop))) + +;; add command line switches +(add-to-list 'command-switch-alist + (cons "-sclang" + (lambda (switch) + (sclang-start)))) + +(add-to-list 'command-switch-alist + (cons "-sclang-debug" + (lambda (switch) + (sclang-toggle-debug-command-handler 1)))) + +(add-to-list 'command-switch-alist + (cons "-scmail" + (lambda (switch) + (sclang-start) + (when command-line-args-left + (let ((file (pop command-line-args-left))) + (with-current-buffer (get-buffer-create sclang-workspace-buffer) + (and (file-exists-p file) (insert-file-contents file)) + (set-buffer-modified-p nil) + (sclang-mode) + (switch-to-buffer (current-buffer)))))))) + +(provide 'sclang-interp) + +;; EOF diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang-keys.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-keys.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang-keys.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-keys.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,43 @@ +;; copyright 2003 stefan kersten +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + +;; (defvar sclang-key-table (make-char-table 'foo)) + +;; (defun sclang-define-key (char beg end) +;; (interactive) +;; (sclang-eval-string (sclang-format "Emacs.defineKey(%o, %o)" char code)) +;; (define-key (char-to-string char) sclang-key-mode-map 'sclang-execute-key)) + +;; (defun sclang-execute-key (char) +;; (sclang-eval-string (sclang-format "Emacs.executeKey(%o)" char))) + +(eval-and-compile (require 'sclang-util) + (require 'sclang-interp)) + +(defun sclang-read-keys () + (interactive) + (let (char) + (clear-this-command-keys) + (while t + (setq char (read-event)) + (clear-this-command-keys) + (when (characterp char) + (message "%s (%d)" (char-to-string char) char) + (sclang-eval-string (format "Emacs.keys.at(%d).value(%d)" char char)))))) + +;; EOF + diff -pruN 1:3.8.0~repack-2/editors/sc-el/el/sclang-language.el 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-language.el --- 1:3.8.0~repack-2/editors/sc-el/el/sclang-language.el 1970-01-01 00:00:00.000000000 +0000 +++ 1:3.10.0+repack-0.1/editors/sc-el/el/sclang-language.el 2018-05-26 17:52:57.000000000 +0000 @@ -0,0 +1,809 @@ +;; copyright 2003-2005 stefan kersten +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +;; USA + +(eval-when-compile + (require 'cl)) + +(require 'sclang-browser) +(require 'sclang-interp) +(require 'sclang-util) + +;; ===================================================================== +;; regexp utilities +;; ===================================================================== + +(defun sclang-regexp-group (regexp &optional addressable) + "Enclose REGEXP in grouping parentheses. + +If ADDRESSABLE is non-nil the group match data can be addressed +separately after matching." + (concat "\\(" (unless addressable "?:") regexp "\\)")) + +(defun sclang-regexp-concat (&rest regexps) + "Concatenate REGEXPS by grouping. + +The expressions are joined as alternatives with the \\| operator." + (mapconcat 'sclang-regexp-group regexps "\\|")) + +;; ===================================================================== +;; some useful regular expressions +;; ===================================================================== + +(defconst sclang-symbol-regexp + "\\(?:\\sw\\|\\s_\\)*" + "Regular expression matching symbols.") + +(defconst sclang-identifier-regexp + (concat "[a-zA-Z]" sclang-symbol-regexp) + "Regular expression matching valid identifiers.") + +(defconst sclang-method-name-special-chars + "-!%&*+/<=>?@|" + "Regular expression matching special method name characters.") + +(defconst sclang-method-name-plain-regexp + (concat sclang-identifier-regexp "_?") + "Regular expression matching regular method names.") + +(defconst sclang-method-name-special-regexp + (concat + "[" (regexp-quote sclang-method-name-special-chars) "]+") + "Regular expression matching method names composed of special characters.") + +(defconst sclang-method-name-regexp + (sclang-regexp-concat + sclang-method-name-special-regexp + sclang-method-name-plain-regexp) + "Regular expression matching method names.") + +(defconst sclang-class-name-regexp + "\\<\\(?:Meta_\\)?[A-Z]\\(?:\\sw\\|\\s_\\)*" + "Regular expression matching class names.") + +(defconst sclang-primitive-name-regexp + (concat "_[A-Z]" sclang-symbol-regexp) + "Regular expression matching primitive names.") + +(defconst sclang-symbol-name-regexp + (sclang-regexp-concat + sclang-method-name-regexp + sclang-class-name-regexp) + "Regular expression matching class and method names.") + +(defconst sclang-class-definition-regexp + (concat "^\\s *\\(" + sclang-class-name-regexp + "\\)\\(?:\\s *:\\s *\\(" + sclang-class-name-regexp + "\\)\\)?[[:space:]]*{") + "Regular expression matching class definitions.") + +(defconst sclang-method-definition-regexp + (concat "^\\s *\\*?\\(" sclang-method-name-regexp "\\)\\s *{") + "Regular expression matching method definitions.") + +(defconst sclang-block-regexp + "^\\((\\)\\s *\\(?:/[/*]?.*\\)?" + "Regular expression matching the beginning of a code block. + +A block is enclosed by parentheses where the opening parenthesis must +be at the beginning of a line to avoid ambiguities.") + +(defconst sclang-beginning-of-defun-regexp + (sclang-regexp-concat + sclang-class-definition-regexp + sclang-block-regexp) + "Regular expression matching the beginning of defuns. + +The match is either the start of a class definition +\(`sclang-class-definition-regexp') or the beginning of a code block +enclosed by parenthesis (`sclang-block-regexp').") + +(defconst sclang-method-definition-spec-regexp + (concat (sclang-regexp-group sclang-class-name-regexp t) + "-" + (sclang-regexp-group sclang-method-name-regexp t)) + "Regular expression matching definition specifications. + +A specification is of the form -.") + +;; ===================================================================== +;; regexp building +;; ===================================================================== + +(defun sclang-make-class-definition-regexp (name) + "Return a regular expression matching the class definition NAME." + (concat "\\(" (regexp-quote name) "\\)" + "\\(?:\\s *:\\s *\\(" sclang-class-name-regexp "\\)\\)?" + "[[:space:]]*{")) + +(defun sclang-make-class-extension-regexp (name) + "Return a regular expression matching the class extension NAME." + (concat "\\+\\s *\\(" (regexp-quote name) "\\)" + "\\s *{")) + +(defun sclang-make-method-definition-regexp (name) + "Return a regular expression matching the method definition NAME." + (concat "\\(" (regexp-quote name) "\\)\\s *{")) + +;; ===================================================================== +;; string matching +;; ===================================================================== + +(defun sclang-string-match (regexp string) + "Match REGEXP with STRING while preserving case." + (let ((case-fold-search nil)) + (string-match regexp string))) + +(defun sclang-symbol-match (symbol-regexp string) + (sclang-string-match (concat "^" symbol-regexp "$") string)) + +;; ===================================================================== +;; symbol name predicates +;; ===================================================================== + +(defun sclang-class-name-p (string) + (sclang-symbol-match sclang-class-name-regexp string)) + +(defun sclang-meta-class-name-p (string) + (and (sclang-class-name-p string) + (sclang-string-match "^Meta_" string))) + +(defun sclang-method-name-p (string) + (sclang-symbol-match sclang-method-name-regexp string)) + +(defun sclang-symbol-name-p (string) + (sclang-symbol-match sclang-symbol-name-regexp string)) + +(defun sclang-method-name-setter-p (method-name) + (string-match "_$" method-name)) + +(defun sclang-method-name-getter-p (method-name) + (not (sclang-method-name-setter-p method-name))) + +;; ===================================================================== +;; symbol name manipulation +;; ===================================================================== + +(defun sclang-method-name-setter (method-name) + (if (sclang-method-name-setter-p method-name) + method-name + (concat method-name "_"))) + +(defun sclang-method-name-getter (method-name) + (if (sclang-method-name-setter-p method-name) + (substring method-name 0 (1- (length method-name))) + method-name)) + +;; ===================================================================== +;; symbol table access +;; ===================================================================== + +(defcustom sclang-use-symbol-table t + "*Retrieve symbol table upon library initialization. + +Symbol table retrieval is performed each time the library is +recompiled. This takes some time and the symbol table has to be held +in memory, so it might be necessary to disable this option on +low-resource systems." + :group 'sclang-interface + :version "21.3" + :type 'boolean) + +(defvar sclang-symbol-table nil + "List of all defined symbols.") + +(defvar sclang-class-list nil + "List of all defined classes.") + +(defvar sclang-symbol-history nil + "List of recent symbols read from the minibuffer.") + +(defvar sclang-symbol-table-file nil) + +(sclang-set-command-handler + 'symbolTable + (lambda (arg) + (when (and sclang-use-symbol-table arg) + (setq sclang-symbol-table (sort arg 'string<)) + (setq sclang-class-list (remove-if + (lambda (x) (or (not (sclang-class-name-p x)) + (sclang-string-match "^Meta_" x))) + sclang-symbol-table)) + (sclang-update-font-lock)))) + +(add-hook 'sclang-library-startup-hook + (lambda () + (when sclang-use-symbol-table + (let ((file (make-temp-file "sclang-symbol-table."))) + (when (and file (file-exists-p file)) + (setq sclang-symbol-table-file file) + (sclang-perform-command 'symbolTable file)))))) + +(add-hook 'sclang-library-shutdown-hook + (lambda () + (setq sclang-symbol-table nil) + (sclang-update-font-lock))) + +(defun sclang-get-symbol-completion-table () + (mapcar (lambda (s) (cons s nil)) sclang-symbol-table)) + +(defun sclang-make-symbol-completion-predicate (predicate) + (and predicate (lambda (assoc) (funcall predicate (car assoc))))) + +(defun sclang-get-symbol (string) + (if (and sclang-use-symbol-table sclang-symbol-table) + (car (member string sclang-symbol-table)) + string)) + +(defun sclang-read-symbol (prompt &optional default predicate require-match inherit-input-method) + (if sclang-use-symbol-table + (flet ((make-minibuffer-local-map + (parent-keymap) + (let ((map (make-sparse-keymap))) + (set-keymap-parent map parent-keymap) + ;; override keys bound to valid symbols + (define-key map [??] 'self-insert-command) + map))) + (let ((symbol (sclang-get-symbol default)) + (minibuffer-local-completion-map (make-minibuffer-local-map + minibuffer-local-completion-map)) + (minibuffer-local-must-match-map (make-minibuffer-local-map + minibuffer-local-completion-map))) + (completing-read (sclang-make-prompt-string prompt symbol) + (sclang-get-symbol-completion-table) + (sclang-make-symbol-completion-predicate predicate) + require-match nil + 'sclang-symbol-history symbol + inherit-input-method))) + (read-string (sclang-make-prompt-string prompt default) nil + 'sclang-symbol-history default inherit-input-method))) + +;; ===================================================================== +;; buffer movement +;; ===================================================================== + +(defun sclang-point-in-comment-p () + "Return non-nil if point is inside a comment. + +Use font-lock information if font-lock-mode is enabled." + (if (and (boundp 'font-lock-mode) (eval 'font-lock-mode)) + ;; use available information in font-lock-mode + (eq (get-text-property (point) 'face) 'font-lock-comment-face) + ;; else parse from the beginning + (save-excursion + (let ((beg (point))) + (beginning-of-defun) + (not (null (nth 4 (parse-partial-sexp (point) beg)))))))) + +(defun sclang-beginning-of-defun (&optional arg) + (interactive "p") + (let ((case-fold-search nil) + (arg (or arg (prefix-numeric-value current-prefix-arg))) + (orig (point)) + (success t)) + (while (and success (> arg 0)) + (setq success (re-search-backward sclang-beginning-of-defun-regexp + nil 'move)) + (when (and success (not (sclang-point-in-comment-p))) + (goto-char (match-beginning 0)) + (setq arg (1- arg)))) + (while (and success (< arg 0)) + (setq success (re-search-forward sclang-beginning-of-defun-regexp nil t)) + (when (and success (not (sclang-point-in-comment-p))) + (goto-char (match-end 0)) + (setq arg (1+ arg)))) + (when success + (beginning-of-line) + (cond ((looking-at sclang-block-regexp) (goto-char (1- (match-end 1)))) + ((looking-at sclang-class-definition-regexp) (goto-char (1- (match-end 0))))) + t))) + +(defun sclang-point-in-defun-p () + "Return non-nil if point is inside a defun. +Return value is nil or (beg end) of defun." + (save-excursion + (let ((orig (point)) + beg end) + (and (progn (end-of-line) (beginning-of-defun-raw 1) t) + (setq beg (point)) + (condition-case nil (forward-list 1) (error nil)) + (setq end (point)) + (list beg end))))) + +(defun sclang-end-of-defun (&optional arg) + (interactive "p") + (let ((case-fold-search nil) + (arg (or arg (prefix-numeric-value current-prefix-arg))) + (success t) + n cur) + (while (and success (> arg 0)) + (setq n (if (sclang-point-in-defun-p) 1 -1)) + (setq cur (point)) + (if (and (sclang-beginning-of-defun n) + (condition-case nil (forward-list 1) (error nil))) + (progn + (setq arg (1- arg))) + (goto-char cur) + (setq success nil))) + (while (and success (< arg 0)) + (setq n (if (sclang-point-in-defun-p) 2 1)) + (setq cur (point)) + (if (and (sclang-beginning-of-defun n) + (condition-case nil (forward-list 1) (error nil))) + (progn + (backward-char 1) + (setq arg (1+ arg))) + (goto-char cur) + (setq success nil))) + (when success + (forward-line 1) t))) + +;; ===================================================================== +;; buffer object access +;; ===================================================================== + +(defun sclang-symbol-at-point (&optional symbol-name-regexp) + "Return the symbol at point, or nil if not a valid symbol. + +The argument SYMBOL-NAME-REGEXP can be used to specify the type of +symbol matc