Using Org-Mode With the Gnome 3 Calendar - org-mode

Gnome 3 has a beautiful calendar panel that drops down from the menu bar, and includes a space for your upcoming appointments. By default this appointment manager reads from the calendar in Evolution Mail. I was curious as to whether it's possible to get it working with Org-Mode. I know Evolution can import .ics files and Org-Mode can write them, so that's a start. Does anyone have thoughts as to how you might (a) get the Gnome 3 Calendar working directly with Org-Mode, or (b) set up an efficient sync between Org-Mode and Evolution Mail's calendar, such that it would be reflected in the Gnome 3 Calendar panel?

I assume you already use the org-agenda. What you are looking for is org-write-agenda to get the exported ics file. I'd wrap that function with your own custom sync-cal function. sync-call should go ahead write the agenda /tmp and then you should issue some shell commands (see start-process) to sync with Evolution (how to do that, I do not know). Now, you maybe want to hook your sync-cal function to some file save functions and run it depending on the file name.
Hacky, but that's how I'd do it if I'd use Gnome.

An idea that occurred to me later in the day—a bit circuitous, but possible—is to go through Google Calendar. There are existing Org-Mode scripts for writing to Google Calendar, and a standard procedure in Evolution Mail for reading from Google Calendar. So if you don't mind going through a third party or having calendar updates depend on Internet access, it should be possible to sync through Google. It's not an elegant solution, but it's at least well documented.

For synchronisation between Evolution and a dedicated org file (one-way only, for now), here's a Python script: org-agenda-evolution.
(Disclaimer: (1) I am the author, (2) as of 2022-08, the tool lacks a configuration system, so right now you may have to tweak some top-level constants in the source to make it work for your org-mode setup.)

Related

LibreOffice macro user instruction

I have a LibreOffice Calc document which needs to be downloaded by remote users. It uses macros - so they need to have macros enabled for it to work at all and there is no control over user machines.
To help with this I have a text message on the first tab telling them they need to enable macros and some instructions how. On document open I run a macro to remove this message - as long as they have macros enabled they never see it and all is well.
This solution works but is not perfect because:
It will trigger the save changes dialogue even if they did no changes.
It leaves the message removed if they save and pass the document directly to another user.
Just doesn't feel like a well-engineered solution
Is there a better way to accomplish showing this message only when macros are not enabled?

Why use org-mobile-push/pull?

I have managed my todo-lists for some years with Emacs Org-mode and really like it.
The files are kept in a WebDAV folder on a server to keep them synced.
However, since I use more and more tablets and smartphones an app to access the files would be great - such as MobileOrg for Android.
But currently I do not understand why I have to use org-mobile-push and pull in emacs and cannot just parse and access my files with an app and edit them in a convenient way, especially when I am a few days not working with Emacs or at my Linux machine at all. Is there a reasonable explanation why the files can't be parsed and viewed without exporting them from Emacs?
MobileOrg needs to interact with Emacs through a directory on a server. The main reason for org-mobile.el to exist is for creating agenda views in a format that can be displayed by MobileOrg, and for integrating notes captured and changes made by MobileOrg back into your Emacs main system. That said, the functions org-mobile-push and org-mobile-pull are purely there to provide a sync mechanism between MobileOrg and your Emacs main system. There is nothing technically stopping you from doing your own parsing and editing the of the files. I suppose that you only have to ensure that the files remain valid Org-Mode file formats and they should work everywhere.

System for automatically logging exact file code changes by line item

Does anyone know of a software or system for automatically tracking and logging exact line code changes into a log file?
For example, lets say I edit 7 files on Jan 16th, and I add and modify several lines of code in each file.
Is there a software or tool of any kind that would automagically know what edits I made, what was changed, and log the details in date order line-item file?
I am guessing something exists like this, but I cannot find out what I should be searching for. I looked at SVN and some other similar, but didn't get these capabilities from the descriptions I read.
There's nothing that would automagically know this. This sort of information is easy to come by as a side-effect of using virtually any version control system though. It sounds like you're not using any VCS, you should start doing so now. SVN is a good option to start with.

How should I provide help for a related set of functions?

I built tfs.el to allow developers to do TFS things (checkout, checkin, etc) from within emacs.
There are 13 interactive commands in the tfs package, like tfs/checkout, tfs/rename, tfs/diff, and so on, and I'd like to be able to provide help on all of them in a single place. An overview of all the available functions.
What's the "emacs way" of doing that? I thought of defining an additional function, like tfs/help , that would invoke describe-function-1 on each of the tfs functions, and then present all that in a TFS-Help buffer.
Is there a better way?
Well, there are many "Emacs way"s.
The most polished would be to write an info page, see the page "Info for Experts", which basically says to use Texinfo and convert that into an info page. You can be as verbose as you want there, and the user can search, use hyperlinks, etc. The user can easily get there via C-h F tfs/checkout.
Another way some folks seem to do it is to write short documentation strings for each of the commands, ending with "see documentation for tfs-mode for details" and put all the common documentation in the docstring for tfs-mode.
Another way some packages document things is with a big comment at the top of the tfs.el file.
Take your pick, they all have trade-offs.
You can use
(describe-bindings "\C-xv")
You have multiple, related commands. So far, I guess, they are related only by their names.
Two possibilities come to mind:
Create a mode for this stuff. Document everything in the doc string of the command that turns the mode on/off. It could be a major mode or a minor mode. If a minor mode it could be buffer-local or global.
Create a group (defgroup) for this stuff and document everything in its doc string.
The basic idea is to somehow actually relate these commands: bundle them together in some way, so you can document them together as the doc for the bundle.
Offhand, without knowing more, my guess is that you might want to create a global minor mode.

How to highlight the differences between two versions of a text in .NET web app?

I have been supporting a web application at work for our Call Center unit for about 2 years now. The app is written in ASP.NET 3.5 with SQL server 2005 database. I’ve been asked to expand the call detail section to allow agents to edit the current call note with the ability to revert back to its previous version. Now, that’s all cool but now the manager wants to be able to click on any particular note and see all edits with changes highlighted in yellow (and if something was deleted, he wants to SEE the deleted text crossed out). Actually, what I need is very similar to how Stackoverflow handles edits on their questions. I’ve been thinking about how to go about this and after doing research and Google-ing of course, I am still unsure which route to take. I am fairly new to .NET development. Any ideas on the best technique for highlighting the changes in UI? I am afraid I am going to have to store a copy of the entire note each time they make a change because the manager wants to be able to easily review notes and revert back to ANY version (not just the most recent one) before sending the monthly call report off to our VIP customers. Since this department OFTEN changes their mind on things, I want to make sure the new functionality is scalable and easy to maintain. Any ideas would be greatly appreciated. I am really just looking for someone to point me in the right direction; maybe there are some tools out there that can be useful, recommended keywords in Google lookup, etc.
This will be difficult do to.
You'll need a "text editor" control that can not only edit the text, but which can also tell you what changes were made.
You then need to store not only the final text string, but also the list of changes
You'll then need to be able to display the text plus changes, using strike-outs, and different colors for inserts vs. changes
You'll need to do this not only for the changes of a single user, but you'll need to store each users' changes in the database, and will need to be able to display all the changes, all at once.
Your manager should be really sure he needs this.
Some tools for doing the diff for you can be found at Any decent text diff/merge engine for .NET?.
This would entail storing every version like you say. This should allow you to implement it similarly to SO. I seem to recall reading or hearing Jeff mention it, but wasn't able to find it, likely in one of the SO podcasts.
Easiest would be to store the text for each revision, then when the user wants to see the diff use a diff tool to generate the highlighted text.
Here is some Javascript diff code:
http://ejohn.org/projects/javascript-diff-algorithm/
If all the computers have Word installed you may be able to use a Word control to accomplish this. TortoiseSVN has scripts in its program directory which can take two word documents and produce a document with changes highlighted. To see this create c:\aaa.doc and bbb.doc, then install TortoiseSVN and run:
wscript.exe "C:\program files\tortoisesvn\Diff-Scripts\diff-doc.js" c:\aaa.doc c:\bbb.doc //E:javascript
I think you should see http://en.wikipedia.org/wiki/Revision_control