arma-studio / arma.studio Goto Github PK
View Code? Open in Web Editor NEWIDE for ArmA
IDE for ArmA
Current property types are not enough to cover the whole range of possible configurations
What still is required:
more may follow
files refs:
due to bugs the linter has to be updated
in that move, change the system from coco/r to antlr4 so that preprocessor can be used later on
Those special files would be added ontop of every file silently and without being presented editible to the user (alternativly it is editible but globally applied instant)
this allows for creating systems like stacktrace without the chance of one accidently forgetting to add it
A mission script in the documents folder has following script Path when ran ingame:
Path: C:\Users\dedmen\Documents\Arma 3\mpmissions\LoneSoldierVanillaDbgConsole.VR\init.sqf
Ingame: C:\Users\dedmen\Documents\Arma 3\mpmissions\LoneSoldierVanillaDbgConsole.VR\init.sqf
It is most likely the smae with non-mp missions in the documents folder
mpMissions in game folder
Path : F:\Steam\SteamApps\common\Arma 3\MPMissions\LoneSoldierVanillaDbgConsole.VR.pbo
Ingame: mpmissions\__cur_mp.vr\init.sqf
PBOPREFIX is ignored.
#TODO test what happens for folders inside \MPMissions
#TODO test what happens for folders inside documents\arma 3\missions
#TODO test what happens for pbo/folders inside \Missions
#TODO test if results are different when ran from Editor or from local dedicated server
By simply saving all info on close and then restoring that info + comparing the change date on the different files, the loading process can be sped up by a large degree
requires additional file to store such info
Version: 0.1.6290.31151
The SQF Linter currently is only checking the syntax and not doing analysis on the code.
Add that analysis to support the SQF developer more
<root>
<version>0.3.6390.34477</version>
<report><![CDATA[clicked the debugger detach button (red square) and tried to remove a breakepoint]]></report>
<stacktrace><![CDATA[Unterbrochene Pipe.
bei System.IO.Pipes.PipeStream.CheckWriteOperations()
bei System.IO.Pipes.PipeStream.Write(Byte[] buffer, Int32 offset, Int32 count)
bei Dedbugger.DebuggerCore.WriteMessage(JsonNode node) in C:\projects\arma-studio\Dedbugger\DebuggerCore.cs:Zeile 270.
bei Dedbugger.DebuggerCore.RemoveBreakpoint(BreakpointInfo b) in C:\projects\arma-studio\Dedbugger\DebuggerCore.cs:Zeile 292.
bei ArmA.Studio.DebuggerContext.BreakpointManager_OnBreakPointsChanged(Object sender, BreakPointsChangedEventArgs e) in C:\projects\arma-studio\ArmA.Studio\DebuggerContext.cs:Zeile 118.
bei System.EventHandler`1.Invoke(Object sender, TEventArgs e)
bei ArmA.Studio.BreakpointManager.RemoveBreakpoint(ProjectFile pff, Int32 line) in C:\projects\arma-studio\ArmA.Studio\BreakpointManager.cs:Zeile 99.
bei ArmA.Studio.BreakpointManager.RemoveBreakpoint(BreakpointInfo bpi) in C:\projects\arma-studio\ArmA.Studio\BreakpointManager.cs:Zeile 89.
bei ArmA.Studio.UI.BreakPointMargin.OnMouseDown(MouseButtonEventArgs e) in C:\projects\arma-studio\ArmA.Studio\UI\BreakPointMargin.cs:Zeile 122.
bei System.Windows.UIElement.OnMouseDownThunk(Object sender, MouseButtonEventArgs e)
bei System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
bei System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
bei System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
bei System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
bei System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
bei System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
bei System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
bei System.Windows.Input.InputManager.ProcessStagingArea()
bei System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
bei System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
bei System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
bei System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
bei System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
bei MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
bei MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
bei System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
bei System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
]]></stacktrace>
<trace />
</root>```
currently it can confuse the user to be abbruptly prompted by a notification that somethign happens and he might just click OK
Version: 0.1.6290.31151
Current format is lowercase
(eg. setunitloadout
).
Expected format is camelCase
(eg. setUnitLoadout
) as documented on wiki and shown inside Arma.
Aditionally it would be nice if auto-complete would ignore casing and you could type whichever of the above and it would still show proper camelCase
commands.
using a "skip" directory would solve the problem with a workspace beeing needed for the tool to operate
skip directory should be located in the appdata folder
should never be wiped by the tool
Steps to reproduce
- Programm starten
- Anfangen zu tippen, dass sich die Variablenübersicht öffnet
3 Alt + TABIssues
- Übersicht bleibt geöffnet
Expected
- Übersicht sollte schließen
Additional Notes
For some reason, some users report that the tool starts off-screen
to prevent this, the tool should always double check if it is out of bounds at start
DebuggerCore.cs L385 crash if callstack is null. Because callstack can be empty.. Because... Arma
<root>
<version>0.2.6402.7153</version>
<report><![CDATA[Added a existing file 'INIT.sqf' with content already in it, and it encountered an error
]]></report>
<stacktrace><![CDATA[Ambiguous match found.
at System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers)
at System.Type.GetMethod(String name)
at ArmA.Studio.Data.Virtual.ShowOperationFailedMessageBox(Exception ex)
at ArmA.Studio.Data.ProjectFile.Delete()
at ArmA.Studio.DataContext.SolutionPaneUtil.ProjectFileModelView.<get_CmdContextMenu_Delete>b__31_0(Object p)
at ArmA.Studio.Data.UI.Commands.RelayCommand.Execute(Object parameter)
at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
]]></stacktrace>
<trace />
</root>```
Arma Studio currently lacks the ability to add several existing files at once, currently this can only be achieved by adding the files one by one, or editing the .assln file.
Therefore I propose adding two new options, or tweaking the current ones. Either the "Add existing item..." should allow for selecting multiple files, or a new option should be added "Add existing items..." to add multiple items at once.
There should also be an option to add existing folders, which should either add the folder and all its files, or recursively add the folders, and all its files, sub-folders and their files.
Ref https://community.bistudio.com/wiki?title=Debugging_Techniques&oldid=87872#Arma_2
Binary gamefile viewer thingy
Version: 0.1.6290.31151
Changing a file, not saving it and then undoing to the start still shows file as changed with the *
symbol.
Additionally the pop-up to save the file on close also shows after performing the same steps.
Expected result is to remove the *
from the file tab and not ask for save if file was unchanged in that form.
Version: 0.1.6290.31151
Expected sorting is A to Z.
Steps from the Wiki Article "how to debug"
I just cannot attach the debugger. I did everything explained and was sure to download the 64bit .dll file. I followed the steps of the video. Deactivated Mods and Battleeye etc.
After I loaded my mission where my script is running in I expected the debugger to be able to attach. But always the error msg appears.
C:\
ConfigHost.App.WorkspacePath
when ArmA.Studio crashes on startup with this specific error (or generally to prevent users from locking them self out)Application just crashes, without error message
Invalid path string stores in App.ini config and ArmAStudio crashes on every execution try
next issue: i added my two main folders (quiet a few files, large git history) and when closing, starting its doing the initial lint and then just showing the loading screen for what seems forever
https://gist.github.com/vabene1111/31230bb168829cb402d4a3dce7d25c32
Window size is bugged.. And it tries to set "TOP" to "215333333333333" which is > than maxInt32
Window position on startup is always wrong for me. always too high
ok 1. select workspace -> small window -> close/reopen works, 2. open, maximize -> close -> open: windows is on wrong monitor in fullscren, then moving to main monitor -> closing -> opening -> bug
Add the functionallity to select errors in the error list and then press CTRL+C to copy the contents as comma separated file to clipboard
example output:
line, col, file, msg
1, 12, foobar.sqf, unexpected <EOF> expected ';'
There is no word search as of now.
implement that for all text based files
Include a dialog under the help tab to show the current version (Git commit is ideal)
Or alternatively show the version in the title.
This should make it easier to determine if specific commits have broken anything when supporting end users.
Alter how systems work to create a plugin system allowing for more abstraction and more cleaner code.
((also will allow user-made extensions which are not connected to the ArmA.Studio in any way))
Basic keybinds for basic operations should be implemented.
For example:
To support a wider range of languages and make implementing a new one (or different parser) more convenient, implement the Language-Server-Protocol to ArmA.Studio and connect its parsers via it.
see:
https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md
A Visualizer like the ingame one for diag_captureFrame output
https://community.bistudio.com/wiki/diag_captureFrame
https://community.bistudio.com/wiki/Performance_Profiling
Add Drag N Drop support to the solution explorer so that files can be dragNdropped into it
requires to handle the drag drop events via a new attachable property
some insight:
currently, text editors lack all sort of context menu
this has to be changed to support at least the bare minimum of "settings"
context menu should support additional menu items provided by possible follow up documents
see #63
as many user have trouble setting the tool up correctly and using it, a "help" should be added containing documents that allow quick insight about how to use a feature
should be able to support many topics, display a topic instantly (eg. when pressing help in the workspace dialog) and should allow for image display (maybe simple HTML view?)
For simple usage, a user should not be required to take care of his debugger DLL
goal: implement a system that watches theese things
#10 is the basis of this preventing syntax errors.
We also want to detect some logic errors and inform the user about something that his code is doing that he is not expecting. Which happens quite often in SQF.
This should for example tell users about undefined local variables. Like
if (_this) then {
_testVar = true; //Warning not using private and maybe overwriting variable in a higher scope
}
if (_testVar) then { //Warning _testVar might be undefined
<do something>
}
In a perfect world #10 should see that _testVar may be Nil and that if (Nil)
is invalid syntax but to know that we would have to know every place our function is called from. (This should also produce a warning about not using params
or param
to validate the type of the _this argument)
Also stuff like
switch _test do { //Possible undefined variable
___switch = Nil; //Warning! accessing `___switch` inside a switch statement may cause script errors.
case 1; //Will produce script error because `___switch` is Nil.
}:
Who knew that you could access ___switch
and by setting it break any case statement? Users don't know. But Arma.Studio should.
Later on we should also offer quick fixes to the user. So they press one button and we fix their script. But that should probably be handled in a different issue later on.
Feel free to post other examples of stuff we should detect under this issue. So we have a somewhat todo list when we start to implement this.
apply
does manually with a forEach loop and two arrays.if (false)
-- See my first code statement. That if statement is useless code because a variable is defined but instantly deleted again as it leaves scope. If it's not overwriting any var in a higher scopeCurrently, the variable view is implemented rudimentary ...
enhance it by changing the styling and usability to the variable view of for example Visual Studio
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.