xenodium

joined 1 year ago
[–] xenodium@alien.top 2 points 10 months ago

Pick any that you like from https://emacsrocks.com. My favourite is https://emacsrocks.com/e13.html well worth watching until the end where it all comes together.

[–] xenodium@alien.top 1 points 10 months ago

I hope this post brings more visibility to u/vsavchenko’s https://github.com/SavchenkoValeriy/emacs-swift-module and spark more more integrations. u/divinedominion got ideas https://mastodon.social/@ctietze/111470001921901575 Maybe Maps https://xenodium.com/hey-emacs-where-did-i-take-that-photo?

[–] xenodium@alien.top 1 points 10 months ago

So far, in the small experiments I've done, it's been fantastic. Thank you! You've also done a wonderful job with the documentation https://savchenkovaleriy.github.io/emacs-swift-module/documentation/emacsswiftmodule

I'll file issues if I run into any troubles.

Apart from https://github.com/roife/emt (which reminded me to look at your project), I haven't seen other integrations. I'd love to see what others are doing. What are you using it for?

So far, I'm replacing my previous implementations of reveal in finder (w/ selection) and sharing, with a snappy module implementation. Good times :)

Thanks again for the thorough work on it.

[–] xenodium@alien.top 1 points 10 months ago

It's been a solid companion for many years :)

[–] xenodium@alien.top 1 points 10 months ago (2 children)

A year ago, u/vsavchenko announced https://www.reddit.com/r/emacs/comments/wemj1z/writing_emacs_dynamic_modules_in_swift. I had been meaning to try it out for some time. Finally had the chance and it's really neat!

For example, most of the sharing logic from the experiment in the screen grab is below:

try env.defun(
  "macos-module--share",
  with: """
    Share files in ARG1.

    ARG1 must be a vector (not a list) of file paths.
    """
) { (env: Environment, files: [String]) in
  let urls = files.map { URL(fileURLWithPath: $0) }

  let picker = NSSharingServicePicker(items: urls)
  guard let view = NSApp.mainWindow?.contentView else {
    return
  }

  let x = try env.funcall("macos--emacs-point-x") as Int
  let y = try env.funcall("macos--emacs-point-y") as Int

  let rect = NSRect(
    x: x + 15, y: Int(view.bounds.height) - y + 15, width: 1, height: 1
  )
  picker.show(relativeTo: rect, of: view, preferredEdge: .maxY)

  return
}
 
[–] xenodium@alien.top 1 points 11 months ago

I use dwim shell command for these things (async by default). For example https://github.com/xenodium/dwim-shell-command/blob/e4a139fe181ed1b576302fb36f3761fbf9914580/dwim-shell-commands.el#L83C7-L83C7

Disclosure: authored the package