From c59744cca78f421727fb7bdc94fffecaac96b842 Mon Sep 17 00:00:00 2001 From: jneen Date: Fri, 20 Mar 2026 13:50:24 -0400 Subject: [PATCH 1/2] igorpro: move builtins to a dedicated file and downcase them --- lib/rouge/lexers/igorpro.rb | 1607 +------------------------- lib/rouge/lexers/igorpro/builtins.rb | 1530 ++++++++++++++++++++++++ 2 files changed, 1567 insertions(+), 1570 deletions(-) create mode 100644 lib/rouge/lexers/igorpro/builtins.rb diff --git a/lib/rouge/lexers/igorpro.rb b/lib/rouge/lexers/igorpro.rb index 2c40a1cec6..cfd6b5902d 100644 --- a/lib/rouge/lexers/igorpro.rb +++ b/lib/rouge/lexers/igorpro.rb @@ -11,1566 +11,33 @@ class IgorPro < RegexLexer title "IgorPro" desc "WaveMetrics Igor Pro" - def self.keywords - @keywords ||= Set.new %w( - structure endstructure - threadsafe static - macro proc window menu function end - if else elseif endif switch strswitch endswitch - break return continue - for endfor do while - case default - try catch endtry - abortonrte abortonvalue - ) - end - - def self.preprocessor - @preprocessor ||= Set.new %w( - pragma include - define ifdef ifndef undef - if elif else endif - ) - end - - def self.igorDeclarations - @igorDeclarations ||= Set.new %w( - variable string wave strconstant constant - nvar svar dfref funcref struct - char uchar int16 uint16 int32 uint32 int64 uint64 float double - ) - end - - def self.igorConstants - @igorConstants ||= Set.new %w( - nan inf - ) - end - - def self.igorFunction - @igorFunction ||= Set.new %w( - abs - acos - acosh - AddListItem - AiryA - AiryAD - AiryB - AiryBD - alog - AnnotationInfo - AnnotationList - area - areaXY - asin - asinh - atan - atanh - atan2 - AxisInfo - AxisLabel - AxisList - AxisValFromPixel - AxonTelegraphAGetDataNum - AxonTelegraphAGetDataString - AxonTelegraphAGetDataStruct - AxonTelegraphGetDataNum - AxonTelegraphGetDataString - AxonTelegraphGetDataStruct - AxonTelegraphGetTimeoutMs - AxonTelegraphSetTimeoutMs - Base64Decode - Base64Encode - Besseli - Besselj - Besselk - Bessely - beta - betai - BinarySearch - BinarySearchInterp - binomial - binomialln - binomialNoise - cabs - CaptureHistory - CaptureHistoryStart - ceil - centerOfMass - centerOfMassXY - cequal - char2num - chebyshev - chebyshevU - CheckName - ChildWindowList - CleanupName - cmplx - cmpstr - conj - ContourInfo - ContourNameList - ContourNameToWaveRef - ContourZ - ControlNameList - ConvertTextEncoding - cos - cosh - cosIntegral - cot - coth - CountObjects - CountObjectsDFR - cpowi - CreateDataObjectName - CreationDate - csc - csch - CsrInfo - CsrWave - CsrWaveRef - CsrXWave - CsrXWaveRef - CTabList - DataFolderDir - DataFolderExists - DataFolderList - DataFolderRefChanges - DataFolderRefsEqual - DataFolderRefStatus - date - datetime - DateToJulian - date2secs - Dawson - defined - deltax - digamma - dilogarithm - DimDelta - DimOffset - DimSize - ei - ellipticE - ellipticK - enoise - equalWaves - erf - erfc - erfcw - erfcx - exists - exp - expInt - expIntegralE1 - expNoise - factorial - Faddeeva - fakedata - faverage - faverageXY - fDAQmx_AI_ChannelConfigs - fDAQmx_AI_GetReader - fDAQmx_AO_UpdateOutputs - fDAQmx_ConnectTerminals - fDAQmx_CTR_Finished - fDAQmx_CTR_IsFinished - fDAQmx_CTR_IsPulseFinished - fDAQmx_CTR_ReadCounter - fDAQmx_CTR_ReadWithOptions - fDAQmx_CTR_SetPulseFrequency - fDAQmx_CTR_Start - fDAQmx_DeviceNames - fDAQmx_DIO_Finished - fDAQmx_DIO_PortWidth - fDAQmx_DIO_Read - fDAQmx_DIO_Write - fDAQmx_DisconnectTerminals - fDAQmx_ErrorString - fDAQmx_ExternalCalDate - fDAQmx_NumAnalogInputs - fDAQmx_NumAnalogOutputs - fDAQmx_NumCounters - fDAQmx_NumDIOPorts - fDAQmx_ReadChan - fDAQmx_ReadNamedChan - fDAQmx_ResetDevice - fDAQmx_ScanGetAvailable - fDAQmx_ScanGetNextIndex - fDAQmx_ScanStart - fDAQmx_ScanStop - fDAQmx_ScanWait - fDAQmx_ScanWaitWithTimeout - fDAQmx_SelfCalDate - fDAQmx_SelfCalibration - fDAQmx_WaveformStart - fDAQmx_WaveformStop - fDAQmx_WF_IsFinished - fDAQmx_WF_WaitUntilFinished - fDAQmx_WriteChan - FetchURL - FindDimLabel - FindListItem - floor - FontList - FontSizeHeight - FontSizeStringWidth - FresnelCos - FresnelSin - FuncRefInfo - FunctionInfo - FunctionList - FunctionPath - gamma - gammaEuler - gammaInc - gammaNoise - gammln - gammp - gammq - Gauss - Gauss1D - Gauss2D - gcd - GeometricMean - GetBrowserLine - GetBrowserSelection - GetDataFolder - GetDataFolderDFR - GetDefaultFont - GetDefaultFontSize - GetDefaultFontStyle - GetDimLabel - GetEnvironmentVariable - GetErrMessage - GetFormula - GetIndependentModuleName - GetIndexedObjName - GetIndexedObjNameDFR - GetKeyState - GetRTErrMessage - GetRTError - GetRTLocation - GetRTLocInfo - GetRTStackInfo - GetScrapText - GetUserData - GetWavesDataFolder - GetWavesDataFolderDFR - GetWindowBrowserSelection - GISGetAllFileFormats - GISSRefsAreEqual - GizmoInfo - GizmoScale - gnoise - GrepList - GrepString - GuideInfo - GuideNameList - Hash - hcsr - HDF5AttributeInfo - HDF5DatasetInfo - HDF5LibraryInfo - HDF5LinkInfo - HDF5TypeInfo - hermite - hermiteGauss - HyperGNoise - HyperGPFQ - HyperG0F1 - HyperG1F1 - HyperG2F1 - i - IgorInfo - IgorVersion - imag - ImageInfo - ImageNameList - ImageNameToWaveRef - IndependentModuleList - IndexedDir - IndexedFile - IndexToScale - Inf - Integrate1D - interp - Interp2D - Interp3D - inverseERF - inverseERFC - ItemsInList - JacobiCn - JacobiSn - JulianToDate - Laguerre - LaguerreA - LaguerreGauss - LambertW - LayoutInfo - leftx - LegendreA - limit - ListMatch - ListToTextWave - ListToWaveRefWave - ln - log - logNormalNoise - lorentzianNoise - LowerStr - MacroInfo - MacroList - MacroPath - magsqr - MandelbrotPoint - MarcumQ - MatrixCondition - MatrixDet - MatrixDot - MatrixRank - MatrixTrace - max - MCC_AutoBridgeBal - MCC_AutoFastComp - MCC_AutoPipetteOffset - MCC_AutoSlowComp - MCC_AutoWholeCellComp - MCC_GetBridgeBalEnable - MCC_GetBridgeBalResist - MCC_GetFastCompCap - MCC_GetFastCompTau - MCC_GetHolding - MCC_GetHoldingEnable - MCC_GetMode - MCC_GetNeutralizationCap - MCC_GetNeutralizationEnable - MCC_GetOscKillerEnable - MCC_GetPipetteOffset - MCC_GetPrimarySignalGain - MCC_GetPrimarySignalHPF - MCC_GetPrimarySignalLPF - MCC_GetRsCompBandwidth - MCC_GetRsCompCorrection - MCC_GetRsCompEnable - MCC_GetRsCompPrediction - MCC_GetSecondarySignalGain - MCC_GetSecondarySignalLPF - MCC_GetSlowCompCap - MCC_GetSlowCompTau - MCC_GetSlowCompTauX20Enable - MCC_GetSlowCurrentInjEnable - MCC_GetSlowCurrentInjLevel - MCC_GetSlowCurrentInjSetlTime - MCC_GetWholeCellCompCap - MCC_GetWholeCellCompEnable - MCC_GetWholeCellCompResist - MCC_SelectMultiClamp700B - MCC_SetBridgeBalEnable - MCC_SetBridgeBalResist - MCC_SetFastCompCap - MCC_SetFastCompTau - MCC_SetHolding - MCC_SetHoldingEnable - MCC_SetMode - MCC_SetNeutralizationCap - MCC_SetNeutralizationEnable - MCC_SetOscKillerEnable - MCC_SetPipetteOffset - MCC_SetPrimarySignalGain - MCC_SetPrimarySignalHPF - MCC_SetPrimarySignalLPF - MCC_SetRsCompBandwidth - MCC_SetRsCompCorrection - MCC_SetRsCompEnable - MCC_SetRsCompPrediction - MCC_SetSecondarySignalGain - MCC_SetSecondarySignalLPF - MCC_SetSlowCompCap - MCC_SetSlowCompTau - MCC_SetSlowCompTauX20Enable - MCC_SetSlowCurrentInjEnable - MCC_SetSlowCurrentInjLevel - MCC_SetSlowCurrentInjSetlTime - MCC_SetTimeoutMs - MCC_SetWholeCellCompCap - MCC_SetWholeCellCompEnable - MCC_SetWholeCellCompResist - mean - median - min - mod - ModDate - MPFXEMGPeak - MPFXExpConvExpPeak - MPFXGaussPeak - MPFXLorentzianPeak - MPFXVoigtPeak - NameOfWave - NaN - NewFreeDataFolder - NewFreeWave - norm - NormalizeUnicode - note - NumberByKey - numpnts - numtype - NumVarOrDefault - num2char - num2istr - num2str - NVAR_Exists - OperationList - PadString - PanelResolution - ParamIsDefault - ParseFilePath - PathList - pcsr - Pi - PICTInfo - PICTList - PixelFromAxisVal - pnt2x - poissonNoise - poly - PolygonArea - poly2D - PossiblyQuoteName - ProcedureText - ProcedureVersion - p2rect - qcsr - real - RemoveByKey - RemoveEnding - RemoveFromList - RemoveListItem - ReplaceNumberByKey - ReplaceString - ReplaceStringByKey - ReplicateString - rightx - round - r2polar - sawtooth - scaleToIndex - ScreenResolution - sec - sech - Secs2Date - Secs2Time - SelectNumber - SelectString - SetEnvironmentVariable - sign - sin - sinc - sinh - sinIntegral - SortList - SpecialCharacterInfo - SpecialCharacterList - SpecialDirPath - SphericalBessJ - SphericalBessJD - SphericalBessY - SphericalBessYD - SphericalHarmonics - SQLAllocHandle - SQLAllocStmt - SQLBinaryWavesToTextWave - SQLBindCol - SQLBindParameter - SQLBrowseConnect - SQLBulkOperations - SQLCancel - SQLCloseCursor - SQLColAttributeNum - SQLColAttributeStr - SQLColumnPrivileges - SQLColumns - SQLConnect - SQLDataSources - SQLDescribeCol - SQLDescribeParam - SQLDisconnect - SQLDriverConnect - SQLDrivers - SQLEndTran - SQLError - SQLExecDirect - SQLExecute - SQLFetch - SQLFetchScroll - SQLForeignKeys - SQLFreeConnect - SQLFreeEnv - SQLFreeHandle - SQLFreeStmt - SQLGetConnectAttrNum - SQLGetConnectAttrStr - SQLGetCursorName - SQLGetDataNum - SQLGetDataStr - SQLGetDescFieldNum - SQLGetDescFieldStr - SQLGetDescRec - SQLGetDiagFieldNum - SQLGetDiagFieldStr - SQLGetDiagRec - SQLGetEnvAttrNum - SQLGetEnvAttrStr - SQLGetFunctions - SQLGetInfoNum - SQLGetInfoStr - SQLGetStmtAttrNum - SQLGetStmtAttrStr - SQLGetTypeInfo - SQLMoreResults - SQLNativeSql - SQLNumParams - SQLNumResultCols - SQLNumResultRowsIfKnown - SQLNumRowsFetched - SQLParamData - SQLPrepare - SQLPrimaryKeys - SQLProcedureColumns - SQLProcedures - SQLPutData - SQLReinitialize - SQLRowCount - SQLSetConnectAttrNum - SQLSetConnectAttrStr - SQLSetCursorName - SQLSetDescFieldNum - SQLSetDescFieldStr - SQLSetDescRec - SQLSetEnvAttrNum - SQLSetEnvAttrStr - SQLSetPos - SQLSetStmtAttrNum - SQLSetStmtAttrStr - SQLSpecialColumns - SQLStatistics - SQLTablePrivileges - SQLTables - SQLTextWaveToBinaryWaves - SQLTextWaveTo2DBinaryWave - SQLUpdateBoundValues - SQLXOPCheckState - SQL2DBinaryWaveToTextWave - sqrt - StartMSTimer - StatsBetaCDF - StatsBetaPDF - StatsBinomialCDF - StatsBinomialPDF - StatsCauchyCDF - StatsCauchyPDF - StatsChiCDF - StatsChiPDF - StatsCMSSDCDF - StatsCorrelation - StatsDExpCDF - StatsDExpPDF - StatsErlangCDF - StatsErlangPDF - StatsErrorPDF - StatsEValueCDF - StatsEValuePDF - StatsExpCDF - StatsExpPDF - StatsFCDF - StatsFPDF - StatsFriedmanCDF - StatsGammaCDF - StatsGammaPDF - StatsGeometricCDF - StatsGeometricPDF - StatsGEVCDF - StatsGEVPDF - StatsHyperGCDF - StatsHyperGPDF - StatsInvBetaCDF - StatsInvBinomialCDF - StatsInvCauchyCDF - StatsInvChiCDF - StatsInvCMSSDCDF - StatsInvDExpCDF - StatsInvEValueCDF - StatsInvExpCDF - StatsInvFCDF - StatsInvFriedmanCDF - StatsInvGammaCDF - StatsInvGeometricCDF - StatsInvKuiperCDF - StatsInvLogisticCDF - StatsInvLogNormalCDF - StatsInvMaxwellCDF - StatsInvMooreCDF - StatsInvNBinomialCDF - StatsInvNCChiCDF - StatsInvNCFCDF - StatsInvNormalCDF - StatsInvParetoCDF - StatsInvPoissonCDF - StatsInvPowerCDF - StatsInvQCDF - StatsInvQpCDF - StatsInvRayleighCDF - StatsInvRectangularCDF - StatsInvSpearmanCDF - StatsInvStudentCDF - StatsInvTopDownCDF - StatsInvTriangularCDF - StatsInvUsquaredCDF - StatsInvVonMisesCDF - StatsInvWeibullCDF - StatsKuiperCDF - StatsLogisticCDF - StatsLogisticPDF - StatsLogNormalCDF - StatsLogNormalPDF - StatsMaxwellCDF - StatsMaxwellPDF - StatsMedian - StatsMooreCDF - StatsNBinomialCDF - StatsNBinomialPDF - StatsNCChiCDF - StatsNCChiPDF - StatsNCFCDF - StatsNCFPDF - StatsNCTCDF - StatsNCTPDF - StatsNormalCDF - StatsNormalPDF - StatsParetoCDF - StatsParetoPDF - StatsPermute - StatsPoissonCDF - StatsPoissonPDF - StatsPowerCDF - StatsPowerNoise - StatsPowerPDF - StatsQCDF - StatsQpCDF - StatsRayleighCDF - StatsRayleighPDF - StatsRectangularCDF - StatsRectangularPDF - StatsRunsCDF - StatsSpearmanRhoCDF - StatsStudentCDF - StatsStudentPDF - StatsTopDownCDF - StatsTriangularCDF - StatsTriangularPDF - StatsTrimmedMean - StatsUSquaredCDF - StatsVonMisesCDF - StatsVonMisesNoise - StatsVonMisesPDF - StatsWaldCDF - StatsWaldPDF - StatsWeibullCDF - StatsWeibullPDF - StopMSTimer - StringByKey - stringCRC - StringFromList - StringList - stringmatch - StringToUnsignedByteWave - strlen - strsearch - StrVarOrDefault - str2num - StudentA - StudentT - sum - SVAR_Exists - TableInfo - TagVal - TagWaveRef - tan - tanh - TDMAddChannel - TDMAddGroup - TDMAppendDataValues - TDMAppendDataValuesTime - TDMChannelPropertyExists - TDMCloseChannel - TDMCloseFile - TDMCloseGroup - TDMCreateChannelProperty - TDMCreateFile - TDMCreateFileProperty - TDMCreateGroupProperty - TDMFilePropertyExists - TDMGetChannelPropertyNames - TDMGetChannelPropertyNum - TDMGetChannelPropertyStr - TDMGetChannelPropertyTime - TDMGetChannelPropertyType - TDMGetChannels - TDMGetChannelStringPropertyLen - TDMGetDataType - TDMGetDataValues - TDMGetDataValuesTime - TDMGetFilePropertyNames - TDMGetFilePropertyNum - TDMGetFilePropertyStr - TDMGetFilePropertyTime - TDMGetFilePropertyType - TDMGetFileStringPropertyLen - TDMGetGroupPropertyNames - TDMGetGroupPropertyNum - TDMGetGroupPropertyStr - TDMGetGroupPropertyTime - TDMGetGroupPropertyType - TDMGetGroups - TDMGetGroupStringPropertyLen - TDMGetLibraryErrorDescription - TDMGetNumChannelProperties - TDMGetNumChannels - TDMGetNumDataValues - TDMGetNumFileProperties - TDMGetNumGroupProperties - TDMGetNumGroups - TDMGroupPropertyExists - TDMOpenFile - TDMOpenFileEx - TDMRemoveChannel - TDMRemoveGroup - TDMReplaceDataValues - TDMReplaceDataValuesTime - TDMSaveFile - TDMSetChannelPropertyNum - TDMSetChannelPropertyStr - TDMSetChannelPropertyTime - TDMSetDataValues - TDMSetDataValuesTime - TDMSetFilePropertyNum - TDMSetFilePropertyStr - TDMSetFilePropertyTime - TDMSetGroupPropertyNum - TDMSetGroupPropertyStr - TDMSetGroupPropertyTime - TextEncodingCode - TextEncodingName - TextFile - ThreadGroupCreate - ThreadGroupGetDF - ThreadGroupGetDFR - ThreadGroupRelease - ThreadGroupWait - ThreadProcessorCount - ThreadReturnValue - ticks - time - TraceFromPixel - TraceInfo - TraceNameList - TraceNameToWaveRef - TrimString - trunc - UniqueName - UnPadString - UnsetEnvironmentVariable - UpperStr - URLDecode - URLEncode - VariableList - Variance - vcsr - viAssertIntrSignal - viAssertTrigger - viAssertUtilSignal - viClear - viClose - viDisableEvent - viDiscardEvents - viEnableEvent - viFindNext - viFindRsrc - viGetAttribute - viGetAttributeString - viGpibCommand - viGpibControlATN - viGpibControlREN - viGpibPassControl - viGpibSendIFC - viIn8 - viIn16 - viIn32 - viLock - viMapAddress - viMapTrigger - viMemAlloc - viMemFree - viMoveIn8 - viMoveIn16 - viMoveIn32 - viMoveOut8 - viMoveOut16 - viMoveOut32 - viOpen - viOpenDefaultRM - viOut8 - viOut16 - viOut32 - viPeek8 - viPeek16 - viPeek32 - viPoke8 - viPoke16 - viPoke32 - viRead - viReadSTB - viSetAttribute - viSetAttributeString - viStatusDesc - viTerminate - viUnlock - viUnmapAddress - viUnmapTrigger - viUsbControlIn - viUsbControlOut - viVxiCommandQuery - viWaitOnEvent - viWrite - VoigtFunc - VoigtPeak - WaveCRC - WaveDataToString - WaveDims - WaveExists - WaveHash - WaveInfo - WaveList - WaveMax - WaveMin - WaveMinAndMax - WaveModCount - WaveName - WaveRefIndexed - WaveRefIndexedDFR - WaveRefsEqual - WaveRefWaveToList - WaveTextEncoding - WaveType - WaveUnits - WhichListItem - WinList - WinName - WinRecreation - WinType - wnoise - xcsr - XWaveName - XWaveRefFromTrace - x2pnt - zcsr - ZernikeR - zeromq_client_connect - zeromq_client_recv - zeromq_client_send - zeromq_handler_start - zeromq_handler_stop - zeromq_pub_bind - zeromq_pub_send - zeromq_server_bind - zeromq_server_recv - zeromq_server_send - zeromq_set - zeromq_set_logging_template - zeromq_stop - zeromq_sub_add_filter - zeromq_sub_connect - zeromq_sub_recv - zeromq_sub_remove_filter - zeromq_test_callfunction - zeromq_test_serializeWave - zeta - ) - end - - def self.igorOperation - @igorOperation ||= Set.new %w( - Abort - AddFIFOData - AddFIFOVectData - AddMovieAudio - AddMovieFrame - AddWavesToBoxPlot - AddWavesToViolinPlot - AdoptFiles - APMath - Append - AppendBoxPlot - AppendImage - AppendLayoutObject - AppendMatrixContour - AppendText - AppendToGizmo - AppendToGraph - AppendToLayout - AppendToTable - AppendViolinPlot - AppendXYZContour - AutoPositionWindow - AxonTelegraphFindServers - BackgroundInfo - Beep - BezierToPolygon - BoundingBall - BoxSmooth - BrowseURL - BuildMenu - Button - cd - Chart - CheckBox - CheckDisplayed - ChooseColor - Close - CloseHelp - CloseMovie - CloseProc - ColorScale - ColorTab2Wave - Concatenate - ControlBar - ControlInfo - ControlUpdate - ConvertGlobalStringTextEncoding - ConvexHull - Convolve - CopyDimLabels - CopyFile - CopyFolder - CopyScales - Correlate - CreateAliasShortcut - CreateBrowser - Cross - CtrlBackground - CtrlFIFO - CtrlNamedBackground - Cursor - CurveFit - CustomControl - CWT - DAQmx_AI_SetupReader - DAQmx_AO_SetOutputs - DAQmx_CTR_CountEdges - DAQmx_CTR_OutputPulse - DAQmx_CTR_Period - DAQmx_CTR_PulseWidth - DAQmx_DeviceInfo - DAQmx_DIO_Config - DAQmx_DIO_WriteNewData - DAQmx_Scan - DAQmx_WaveformGen - Debugger - DebuggerOptions - DefaultFont - DefaultGuiControls - DefaultGuiFont - DefaultTextEncoding - DefineGuide - DelayUpdate - DeleteAnnotations - DeleteFile - DeleteFolder - DeletePoints - Differentiate - dir - Display - DisplayHelpTopic - DisplayProcedure - DoAlert - DoIgorMenu - DoUpdate - DoWindow - DoXOPIdle - DPSS - DrawAction - DrawArc - DrawBezier - DrawLine - DrawOval - DrawPICT - DrawPoly - DrawRect - DrawRRect - DrawText - DrawUserShape - DSPDetrend - DSPPeriodogram - Duplicate - DuplicateDataFolder - DWT - EdgeStats - Edit - ErrorBars - EstimatePeakSizes - Execute - ExecuteScriptText - ExperimentInfo - ExperimentModified - ExportGizmo - Extract - FastGaussTransform - FastOp - FBinRead - FBinWrite - FCALL_CallFunction - FCALL_FreeLibrary - FCALL_GetFunctionList - FCALL_GetParamTypeList - FCALL_LoadLibrary - FCALL_Version - FFT - FGetPos - FIFOStatus - FIFO2Wave - FilterFIR - FilterIIR - FindAPeak - FindContour - FindDuplicates - FindLevel - FindLevels - FindPeak - FindPointsInPoly - FindRoots - FindSequence - FindValue - FMaxFlat - FPClustering - fprintf - FReadLine - FSetPos - FStatus - FTPCreateDirectory - FTPDelete - FTPDownload - FTPUpload - FuncFit - FuncFitMD - GBLoadWave - GetAxis - GetCamera - GetFileFolderInfo - GetGizmo - GetLastUserMenuInfo - GetMarquee - GetMouse - GetSelection - GetWindow - GISCreateVectorLayer - GISGetRasterInfo - GISGetRegisteredFileInfo - GISGetVectorLayerInfo - GISLoadRasterData - GISLoadVectorData - GISRasterizeVectorData - GISRegisterFile - GISTransformCoords - GISUnRegisterFile - GISWriteFieldData - GISWriteGeometryData - GISWriteRaster - GPIBReadBinaryWave2 - GPIBReadBinary2 - GPIBReadWave2 - GPIBRead2 - GPIBWriteBinaryWave2 - GPIBWriteBinary2 - GPIBWriteWave2 - GPIBWrite2 - GPIB2 - GraphNormal - GraphWaveDraw - GraphWaveEdit - Grep - GroupBox - Hanning - HCluster - HDFInfo - HDFReadImage - HDFReadSDS - HDFReadVset - HDF5CloseFile - HDF5CloseGroup - HDF5Control - HDF5CreateFile - HDF5CreateGroup - HDF5CreateLink - HDF5DimensionScale - HDF5Dump - HDF5DumpErrors - HDF5FlushFile - HDF5ListAttributes - HDF5ListGroup - HDF5LoadData - HDF5LoadGroup - HDF5LoadImage - HDF5OpenFile - HDF5OpenGroup - HDF5SaveData - HDF5SaveGroup - HDF5SaveImage - HDF5UnlinkObject - HideIgorMenus - HideInfo - HideProcedures - HideTools - HilbertTransform - Histogram - ICA - IFFT - ImageAnalyzeParticles - ImageBlend - ImageBoundaryToMask - ImageComposite - ImageEdgeDetection - ImageFileInfo - ImageFilter - ImageFocus - ImageFromXYZ - ImageGenerateROIMask - ImageGLCM - ImageHistModification - ImageHistogram - ImageInterpolate - ImageLineProfile - ImageLoad - ImageMorphology - ImageRegistration - ImageRemoveBackground - ImageRestore - ImageRotate - ImageSave - ImageSeedFill - ImageSkeleton3d - ImageSnake - ImageStats - ImageThreshold - ImageTransform - ImageUnwrapPhase - ImageWindow - IndexSort - InsertPoints - InstantFrequency - Integrate - IntegrateODE - Integrate2D - Interpolate2 - Interpolate3D - Interp3DPath - ITCCloseAll2 - ITCCloseDevice2 - ITCConfigAllChannels2 - ITCConfigChannelReset2 - ITCConfigChannelUpload2 - ITCConfigChannel2 - ITCFIFOAvailableAll2 - ITCFIFOAvailable2 - ITCGetAllChannelsConfig2 - ITCGetChannelConfig2 - ITCGetCurrentDevice2 - ITCGetDeviceInfo2 - ITCGetDevices2 - ITCGetErrorString2 - ITCGetSerialNumber2 - ITCGetState2 - ITCGetVersions2 - ITCInitialize2 - ITCOpenDevice2 - ITCReadADC2 - ITCReadDigital2 - ITCReadTimer2 - ITCSelectDevice2 - ITCSetDAC2 - ITCSetGlobals2 - ITCSetModes2 - ITCSetState2 - ITCStartAcq2 - ITCStopAcq2 - ITCUpdateFIFOPositionAll2 - ITCUpdateFIFOPosition2 - ITCWriteDigital2 - JCAMPLoadWave - JointHistogram - JSONXOP_AddTree - JSONXOP_AddValue - JSONXOP_Dump - JSONXOP_GetArraySize - JSONXOP_GetKeys - JSONXOP_GetMaxArraySize - JSONXOP_GetType - JSONXOP_GetValue - JSONXOP_New - JSONXOP_Parse - JSONXOP_Release - JSONXOP_Remove - JSONXOP_Version - KillBackground - KillControl - KillDataFolder - KillFIFO - KillFreeAxis - KillPath - KillPICTs - KillStrings - KillVariables - KillWaves - KillWindow - KMeans - Label - Layout - LayoutPageAction - LayoutSlideShow - Legend - LinearFeedbackShiftRegister - ListBox - LoadData - LoadPackagePreferences - LoadPICT - LoadWave - Loess - LombPeriodogram - Make - MakeIndex - MarkPerfTestTime - MatrixBalance - MatrixConvolve - MatrixCorr - MatrixEigenV - MatrixFactor - MatrixFilter - MatrixGaussJ - MatrixGLM - MatrixInverse - MatrixLinearSolve - MatrixLinearSolveTD - MatrixLLS - MatrixLUBkSub - MatrixLUD - MatrixLUDTD - MatrixMultiply - MatrixMultiplyAdd - MatrixOP - MatrixReverseBalance - MatrixSchur - MatrixSolve - MatrixSparse - MatrixSVBkSub - MatrixSVD - MatrixTranspose - MCC_FindServers - MeasureStyledText - MFR_CheckForNewBricklets - MFR_CloseResultFile - MFR_CreateOverviewTable - MFR_GetBrickletCount - MFR_GetBrickletData - MFR_GetBrickletDeployData - MFR_GetBrickletMetaData - MFR_GetBrickletRawData - MFR_GetReportTemplate - MFR_GetResultFileMetaData - MFR_GetResultFileName - MFR_GetVernissageVersion - MFR_GetVersion - MFR_GetXOPErrorMessage - MFR_OpenResultFile - MLLoadWave - Modify - ModifyBoxPlot - ModifyBrowser - ModifyCamera - ModifyContour - ModifyControl - ModifyControlList - ModifyFreeAxis - ModifyGizmo - ModifyGraph - ModifyImage - ModifyLayout - ModifyPanel - ModifyProcedure - ModifyTable - ModifyViolinPlot - ModifyWaterfall - MoveDataFolder - MoveFile - MoveFolder - MoveString - MoveSubwindow - MoveVariable - MoveWave - MoveWindow - MultiTaperPSD - MultiThreadingControl - NC_CloseFile - NC_DumpErrors - NC_Inquire - NC_ListAttributes - NC_ListObjects - NC_LoadData - NC_OpenFile - NeuralNetworkRun - NeuralNetworkTrain - NewCamera - NewDataFolder - NewFIFO - NewFIFOChan - NewFreeAxis - NewGizmo - NewImage - NewLayout - NewMovie - NewNotebook - NewPanel - NewPath - NewWaterfall - NILoadWave - NI4882 - Note - Notebook - NotebookAction - Open - OpenHelp - OpenNotebook - Optimize - ParseOperationTemplate - PathInfo - PauseForUser - PauseUpdate - PCA - PlayMovie - PlayMovieAction - PlaySound - PolygonOp - PopupContextualMenu - PopupMenu - Preferences - PrimeFactors - Print - printf - PrintGraphs - PrintLayout - PrintNotebook - PrintSettings - PrintTable - Project - PulseStats - PutScrapText - pwd - Quit - RatioFromNumber - Redimension - Remez - Remove - RemoveContour - RemoveFromGizmo - RemoveFromGraph - RemoveFromLayout - RemoveFromTable - RemoveImage - RemoveLayoutObjects - RemovePath - Rename - RenameDataFolder - RenamePath - RenamePICT - RenameWindow - ReorderImages - ReorderTraces - ReplaceText - ReplaceWave - Resample - ResumeUpdate - Reverse - Rotate - Save - SaveData - SaveExperiment - SaveGizmoCopy - SaveGraphCopy - SaveNotebook - SavePackagePreferences - SavePICT - SaveTableCopy - SetActiveSubwindow - SetAxis - SetBackground - SetDashPattern - SetDataFolder - SetDimLabel - SetDrawEnv - SetDrawLayer - SetFileFolderInfo - SetFormula - SetIdlePeriod - SetIgorHook - SetIgorMenuMode - SetIgorOption - SetMarquee - SetProcessSleep - SetRandomSeed - SetScale - SetVariable - SetWaveLock - SetWaveTextEncoding - SetWindow - ShowIgorMenus - ShowInfo - ShowTools - Silent - Sleep - Slider - Smooth - SmoothCustom - Sort - SortColumns - SoundInRecord - SoundInSet - SoundInStartChart - SoundInStatus - SoundInStopChart - SoundLoadWave - SoundSaveWave - SphericalInterpolate - SphericalTriangulate - SplitString - SplitWave - sprintf - SQLHighLevelOp - sscanf - Stack - StackWindows - StatsAngularDistanceTest - StatsANOVA1Test - StatsANOVA2NRTest - StatsANOVA2RMTest - StatsANOVA2Test - StatsChiTest - StatsCircularCorrelationTest - StatsCircularMeans - StatsCircularMoments - StatsCircularTwoSampleTest - StatsCochranTest - StatsContingencyTable - StatsDIPTest - StatsDunnettTest - StatsFriedmanTest - StatsFTest - StatsHodgesAjneTest - StatsJBTest - StatsKDE - StatsKendallTauTest - StatsKSTest - StatsKWTest - StatsLinearCorrelationTest - StatsLinearRegression - StatsMultiCorrelationTest - StatsNPMCTest - StatsNPNominalSRTest - StatsQuantiles - StatsRankCorrelationTest - StatsResample - StatsSample - StatsScheffeTest - StatsShapiroWilkTest - StatsSignTest - StatsSRTest - StatsTTest - StatsTukeyTest - StatsVariancesTest - StatsWatsonUSquaredTest - StatsWatsonWilliamsTest - StatsWheelerWatsonTest - StatsWilcoxonRankTest - StatsWRCorrelationTest - STFT - StructFill - StructGet - StructPut - SumDimension - SumSeries - TabControl - Tag - TDMLoadData - TDMSaveData - TextBox - TextHistogram - Text2Bezier - ThreadGroupPutDF - ThreadStart - TickWavesFromAxis - Tile - TileWindows - TitleBox - ToCommandLine - ToolsGrid - Triangulate3d - TUFXOP_AcquireLock - TUFXOP_Clear - TUFXOP_GetStorage - TUFXOP_Init - TUFXOP_ReleaseLock - TUFXOP_RunningInMainThread - TUFXOP_Version - Unwrap - UnzipFile - URLRequest - ValDisplay - VDTClosePort2 - VDTGetPortList2 - VDTGetStatus2 - VDTOpenPort2 - VDTOperationsPort2 - VDTReadBinaryWave2 - VDTReadBinary2 - VDTReadHexWave2 - VDTReadHex2 - VDTReadWave2 - VDTRead2 - VDTTerminalPort2 - VDTWriteBinaryWave2 - VDTWriteBinary2 - VDTWriteHexWave2 - VDTWriteHex2 - VDTWriteWave2 - VDTWrite2 - VDT2 - VISAControl - VISARead - VISAReadBinary - VISAReadBinaryWave - VISAReadWave - VISAWrite - VISAWriteBinary - VISAWriteBinaryWave - VISAWriteWave - WaveMeanStdv - WaveStats - WaveTracking - WaveTransform - wfprintf - WignerTransform - WindowFunction - XLLoadWave - ) - end + KEYWORDS = Set.new %w( + structure endstructure + threadsafe static + macro proc window menu function end + if else elseif endif switch strswitch endswitch + break return continue + for endfor do while + case default + try catch endtry + abortonrte abortonvalue + ) + + PREPROCESSOR_WORDS = Set.new %w( + pragma include + define ifdef ifndef undef + if elif else endif + ) + + DECLARATIONS = Set.new %w( + variable string wave strconstant constant + nvar svar dfref funcref struct + char uchar int16 uint16 int32 uint32 int64 uint64 float double + ) + + CONSTANTS = Set.new %w(nan inf) + + lazy { require_relative 'igorpro/builtins' } def self.object_name /\b[a-z][a-z0-9_\.]*?\b/i @@ -1588,22 +55,24 @@ def self.object_name rule %r(//), Comment, :comments rule %r/#{object}/ do |m| - if m[0].downcase.include?('function') + obj = m[0].downcase + + if obj.include?('function') token Keyword::Declaration push :parse_function - elsif self.class.igorDeclarations.include? m[0].downcase + elsif DECLARATIONS.include?(obj) token Keyword::Declaration push :parse_variables - elsif self.class.keywords.include? m[0].downcase + elsif KEYWORDS.include?(obj) token Keyword - elsif self.class.igorConstants.include? m[0].downcase + elsif CONSTANTS.include?(obj) token Keyword::Constant - elsif self.class.igorFunction.include? m[0].downcase + elsif FUNCTIONS.include?(obj) token Name::Builtin - elsif self.class.igorOperation.include? m[0].downcase + elsif OPERATIONS.include?(obj) token Keyword::Reserved push :operationFlags - elsif m[0].downcase =~ /\b(v|s|w)_[a-z]+[a-z0-9]*/ + elsif obj.match?(/\A(v|s|w)_[a-z]+[a-z0-9]*/o) token Name::Constant else token Name @@ -1620,14 +89,12 @@ def self.object_name state :preprocessor do rule %r((\#)(#{object})) do |m| - if self.class.preprocessor.include? m[2].downcase + if PREPROCESSOR_WORDS.include? m[2].downcase token Comment::Preproc else token Punctuation, m[1] #i.e. ModuleFunctions token Name, m[2] end - - end end diff --git a/lib/rouge/lexers/igorpro/builtins.rb b/lib/rouge/lexers/igorpro/builtins.rb new file mode 100644 index 0000000000..1fd8420d41 --- /dev/null +++ b/lib/rouge/lexers/igorpro/builtins.rb @@ -0,0 +1,1530 @@ +# This file is manually maintained by Michael Huth: michael.huth@byte-physics.de + +module Rouge + module Lexers + class IgorPro + # NOTE [jneen]: all elements here must be downcased! + + FUNCTIONS = Set.new %w( + abs + acos + acosh + addlistitem + airya + airyad + airyb + airybd + alog + annotationinfo + annotationlist + area + areaxy + asin + asinh + atan + atanh + atan2 + axisinfo + axislabel + axislist + axisvalfrompixel + axontelegraphagetdatanum + axontelegraphagetdatastring + axontelegraphagetdatastruct + axontelegraphgetdatanum + axontelegraphgetdatastring + axontelegraphgetdatastruct + axontelegraphgettimeoutms + axontelegraphsettimeoutms + base64decode + base64encode + besseli + besselj + besselk + bessely + beta + betai + binarysearch + binarysearchinterp + binomial + binomialln + binomialnoise + cabs + capturehistory + capturehistorystart + ceil + centerofmass + centerofmassxy + cequal + char2num + chebyshev + chebyshevu + checkname + childwindowlist + cleanupname + cmplx + cmpstr + conj + contourinfo + contournamelist + contournametowaveref + contourz + controlnamelist + converttextencoding + cos + cosh + cosintegral + cot + coth + countobjects + countobjectsdfr + cpowi + createdataobjectname + creationdate + csc + csch + csrinfo + csrwave + csrwaveref + csrxwave + csrxwaveref + ctablist + datafolderdir + datafolderexists + datafolderlist + datafolderrefchanges + datafolderrefsequal + datafolderrefstatus + date + datetime + datetojulian + date2secs + dawson + defined + deltax + digamma + dilogarithm + dimdelta + dimoffset + dimsize + ei + elliptice + elliptick + enoise + equalwaves + erf + erfc + erfcw + erfcx + exists + exp + expint + expintegrale1 + expnoise + factorial + faddeeva + fakedata + faverage + faveragexy + fdaqmx_ai_channelconfigs + fdaqmx_ai_getreader + fdaqmx_ao_updateoutputs + fdaqmx_connectterminals + fdaqmx_ctr_finished + fdaqmx_ctr_isfinished + fdaqmx_ctr_ispulsefinished + fdaqmx_ctr_readcounter + fdaqmx_ctr_readwithoptions + fdaqmx_ctr_setpulsefrequency + fdaqmx_ctr_start + fdaqmx_devicenames + fdaqmx_dio_finished + fdaqmx_dio_portwidth + fdaqmx_dio_read + fdaqmx_dio_write + fdaqmx_disconnectterminals + fdaqmx_errorstring + fdaqmx_externalcaldate + fdaqmx_numanaloginputs + fdaqmx_numanalogoutputs + fdaqmx_numcounters + fdaqmx_numdioports + fdaqmx_readchan + fdaqmx_readnamedchan + fdaqmx_resetdevice + fdaqmx_scangetavailable + fdaqmx_scangetnextindex + fdaqmx_scanstart + fdaqmx_scanstop + fdaqmx_scanwait + fdaqmx_scanwaitwithtimeout + fdaqmx_selfcaldate + fdaqmx_selfcalibration + fdaqmx_waveformstart + fdaqmx_waveformstop + fdaqmx_wf_isfinished + fdaqmx_wf_waituntilfinished + fdaqmx_writechan + fetchurl + finddimlabel + findlistitem + floor + fontlist + fontsizeheight + fontsizestringwidth + fresnelcos + fresnelsin + funcrefinfo + functioninfo + functionlist + functionpath + gamma + gammaeuler + gammainc + gammanoise + gammln + gammp + gammq + gauss + gauss1d + gauss2d + gcd + geometricmean + getbrowserline + getbrowserselection + getdatafolder + getdatafolderdfr + getdefaultfont + getdefaultfontsize + getdefaultfontstyle + getdimlabel + getenvironmentvariable + geterrmessage + getformula + getindependentmodulename + getindexedobjname + getindexedobjnamedfr + getkeystate + getrterrmessage + getrterror + getrtlocation + getrtlocinfo + getrtstackinfo + getscraptext + getuserdata + getwavesdatafolder + getwavesdatafolderdfr + getwindowbrowserselection + gisgetallfileformats + gissrefsareequal + gizmoinfo + gizmoscale + gnoise + greplist + grepstring + guideinfo + guidenamelist + hash + hcsr + hdf5attributeinfo + hdf5datasetinfo + hdf5libraryinfo + hdf5linkinfo + hdf5typeinfo + hermite + hermitegauss + hypergnoise + hypergpfq + hyperg0f1 + hyperg1f1 + hyperg2f1 + i + igorinfo + igorversion + imag + imageinfo + imagenamelist + imagenametowaveref + independentmodulelist + indexeddir + indexedfile + indextoscale + inf + integrate1d + interp + interp2d + interp3d + inverseerf + inverseerfc + itemsinlist + jacobicn + jacobisn + juliantodate + laguerre + laguerrea + laguerregauss + lambertw + layoutinfo + leftx + legendrea + limit + listmatch + listtotextwave + listtowaverefwave + ln + log + lognormalnoise + lorentziannoise + lowerstr + macroinfo + macrolist + macropath + magsqr + mandelbrotpoint + marcumq + matrixcondition + matrixdet + matrixdot + matrixrank + matrixtrace + max + mcc_autobridgebal + mcc_autofastcomp + mcc_autopipetteoffset + mcc_autoslowcomp + mcc_autowholecellcomp + mcc_getbridgebalenable + mcc_getbridgebalresist + mcc_getfastcompcap + mcc_getfastcomptau + mcc_getholding + mcc_getholdingenable + mcc_getmode + mcc_getneutralizationcap + mcc_getneutralizationenable + mcc_getosckillerenable + mcc_getpipetteoffset + mcc_getprimarysignalgain + mcc_getprimarysignalhpf + mcc_getprimarysignallpf + mcc_getrscompbandwidth + mcc_getrscompcorrection + mcc_getrscompenable + mcc_getrscompprediction + mcc_getsecondarysignalgain + mcc_getsecondarysignallpf + mcc_getslowcompcap + mcc_getslowcomptau + mcc_getslowcomptaux20enable + mcc_getslowcurrentinjenable + mcc_getslowcurrentinjlevel + mcc_getslowcurrentinjsetltime + mcc_getwholecellcompcap + mcc_getwholecellcompenable + mcc_getwholecellcompresist + mcc_selectmulticlamp700b + mcc_setbridgebalenable + mcc_setbridgebalresist + mcc_setfastcompcap + mcc_setfastcomptau + mcc_setholding + mcc_setholdingenable + mcc_setmode + mcc_setneutralizationcap + mcc_setneutralizationenable + mcc_setosckillerenable + mcc_setpipetteoffset + mcc_setprimarysignalgain + mcc_setprimarysignalhpf + mcc_setprimarysignallpf + mcc_setrscompbandwidth + mcc_setrscompcorrection + mcc_setrscompenable + mcc_setrscompprediction + mcc_setsecondarysignalgain + mcc_setsecondarysignallpf + mcc_setslowcompcap + mcc_setslowcomptau + mcc_setslowcomptaux20enable + mcc_setslowcurrentinjenable + mcc_setslowcurrentinjlevel + mcc_setslowcurrentinjsetltime + mcc_settimeoutms + mcc_setwholecellcompcap + mcc_setwholecellcompenable + mcc_setwholecellcompresist + mean + median + min + mod + moddate + mpfxemgpeak + mpfxexpconvexppeak + mpfxgausspeak + mpfxlorentzianpeak + mpfxvoigtpeak + nameofwave + nan + newfreedatafolder + newfreewave + norm + normalizeunicode + note + numberbykey + numpnts + numtype + numvarordefault + num2char + num2istr + num2str + nvar_exists + operationlist + padstring + panelresolution + paramisdefault + parsefilepath + pathlist + pcsr + pi + pictinfo + pictlist + pixelfromaxisval + pnt2x + poissonnoise + poly + polygonarea + poly2d + possiblyquotename + proceduretext + procedureversion + p2rect + qcsr + real + removebykey + removeending + removefromlist + removelistitem + replacenumberbykey + replacestring + replacestringbykey + replicatestring + rightx + round + r2polar + sawtooth + scaletoindex + screenresolution + sec + sech + secs2date + secs2time + selectnumber + selectstring + setenvironmentvariable + sign + sin + sinc + sinh + sinintegral + sortlist + specialcharacterinfo + specialcharacterlist + specialdirpath + sphericalbessj + sphericalbessjd + sphericalbessy + sphericalbessyd + sphericalharmonics + sqlallochandle + sqlallocstmt + sqlbinarywavestotextwave + sqlbindcol + sqlbindparameter + sqlbrowseconnect + sqlbulkoperations + sqlcancel + sqlclosecursor + sqlcolattributenum + sqlcolattributestr + sqlcolumnprivileges + sqlcolumns + sqlconnect + sqldatasources + sqldescribecol + sqldescribeparam + sqldisconnect + sqldriverconnect + sqldrivers + sqlendtran + sqlerror + sqlexecdirect + sqlexecute + sqlfetch + sqlfetchscroll + sqlforeignkeys + sqlfreeconnect + sqlfreeenv + sqlfreehandle + sqlfreestmt + sqlgetconnectattrnum + sqlgetconnectattrstr + sqlgetcursorname + sqlgetdatanum + sqlgetdatastr + sqlgetdescfieldnum + sqlgetdescfieldstr + sqlgetdescrec + sqlgetdiagfieldnum + sqlgetdiagfieldstr + sqlgetdiagrec + sqlgetenvattrnum + sqlgetenvattrstr + sqlgetfunctions + sqlgetinfonum + sqlgetinfostr + sqlgetstmtattrnum + sqlgetstmtattrstr + sqlgettypeinfo + sqlmoreresults + sqlnativesql + sqlnumparams + sqlnumresultcols + sqlnumresultrowsifknown + sqlnumrowsfetched + sqlparamdata + sqlprepare + sqlprimarykeys + sqlprocedurecolumns + sqlprocedures + sqlputdata + sqlreinitialize + sqlrowcount + sqlsetconnectattrnum + sqlsetconnectattrstr + sqlsetcursorname + sqlsetdescfieldnum + sqlsetdescfieldstr + sqlsetdescrec + sqlsetenvattrnum + sqlsetenvattrstr + sqlsetpos + sqlsetstmtattrnum + sqlsetstmtattrstr + sqlspecialcolumns + sqlstatistics + sqltableprivileges + sqltables + sqltextwavetobinarywaves + sqltextwaveto2dbinarywave + sqlupdateboundvalues + sqlxopcheckstate + sql2dbinarywavetotextwave + sqrt + startmstimer + statsbetacdf + statsbetapdf + statsbinomialcdf + statsbinomialpdf + statscauchycdf + statscauchypdf + statschicdf + statschipdf + statscmssdcdf + statscorrelation + statsdexpcdf + statsdexppdf + statserlangcdf + statserlangpdf + statserrorpdf + statsevaluecdf + statsevaluepdf + statsexpcdf + statsexppdf + statsfcdf + statsfpdf + statsfriedmancdf + statsgammacdf + statsgammapdf + statsgeometriccdf + statsgeometricpdf + statsgevcdf + statsgevpdf + statshypergcdf + statshypergpdf + statsinvbetacdf + statsinvbinomialcdf + statsinvcauchycdf + statsinvchicdf + statsinvcmssdcdf + statsinvdexpcdf + statsinvevaluecdf + statsinvexpcdf + statsinvfcdf + statsinvfriedmancdf + statsinvgammacdf + statsinvgeometriccdf + statsinvkuipercdf + statsinvlogisticcdf + statsinvlognormalcdf + statsinvmaxwellcdf + statsinvmoorecdf + statsinvnbinomialcdf + statsinvncchicdf + statsinvncfcdf + statsinvnormalcdf + statsinvparetocdf + statsinvpoissoncdf + statsinvpowercdf + statsinvqcdf + statsinvqpcdf + statsinvrayleighcdf + statsinvrectangularcdf + statsinvspearmancdf + statsinvstudentcdf + statsinvtopdowncdf + statsinvtriangularcdf + statsinvusquaredcdf + statsinvvonmisescdf + statsinvweibullcdf + statskuipercdf + statslogisticcdf + statslogisticpdf + statslognormalcdf + statslognormalpdf + statsmaxwellcdf + statsmaxwellpdf + statsmedian + statsmoorecdf + statsnbinomialcdf + statsnbinomialpdf + statsncchicdf + statsncchipdf + statsncfcdf + statsncfpdf + statsnctcdf + statsnctpdf + statsnormalcdf + statsnormalpdf + statsparetocdf + statsparetopdf + statspermute + statspoissoncdf + statspoissonpdf + statspowercdf + statspowernoise + statspowerpdf + statsqcdf + statsqpcdf + statsrayleighcdf + statsrayleighpdf + statsrectangularcdf + statsrectangularpdf + statsrunscdf + statsspearmanrhocdf + statsstudentcdf + statsstudentpdf + statstopdowncdf + statstriangularcdf + statstriangularpdf + statstrimmedmean + statsusquaredcdf + statsvonmisescdf + statsvonmisesnoise + statsvonmisespdf + statswaldcdf + statswaldpdf + statsweibullcdf + statsweibullpdf + stopmstimer + stringbykey + stringcrc + stringfromlist + stringlist + stringmatch + stringtounsignedbytewave + strlen + strsearch + strvarordefault + str2num + studenta + studentt + sum + svar_exists + tableinfo + tagval + tagwaveref + tan + tanh + tdmaddchannel + tdmaddgroup + tdmappenddatavalues + tdmappenddatavaluestime + tdmchannelpropertyexists + tdmclosechannel + tdmclosefile + tdmclosegroup + tdmcreatechannelproperty + tdmcreatefile + tdmcreatefileproperty + tdmcreategroupproperty + tdmfilepropertyexists + tdmgetchannelpropertynames + tdmgetchannelpropertynum + tdmgetchannelpropertystr + tdmgetchannelpropertytime + tdmgetchannelpropertytype + tdmgetchannels + tdmgetchannelstringpropertylen + tdmgetdatatype + tdmgetdatavalues + tdmgetdatavaluestime + tdmgetfilepropertynames + tdmgetfilepropertynum + tdmgetfilepropertystr + tdmgetfilepropertytime + tdmgetfilepropertytype + tdmgetfilestringpropertylen + tdmgetgrouppropertynames + tdmgetgrouppropertynum + tdmgetgrouppropertystr + tdmgetgrouppropertytime + tdmgetgrouppropertytype + tdmgetgroups + tdmgetgroupstringpropertylen + tdmgetlibraryerrordescription + tdmgetnumchannelproperties + tdmgetnumchannels + tdmgetnumdatavalues + tdmgetnumfileproperties + tdmgetnumgroupproperties + tdmgetnumgroups + tdmgrouppropertyexists + tdmopenfile + tdmopenfileex + tdmremovechannel + tdmremovegroup + tdmreplacedatavalues + tdmreplacedatavaluestime + tdmsavefile + tdmsetchannelpropertynum + tdmsetchannelpropertystr + tdmsetchannelpropertytime + tdmsetdatavalues + tdmsetdatavaluestime + tdmsetfilepropertynum + tdmsetfilepropertystr + tdmsetfilepropertytime + tdmsetgrouppropertynum + tdmsetgrouppropertystr + tdmsetgrouppropertytime + textencodingcode + textencodingname + textfile + threadgroupcreate + threadgroupgetdf + threadgroupgetdfr + threadgrouprelease + threadgroupwait + threadprocessorcount + threadreturnvalue + ticks + time + tracefrompixel + traceinfo + tracenamelist + tracenametowaveref + trimstring + trunc + uniquename + unpadstring + unsetenvironmentvariable + upperstr + urldecode + urlencode + variablelist + variance + vcsr + viassertintrsignal + viasserttrigger + viassertutilsignal + viclear + viclose + vidisableevent + vidiscardevents + vienableevent + vifindnext + vifindrsrc + vigetattribute + vigetattributestring + vigpibcommand + vigpibcontrolatn + vigpibcontrolren + vigpibpasscontrol + vigpibsendifc + viin8 + viin16 + viin32 + vilock + vimapaddress + vimaptrigger + vimemalloc + vimemfree + vimovein8 + vimovein16 + vimovein32 + vimoveout8 + vimoveout16 + vimoveout32 + viopen + viopendefaultrm + viout8 + viout16 + viout32 + vipeek8 + vipeek16 + vipeek32 + vipoke8 + vipoke16 + vipoke32 + viread + vireadstb + visetattribute + visetattributestring + vistatusdesc + viterminate + viunlock + viunmapaddress + viunmaptrigger + viusbcontrolin + viusbcontrolout + vivxicommandquery + viwaitonevent + viwrite + voigtfunc + voigtpeak + wavecrc + wavedatatostring + wavedims + waveexists + wavehash + waveinfo + wavelist + wavemax + wavemin + waveminandmax + wavemodcount + wavename + waverefindexed + waverefindexeddfr + waverefsequal + waverefwavetolist + wavetextencoding + wavetype + waveunits + whichlistitem + winlist + winname + winrecreation + wintype + wnoise + xcsr + xwavename + xwavereffromtrace + x2pnt + zcsr + zerniker + zeromq_client_connect + zeromq_client_recv + zeromq_client_send + zeromq_handler_start + zeromq_handler_stop + zeromq_pub_bind + zeromq_pub_send + zeromq_server_bind + zeromq_server_recv + zeromq_server_send + zeromq_set + zeromq_set_logging_template + zeromq_stop + zeromq_sub_add_filter + zeromq_sub_connect + zeromq_sub_recv + zeromq_sub_remove_filter + zeromq_test_callfunction + zeromq_test_serializewave + zeta + ) + + OPERATIONS = Set.new %w( + abort + addfifodata + addfifovectdata + addmovieaudio + addmovieframe + addwavestoboxplot + addwavestoviolinplot + adoptfiles + apmath + append + appendboxplot + appendimage + appendlayoutobject + appendmatrixcontour + appendtext + appendtogizmo + appendtograph + appendtolayout + appendtotable + appendviolinplot + appendxyzcontour + autopositionwindow + axontelegraphfindservers + backgroundinfo + beep + beziertopolygon + boundingball + boxsmooth + browseurl + buildmenu + button + cd + chart + checkbox + checkdisplayed + choosecolor + close + closehelp + closemovie + closeproc + colorscale + colortab2wave + concatenate + controlbar + controlinfo + controlupdate + convertglobalstringtextencoding + convexhull + convolve + copydimlabels + copyfile + copyfolder + copyscales + correlate + createaliasshortcut + createbrowser + cross + ctrlbackground + ctrlfifo + ctrlnamedbackground + cursor + curvefit + customcontrol + cwt + daqmx_ai_setupreader + daqmx_ao_setoutputs + daqmx_ctr_countedges + daqmx_ctr_outputpulse + daqmx_ctr_period + daqmx_ctr_pulsewidth + daqmx_deviceinfo + daqmx_dio_config + daqmx_dio_writenewdata + daqmx_scan + daqmx_waveformgen + debugger + debuggeroptions + defaultfont + defaultguicontrols + defaultguifont + defaulttextencoding + defineguide + delayupdate + deleteannotations + deletefile + deletefolder + deletepoints + differentiate + dir + display + displayhelptopic + displayprocedure + doalert + doigormenu + doupdate + dowindow + doxopidle + dpss + drawaction + drawarc + drawbezier + drawline + drawoval + drawpict + drawpoly + drawrect + drawrrect + drawtext + drawusershape + dspdetrend + dspperiodogram + duplicate + duplicatedatafolder + dwt + edgestats + edit + errorbars + estimatepeaksizes + execute + executescripttext + experimentinfo + experimentmodified + exportgizmo + extract + fastgausstransform + fastop + fbinread + fbinwrite + fcall_callfunction + fcall_freelibrary + fcall_getfunctionlist + fcall_getparamtypelist + fcall_loadlibrary + fcall_version + fft + fgetpos + fifostatus + fifo2wave + filterfir + filteriir + findapeak + findcontour + findduplicates + findlevel + findlevels + findpeak + findpointsinpoly + findroots + findsequence + findvalue + fmaxflat + fpclustering + fprintf + freadline + fsetpos + fstatus + ftpcreatedirectory + ftpdelete + ftpdownload + ftpupload + funcfit + funcfitmd + gbloadwave + getaxis + getcamera + getfilefolderinfo + getgizmo + getlastusermenuinfo + getmarquee + getmouse + getselection + getwindow + giscreatevectorlayer + gisgetrasterinfo + gisgetregisteredfileinfo + gisgetvectorlayerinfo + gisloadrasterdata + gisloadvectordata + gisrasterizevectordata + gisregisterfile + gistransformcoords + gisunregisterfile + giswritefielddata + giswritegeometrydata + giswriteraster + gpibreadbinarywave2 + gpibreadbinary2 + gpibreadwave2 + gpibread2 + gpibwritebinarywave2 + gpibwritebinary2 + gpibwritewave2 + gpibwrite2 + gpib2 + graphnormal + graphwavedraw + graphwaveedit + grep + groupbox + hanning + hcluster + hdfinfo + hdfreadimage + hdfreadsds + hdfreadvset + hdf5closefile + hdf5closegroup + hdf5control + hdf5createfile + hdf5creategroup + hdf5createlink + hdf5dimensionscale + hdf5dump + hdf5dumperrors + hdf5flushfile + hdf5listattributes + hdf5listgroup + hdf5loaddata + hdf5loadgroup + hdf5loadimage + hdf5openfile + hdf5opengroup + hdf5savedata + hdf5savegroup + hdf5saveimage + hdf5unlinkobject + hideigormenus + hideinfo + hideprocedures + hidetools + hilberttransform + histogram + ica + ifft + imageanalyzeparticles + imageblend + imageboundarytomask + imagecomposite + imageedgedetection + imagefileinfo + imagefilter + imagefocus + imagefromxyz + imagegenerateroimask + imageglcm + imagehistmodification + imagehistogram + imageinterpolate + imagelineprofile + imageload + imagemorphology + imageregistration + imageremovebackground + imagerestore + imagerotate + imagesave + imageseedfill + imageskeleton3d + imagesnake + imagestats + imagethreshold + imagetransform + imageunwrapphase + imagewindow + indexsort + insertpoints + instantfrequency + integrate + integrateode + integrate2d + interpolate2 + interpolate3d + interp3dpath + itccloseall2 + itcclosedevice2 + itcconfigallchannels2 + itcconfigchannelreset2 + itcconfigchannelupload2 + itcconfigchannel2 + itcfifoavailableall2 + itcfifoavailable2 + itcgetallchannelsconfig2 + itcgetchannelconfig2 + itcgetcurrentdevice2 + itcgetdeviceinfo2 + itcgetdevices2 + itcgeterrorstring2 + itcgetserialnumber2 + itcgetstate2 + itcgetversions2 + itcinitialize2 + itcopendevice2 + itcreadadc2 + itcreaddigital2 + itcreadtimer2 + itcselectdevice2 + itcsetdac2 + itcsetglobals2 + itcsetmodes2 + itcsetstate2 + itcstartacq2 + itcstopacq2 + itcupdatefifopositionall2 + itcupdatefifoposition2 + itcwritedigital2 + jcamploadwave + jointhistogram + jsonxop_addtree + jsonxop_addvalue + jsonxop_dump + jsonxop_getarraysize + jsonxop_getkeys + jsonxop_getmaxarraysize + jsonxop_gettype + jsonxop_getvalue + jsonxop_new + jsonxop_parse + jsonxop_release + jsonxop_remove + jsonxop_version + killbackground + killcontrol + killdatafolder + killfifo + killfreeaxis + killpath + killpicts + killstrings + killvariables + killwaves + killwindow + kmeans + label + layout + layoutpageaction + layoutslideshow + legend + linearfeedbackshiftregister + listbox + loaddata + loadpackagepreferences + loadpict + loadwave + loess + lombperiodogram + make + makeindex + markperftesttime + matrixbalance + matrixconvolve + matrixcorr + matrixeigenv + matrixfactor + matrixfilter + matrixgaussj + matrixglm + matrixinverse + matrixlinearsolve + matrixlinearsolvetd + matrixlls + matrixlubksub + matrixlud + matrixludtd + matrixmultiply + matrixmultiplyadd + matrixop + matrixreversebalance + matrixschur + matrixsolve + matrixsparse + matrixsvbksub + matrixsvd + matrixtranspose + mcc_findservers + measurestyledtext + mfr_checkfornewbricklets + mfr_closeresultfile + mfr_createoverviewtable + mfr_getbrickletcount + mfr_getbrickletdata + mfr_getbrickletdeploydata + mfr_getbrickletmetadata + mfr_getbrickletrawdata + mfr_getreporttemplate + mfr_getresultfilemetadata + mfr_getresultfilename + mfr_getvernissageversion + mfr_getversion + mfr_getxoperrormessage + mfr_openresultfile + mlloadwave + modify + modifyboxplot + modifybrowser + modifycamera + modifycontour + modifycontrol + modifycontrollist + modifyfreeaxis + modifygizmo + modifygraph + modifyimage + modifylayout + modifypanel + modifyprocedure + modifytable + modifyviolinplot + modifywaterfall + movedatafolder + movefile + movefolder + movestring + movesubwindow + movevariable + movewave + movewindow + multitaperpsd + multithreadingcontrol + nc_closefile + nc_dumperrors + nc_inquire + nc_listattributes + nc_listobjects + nc_loaddata + nc_openfile + neuralnetworkrun + neuralnetworktrain + newcamera + newdatafolder + newfifo + newfifochan + newfreeaxis + newgizmo + newimage + newlayout + newmovie + newnotebook + newpanel + newpath + newwaterfall + niloadwave + ni4882 + note + notebook + notebookaction + open + openhelp + opennotebook + optimize + parseoperationtemplate + pathinfo + pauseforuser + pauseupdate + pca + playmovie + playmovieaction + playsound + polygonop + popupcontextualmenu + popupmenu + preferences + primefactors + print + printf + printgraphs + printlayout + printnotebook + printsettings + printtable + project + pulsestats + putscraptext + pwd + quit + ratiofromnumber + redimension + remez + remove + removecontour + removefromgizmo + removefromgraph + removefromlayout + removefromtable + removeimage + removelayoutobjects + removepath + rename + renamedatafolder + renamepath + renamepict + renamewindow + reorderimages + reordertraces + replacetext + replacewave + resample + resumeupdate + reverse + rotate + save + savedata + saveexperiment + savegizmocopy + savegraphcopy + savenotebook + savepackagepreferences + savepict + savetablecopy + setactivesubwindow + setaxis + setbackground + setdashpattern + setdatafolder + setdimlabel + setdrawenv + setdrawlayer + setfilefolderinfo + setformula + setidleperiod + setigorhook + setigormenumode + setigoroption + setmarquee + setprocesssleep + setrandomseed + setscale + setvariable + setwavelock + setwavetextencoding + setwindow + showigormenus + showinfo + showtools + silent + sleep + slider + smooth + smoothcustom + sort + sortcolumns + soundinrecord + soundinset + soundinstartchart + soundinstatus + soundinstopchart + soundloadwave + soundsavewave + sphericalinterpolate + sphericaltriangulate + splitstring + splitwave + sprintf + sqlhighlevelop + sscanf + stack + stackwindows + statsangulardistancetest + statsanova1test + statsanova2nrtest + statsanova2rmtest + statsanova2test + statschitest + statscircularcorrelationtest + statscircularmeans + statscircularmoments + statscirculartwosampletest + statscochrantest + statscontingencytable + statsdiptest + statsdunnetttest + statsfriedmantest + statsftest + statshodgesajnetest + statsjbtest + statskde + statskendalltautest + statskstest + statskwtest + statslinearcorrelationtest + statslinearregression + statsmulticorrelationtest + statsnpmctest + statsnpnominalsrtest + statsquantiles + statsrankcorrelationtest + statsresample + statssample + statsscheffetest + statsshapirowilktest + statssigntest + statssrtest + statsttest + statstukeytest + statsvariancestest + statswatsonusquaredtest + statswatsonwilliamstest + statswheelerwatsontest + statswilcoxonranktest + statswrcorrelationtest + stft + structfill + structget + structput + sumdimension + sumseries + tabcontrol + tag + tdmloaddata + tdmsavedata + textbox + texthistogram + text2bezier + threadgroupputdf + threadstart + tickwavesfromaxis + tile + tilewindows + titlebox + tocommandline + toolsgrid + triangulate3d + tufxop_acquirelock + tufxop_clear + tufxop_getstorage + tufxop_init + tufxop_releaselock + tufxop_runninginmainthread + tufxop_version + unwrap + unzipfile + urlrequest + valdisplay + vdtcloseport2 + vdtgetportlist2 + vdtgetstatus2 + vdtopenport2 + vdtoperationsport2 + vdtreadbinarywave2 + vdtreadbinary2 + vdtreadhexwave2 + vdtreadhex2 + vdtreadwave2 + vdtread2 + vdtterminalport2 + vdtwritebinarywave2 + vdtwritebinary2 + vdtwritehexwave2 + vdtwritehex2 + vdtwritewave2 + vdtwrite2 + vdt2 + visacontrol + visaread + visareadbinary + visareadbinarywave + visareadwave + visawrite + visawritebinary + visawritebinarywave + visawritewave + wavemeanstdv + wavestats + wavetracking + wavetransform + wfprintf + wignertransform + windowfunction + xlloadwave + ) + end + end +end From 50c6de6a6d2b50d65c509da2856fefc54bac2b35 Mon Sep 17 00:00:00 2001 From: jneen Date: Fri, 20 Mar 2026 13:50:43 -0400 Subject: [PATCH 2/2] igorpro: remove unnecessary regex interpolation --- lib/rouge/lexers/igorpro.rb | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/lib/rouge/lexers/igorpro.rb b/lib/rouge/lexers/igorpro.rb index cfd6b5902d..aaeaa64178 100644 --- a/lib/rouge/lexers/igorpro.rb +++ b/lib/rouge/lexers/igorpro.rb @@ -39,11 +39,7 @@ class IgorPro < RegexLexer lazy { require_relative 'igorpro/builtins' } - def self.object_name - /\b[a-z][a-z0-9_\.]*?\b/i - end - - object = self.object_name + object = /[a-z][a-z0-9_\.]*/i noLineBreak = /(?:[ \t]|(?:\\\s*[\r\n]))+/ operator = %r([\#$~!%^&*+=\|?:<>/-]) punctuation = /[{}()\[\],.;]/ @@ -54,7 +50,7 @@ def self.object_name state :root do rule %r(//), Comment, :comments - rule %r/#{object}/ do |m| + rule object do |m| obj = m[0].downcase if obj.include?('function') @@ -102,8 +98,8 @@ def self.object_name mixin :whitespace rule %r/\"/, Literal::String::Double, :string1 #punctuation for string mixin :string2 - rule %r/#{number_float}/, Literal::Number::Float, :pop! - rule %r/#{number_int}/, Literal::Number::Integer, :pop! + rule number_float, Literal::Number::Float, :pop! + rule number_int, Literal::Number::Integer, :pop! rule %r/[\(\[\{][^\)\]\}]+[\)\]\}]/, Generic, :pop! rule %r/[^\s\/\(]+/, Generic, :pop! rule(//) { pop! } @@ -129,7 +125,7 @@ def self.object_name end state :operationFlags do - rule %r/#{noLineBreak}/, Text + rule noLineBreak, Text rule %r/[=]/, Punctuation, :assignment rule %r([/][a-z]+)i, Keyword::Pseudo, :operationFlags rule %r/(as)(\s*)(#{object})/i do @@ -155,20 +151,20 @@ def self.object_name state :characters do rule %r/\s/, Text - rule %r/#{operator}/, Operator - rule %r/#{punctuation}/, Punctuation + rule operator, Operator + rule punctuation, Punctuation rule %r/\"/, Literal::String::Double, :string1 #punctuation for string mixin :string2 end state :numbers do - rule %r/#{number_float}/, Literal::Number::Float - rule %r/#{number_hex}/, Literal::Number::Hex - rule %r/#{number_int}/, Literal::Number::Integer + rule number_float, Literal::Number::Float + rule number_hex, Literal::Number::Hex + rule number_int, Literal::Number::Integer end state :whitespace do - rule %r/#{noLineBreak}/, Text + rule noLineBreak, Text end state :string1 do