• xenodium@alien.topOPB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    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
    }
    
    • vsavchenko@alien.topB
      link
      fedilink
      English
      arrow-up
      0
      ·
      10 months ago

      Nice that you had a chance to try it. Would be amazing to hear your feedback and maybe some improvement ideas!

  • konrad1977@alien.topB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    This is really nice, I totally missed that you can use swift code in a module. Thanks for sharing.