Where is Atom keeping its state? - atom-editor

I'm on OSX and had a file open in Atom which I hadn't given a name to. I had to restart my computer and when it came back again I clicked the wrong thing and it forgot all the old file names, and the unnamed file seems to be gone without a trace. If I use Time Machine to restore the .atom file to an old state it detects that something is 'wrong' and pulls the most recent state from some other location (it gets recent filenames from somewhere). Any idea where it's getting that state from?

The literal answer to my question, found using some aggressive grepping, is ./Library/Application Support/Atom/IndexedDB/file__0.indexeddb.leveldb.
It appears to be that the dialog which caused Atom to forget my file list was shown as the result of a real bug rather than bad intentional UX.
Here are the instructions which got my file contents back (courtesy someone in the Atom slack channel):
Open the Chrome Dev Tools in Atom using Cmd + Option + I
Click the Application tab
In the tree view on the left of this tab, expand IndexedDB > AtomEnvironments and click on the table states
In the grid on the right, you'll see one or more entries keyed with editor-<some hash>
For each of those entries, expand the Object in the Value column and then expand this tree: Object > value > project > buffers
For each file in the "buffers" list, expand it and try to find the untitled file, it won't have a filePath property. The text field will have the file contents.

Related

Why is object in AOT marked with red cross?

I have to extend report's query to add a new field.
I've created extension of a query, joined required datasources and can see new field in the list of fields.
For some reason the report in the AOT is displaying with red cross sign:
In properties i can see error in metadata: "There was an error reading metadata. Make sure the metadata xml file(s) are accessible, are well formed and are not corrupted with duplicate or missing xml elements.
The exception message is: Element named: 'Copy1' of type 'ModelElement' already exists among elements: 'Copy1'.
Parameter name: item
Additional information:
AOT/Reports/Reports/WHSInvent"
There is an .xml of that object in packages local directory, there are no any duplicate names in any node of that report.
Any ideas how it can be fixed?
I've run into this before and there are a two things that come to mind.
Often times it's due to an incorrect merge where changes are merged and metadata is accidentally duplicated (in your case it's possible there are two xml nodes with the same name/id in the .rdl file)
If this report is checked in with corrupt metadata, you need to manually modify the RDL file, which is not great, but hopefully the error contains enough hints. Open the report rdl file in your favourite editor (report likely located in a similar path as this: K:\AosService\PackagesLocalDirectory\YOURMODEL\Reports) and look for an xml node with an attribute Name="Copy1". With luck, you have two duplicate nodes next to each other due to the merge. Remove the offending duplicate node, save, and refresh the AOT in Visual Studio.
If the error is in your local changes only (xml file is corrupted for whatever reason) and you are sure that your source control contains the correct version and you simply wish to overwrite the local contents with the source controlled version, follow these steps. Note: this will overwrite local changes.
First, undo pending changes.
Then force a get latest:

How do I get the BAM Add-Ons in BizTalk 2016/Excel 2016

I want to create a BAM activity/view. I have Office 32-bit. Do I need to open some specific BAM spreadsheet/model first?
This page shows how it works in Excel 2007: https://msdn.microsoft.com/en-us/library/aa559526(v=bts.20).aspx But I haven't found anything for more recent versions.
If I open a new empty spreadsheet, and click Add-Ins, I see nothing but the following:
If I right click "Add-Ins" and select "Customize Quick Access Toolbar", I then see this screen - which looks like probably what I need, but still don't know the exact procedure to add the BAM Adds here.
It might be wiser to find and edit the file outside of Excel first: The add-in file is: "c:\Program Files\Microsoft Office\Office16\Library\Bam.xla"
I clicked on "Business Activity Monitoring" - then what should I do next to get the menus needed to add the BAM Activity.
Looks like you click the "Go" button to the right of "Manage Excel Add-Ins".
Then the following box pops-up, and I can check "Business Activity Monitoring" and then "Ok".
If it doesn't appear there, you can click the "Browse" button, go to the ""c:\Program Files\Microsoft Office\Office16\Library" folder and select "Bam.xla".
If you are in Excel 64-bit, instead of 32-bit, you will get this error:
But so far, after doing that, I still don't see any new "BAM" menu in Excel.
I was seeing error:
Compile error: The code in this project must be updated for use on
64-bit systems. Please review and update Declare statements and then
mark them with the PtrSafe attribute.
If you get that, it means you are probably on 64-bit, not 32-bit version of Excel. I was told by another team they installed 32-bit, but low and behold, they did not. You can check the version using the following steps:
1) File (menu)
2) (click) Account
3) Click the square (almost doesn't look like a button that says "? About Excel"
After getting the 32-bit, it looks okay, the BAM menu appears as follows (under the "Add-Ins" tab:
If you click the "BAM Activity" and get the error "Variable not defined", then see this link: https://oussov.wordpress.com/2013/01/03/bam-xla-variable-not-defined-error-in-excel/

How to Right click of File in Windows Explorer by AutoIt

I wish to simulate a right click on a file. This is done by opening a Windows Explorer window and then right clicking on it.
The main issue is finding the location of the file in Windows Explorer. I am currently using Autoit v3.3.8.1.
My code 's first line:
RunWait (EXPLORER.EXE /n,/e,/select,<filepath>)
The next step is the problem. Finding the coordinates of the file.
After that, right clicking at that coordinates (it seems to me at this time) is not a problem....
Some background:
OS: Windows 7 64-bit
Software Languages: C#, Autoit (for scripting)
The Autoit script is called by a code similar to that below:
Process p = new Process();
p.StartInfo.FileName = "AutoItScript.exe";
p.StartInfo.UseShellExecute = false;
p.Start();
The code is compiled into a console class file which is run at startup. The autoit script runs as the explorer window opens up.
It seems as though you are taking the wrong approach to the problem, so I'll answer what you are asking and what you should be asking.
First up though, that line of code is not valid, and is not what you want either. You want to automate the explorer window, and RunWait waits for the program to finish. Furthermore you want those items to be strings, that code would never work.
Finding the item in explorer
The explorer window is just a listview, and so you can use normal listview messages to find the coordinates of an item. This is done most simply by AutoIt's GUIListView library:
#include<GUIListView.au3>
Local $filepath = "D:\test.txt"
Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath)
ProcessWait($iPid)
Sleep(1000)
Local $hList = ControlGetHandle("[CLASS:CabinetWClass]", "", "[CLASS:SysListView32; INSTANCE:1]")
Local $aClient = WinGetPos($hList)
Local $aPos = _GUICtrlListView_GetItemPosition($hList, _GUICtrlListView_GetSelectedIndices($hList))
MouseClick("Right", $aClient[0] + $aPos[0] + 4, $aClient[1] + $aPos[1] + 4)
As has already been mentioned, sending the menu key is definitely a better way than having to move the mouse.
Executing a subitem directly
This is how it should be done. Ideally you should never need an explorer window open at all, and everything can be automated in the background. This should always be what you aim to achieve, as AutoIt is more than capable in most cases. It all depends on what item you want to click. If it is one of the first few items for opening the file in various programs, then it is as simple as either:
Using ShellExecute, setting the verb parameter to whatever it is you want to do.
Checking the registry to find the exact command line used by the program. For this you will need to look under HKCR\.ext where ext is the file extension, the default value will be the name of another key in HKCR which has the actions and icon associated with the filetype. This is pretty well documented online, so google it.
If the action is not one of the program actions (so is built into explorer) then it is a little more complex. Usually the best way will be to look at task manager when you start the program and see what it runs. Other things can be found online, for example (un)zipping. Actions like copy, delete, rename, create shortcut, send to... They can all be done directly from AutoIt with the various File* functions.
With more information, it would be possible to give you more specific help.
First, you might want to look at the Microsoft Active Accessibility SDK. In particular look at this interface...
http://msdn.microsoft.com/en-us/library/accessibility.iaccessible.aspx
You can use this to walk the items in the control and find the one with the file name you are looking for and its screen location.
From there, maybe try something like this for simulating the right click.
How can I use automation to right-click with a mouse in Windows 7?
Once you have done the right click, use accessibility again to find the right option on the context menu.
Maybe there's an easier way, you should be able to cobble something together like this if you don't find one. Good luck!
Suppose I have a file named test.txt on D drive. It needs to right click for opening Context Menu. To do this, the following code should work:
Local $filepath = "D:\test.txt"
Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath)
ProcessWait($iPid)
Sleep(1000)
Send('+{F10}')

How can I programmatically add build files to Xcode4?

I've been trying to figure out how to programmatically add files to an Xcode4 project and it seemed like AppleScript would be the way to go, however I'm running into "missing value" errors.
Here's the code I've got:
tell application "Xcode"
set theProject to first project
set theTarget to first target of theProject
set theBuildPhase to compile sources phase of theTarget
tell first group of theProject
set theFileRef to make new file reference with properties {full path:"/Users/jeff/Projects/XcodeTest/XcodeTest/MyViewController.h", name:"MyViewController.h", path:"XcodeTest/MyViewController.h", path type:group relative}
add theFileRef to theProject
end tell
--tell theBuildPhase to make new build file with properties {build phase:theBuildPhase, name:"MyViewController.h", file reference:theFileRef, target:theTarget, project:theProject}
end tell
I've tried the commented-out line instead of the add-command as well, but that doesn't work either (I get "missing value").
The 'add' error is:
error "Xcode got an error: file reference id \"251AD3431432472E006E300F\" of Xcode 3 group id \"251AD32C14324645006E300F\" of project \"XcodeTest\" of workspace document \"XcodeTest.xcodeproj/project.xcworkspace\" doesn’t understand the add message." number -1708 from file reference id "251AD3431432472E006E300F" of Xcode 3 group id "251AD32C14324645006E300F" of project "XcodeTest" of workspace document "XcodeTest.xcodeproj/project.xcworkspace"
The "make new reference" does add the file to the list of files in Xcode, but I also need it to be added to the project target so that I can add actions and outlets to the file from Xcode w/o having to first check the checkbox to add it to the "target membership".
I ended up sending this question to the devs on the xcode developer list and the response I got was effectively "you can't".
This appears to be completely broken in Xcode4, but I've seen a project that does it. I think what they are doing is parsing and modifying the "project.pbxproj" file directly. (this file is hidden inside the xcodeproj bundle)
The file is a GUID soup, but once you look at it for a while it seems possible to safely modify it, especially if you are only adding stuff.
Edit:
Found this stackoverflow answer that might help.
Tutorial or Guide for Scripting XCode Build Phases
There is a poorly documented user defined build setting that can be added. Files can be both excluded and included from compilation
Go to your target's Build Settings > Tap the + button > Add User-Defined Setting
The key is either INCLUDED_SOURCE_FILE_NAMES or EXCLUDED_SOURCE_FILE_NAMES
The value is a space separated list of file paths
See reference:
http://lists.apple.com/archives/xcode-users/2009/Jun/msg00153.html

Unable to modify re-opened files in vim(file permissions not a problem)

I am working with vim. I created a new cpp file using
vim xyz.cpp
After opening the file, I added some basic includes and comments. Then I closed it(:wq!) and re-opened it only to find that I am not able to delete/edit the previously written commands, even after pressing i (for insert), although it gets into insert mode and I am able to add new text to the file. I must say that when i am NOT in the insert mode, then I am able to delete individual characters by pressing x . But it doesnt solve my problem.
I checked the file permissions and it says -rwxrwxrwx, so I dont think permissions is the issue. Has anyone faced this problem before. Any kind of help will be appreciated.
Thanks
:help 'backspace' is your friend
Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert
mode. This is a list of items, separated by commas. Each item allows
a way to backspace over something:
value effect ~
indent allow backspacing over autoindent
eol allow backspacing over line breaks (join lines)
start allow backspacing over the start of insert; CTRL-W and CTRL-U
stop once at the start of insert.
When the value is empty, Vi compatible backspacing is used.
Try to set it to
set backspace=indent,eol,start

Resources